Amavisd-new+postfix在Fedora 上的安装

发表于:2007-07-04来源:作者:点击数: 标签:
Amavisd-new是邮件代理伺服器(MTA)和防毒软件之间的中介程式,搭配其他病毒扫描软件,如Clam Antivirus、Sophos Sweep等(这里假设你用的是ClamAntivirus,它的安装方法,我将另外再写一份,到时和这篇合起来参才就是一个完整的邮件防毒软件安装手册了),就
Amavisd-new是邮件代理伺服器(MTA)和防毒软件之间的中介程式,搭配其他病毒扫描软件,如Clam Antivirus、Sophos Sweep等(这里假设你用的是ClamAntivirus,它的安装方法,我将另外再写一份,到时和这篇合起来参才就是一个完整的邮件防毒软件安装手册了),就可以让邮件伺服器过滤含有病毒的邮件。
这套软件的安装比较复杂,因为防毒的需要,涉及到其他很多的模块,类似Rar 、Zip等等,在装Amavisd-new前一定要装好它们;
需要的模块分为两部份,下面分别列出。
一、外部的程式
compress,
gzip,
bzip2,
nomarch (or arc),
lha,
arj (or unarj),
rar (or unrar),
zoo,
pax,
cpio,
lzop,
freeze (or unfreeze or melt),
ripole.
cabextract
在安装这些模块之前,可以用rpm -ihv来查询一下,你的FC3下面有没有自帶的,如果有,那最好不过了,可以跳过它来安装接下来模块。
如果没有,可以到这个网址上面去下载它的rpm包,网址:http://dag.wieers.com/packages/,下载之后,直接安装它。也可以直接到它们自己的官方网站上下载。
这些模块的下载网址列表如下:



* file: ftp://ftp.astron.com/pub/file/
compress: ftp://ftp.warwick.ac.uk/pub/compression/
* gzip: http://www.gzip.org/
bzip2: http://sources.redhat.com/bzip2/
nomarch: http://rus.members.beeb.net/nomarch.html
arc: ftp://ftp.kiarchive.ru/pub/unix/arcers/
lha: http://www2m.biglobe.ne.jp/~dolphin/lha/prog/
unarj: ftp://ftp.kiarchive.ru/pub/unix/arcers/
arj: http://testcase.newmail.ru/files/ (arj is preferable to unarj)
rar, unrar: http://www.rarsoft.com/, ftp://ftp.kiarchive.ru/pub/unix/arcers/
(rar is preferable to unrar)
zoo: ftp://ftp.kiarchive.ru/pub/unix/arcers/
lzop: http://www.lzop.org/download/
freeze: ftp://ftp.warwick.ac.uk/pub/compression/
ripOLE: http://www.pldaniels.com/ripole/
* pax: http://www.gnu.org/software/paxutils/
or: http://heirloom.sourceforge.net/
cpio: http://www.gnu.org/software/cpio/
or: http://heirloom.sourceforge.net/
* ClamAV: http://clamav.elektrapro.com/ (open source virus scanner)
SAVI: http://www.csupomona.edu/~henson/www/projects/SAVI-Perl/dist/
dspam: http://www.nuclearelephant.com/projects/dspam/
cabextract http://heidelberg.freshrpms.net/rpm.html?id=29
bdb: http://www.sleepycat.com/ (Berkeley db libr. used via BerkeleyDB)
因为模块较多,寻找及下载时间相当费时间,而且安装时因为模块的依赖关系相互缠绕,很难理清,往往一个模块的安装需要其他的.so文件,
而且那个.so文件又依赖其他的.so文件,为了程式能够正常处理下去,你就不得不把一个个模块安装下去,因为不知道到底还有多少个依赖,
每次装完之后就又出现另外一个,这种不休不止的感觉让人烦燥,好了,废话不多说了,总之提醒你,耐心安装就对了,没有处理不了的依赖。
因为compress没有rpm包,只能下载它的tar ball安装档案,所以跟其他的套件的安装方式不同,这里对它进行说明一下:
1下载它的套件,这需要一点时间,视你的网路而定,我的是128K专线,所以我有时间可以小息一下,中间确实喝了一杯茶,linux总是这样让人觉得很悠闲的样子。
#wget ftp://ftp.warwick.ac.uk/pub/compression/compress-4.0.1.tar.gz

--21:11:50-- ftp://ftp.warwick.ac.uk/pub/compression/compress-4.0.1.tar.gz
=> `compress-4.0.1.tar.gz'
正在查找主機 ftp.warwick.ac.uk... 137.205.192.13
正在連接 ftp.warwick.ac.uk[137.205.192.13]:21... 連上了。
以 anonymous 的身份登入... 登入完成!
==> SYST ... 完成。 ==> PWD ... 完成。
==> TYPE I ... 完成。 ==> CWD /pub/compression ... 完成。
==> PASV ... 完成。 ==> RETR compress-4.0.1.tar.gz ... 完成。
長度:23,713 (非正式資料)

100%[=====================================================================>] 23,713 2.02K/s ETA 00:00

21:14:48 (2.02 KB/s) - `compress-4.0.1.tar.gz' saved [23,713]
这样就表示已经下载完成了,接着可以进行下一步了。
2把它解压缩到/usr/local/src/compress(你也可以把它解压到你想要的目录里面或者你的~目录里,由你自己选择,这里以/usr/local/src/compress
为例,没有什么特别的用意,纯属个人喜欢问题)
#mkdir /usr/local/src/compress
#tar -zxvf compress-4.0.1.tar.gz -C /usr/local/src/compress
#cd /usr/local/src/compress
#make
#make install
Ok安装完成。
假设你把以上所需套件都安装全了,我们接着往下进行Perl相关套件的安装。
二、Perl相关套件的安装
Amavisd-new对Perl的依赖程度相当高,因为它本身大部份都是用Perl写成的包括它的执行档,透过它所需要的Perl模组就可以很清楚地知道了。
官方网站列出它所需的Perl模组,如下:
Archive::Tar (Archive-Tar-x.xx)
Archive::Zip (Archive-Zip-x.xx) (1.14 or later should be used!)
Compress::Zlib (Compress-Zlib-x.xx)
Convert::TNEF (Convert-TNEF-x.xx)
Convert::UUlib (Convert-UUlib-x.xxx) (stick to the new versions!)
MIME::Base64 (MIME-Base64-x.xx)
MIME::Parser (MIME-Tools-x.xxxx) (latest version from CPAN - currently 5.415)
Mail::Internet (MailTools-1.58 or later have workarounds for Perl 5.8.0 bugs)
Net::Server (Net-Server-x.xx)
Net::SMTP (libnet-x.xx) (use libnet-1.16 or latter for performance)
Digest::MD5 (Digest-MD5-x.xx)
IO::Stringy (IO-stringy-x.xxx)
Time::HiRes (Time-HiRes-x.xx) (use 1.49 or later, some older cause problems)
Unix::Syslog (Unix-Syslog-x.xxx)
BerkeleyDB with bdb library 3.2 or later (4.2 or later preferred)
这些是基本的模组,也就是说安装Amavisd-new前必需安装以下的Perl模组,少一个都不行,我因为没有安装BerkeleyDB,安装好Amavisd-new之
后进行测试,死活不通,弄得我头破血流。
在Fedora core3里默认安装有5.85的Perl版本,所以我们不必花费时间再去下载与安装它,如果在你的电脑上是第一次使用它,那么开始前需要对
它进行配置,配置很简单,但也很重要,尤其是里面的多个url的选择,我一开始只选了一个,在安装模组时有很多找不到,可把我害惨了,后来重新配
置一次,才行。所以说配置好它很重要这里我不多说,以后我再把自己的操作感受写出来,供大家参考。
我们可以透过Perl的CPAN方式来进行安装,先在终端机视窗里执行下面这条指令。
#Perl -MCPAN -e shell
Warning [/etc/inputrc line 11]:
Invalid variable `mark-symlinked-directories'

cpan shell -- CPAN exploration and modules installation (v1.7601)
ReadLine support enabled

cpan>


而后安装以上所列出来的模块

install Archive::Tar
install Archive::Zip
install Compress::Zlib
install Convert::TNEF
install Convert::UUlib
install MIME::Base64
install MIME::Parser
install Mail::Internet
install Net::Server
install Net::SMTP
install Digest::MD5
install IO::Stringy
install Time::HiRes
install Unix::Syslog
install BerkeleyDB

举个例子说明如下:
安装File::MMagic模组
cpan>install File::MMagic
CPAN: Storable loaded ok
Going to read /root/.cpan/Metadata
Database was generated on Mon, 11 Apr 2005 03:56:00 GMT
CPAN: LWP::UserAgent loaded ok
Fetching with LWP:
ftp://ftp.shellhung.org/pub/CPAN/authors/01mailrc.txt.gz
LWP failed with code[500] message[LWP::Protocol::MyFTP: Bad hostname 'ftp.shellhung.org']
Fetching with Net::FTP:
ftp://ftp.shellhung.org/pub/CPAN/authors/01mailrc.txt.gz
Fetching with LWP:
ftp://mirrors.hknet.com/CPAN/authors/01mailrc.txt.gz
Going to read /root/.cpan/sources/authors/01mailrc.txt.gz
CPAN: Compress::Zlib loaded ok
......
......
......
/usr/bin/make test -- OK
Running make install
Installing /usr/lib/perl5/site_perl/5.8.5/File/MMagic.pm
Installing /usr/share/man/man3/File::MMagic.3pm
Writing /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/File/MMagic/.packlist
Appending installation info to /usr/lib/perl5/5.8.5/i386-linux-thread-multi/perllocal.pod
/usr/bin/make install -- OK

出现这些信息时表示你已经安装好了File::MMagic这个模组了。
其他的模组用这种方法都安上去。

如果你能顺利地安装到这里,那么谢天谢地,整个过程,你己经走了一半了,接着往下走吧。

三、安装与设定Amavisd-new
在安装完需要的套件之后,我们就可以安装Amavisd-new了。
首先在http://www.ijs.si/software/amavisd/#download这里下载最新版的Amavisd-new,我这里用的版本是2.2.1,
所以我下载下来的档案是amavisd-new-2.2.1.tar.gz。
我把它解压到了/usr/local/src/,解压前它自动在/usr/local/src里面创建了一个叫做amavisd-new-2.2.1的文件夹,
所有解压出来的文件都放在里面了。
#tar xzvf amavisd-new-2.2.1.tar.gz
在安装它之前,我们得为这套软件的执行建立用户账号。
#/usr/sbin/useradd -s /bin/false -d /var/amavis -c "Amavis User" amavis
这样我了就为系统增加了一个叫做amavis的用户账号,它没有自己的bash,并且家目录在/var/amavis下面;默认情况,这条
语句也在FC3建立了一个群组的账号,这个账号在以后我们有需要用到它。
接着在它的家目录里,建立三个子目录,在配置Amavisd-new时需要用到它们:
#mkdir /var/amavis/tmp /var/amavis/var /var/amavis/db
为了系统与套件的安全性,不能让那些普通用户去读写/var/amavis,需要把/var/amavis设定为只有amavis拥有读写权限,
也就是把/var/amavis的拥有者设为amavis即可,执行如下的命令:
#chown -R amavis:amavis /var/amavis
#chmod -R 750 /var/amavis

假设你现在不在/usr/local/src/amavisd-new-2.2.1下面,我们用下面的命令进到里面去:
#cd /usr/local/src/amavisd-new-2.2.1
把里面的amavisd档案复制到/usr/local/sbin里面
#cp amavisd /usr/local/sbin
并且为了提高它的安全性,需要设为只有超级管理员才可以读取它,因为这个档案是用Perl写成的,可以用一般的文字编辑器浏览它。
#chown root /usr/local/sbin/amavisd
赋给它可执行的属性
#chmod 755 /usr/local/sbin/amavisd
把Amavisd-new的配置文件amavisd.conf复制到/etc下面,以方便套件在运行时载入它。
#cp amavisd.conf /etc/
把/etc/amavisd.conf的拥有者设为root
#chown root /etc/amavisd.conf
改变它的文件属性
#chmod 644 /etc/amavisd.conf
创建一个文件夹,用于在amavisd扫描到病毒时,把感染病毒的邮件放进去进行隔离;它也可以用来存贮垃圾邮件。
#mkdir /var/virusmails
改变/var/virusmails的拥有者
#chown amavis:amavis /var/virusmails
改变/var/virusmails的属性
#chmod 750 /var/virusmails

现在我们现再来编辑amavisd-new的配置文件,用你习惯的文字编辑器打开/etc/amavisd.conf,设置以下的变量值:
$daemon_group='amavis';
$daemon_user='amavis';
$MYHOME = '/var/amavis';
$TEMPBASE = "$MYHOME/tmp";
$db_home = "$MYHOME/db";
$helpers_home = "$MYHOME/var";
$pid_file = "$MYHOME/var/amavisd.pid";
$lock_file = "$MYHOME/var/amavisd.lock";
  $remove_existing_spam_headers = 0; //不移除邮件头部的X-SPAM标志字段
  $X_HEADER_LINE = "By $myproduct_name $myversion_id ($myversion_date) Using ClamAV at $mydomain"; //定义显示在邮件头部的病毒扫描
里面涉及到的文件夹,在上面都已经建立好了。
假如你用的是ClamAV作为防毒程式,那么你需要把它的用户加入到amavis群组里面,并在ClamAV的配置文件
clamd.conf的最后加上这个设置语句:
AllowSupplementaryGroups

到现在为止,这个程式安装的差不多了,现在可以执行它来看看测试信息。
#/usr/local/sbin/amavisd debug
也可以指定执行程式的用户执行程式,如下面指令:
#/usr/local/sbin/amavisd -r vscan debug

Apr 12 20:20:12 mail.js.act-cn.com /usr/sbin/amavisd[3911]: starting./usr/sbin/amavisd at mail.js.act-cn.com amavisd-new-2.2.1 (20041222),Unicode aware, LANG=zh_TW.UTF-8
Apr 12 20:20:12 mail.js.act-cn.com /usr/sbin/amavisd[3911]: user=,EUID: 0 (0); group=, EGID: 0 10 6 4 3 2 1 0 (0 10 6 4 3 2 1 0)
Apr 12 20:20:12 mail.js.act-cn.com /usr/sbin/amavisd[3911]: Perl version 5.008005
Apr 12 20:20:12 mail.js.act-cn.com /usr/sbin/amavisd[3911]: INFO: no optional modules: Razor2::Client
Apr 12 20:20:12 mail.js.act-cn.com /usr/sbin/amavisd[3911]:Net::Server: 2005/04/12-20:20:12 Amavis (typeNet::Server::PreForkSimple) starting! pid(3911)
Apr 12 20:20:12 mail.js.act-cn.com /usr/sbin/amavisd[3911]: Net::Server: Binding to TCP port 10024 on host 127.0.0.1
Apr 12 20:20:12 mail.js.act-cn.com /usr/sbin/amavisd[3911]: Net::Server: Setting gid to "507 507"
Apr 12 20:20:12 mail.js.act-cn.com /usr/sbin/amavisd[3911]: Net::Server: Setting uid to "507"
Apr 12 20:20:12 mail.js.act-cn.com /usr/sbin/amavisd[3911]: Net::Server: Setting up serialization via flock
..............
..............
..............
Apr 12 20:20:17 mail.js.act-cn.com /usr/sbin/amavisd[3912]: Net::Server: Child Preforked (3912)
Apr 12 20:20:17 mail.js.act-cn.com /usr/sbin/amavisd[3913]: Net::Server: Child Preforked (3913)
Apr 12 20:20:17 mail.js.act-cn.com /usr/sbin/amavisd[3911]: Net::Server: Parent ready for children.
Apr 12 20:20:17 mail.js.act-cn.com /usr/sbin/amavisd[3912]: TIMING [total 113 ms] - bdb-open: 113 (100%), rundown: 0 (0%)
Apr 12 20:20:17 mail.js.act-cn.com /usr/sbin/amavisd[3913]: TIMING [total 96 ms] - bdb-open: 96 (100%), rundown: 0 (0%)
出现以上最后面两句信息时,一般来说表示套件安装成功。
你也可以用下面的指令来测试它:
#telnet 127.0.0.1 10024
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 [127.0.0.1] ESMTP amavisd-new service ready
如果你的终端机里面出现以上信息,那你的这个套件就安装成功了。

四、配置Postfix与Amavisd-new,实现过滤病毒邮件。
用编辑器打开你postfix的master.cf档案,在最后加入下面的语句,你最好用复制的方法,下面的语句贴到你的master.cf档案里,以减小手动输入时产生的错误,
语句如下:

smtp-amavis unix - - n- 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20

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 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
保存配置文件,退出编辑器,而后再编辑postfix的另外一个配置文件main.cf,在里面增加一句指令,这句指令如下:
content_filter=smtp-amavis:[127.0.0.1]:10024

重新载入postfix的配置文件
#/etc/init.d/postfix reload.
执行如下的测试指令

#telnet 127.0.0.1 10025
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 yourhost.example.com ESMTP Postfix
--> quit
221 Bye
Connection closed by foreign host.
如果出现了上面的信息就表示程式配置成功,可以使用它了。
如果你还想进一步测式看看你的邮件伺服器是否真的会通过amavisd-new来扫描病毒,就需要执行下面的命令交互测试。
-> $ telnet 127.0.0.1 10024
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 [127.0.0.1] ESMTP amavisd-new service ready
--> MAIL FROM:<test@example.com>
250 2.1.0 Sender test@example.com OK
--> RCPT TO:<postmaster>
250 2.1.5 Recipient postmaster OK
--> DATA
354 End data with <CR><LF>.<CR><LF>
--> Subject: test1
-->
--> test1
--> .

*** 250 2.6.0 Ok, id=31859-01, from MTA: 250 Ok: queued as 90B7F16F

--> MAIL FROM:<test@example.com>
250 2.1.0 Sender test@example.com OK
--> RCPT TO:<postmaster>
250 2.1.5 Recipient postmaster OK
--> DATA
354 End data with <CR><LF>.<CR><LF>
--> Subject: test2 - virus test pattern
-->
--> X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
--> .

you should get one of the following replies (or similar), depending on
the $final_virus_destiny and *virus_lovers* settings in amavisd.conf:
*** 550 5.7.1 Message content rejected, id=16968-01 - VIRUS: EICAR-AV-Test
*** 250 2.5.0 Ok, but 1 BOUNCE
*** 250 2.7.1 Ok, discarded, id=16984-01 - VIRUS: EICAR-AV-Test
*** 250 2.6.0 Ok, id=17041-01, from MTA: 250 Ok: queued as 3F1841A5F5

--> QUIT
221 2.0.0 [127.0.0.1] (amavisd) closing transmission channel
Connection closed by foreign host.
如果得到上面的信息,那么恭喜你了,你的病毒扫描程式运行很顺畅。

原文转自:http://www.ltesting.net