$lock_file = \ # -L $pid_file = \ # -P $myhostname = 'mail.extmail.org'; @local_domains_maps = qw(.); @mynetworks = qw( 127.0.0.0/8 );
对本地发出的邮件不进行内容过滤
$policy_bank{'MYNETS'} = { # mail originating from @mynetworks
originating => 1, # is true in MYNETS by default, but let's make it explicit os_fingerprint_method => undef, # don't query p0f for internal clients allow_disclaimers => 1, # enables disclaimer insertion if available bypass_spam_checks_maps => [1], bypass_banned_checks_maps => [1], bypass_header_checks_maps => [1], };
$sa_spam_modifies_subj = 0; # 当邮件被认为是垃圾邮件时,是否修改邮件的主题
$remove_existing_x_scanned_headers= 1; # 凡是经过 Amavisd 过滤的邮件,都会在邮件头中被加入一行邮件头信息
$remove_existing_spam_headers = 1; # 修改投递/拦截的方法:
$final_virus_destiny = D_DISCARD; $final_banned_destiny = D_DISCARD; $final_spam_destiny = D_PASS; $final_bad_header_destiny = D_PASS; # 配置Amavisd与Clamav结合 @av_scanners = ( ['ClamAV-clamd',
\\&ask_daemon, [\ qr/\\bOK$/, qr/\\bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ], );
@av_scanners_backup = (
['ClamAV-clamscan', 'clamscan',
\
[0], qr/:.*\\sFOUND$/, qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ], );
amavisd.conf常用参数说明:
$max_servers = 10; 设置最大可使用的进程数 $sa_spam_subject_tag = '[SPAM] '; 加 [SPAM] 标记 $mydomain = 'mail.extmail.org'; 设置域名 $myhostname = 'mail.extmail.org'; 设置主机名
@local_domains_maps = qw(.); 对所有的域检查
$sa_tag2_level_deflt = 5.0; 超过这个分数,允许在邮件标题加入[SPAM] 标记
$sa_kill_level_deflt = 5.0; 超过这个分数,直接將信件备份后删除 $final_virus_destiny: 检测到病毒时的动作
$final_banned_destiny: 检测到受禁止的内容时的动作
$final_spam_destiny: 检测到垃圾邮件、广告邮件(spam)时的动作 $final_bad_header_destiny:检测到不良信件时的动作
默认有以下几种动作:
D_PASS: 无论信件是否有问题,都会将信件发给收件人 D_DISCARD: 信件将被丢弃,并且不会告知收件人及发件人
D_BOUNCE: 信件不会发送给收件人,但会通知发件人邮件没有被投递 D_REJECT: 邮件不会被投递给收件人,但会通知发件人邮件被拒绝 注意事项:
上述$mydomain参数与$myhostname参数相同,主要是为了方便之后的病毒/垃圾汇报邮件发给系统管理员时,能投递到本地的别名里,再转交到虚拟域的特定用户。
5、配置Postfix 集成amavisd-new
增加邮件别名
# vi /etc/postfix/aliases
增加如下信息,注意:默认的aliases数据库里已有一条virusalert的别名,请删除,再输入下面的别名记录,并确保所有记录都是唯一的: virusalert: root spam.police: root
postfix: test@extmail.org
保存并执行newaliases命令生成新的别名数据库,重新启动amavisd:
# newaliases
# service amavisd restart 编辑master.cf文件: # vi /etc/postfix/master.cf 增加如下内容:
smtp-amavis unix - - n - 3 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=10
127.0.0.1:10025 inet n - n - - smtpd -o content_filter=
-o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions=
-o smtpd_helo_restrictions= -o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks 编辑main.cf文件:
# vi /etc/postfix/main.cf
增加如下内容:
# Content-Filter
content_filter = smtp-amavis:[127.0.0.1]:10024 receive_override_options = no_address_mappings
注意:receive_override_options 这里必须增加,禁止地址展开/影射,否则如果遇到别名的时候会引起冗余邮件的产生。
重启postfix :
# service postfix restart 重新启动amavisd:
# service amavisd restart 6、测试Clamav
# telnet localhost 25
其过程如下:
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'.
220 mail.extmail.org ESMTP Postfix - by extmail.org mail from:
rcpt to:
data <<输入内容 354 End data with .
X5O!P%@AP[4\\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* <<输入内容 .
250 2.0.0 Ok: queued as BC24E85260 quit <<输入内容 221 2.0.0 Bye
Connection closed by foreign host.
在邮件日志里,应该有相应的信息出现:
Mar 22 06:43:15 localhost amavis[15405]: (15405-01) Blocked INFECTED (Eicar-Test-Signature), [192.168.0.235] ->, quarantine:
virus-mI6vbjkWZ2Tz, Message-ID: <003401c88c1a$74706360$eb00a8c0@nbk00045>, mail_id: mI6vbjkWZ2Tz, Hits: -, size: 1757, 474 ms
如果看到类似这样的日志,表明Clamav+Amavisd-new工作正常。
十三、配置spam_locker 1、安装Spam_Locker
# yum install extsuite-slockd 配置resolv.conf
请确认/etc/resolv.conf里的dns服务器是离你的邮件服务器最近,速度最快的dns server,slockd很依赖dns的好坏,因此给系统配置一个快速的dns能大幅度提高处理速度。以下给出
一个配置仅供参考: shell
# vi /etc/resolv.conf 增加以下内容:
nameserver 8.8.8.8 #也可以指定自己内部的DNS,如果在内部网络搭建
上述dns服务器是上海电信的DNS服务器,对于非上海的朋友,请改为离你最近的DNS服务器IP,如果可能的话,请配置一个简单的bind,成为本地的dns cache server,可以获得最高性
能。这里略过这一步骤,但您必须确保dns的配置是正确并且可靠的,否则slockd将不能工作!
2、测试slockd
启动slockd
shell
# /usr/local/slockd/slockd-init start
此时slockd将启动,并进入非daemon方式的监听模式,接受来自10030端口的请求,命令行下将显示如下调试信息:
Starting spam locker daemon: slockd
starting child 2908 starting child 2909
打开另一个ssh/终端窗口: # cd /usr/local/slockd/tools
# perl policy_sig -h localhost -p 10030 --helo FOOBAR --ip 192.168.0.1 --from test@foo.com --to test@bar.com
此时,程序应该返回如下错误信息:这表示slockd初步的正常工作了。
action=554 blocked using zen.spamhaus.org, see http://bl.extmail.org/cgi/rbl?192.168.0.1 设置slockd开机自启动
# /usr/local/slockd/slockd-init start # echo “/usr/local/slockd/slockd-init start” >> /etc/rc.d/rc.local 3、配置Postfix
slockd调试正常后,必须配置postfix以使其打开对slockd的支持。
编辑main.cf文件
# vi /etc/postfix/main.cf
将 check_policy_service inet:127.0.0.1:10030 这一行记录增加到smtpd_recipient_restrictions 里,例如:
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname,
check_policy_service inet:127.0.0.1:10030
重新启动postfix以使配置生效 # service postfix restart
注意事项:上述配置是将slockd的查询放到最后,这也是进一步提高资源利用律的办法,因为有部分功能postfix已实现了,所以就先由postfix检测,如果检测不到再由slockd完成。
十四、配置dspam