Postfix邮件服务器Amavisd ClamAV SpamAssassin反垃圾病毒模块配置
之前博主配置过一台仅发送邮件的功能的邮件服务器,对收件要求不高所以没有配置反垃圾病毒功能。具体配置步骤可以参考这篇文章“CentOS 6配置Postfix+Mysql认证的邮件服务器步骤”。但是如果您有收件需求了,那么简单的反垃圾病毒还是需要。下面介绍用的比较多的开源套件Postfix+Amavisd+ClamAV+SpamAssassin的配置,这个可以满足一般的需求,是比较简单的邮件反垃圾病毒解决方案。
准备一台服务器,因为需要加入反垃圾和病毒模块,这些对内存要求高很多,不像postfix256MB都可以跑起来。服务器内存至少需要1GB,个人推荐2GB以上。如果是1GB内存的服务器,必须开启swap,不然clam会起不来。另外还是推荐国外服务器,因为国外服务器一般都可以自助做IP反向解析。国外服务器购买:https://vps.nbhao.org/ 。
第一步
安装Postfix,和MySQL的用户名密码认证。
参考网址:https://zhangnq.com/2396.html
第二步
Postfix+Amavisd+ClamAV+SpamAssassin的简单工作流程如下,spamassassin不用手动起动,启动amavisd的时候会去加载。
安装这些组件很简单,一个命令就行。
# yum install amavisd-new clamav clamav-devel clamd spamassassin
第三步
接下来先配置clamav病毒扫描程序,修改/etc/clamd.conf文件,设置Amavisd-new和clamav通信方式为unix socket,注释TCP和端口。
# vi /etc/clamd.conf
第四步
配置Amavisd-new,修改/etc/amavisd/amavisd.conf文件,设置domain和hostname为postfix配置的域名。
第五步
配置postfix,分别修改/etc/postfix/master.cf和/etc/postfix/main.cf文件。
# vi /etc/postfix/master.cf
在文件末尾添加如下行
amavisfeed unix - - n - 10 smtp #10表示maxproc,对应amavisd.conf中的$max_servers -o smtp_data_done_timeout=1200 #超时时间,单位秒,应比postfix的超时时间更长 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 #amavis扫描完成后,使用一个单独的smtp进程将mail回注给postfix,只要本地10025上运行,因此不用开放端口 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o smtpd_restriction_classes= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters,no_address_mappings -o local_header_rewrite_clients= -o smtpd_milters= -o local_recipient_maps= -o relay_recipient_maps=
vi /etc/postfix/main.cf
在文件末尾添加如下行
# use amavisd as filter on port 10024 content_filter=amavisfeed:[127.0.0.1]:10024
第六步
重新启动postfix,amavisd和clamd,配置amavisd和clamd开机自动启动。
# service postfix reload # chkconfig amavisd on # chkconfig clamd on # service clamd start # service amavisd start
手动更新clamav的病毒库。
/usr/bin/freshclam
如果启动失败,可以查看/var/log/maillog日志。
第七步
列下碰到的几个问题和解决办法。
1、服务器禁止IPv6后amavisd启动失败
修改/etc/amavisd/amavisd.conf,添加如下内容。
$inet_socket_bind = '127.0.0.1';
2、amavisd提示bad header,导致发送的邮件被过滤掉,包括发件人有中文字符,缺少时间等。
修改/etc/amavisd/amavisd.conf,添加或者修改如下内容。
$allowed_header_tests{'8bit'} = 0; $allowed_header_tests{'missing'} = 0;
参考链接:
1、http://nolabnoparty.com/en/secure-postfix-amavisd-clamav-spamassassin/
2、http://ywzhou.blog.51cto.com/2785388/1591327
3、http://www.iredmail.org/forum/topic8688-iredmail-support-amavisd-not-working-with-ipv6-disabled.html
4、http://forum.ubuntu.org.cn/viewtopic.php?t=208793
5、http://www.iredmail.org/forum/topic9758-iredadminpro-support-exclude-specific-bad-header-emails-from-quarentine.html