* 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.
如果得到上面的信息,那么恭喜你了,你的病毒掃描程式運行很順暢。