邮件病毒检查和垃圾邮件过滤

抗病毒使用软件是clamav,安装时一定要用当前的最新版本。垃圾邮件过滤可使用一个名为SpamAssassin的perl模块。通过采用amavisd-new这个容器,可以把clamav和SpamAssassin整合起来。

(1)安装配置clamav.

[root@mailserv2 ~]# useradd clamav
[root@mailserv2 ~]# cd
[root@mailserv2 ~]# cd clamav-0.91.2
[root@mailserv2 ~]# ./configure --prefix=/usr/local/clamav --with-dbdir=/usr/local/share/clamav --disable-zlib-vcheck
[root@mailserv2 ~]# make
[root@mailserv2 ~]# make install

Clamav有2个配置文件,一个主配置文件/usr/local/clamav/etc/clamd.conf,一个病毒更新配置文件/usr/local/clamav/etc/ freshclam.conf。现把修改好的配置文件列于下面:

[root@mailserv2 ~]# more /usr/local/clamav/etc/freshclam.conf | sed -n '/^#/!p'

DatabaseDirectory /usr/local/share/clamav

UpdateLogFile /var/log/clamav/freshclam.log

LogVerbose yes

LogSyslog yes

LogFacility LOG_MAIL

DatabaseOwner amavis

DatabaseMirror db.CN.clamav.net

 

DatabaseMirror database.clamav.net

[root@mailserv2 ~]# more /usr/local/clamav/etc/clamd.conf | sed -n '/^#/!p'

LogFile /var/log/clamav/clamd.log

LogSyslog yes

LogVerbose yes

PidFile /var/run/clamav/clamd.pid

DatabaseDirectory /usr/local/share/clamav

LocalSocket /var/run/clamav/clamd.socket

StreamMaxLength 20M

User amavis

ScanMail yes

ScanArchive yes

这2个文件有很多注释,我用sed把它过滤掉了。Clamd.conf中,有"User amavis"这样一行。为什么不用默认的用户clamav而使用amavis呢?这样做的目的是为了与amavis-new结合在一起。既然没有这个用户,就手动创建一个useradd amavis)。接下来需要手动创建一些目录并赋予相应的权限,用来记录日志等用途;我把它作成一个shell脚本,直接执行即可,脚本的内容如下所示:

 [root@mailserv2 ~]# more  /root/clamav.sh

   #!/bin/bash

   # create directory for clamav

    mkdir /var/log/clamav
chmod -R 744 /var/log/clamav
chown -R amavis:amavis /var/log/clamav
chown -R amavis.amavis /usr/local/share/clamav
mkdir /var/run/clamav
chmod 700 /var/run/clamav
chown amavis.amavis /var/run/clamav

脚本执行成功后,再执行 [root@mailserv2 ~]# /usr/local/clamav/bin/freshclam 手动更新病毒库。

(2)安装和配置avamvis-new。解压包amavisd-new-2.5.2.tar.gz,然后把它移动到相关的位置。这里还是用一个脚本来做这个事情,脚本的内容如下:

[root@mailserv2 ~]# more /root/amavis.sh

#!/bin/bash

cd /root

tar clamav-0.91.2.tar.gz

cd clamav-0.91.2

mkdir -p /var/amavis /var/amavis/tmp /var/amavis/var /var/amavis/db
chown -R amavis:amavis /var/amavis
chmod -R 750 /var/amavis
cp amavisd /usr/local/sbin/
chown root /usr/local/sbin/amavisd
chmod 755 /usr/local/sbin/amavisd
cp amavisd.conf /etc/
chown root /etc/amavisd.conf
chmod 644 /etc/amavisd.conf

mkdir /var/virusmails
chown amavis:amavis /var/virusmails
chmod 750 /var/virusmails

执行完脚本后别忘记检查一下是否都按我们的意愿工作,如/usr/local/sbin目录是否有文件amavisd。

Amavisd的配置文件/etc/amavisd.conf比较复杂,需要修改的内容如下:

$max_servers=8; 
$daemon_user = 'amavis';
$daemon_group = 'amavis';
$mydomain = 'sery.com';
$db_home = "$MYHOME/db";
$inet_socket_port = 10024;
$sa_tag_level_deflt = -100; 
$sa_tag2_level_deflt = 6.3; 
$sa_kill_level_deflt = $sa_tag2_level_deflt;
$virus_admin = "virusalert@$mydomain";
$sa_spam_subject_tag = '***SPAM*** ';
$notify_method = $forward_method;
$forward_method = 'smtp:127.0.0.1:10025'; 
$final_virus_destiny = D_DISCARD;
$final_banned_destiny = D_DISCARD;
$final_spam_destiny = D_PASS;
['ClamAV-clamd',
&ask_daemon, ["CONTSCAN {}n", "/var/run/clamav/clamd"],
qr/bOK$/, qr/bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],

上述修改确认无误后,执行 [root@mailserv2 ~]# /usr/local/sbin/amavisd debug 测试amavis。一般而言,测试皆不能正常进行,因为所需要的很多perl模块很可能没有被安装。还好,报错信息给出了所需的模块。这时你需要到www.cpan.org下载相关的模块,然后安装;也可能遇到包依赖,再下载依赖的包,安装这个依赖,再反回来安装先前那个包,如此反复,很是烦人,极考验人的耐性。等到/usr/local/sbin/amavisd debug 输出没有错误方才完成。有另外一种方法,即运行 [root@mailserv2 ~]# perl MCPAN -e shell ,然后执行 cpan> install Time::HiRes 这样的命令挨个安装缺少的perl模块。根据我的经验,这样干很耗时,并且有的模块用这种方法安装还不灵,所以还不如在网站下载模块安装有效。下面给出一个perl模块的安装实例:

[root@mailserv2 ~]# cd

[root@mailserv2 ~]# tar zxvf BerkeleyDB-0.32.tar.gz

[root@mailserv2 ~]# cd BerkeleyDB-0.32

[root@mailserv2 ~]# perl Makefile.PL

[root@mailserv2 ~]# make

[root@mailserv2 ~]# make install


相关内容