Chinaunix首页 | 论坛 | 博客
  • 博客访问: 608893
  • 博文数量: 244
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 130
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-27 09:53
个人简介

记录学习,记录成长

文章分类

全部博文(244)

我的朋友

分类: LINUX

2015-09-04 23:16:46

maildrop是一个使用C++编写的用来代替本地MDA的带有过滤功能邮件投递代理,是courier邮件系统组件之一。它从标准输入接受信息并投递到用户邮箱;maildrop既可以将邮件投递到mailboxes格式邮箱,亦可以将其投递到maildirs格式邮箱。同时,maildrop可以从文件中读取入站邮件过滤指示,并由此决定是将邮件送入用户邮箱或者转发到其它地址等。和procmail不同的是,maildrop使用结构化的过滤语言,因此,邮件系统管理员可以开发自己的过滤规则并应用其中,在此将使用maildrop来代替postfix自带的MDA,并以此为基础扩展邮件杀毒和反垃圾邮件功能的调用;
1.  安装
[root@localhost ~]# tar xf maildrop-2.8.3.tar.bz2 
[root@localhost ~]# cd maildrop-2.8.3
1.1  因为编译maildrop时会到某些特定目录下找相关的文件,所以将courier-authlib的头文件及库文件链接至/usr目录:
导出courier-authlib的库文件:
[root@localhost maildrop-2.8.3]# vim /etc/ld.so.conf.d/courier-authlib.conf
/usr/local/courier-authlib/lib/courier-authlib
[root@localhost maildrop-2.8.3]# ldconfig -v
[root@localhost ~]# ln -sv /usr/local/courier-authlib/include/* /usr/include/
`/usr/include/courier_auth_config.h' -> `/usr/local/courier-authlib/include/courier_auth_config.h'
`/usr/include/courierauthdebug.h' -> `/usr/local/courier-authlib/include/courierauthdebug.h'
`/usr/include/courierauth.h' -> `/usr/local/courier-authlib/include/courierauth.h'
`/usr/include/courierauthsaslclient.h' -> `/usr/local/courier-authlib/include/courierauthsaslclient.h'
`/usr/include/courierauthsasl.h' -> `/usr/local/courier-authlib/include/courierauthsasl.h'
`/usr/include/courierauthstaticlist.h' -> `/usr/local/courier-authlib/include/courierauthstaticlist.h'
[root@localhost ~]# ln -sv /usr/local/courier-authlib/bin/courierauthconfig /usr/bin/
`/usr/bin/courierauthconfig' -> `/usr/local/courier-authlib/bin/courierauthconfig'
1.2  创建用户
[root@localhost ~]# groupadd -g 1111 vmail
[root@localhost ~]# useradd -g 1111 -u 1111 -M -s /sbin/nologin vmail
1.3  编译maildrop
maildrop需要pcre的支持,因此需要事先提供pcre的头文件及库文件等开发组件。如果选择以yum源来提供pcre,请确保安装pcre-devel包
[root@localhost ~]# yum install pcre-devel
[root@localhost maildrop-2.8.3]# ./configure \
     --enable-sendmail=/usr/sbin/sendmail \
     --enable-trusted-users='root vmail' \
     --enable-syslog=1 --enable-maildirquota \
     --enable-maildrop-uid=1111 \
     --enable-maildrop-gid=1111 \
     --with-trashquota --with-dirsync
其中:
--enable-sendmail=/usr/sbin/sendmail定义sendmail位置
--enable-trusted-users='root vmail'定义信任的邮件投递用户为root和vmail
--enable-syslog=1 --enable-maildirquota将错误信息发送到系统日志中
--enable-maildirquota定义启用用户邮箱有限额功能(./configure --help中没有)
--enable-maildrop-uid=1111 定义maildrop的UID
--enable-maildrop-gid=1111定义maildrop的GID
--with-trashquota定义邮件回收站也有限额
--with-dirsync定义目录之间可以同步
这里之所以不指定安装路径是因为postfix在调用maildrop时会自动去找maildrop而maildrop的默认安装路径和postfix的master.cf文件中定义的argv=/usr/local/bin/maildrop的路径刚好是一致的,所以不需要再指定安装路径了,反倒是指定了路径还要修改master.cf文件中的内容;
[root@localhost maildrop-2.8.3]# make && make install
1.4  检查安装结果
[root@mail maildrop-2.8.3]# maildrop -v出现错误
maildrop: error while loading shared libraries: libcourier-unicode.so.1: cannot open shared object file: No such file or directory
解决:将libcourier-unicode.so.1等导出到共享库
[root@localhost maildrop-2.8.3]# vim /etc/ld.so.conf.d/courier-unicode.conf
/usr/local/lib
[root@localhost maildrop-2.8.3]# ldconfig -v
重新测试:
[root@localhost maildrop-2.8.3]# maildrop -v
maildrop 2.8.3 Copyright 1998-2015 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.
2.  配置maildrop  
2.1  为maildrop新建配置文件maildroprc
[root@localhost maildrop-2.8.3]# vim /etc/maildroprc
logfile  "/var/log/maildrop.log" #指定maildrop的日志记录位置
2.2  创建maildrop的日志文件并更改其属性
[root@localhost maildrop-2.8.3]# touch /var/log/maildrop.log
[root@localhost maildrop-2.8.3]# chown vmail.vmail /var/log/maildrop.log 
3.  配置postfix
3.1  编辑postfix的master.cf文件
[root@mail postfix]# pwd
/etc/postfix
[root@mail postfix]# vim master.cf  
去掉下面两行的注释
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient} #注意保留改行前面的空格
3.2  编辑main.cf
[root@mail postfix]# vim main.cf
将virtual_transport = virtual改为virtual_transport = maildropl
将virtual_uid_maps = static:2525和virtual_gid_maps = static:2525
改为
virtual_uid_maps = static:1111和virtual_gid_maps = static:1111
3.3  编辑/etc/authmysqlrc
[root@mail postfix]# vim /etc/authmysqlrc 
将MYSQL_UID_FIELD   2525改为MYSQL_UID_FIELD   1111 
将MYSQL_GID_FIELD   2525改为MYSQL_GID_FIELD   1111
3.4  编辑/etc/httpd/conf/httpd.conf修改运行用户(这里使用的是虚拟主机)
[root@mail postfix]# vim /etc/httpd/conf/httpd.conf 
将虚拟主机配置段中启用的SuexecUserGroup postfix  postfix改为SuexecUserGroup vmail vmail
或者
将User apache和Group apache改为vmail也可以。具体看自己的配置;
3.5  编辑extman的配置文件修改默认用户的UID和GID
[root@mail extman]# pwd
/var/www/extsuite/extman
[root@mail extman]# vim webman.cf
将SYS_DEFAULT_UID = 2525改为SYS_DEFAULT_UID = 1111
将SYS_DEFAULT_GID = 2525改为SYS_DEFAULT_GID = 1111
3.6  将extman的临时目录extman和用户邮件目录mailbox的属主属组改为vmail
[root@mail extsuite]# chown -R vmail.vmail /var/mailbox/
[root@mail extsuite]# chown -R vmail.vmail /tmp/extman/
3.7  重启服务
[root@mail extsuite]# service courier-authlib restart
Stopping Courier authentication services: authdaemond
Starting Courier authentication services: authdaemond
[root@mail extsuite]# service httpd restart
Stopping httpd: [  OK  ]
Starting httpd: [  OK  ]
[root@mail extsuite]# service postfix restart
Shutting down postfix: [  OK  ]
Starting postfix: [  OK  ]
3.8  测试
在未安装mialrdrop时,发送邮件,邮件日志是:
Sep  4 01:58:39 localhost postfix/qmgr[26510]: AAB3661AC5: from=<zcx@a.com>, size=551, nrcpt=1 (queue active)
Sep  4 01:58:40 localhost postfix/virtual[27379]: AAB3661AC5: to=<zzd@a.com>, relay=virtual, delay=0.45, delays=0.24/0.19/0/0.03, dsn=2.0.0, status=sent (delivered to maildir)
现在再次通过extmail发信:
出现错误:

因为此时我的虚拟主机配置段中是SuexecUserGroup vmail vmail,全局配置段中是User  apache  Group  apache,可能是SuexecUserGroup不兼容,将SuexecUserGroup vmail vmail一行注释,然后将User和Group改为User vmail和Group vmail;
重启httpd服务后登录发送邮件,此时的邮件日志为:
Sep  4 06:56:35 localhost postfix/pipe[13943]: 1CF8361AF9: to=<zzd@a.com>, relay=maildrop, delay=0.26, delays=0.1/0.05/0/0.11, dsn=2.0.0, status=sent (delivered via maildrop service)
阅读(1463) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~