Postfix使用maildrop投递邮件

Maildrop是本地邮件投递代理(MDA), 支持过滤(/etc/maildroprc)、投递和磁盘限额(Quota)功能。

Maildrop是一个使用C++编写的用来代替本地MDA的带有过滤功能邮件投递代理,是courier邮件系统组件之一。它从标准输入接受信息并投递到用户邮箱;maildrop既可以将邮件投递到mailboxes格式邮箱,亦可以将其投递到maildirs格式邮箱。同时,maildrop可以从文件中读取入站邮件过滤指示,并由此决定是将邮件送入用户邮箱或者转发到其它地址等。和procmail不同的是,maildrop使用结构化的过滤语言,因此,邮件系统管理员可以开发自己的过滤规则并应用其中。

我们在此将使用maildrop来代替postfix自带的MDA,并以此为基础扩展后文的邮件杀毒和反垃圾邮件功能的调用。Maildrop如果以RPM包安装会自动创建vuser用户及vgroup用户组,专门用于邮件的存储;使用源码安装则需要手动创建用户和用户组,且ID大于1000,即上文创建的用户vmail(1001)和组vmail(1001)。

依赖courier-authlib的头和库文件

将courier-authlib的头文件及库文件链接至/usr目录(编译maildrop时会到此目录下找此些相关的文件)

[root@localhost ~]# ln -sv /usr/local/courier-authlib/bin/courierauthconfig /usr/bin
[root@localhost ~]# ln -sv /usr/local/courier-authlib/include/* /usr/include/
[root@localhost ~]# echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf.d/courier-authlib.conf
[root@localhost ~]# ldconfig -v
解决需要依赖的pcre头文件和库文件

maildrop需要pcre的支持,因此,需要事先提供pcre的头文件及库文件等开发组件,如果选择以yum源来提供pcre,请确保安装pcre-devel包

[root@localhost ~]# yum install pcre-devel
安装courier-unicode

字符集库文件,相当 于RPM方式安装的courier-authlib-devel包,不安装这个会导致编译maildrop时报错

[root@localhost ~]# tar xvf courier-unicode-1.1.tar.bz2
[root@localhost ~]# cd courier-unicode-1.1
[root@localhost courier-unicode-1.1]# ./configure
[root@localhost courier-unicode-1.1]# make && make install
安装maildrop
[root@localhost ~]# tar xvf maildrop-2.7.2.tar.bz2
[root@localhost ~]# cd maildrop-2.7.2
[root@localhost maildrop-2.7.2]# ./configure \
--enable-sendmail=/usr/sbin/sendmail \
--enable-syslog=1 \
--enable-maildirquota \
--enable-maildrop-uid=1001 \
--enable-maildrop-gid=1001 \
--with-trashquota \
--with-dirsync
[root@localhost maildrop-2.7.2]#make
[root@localhost maildrop-2.7.2]#make install

检查安装结果,请确保有“Courier Authentication Library extension enabled.”一句出现

[root@localhost ~]# maildrop -v
maildrop 2.6.0 Copyright 1998-2005 Double Precision, Inc.
GDBM/DB extensions enabled.
Courier Authentication Library extension enabled.
Maildir quota extension are now always enabled.
This program is distributed under the terms of the GNU General Public
License. See COPYING for additional information.
创建配置文件/etc/maildroprc

首先指定maildrop的日志记录位置:

[root@localhost ~]# vim /etc/maildroprc
logfile "/var/log/maildrop.log" [root@localhost ~]# touch /var/log/maildrop.log
[root@localhost ~]# chown vmail.vmail /var/log/maildrop.log
配置Postfix的master.cf文件
[root@localhost ~]# vim /etc/postfix/master.cf
#maildrop unix - n n - - pipe
# flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}

注意:启用如上两行,定义transport的时候,即如上两行中的第二行其参数行必须以空格开头否则会出错

重启服务
[root@localhost ~]# service postfix restart
[root@localhost ~]# service courier-authlib restart
[root@localhost ~]# service httpd restart
测试

可以进行发信测试,如果日志中的记录类同以下项maildrop投递,则安装成功

Apr 15 15:33:54 localhost postfix/pipe[11964]: 04B92147CE9: to=, relay=maildrop, delay=0.16, delays=0.07/0.03/0/0.07, dsn=2.0.0, status=sent (delivered via maildrop service)

PS:如果想使用maildrop来进行邮件过滤只需要在/etc/maildroprc中使用maildrop基于域的过滤条件即可。

最新文章

  1. Django分析之三级下拉菜单选择省/市/县
  2. osg中内嵌QtBrowser
  3. Fatal error 829---数据库 ID 8,页 (1:80740) 已标记为 RestorePending,可能表明磁盘已损坏(日志备份和热备、双机的重要性)
  4. sql 循环某段时间的每一天
  5. [JAVA] 一个可以编辑、编译、运行Java简单文件的记事本java实现
  6. 添加已有项目到git rep
  7. PHP 连接 MSSQL
  8. 用httpPost对JSON发送和接收的例子
  9. CXF和Axis的比较【转】
  10. 关于php配置文件
  11. O2O模式
  12. GetDeviceCaps() 参数
  13. sigaction
  14. echarts 折柱混合图 (绑数据后)
  15. 今天学习了下,如何破解wifi
  16. mybatis 整合spring之mapperLocations配置的问题
  17. Arcgis API本地化
  18. nginx压缩,缓存
  19. com/mysql/jdbc/Driver : Unsupported major.minor version 52.0
  20. C++委托模式

热门文章

  1. pandas 中的DataFrame.where()使用
  2. ch 与等宽字体
  3. POJ-2081 Terrible Sets(暴力,单调栈)
  4. FZU2110 Star【计算几何】
  5. Python的一个命名空间冲突,关于from-import机制
  6. UVA 12304 - 2D Geometry 110 in 1! - [平面几何基础题大集合][计算几何模板]
  7. 启动了SSH服务后,一定要关闭Telnet服务
  8. 数据库管理系统的ACID特性
  9. Linux 下用 crontab 设置定时执行python 程序
  10. Java中子类是否可以继承父类的static变量和方法而呈现多态特性