1. 首页
  2. 系统运维
  3. Linux

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的用户名密码认证。

参考网址:http://blog.nbqykj.cn/?p=2396.html

第二步

Postfix+Amavisd+ClamAV+SpamAssassin的简单工作流程如下,spamassassin不用手动起动,启动amavisd的时候会去加载。

securepostfix02

安装这些组件很简单,一个命令就行。

# yum install amavisd-new clamav clamav-devel clamd spamassassin

第三步

接下来先配置clamav病毒扫描程序,修改/etc/clamd.conf文件,设置Amavisd-new和clamav通信方式为unix socket,注释TCP和端口。

# vi /etc/clamd.conf

securepostfix04

第四步

配置Amavisd-new,修改/etc/amavisd/amavisd.conf文件,设置domain和hostname为postfix配置的域名。

20170505110949

20170505111007

第五步

配置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=

20170505111448

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

securepostfix12

手动更新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

联系我们

0574-55011290

QQ:248687950

邮件:admin@nbhao.org

工作时间:周一至周五,9:00-18:00,节假日休息

QR code