由于公司Exchange環境的郵件過濾的硬體裝置存在單點故障又不想再花更多的費用去做這方面的投資,是以想通過Postfix工具實作一個備援的方案。
相關元件:
postfix+clamd+spamassassin+amavisd-new
clamd 反病毒引擎
spamassassin 反垃圾郵件
amavisd-new是郵件代理伺服器(MTA)和防毒軟體之間的中介軟體
基本原理:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_13929950067Tvr.png" target="_blank"></a>
第一步:postfix 接收郵件
postfix,通過25端口,接受所有的郵件,這個步驟,是很好了解。
第二步:把郵件交給amavisd-new
在Linux的郵件系統裡,amavisd-new的非常關鍵啊。可以這樣了解,postfix,的所有額外的功能,都需要通過他才能實作。
從上面的這個圖檔,我們就可以看到,postfix,把郵件接收下來後,交給amavisd-new,讓他想辦法,解決殺毒,垃圾郵件過濾的問題。
交給防毒軟體
通過clamd,linux的防毒軟體,檢查郵件是否帶病毒。
交給SpamAssassin
通過他來實作垃圾郵件的過濾。
第三步:amavisd-new通過10025端口還給postfix
當所有的工作完成後,交給postfx,postfix在傳遞給exchange
安裝的整個過程
主要參考文檔
<a href="http://blog.linuxphp.org/archives/657/" target="_blank">http://blog.linuxphp.org/archives/657/</a>
<a href="http://wiki.extmail.org/%E5%8D%81%E4%BA%8C%E3%80%81%E9%85%8D%E7%BD%AE%E5%86%85%E5%AE%B9%E3%80%81%E7%97%85%E6%AF%92%E8%BF%87%E6%BB%A4#%E3%80%81%E9%85%8D%E7%BD%AEclamav" target="_blank">http://wiki.extmail.org/%E5%8D%81%E4%BA%8C%E3%80%81%E9%85%8D%E7%BD%AE%E5%86%85%E5%AE%B9%E3%80%81%E7%97%85%E6%AF%92%E8%BF%87%E6%BB%A4#、配置clamav</a>
作業系統版本 Centos 6.3
1 配置dns vim /etc/resolv.conf
添加一個能夠解析的區域網路DNSIP
2 配置hosts vim /etc/hosts
使其能解析自己
比如 1.1.1.1 postfix.contoso.com
一 安裝配置Postfix使其能完成基本的郵件收發
1 修改相關配置檔案
vim /etc/postfix/main.cf:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995006yIpI.png" target="_blank"></a>
2 vim /etc/postfix/transport,在配置檔案的末尾添加以下内容。
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_13929950105m12.png" target="_blank"></a>
3 vim /etc/postfix/master.cf 基本保持預設檔案的原來的内容
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_13929950107VDf.png" target="_blank"></a>
4 執行以下指令使transport生效
postmap transport
5 啟動服務:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995010Seyk.png" target="_blank"></a>
6檢視相關端口:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995010IlcO.png" target="_blank"></a>
7利用powershell send-mailmessage測試一下發送郵件,10.7.2.53就是本台postfix伺服器:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995010oi6w.png" target="_blank"></a>
8發現用戶端已經可以收到了
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995010bPjG.png" target="_blank"></a>
二 添加相關的病毒過濾元件和反垃圾郵件元件
建立相關的賬戶:
添加ClamAV運作所需的組和使用者:
groupadd clamav
useradd -g clamav -s /sbin/nologin -M clamav
添加配合amavisd-new使用的使用者amavis(我們這次是yum安裝預設會建立)
groupadd amavis
useradd -g amavis -s /sbin/nologin -M amavis
本次元件的安裝為了友善主要使用yum安裝也可以使用源碼安裝。
1 安裝Clamd(版本0.98.1)
yum install clamd (yum安裝會自動建立clam組和賬戶這個需要後邊更改一下)
發現預設的源沒有相關的軟體
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995013BvI9.png" target="_blank"></a>
我們需要将其他伺服器的/etc/yum.repos.d目錄下面的源檔案拷貝到這台伺服器上
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995017TdUu.png" target="_blank"></a>
到postfix伺服器上檢視已經有了相關的檔案,并執行yum makecache使其生效
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995017FnKX.png" target="_blank"></a>
再次執行yum install clamd的時候雖然有了相關元件但又發現了錯誤
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995017drcu.png" target="_blank"></a>
需要更改/etc/yum.repos.d/epel.repo中的以下内容
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995017IgLI.png" target="_blank"></a>
再運作 yum makecache 然後再運作yum install clamd 發現已經可以安裝了
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_13929950174mQc.png" target="_blank"></a>
啟動服務service clamd start,會有病毒庫過期的提示:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995018EwU5.png" target="_blank"></a>
使用freshclam更新一下病毒庫,重新開機一下clamd服務已經正常了:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_13929950185Zdr.png" target="_blank"></a>
修改配置檔案内容,/etc/clamd.conf 因為預設的使用者是clam我們需要改為amavis
預設的使用者:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995021cxL0.png" target="_blank"></a>
修改完的使用者:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_13929950213BOp.png" target="_blank"></a>
重新開機服務失敗:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995021YDU0.png" target="_blank"></a>
原來是目錄權限的問題:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_13929950214uON.png" target="_blank"></a>
修改目錄權限:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995022I9RS.png" target="_blank"></a>
删除/var/log/clamav目錄線面的這兩個檔案:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995022PsbY.png" target="_blank"></a>
再起重新開機服務,還是有問題:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995022Hbm1.png" target="_blank"></a>
目錄權限問題:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_139299502585BZ.png" target="_blank"></a>
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995025TWlW.png" target="_blank"></a>
重新開機服務成功:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995026fAC1.png" target="_blank"></a>
修改病毒庫更新的配置檔案
先檢查配置檔案/etc/freshclam.conf
預設賬戶:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995029i4wo.png" target="_blank"></a>
更新後的賬戶
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995029G4z8.png" target="_blank"></a>
配置檔案更改完以後會出現病毒庫更新錯誤
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995029woYB.png" target="_blank"></a>
還是權限的問題需要修改權限至下面的截圖:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995029nXOv.png" target="_blank"></a>
更新成功:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_13929950290IEL.png" target="_blank"></a>
2 安裝spamassassin(版本3.3.1)
yum install spamassassin 這個是正常的。
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995030EE1N.png" target="_blank"></a>
修改配置檔案/etc/mail/spamassassin/local.cf
required_score 5.0
rewrite_header Subject *****SPAM*****
report_safe 1
use_bayes 1
bayes_auto_learn 1
skip_rbl_checks 1
use_razor2 0
use_pyzor 0
ok_locales all
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995030Rbsl.png" target="_blank"></a>
啟動服務:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995030pe3r.png" target="_blank"></a>
3安裝amavisd-new(版本2.8.0)
yum install amavisd-new 一切順利
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995030iGDO.png" target="_blank"></a>
設定相關目錄權限:
将clamav加到amavis運作組裡,并調整目錄權限,否則clamav将無法掃描amavisd-new産生的臨時檔案
# gpasswd -a clamav amavis
# usermod -G amavis clamav
# chown amavis.amavis /var/spool/amavisd
# chmod 750 /var/spool/amavisd
# chown amavis.amavis /var/spool/amavisd/tmp
# chmod 750 /var/spool/amavisd/tmp
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_13929950307eNa.png" target="_blank"></a>
修改相關的配置檔案/etc/amavisd/amavisd.conf内容。
$daemon_user = 'amavis';#yum安裝的時候會自動建立賬戶$daemon_group = 'amavis';#yum安裝的時候會自動建立組和賬戶
$mydomain = 'contoso.com'; #此處是你的Exchange或者其它郵件系統的郵件域
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995321FEOc.png" target="_blank"></a>
$virus_admin = "postmaster\@$mydomain";
$mailfrom_notify_admin = "postmaster\@$mydomain";
$mailfrom_notify_recip = "postmaster\@$mydomain";
$mailfrom_notify_spamadmin = "postmaster\@$mydomain";
$mailfrom_to_quarantine = '';
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995031xSXH.png" target="_blank"></a>
virus_admin_maps => ["postmaster\@$mydomain"] (指定報告病毒和垃圾郵件時發送系統郵件的使用者身份)
spam_admin_maps => ["postmaster\@$mydomain"]
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995031qVpZ.png" target="_blank"></a>
取消以下内容的注釋并修改相關内容。
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995031rDIV.png" target="_blank"></a>
将配置檔案中的以下内容修改成以下内容
['ClamAV-clamd',
\&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"],
qr/\bOK$/m, qr/\bFOUND$/m,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],
這是預設的配置檔案。
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995031Ysrc.png" target="_blank"></a>
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995031OasA.png" target="_blank"></a>
啟動服務,正常。
service amavisd start
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995031ItWX.png" target="_blank"></a>
三 所有元件安裝完畢需要将所有的元件與postfix關聯
修改/etc/postfix/master.cf 添加以下内容
smtp-amavis unix - - n - 2 smtp
-o smtp_data-done_timeout=1200
-o disable_dns_lookup=yes
#符号前面有一個空格用于連續下面的内容
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
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995032MC5J.png" target="_blank"></a>
修改/etc/postfix/main.cf 添加以下内容:
content_filter=amavisfeed:[127.0.0.1]:10024
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_13929950359vUB.png" target="_blank"></a>
重新開機一下服務,相關的端口已經啟動:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995035xuLY.png" target="_blank"></a>
我們将相關的服務設定為開機啟動:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995035qMX6.png" target="_blank"></a>
四 相關的一些測試:
1我們先發送一份正常的郵件:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995035yGlu.png" target="_blank"></a>
檢視相關的日志,沒有檢測到病毒。郵件已經傳送成功:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_13929950369eSe.png" target="_blank"></a>
2 我們發送一份帶病毒的郵件。
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995039VeOf.png" target="_blank"></a>
檢視一下日志發現被隔離了。
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995039YhCU.png" target="_blank"></a>
然後會産生一封退信:
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995039wsL1.png" target="_blank"></a>
說明病毒過濾成功了。
3 測試反垃圾郵件功能.
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 xt.contoso.com ESMTP Postfix
ehlo localhost //打招呼
250-xt.contoso.com
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
250 2.1.0 Ok
250 2.1.5 Ok
data //郵件内容
354 End data with . //下面那行為測試内容
Subject: XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
. //以.結束郵件内容
250 2.0.0 Ok: queued as BC24E85260
quit //退出
221 2.0.0 Bye
Connection closed by foreign host.
發送方出現了退信
<a href="http://lixiaosong.blog.51cto.com/attachment/201402/21/705126_1392995042gv8m.png" target="_blank"></a>
整個方案測試成功
本文轉自handsome7038 51CTO部落格,原文連結:http://blog.51cto.com/lixiaosong/1361914