-
目录
?
?
?
1 Amavisd
简介
2
安装
Amavisd
3
配置
Amavisd
o
3.1
Amavisd
o
3.2
Postfix
o
3.3
清理病毒文件
?
?
?
4
测试
Amavisd
5
调试
Amavisd
6 FAQ & Trouble Shooting
o
6.1
Amavisd
为何没有在邮件头中插入
'X-Spam-Status'
等标记?
o
6.2 Can't send
SIG 0 to process
o
6.3
如何让
Amavisd
不扫描外发的邮件
?
7 Resource
Links
Amavisd
简介
以下介绍内容来自
amavsid-
new
官方网站
:
amavisd-new is a high-
performance interface between mailer (MTA) and
content checkers:
virus scanners,
and/or SpamAssassin. It is written in Perl for
maintainability, without paying
a
significant price for speed. It talks to MTA via
(E)SMTP or LMTP, or by using helper programs.
Best with Postfix, fine with dual-
sendmail setup and Exim v4, works with
sendmail/milter, or
with any MTA as a
SMTP relay. For Courier and qmail MTA integration
there is a patch in the
distributed
package.
amavisd-new
是一个介于
MTA
和内容过滤软件之间的桥梁,其角色就像是两者之间的沟通者。
amavisd-new
本身也是个简单的
MTA
,也可以用来架设一个独立的
Mail Gateway
,提供多台
Mail
Server
做邮件过滤。除此之外,
amavisd -new
还可以结合十多种杀毒软件来做病毒防护。
amavisd-new
在这里的作用主要是:
?
负责调用
ClamAV
对邮件进行病毒扫描
?
负责调用
SpamAssassin
对邮件内容进行过滤
后面还会介绍用
Amavisd-
new (>=2.6.0)
来实现
DKIM
签名和验证功能。
安装
Amavisd
Shell
命令:
#
yum -y install amavisd-new
配置
Amavisd
Amavisd
amavisd-new
的配置文件为:
/etc/
。这里主要修改了以下几个参数:
文件:
/etc/
$$max_servers = 15;
$$mydomain = '';
#
#
将你的虚拟域加到
中,这样
Amavisd
在调用
SpamAssassin
检查完
#
邮件后才会在邮件
header
部分加入
'X-Spam-Status',
'X-Spam-Level'
等
标记。
#
每个域都需要用引号包含起来,域之间用英文逗号分隔。
#
@local_domains_maps = (
[
local domains
#
#
设置
amavisd
的
pid
文件。
#
$$pid_file =
#
#
检测到病毒等邮件时发邮件通知到哪个邮件地址
#
$$virus_admin
=
$$mailfrom_notify_admin =
$$mailfrom_notify_recip =
$$mailfrom_notify_spamadmin =
#
#
设置监听的
IP/Port
。
#
$$inet_socket_port = [10024,10026]; #
listen on multiple TCP ports
$$notify_method =
'smtp:[127.0.0.1]:10025';
$$forward_method =
'smtp:[127.0.0.1]:10025';
#
#
检测到
virus/spam
等信件时的默认动作。各参数的含义是:
#
# *
$$final_virus_destiny:
检测到病毒时的动作
# *
$$final_banned_destiny:
检测到受禁止的内容时的动作
#
*
$$final_spam_destiny:
< br>检测到垃圾邮件、广告邮件(
spam
)时
的动作
# *
$$final_bad_header_destiny:
检测到不良信件时的动作
#
#
默认有以下几种动作:
#
# * D_PASS:
无论信件是否有问题,都会将信件发给收件人
# * D_DISCARD:
信件将被丢弃,并且不会告知收件人及发件人
# * D_BOUNCE:
信件不会发送给收件人,但会通知发件人邮件没有被投递
# * D_REJECT:
邮件不会被投递给收件人,但会通知发件人邮件被拒绝
#
#
注意:除了
D_PASS
,其它参数
都会导致邮件最终不被投递到用户邮箱里。
#
由于担心误删资料,所以默认将
spam, banned,
bad_header
的默认动作都
#
设置为
D_PASS
了,请根据自己的需要来修改。
#
$$final_virus_destiny = D_DISCARD;
$$final_banned_destiny = D_PASS;
$$final_spam_destiny = D_PASS;
$$final_bad_header_destiny = D_PASS;
#
#
在
@av_scanners
部分中,只保留
ClamAV
相关的内容,其它的都注释掉。
#
#
注意:这里需要修改
clamd
的
Socket
路径,修改为:<
/p>
/tmp/
。
#
@av_scanners = (
# ### /
['ClamAV-clamd',
&ask_daemon, [
qr/bOK$$/, qr/bFOUND$$/,
qr/^.*?:
(?!Infected Archive)(.*) FOUND$$/ ],
);
#
#
在
@av_scanners_backup
部分,只保留
ClamAV
相关的内容,其它的都注释
掉。
#
@av_scanners_backup = (
### / - backs up clamd or
Mail::ClamAV
['ClamAV-clamscan',
'clamscan',
qr/^.*?:
(?!Infected Archive)(.*) FOUND$$/ ],
);
#
#
调试
SpamAssassin
。
#
0: disable
# 1: enable
#
$$sa_debug = 0;
#
#
当邮件被认为是垃圾邮件时,是否修改邮件的主题。即在邮
件主题里加上
# '*** SPAM ***'
字符串。
#
# 1: enable
# 0:
disable
#
$$sa_spam_modifies_subj = 1;
#
# remove existing headers
#
#$$remove_existing_x_scanned_headers= 1;
#$$remove_existing_spam_headers = 1;
#
#
默认情况下,凡是经过
Amavisd
过滤的邮件,都会在邮件头中被加入一行
#
邮件头信息,例如:
#
# X-Virus-Scanned:
amavisd-new at
#
#
将参数留空则不会添加邮件头。
#
#
如果需要自定义插入的邮件头信息,可以修改
/usr/sbin/amavisd
文件里
#
的对应内容:
#
# sub
add_forwarding_header_edits_per_recip
#
#$$X_HEADER_TAG = 'X-Virus-Scanned';
#$$X_HEADER_LINE =
1; #
insure a defined return
编辑完后,可以执行以下命令以检查
amavisd
是否配置正确:
Shell
命令:
#
amavisd debug
如果顺利启动,则表示配置没有错误。可以用
Ctrl + C
的组合键终止进程,然后用以下命令启动它:
Shell
命令:
#
/etc/init.d/amavisd restart
如果希望将用户通过
SASL
验证后,使用
SMTPS/submission
发送的邮件都直接投递,
不进行过滤的
话,可以在
中加入以下内容:
文件:
/etc/
# This policyd will perform virus
checks only.
$$interface_policy{'10026'}
= 'VIRUSONLY';
$$policy_bank{'VIRUSONLY'} = { # mail
from the pickup daemon
bypass_spam_checks_maps => [1], # don't spam-
check this mail
bypass_banned_checks_maps => [1], # don't banned-
check this mail
bypass_header_checks_maps => [1], # don't header-
check this mail
};
# Allow
SASL authenticated users to bypass scanning.
Typically SASL
# users already submit
messages to the submission port (587) or the
# smtps port (465):
$$interface_policy{'10026'} =
'SASLBYPASS';
$$policy_bank{'SASLBYPASS'} = { # mail
from submission and smtps ports
bypass_spam_checks_maps => [1], # don't spam-
check this mail
bypass_banned_checks_maps => [1], # don't banned-
check this mail
bypass_header_checks_maps => [1], # don't header-
check this mail
};
然后修改
/etc/postfix/
文件,为
smtps/submission
增加参数,例如:
文件:
/etc/postfix/
smtps inet n -
n - - smtpd
-o
smtpd_tls_wrappermode=yes
-o
smtpd_sasl_auth_enable=yes
-o smtpd_c
lient_restrictions=permit_sasl_authenticated,rejec
t
-o content_filter=smtp-
amavis:[127.0.0.1]:10026 # <-
增加这行
submission
inet n - n - - smtpd
-o smtpd_enforce_tls=yes
-o smtpd_sasl_auth_enable=yes
-o smtp
d_client_restrictions=permit_sasl_authenticated,re
ject
-o content_filter=smtp-
amavis:[127.0.0.1]:10026 # <-
增加这行
Postfix
配置好
Amavisd-new
后,还需要通知
Postfix
使用
Amavisd
作为内容过滤程序。
?
在
/etc/postfix/
中添加以下内容:
文件:
/etc/postfix/