设为首页 收藏本站
查看: 2675|回复: 1

[经验分享] linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(三)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-7-7 09:23:22 | 显示全部楼层 |阅读模式
linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(三) 使用 maildrop 投递邮件
十六、配置postfix使用maildrop投递邮件
maildrop是一个使用C++编写的用来代替本地MDA的带有过滤功能邮件投递代理,是courier邮件系统组件之一。它从标准输入接受信息并投递到用户邮箱;maildrop既可以将邮件投递到mailboxes格式邮箱,亦可以将其投递到maildirs格式邮箱。同时,maildrop可以从文件中读取入站邮件过滤指示,并由此决定是将邮件送入用户邮箱或者转发到其它地址等。和procmail不同的是,maildrop使用结构化的过滤语言,因此,邮件系统管理员可以开发自己的过滤规则并应用其中。

我们在此将使用maildrop来代替postfix自带的MDA,并以此为基础扩展后文的邮件杀毒和反垃圾邮件功能的调用;在此可能会修改前文中的许多设置,请确保您的设置也做了相应的修改。

1、安装maildrop前准备

将courier-authlib的头文件及库文件(参考第八部分的第四小节)链接至/usr目录(编译maildrop时会到此目录下找此些相关的文件):

1
2
# ln -sv /usr/local/courier-authlib/bin/courierauthconfig   /usr/bin
# ln -sv /usr/local/courier-authlib/include/*   /usr/include



1
2
# vim /etc/ld.so.conf.d/courier-authlib.conf
/usr/local/courier-authlib/lib/courier-authlib



# yum install pcre-devel -y

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

1
2
3
4
5
6
# wget http://jaist.dl.sourceforge.net/ ... unicode-1.1.tar.bz2
# tar jxvf courier-unicode-1.1.tar.bz2
# cd courier-unicode-1.1
# ./configure
# make
# make install



1
2
3
# ls /usr/local/lib
libcourier-unicode.a   libcourier-unicode.so    libcourier-unicode.so.1.0.0  libunicode.la  libunicode.so.1
libcourier-unicode.la  libcourier-unicode.so.1  libunicode.a                 libunicode.so  libunicode.so.1.0.0



1
2
# vim /etc/ld.so.conf.d/courier-unicode.conf
/usr/local/lib



1
# ldconfig -v





3、安装maildrop-2.7.2

1
2
# groupadd -g 1001 vmail
# useradd -g vmail -u 1001 -M -s /sbin/nologin vmail



1
2
3
4
5
6
7
8
9
10
11
# tar jxvf maildrop-2.7.2.tar.bz2
# cd maildrop-2.7.2
./configure \
     --enable-sendmail=/usr/sbin/sendmail \
     --enable-trusted-users='root vmail' \
     --enable-syslog=1 --enable-maildirquota \
     --enable-maildrop-uid=1001 \
     --enable-maildrop-gid=1001 \
     --with-trashquota --with-dirsync
# make
# make install




4、新建其配置文件/etc/maildroprc文件,首先指定maildrop的日志记录位置:

1
# vim /etc/maildroprc




添加:

1
2
3
VERBOSE=5
logfile "/var/log/maildrop.log"
to "$HOME/Maildir"




1
2
# touch /var/log/maildrop.log
# chown vmail.vmail /var/log/maildrop.log





5、配置Postfix
编辑master.cf

1
# vim /etc/postfix/master.cf




启用如下两行

1
2
maildrop  unix  -       n       n       -       -       pipe
    flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}





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


编辑main.cf

1
2
3
4
# vim /etc/postfix/main.cf
virtual_transport = virtual
修改为:
virtual_transport = maildrop





将下面两项指定的UID和GID作相应的修改:

1
2
3
4
5
virtual_uid_maps = static:2525
virtual_gid_maps = static:2525
修改为:
virtual_uid_maps = static:1001
virtual_gid_maps = static:1001




6、编辑/etc/authmysqlrc


1
2
3
4
5
6
# vim /etc/authmysqrc
MYSQL_UID_FIELD  2525
MYSQL_GID_FIELD  '2525'
更改为:
MYSQL_UID_FIELD  1001
MYSQL_GID_FIELD  1001



注意:没有此处的修改,maildrop可能会报告 “signal 0x06”的错误报告。

7、编辑# /etc/httpd/conf/httpd.conf,修改运行用户:


1
2
3
4
5
# vim /etc/httpd/conf/httpd.conf
如果启用了suexec的功能,则将虚拟主机中指定的
SuexecUserGroup postfix postfix
修改为:
SuexecUserGroup vmail vmail



如果没有使用上面的功能,则修改User和Group指令后的用户为vmail
将前文中的如下项

1
2
3
4
5
User postfix
Group postfix
修改为:
User vmail
Group vmail



8、将用户邮件所在的目录/var/mailbox和extman的临时目录/tmp/extman的属主和属组指定为vmail

1
2
#chown -R vmail.vmail /var/mailbox
#chown -R vmail.vmail /tmp/extman



将CGI文件的属主和属组指定为vmail

1
2
# chown -R vmail.vmail /var/www/extsuite/extmail/cgi/
# chown -R vmail.vmail /var/www/extsuite/extman/cgi/



9、修改extman的主配置文件中的默认用户ID和组ID,确保其为类似如下内容

1
2
3
# vim /var/www/extsuite/extman/webman.cf
SYS_DEFAULT_UID = 1001
SYS_DEFAULT_GID = 1001




10、验正邮件投递

1
2
3
# /etc/init.d/courier-authlib restart
# /etc/init.d/httpd restart
# /etc/init.d/postfix restart



接下来重新启动postfix和apache,进行发信测试后,如果日志中的记录类同以下项,则安装成功

1
2
3
4
5
Jul  6 16:36:26 localhost postfix/qmgr[20145]: 02FD42600D2: from=<zyz20140618@126.com>, size=2292, nrcpt=1 (queue active)
Jul  6 16:36:26 localhost postfix/smtpd[20549]: disconnect from m15-112.126.com[220.181.15.112]
Jul  6 16:36:26 localhost postfix/pipe[20634]: 02FD42600D2: to=<zyz2@10fei3.top>, relay=
maildrop
, delay=0.31, delays=0.2/0/0/0.11, dsn=2.0.0, status=sent (delivered via maildrop service)




测试能否发送电邮:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# echo "test"|maildrop -V 9 -d zyz2@10fei3.top
maildrop: authlib: groupid=1001
maildrop: authlib: userid=1001
maildrop: authlib: logname=zyz2@10fei3.top, home=/var/mailbox/10fei3.top/zyz2, mail=(default)
maildrop: Changing to /var/mailbox/10fei3.top/zyz2
Message envelope sender=MAILER-DAEMON
Tokenized ;
Tokenized string: "VERBOSE"
Tokenized =
Tokenized string: "5"
Tokenized ;
Tokenized logfile
Tokenized string: "/var/log/maildrop.log"
Tokenized ;
Tokenized to
Tokenized string: "$HOME/Maildir"
Tokenized ;
Tokenized eof
/etc/maildroprc(2): VERBOSE="5"




十七、maidrop问题解决

报错1:

1
configure: error: pcre.h not found - install PCRE from www.pcre.org




解决:

1
# yum install pcre-devel -y





报错2:

1
configure: error: The Courier Unicode Library 1.2 appears not to be installed. You may need to install a separate development subpackage, in addition to the main package




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

1
2
3
4
5
6
# wget http://jaist.dl.sourceforge.net/ ... unicode-1.1.tar.bz2
# tar jxvf courier-unicode-1.1.tar.bz2
# cd courier-unicode-1.1
# ./configure
# make
# make install



报错3:

1
2
# maildrop -v
maildrop: error while loading shared libraries: libunicode.so.1: cannot open shared object file: No such file or directory



解决:

1
2
3
# ls /usr/local/lib
libcourier-unicode.a   libcourier-unicode.so    libcourier-unicode.so.1.0.0  libunicode.la  libunicode.so.1
libcourier-unicode.la  libcourier-unicode.so.1  libunicode.a                 libunicode.so  libunicode.so.1.0.0



1
2
# vim /etc/ld.so.conf.d/courier-unicode.conf
/usr/local/lib



1
# ldconfig -v




报错4:

1
2
3
Jul  6 14:27:58 localhost postfix/pipe[19853]: 531AE260200: to=<zyz2@10fei3.top>, relay=maildrop, delay=1057,
delays=1057/0.01/0/0.07, dsn=4.3.0, status=deferred (temporary failure. Command output: /usr/local/bin/maildrop: Unable to
change to home directory.



1
2
3
4
5
6
# echo "test"|maildrop -V 10 -d zyz2@10fei3.top
maildrop: authlib: groupid=1001
maildrop: authlib: userid=1001
maildrop: authlib: logname=zyz2@10fei3.top, home=/var/mailbox10fei3.top/zyz2, mail=(default)
maildrop: Changing to /var/mailbox10fei3.top/zyz2
maildrop: Unable to change to home directory.



解决:

1
2
3
4
5
6
7
检查/etc/authmysqlrc
MYSQL_HOME_FIELD        concat('/var/mailbox/',homedir)
MYSQL_MAILDIR_FIELD    concat('/var/mailbox/',maildir)
我因为配置成
MYSQL_MAILDIR_FIELD    concat('/var/mailbox',maildir)
所以导致
maildrop: authlib: logname=zyz2@10fei3.top, home=/var/mailbox10fei3.top/zyz2, mail=(default)



报错5:

1
2
3
Jul  6 14:35:59 localhost postfix/pipe[20149]: AAE7C260202: to=<zyz2@10fei3.top>, relay=maildrop, delay=0.28,
delays=0.25/0/0/0.03, dsn=4.3.0, status=deferred (temporary failure. Command output: /usr/local/bin/maildrop: Unable to open
mailbox. )



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# echo "test"|maildrop -V 9 -d zyz2@10fei3.top
maildrop: authlib: groupid=1001
maildrop: authlib: userid=1001
maildrop: authlib: logname=zyz2@10fei3.top, home=/var/mailbox/10fei3.top/zyz2, mail=(default)
maildrop: Changing to /var/mailbox/10fei3.top/zyz2
Message envelope sender=MAILER-DAEMON
Tokenized ;
Tokenized string: "VERBOSE"
Tokenized =
Tokenized string: "5"
Tokenized ;
Tokenized logfile
Tokenized string: "/var/log/maildrop.log"
Tokenized ;
Tokenized ;
Tokenized eof
/etc/maildroprc(2): VERBOSE="5"
maildrop: Unable to open mailbox.




解决:

1
2
3
4
5
6
7
8
to "$HOME$DEFAULT"
改为:
to "$HOME/Maildir"
# vim /etc/maildroprc
#SHELL="/bin/sh"
VERBOSE=5
logfile "/var/log/maildrop.log"
to "$HOME/Maildir"



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-240567-1-1.html 上篇帖子: linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(二) 下篇帖子: Excheng2013概述
累计签到:16 天
连续签到:4 天
发表于 2017-12-14 09:40:43 | 显示全部楼层
感谢楼主分享···

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表