當今世界,垃圾郵件繼續橫行,而且日益成為一個嚴重的問題,因為垃圾郵件制造者也變得越來越聰明了,所以防止垃圾郵件對任何運行郵件服務器的人來說都是一件非常必要的事情。對於使用Linux的單位來說,現在就有一個傑出的防止垃圾郵件的工具:SpamAssasin 。
現在我們就看一下如何通過SpamAssasin遏止垃圾郵件。
SpamAssasin是一個郵件過慮器,它可以使用一系列的機制來確認垃圾郵件,這些機制包括:文本分析、Bayesian (貝葉斯判決規則)過慮、DNS數據塊列表,以及合作性的過慮數據庫。SpamAssasin並不能刪除垃圾郵件,但它卻可以阻止垃圾郵件。究其原因,主要在於它有如下一些特性:
活動范圍寬:SpamAssasin使用大量的本地和網絡的測試來確認垃圾郵件特征。這使得垃圾郵件制造者在明確其制造的信息的可工作性時增加了難度。
自由軟件:與其它流行的開源軟件(如Apache Web Server)一樣,在相同的條件下發行。
易於擴展:反垃圾測試和配置信息存儲在純文本中,這使得配置和增加新的規則相當容易。
靈活性:SpamAssasin將其邏輯封裝在一個設計精良的、抽象化的API中,因此它可被集成到電子郵件數據流中的任何地方。SpamAssasin可被用於多種電子郵件系統中,其中包括:procmail,sendmail,Postfix, qmail等。
易於配置:SpamAssasin幾乎不需要用戶的配置。你不必用郵件帳戶或郵件列表的成員資格詳細信息來不斷地更新SpamAssasin配置。一旦分類,站點和用戶規則就可以被運用於垃圾郵件。而且規則可以適用於郵件服務器,並且在以後又可以使用用戶自己的郵件用戶代理應用程序。
SpamAssasin通常被認為是最好的垃圾郵件過濾器之一。本文將引導您安裝、配置和使用這個強大的工具。
作為一個Linux應用程序,有各種各樣的方法安裝SpamAssasin。下面是一個安裝方法的簡單列表:
Debian unstable:apt-get install spamassassin Gentoo: emerge mail-filter/spamassassin Fedora: yum install spamassassin
用戶可從SpamAssasin(http://spamassassin.apache.org/downloads.cgi?update=200702131100)下載相關文檔。文件准備好後,在控制台提示符下輸入如下的命令:
untar/unzip the file cd into the newly created directory perl Makefile.PL OPTION: Add -DSPAMC_SSL to $CFLAGS to build an SSL-enabled spamc] make make install [as root]
在INSTALL文件內有相當多的特定發布規則和從屬規則。因此要在安裝之前完整地閱讀此文件。
為在系統范圍內的使用進行安裝的一個最好理由是你不必更改用戶的procmailrc文件。這可能會成為一個令人頭痛的問題,這依賴於你所擁有的用戶的數量。由於這個過程會從理論上破壞用戶的電子郵件,把它放在一個試驗性的環境中運行測試是很明智的。
就像大多數Linux應用程序一樣,SpamAssasin需要對配置文件的編輯。這個配置文件位於/etc/mail/spamassassin/ ,名為local.cf。在你手動編輯配置文件之前,可注意一下,Michael Moncur 已經編寫的一個出色的工具SpamAssassin Configuration Generator,它可以幫助用戶創建local.cf文件。不過,這個工具目前只能在SpamAssasin 3.x中工作。
這個工具提供基於web的選項套件,可以幫助用戶創建自己的配置文件。在選取了Mr. Moncur 創建的簡單選項後,按下“Generate”:
# Generated by http://www.yrex.com/spam/spamconfig.php (version 1.50) # How many hits before a message is considered spam. required_score 7.5 # Change the subject of suspected spam rewrite_header subject *****SPAM***** # Encapsulate spam in an attachment (0=no, 1=yes, 2=safe) report_safe 1 # Enable the Bayes system use_bayes 1 # Enable Bayes auto-learning bayes_auto_learn 1 # Enable or disable network checks skip_rbl_checks 0 use_razor2 1 use_dcc 1 use_pyzor 1 # Mail using languages used in these country codes will not be marked # as being possibly spam in a foreign language. ok_languages all # Mail using locales used in these country codes will not be marked # as being possibly spam in a foreign language. ok_locales all
下面對我們逐一分析:
Score Threshold(評價界限 ): threshold的值越低,就會有更少的郵件通過。默認值為6。不過你要注意:如果你將此項設置過低,一些合法的電子郵件也會被當作垃圾郵件加以阻止。
Rewrite Message Subjects(重寫消息主題):通過這個選項,你可以配置SpamAssassin用你選擇的任何對象來編輯電子郵件的主題行。默認值設置為:*****SPAM*****
Use Auto Learning(使用自動學習): SpamAssassin可以通過分析具有一定評價的消息,去自動化地整理其Bayes(貝葉斯)數據庫,這個評價強烈地顯示了消息是垃圾還是非垃圾消息。
Enable RBL Checks(啟用RBL檢查):選擇SpamAssassin是否應使用RBLS(DNS黑名單)。這有助於檢測難於檢測的垃圾信息,但需要消耗一些時間、網絡帶寬以及一個可用的DNS服務器。
Use Network Checksum Tests(使用網絡檢查和檢驗):選擇是否使用將消息檢查和(Checksum)與已知的垃圾郵件相比較的服務:這些服務有:Vipul's Razor 2.x、 DCC、 Pyzor等,不過只有當每種服務的客戶端軟件安裝時這些服務才能正常工作。(即通過use_razor2, use_dcc, use_pyzor進行)。
Languages(語言):最後兩種配置是關於語言的,第一個是哪些語言應檢查。默認選項是所有的語言。筆者建議您不要修改。
如果你使用Mr.Moncur的應用程序創建你的.cf文件,請將其存放在/etc/mail/spamassassin/ ,然後啟動spamassassin應用程序。要想運行spamassassin,必須以根用戶身份運行如下的命令:
/etc/rc.d/init.d/spamassassin start
注意:根據你的發布版本的不同,spamassassin可能位於/etc/init.d/ 。
啟動並運行spamassassin之後,你可能會想到在每次啟動時此程序都會啟動運行。你可以使用system-config-services這個應用程序,或者檢查啟用spamassassin選項。如果用戶沒有system-config-services這個軟件,可以在/etc/rc.local文件中增加如下的內容:
/etc/rc.d/init.d/spamassassin start
/etc/init.d/spamassassin start
你的spamassassin已經啟動並正常運行,現在需要你設置它與郵件傳輸代理(Mail Delivery Agent)一起工作。在此筆者假設你正使用procmail,因為它是在Linux環境中應用最廣泛的郵件傳輸代理。
用戶需要編輯/etc/procmailrc文件並增加下面的內容:
DROPPRIVS=yes :0fw | /usr/bin/spamc
現在procmail被設置為使用SpamAssassin 來評價和過濾進入的垃圾郵件。
我們知道某些域/用戶會發送垃圾信息。幸運的是,SpamAssassin有一個對付已知垃圾郵件制造者的手段。借助於黑名單,SpamAssassin又朝著最佳和最後的垃圾郵件防線又邁了一步。
設置黑名單是很簡單的事情。你可以向兩個配置文件添加黑名單。對於站點范圍內的使用,可以考慮/etc/mail/spamassain/local.cf ;在~/.spamassassin/user_prefs內,每一個用戶可以配置其自己的黑名單。黑名單看起來是如下的樣子:
blacklist_from [email protected] blacklist_from *@sampledomain.com blacklist_from *@sampledomain.com blacklist_from *@sampledomain.com
上面的內容相當明顯地向我們展示了如何配置黑名單。即你可以配置具體的電子郵件地址(如[email protected]),你也可以配置整個域(如*@sampledomain.com)
如果你不想花費時間編輯自己的黑名單,你可以從http://www.sa-blacklist.stearns.org/sa-blacklist/sa-blacklist.current下載最新的黑名單。不過,未必適合你的需要,有許多中文的垃圾郵件網站並沒有列入。而且這個列表相當龐大,因此在下載此列表並添加到你的黑名單時可要小心了。
有可能你的SpamAssassin不能正確地評價電子郵件是否垃圾郵件。如果發生這種情況,可以用自己的電子郵件訓練SpamAssassin。
為此,你需要使用一個SSH程序(如SSH或Putty等)和SpamAssassin'ssa-learn程序。郵件服務器還必須設置IMAP協議,用以訓練SpamAssassin。
為了訓練SpamAssassin,用戶應遵循如下的步驟:
1.將垃圾郵件從正常郵件中分離出來,將其放入一個單獨的郵箱中。
2.打開ssh應用程序並連接到jupiter.gac.edu。
3.運行如下兩個命令:
sa-learn --ham --progress --mbox Mail/nameOfYourHamMailbox sa-learn --spam --progress --mbox Mail/nameOfYourSpamMailbox
如果你用超過200個垃圾郵件和200個正常郵件訓練了你的SpamAssassin,它就會使用這些信息來決定哪些是垃圾郵件,哪些不是。
筆者認為SpamAssassin 可謂阻止垃圾郵件漫延的必備工具之一。可以這樣說,在公司環境中運行著一個郵件服務器,而如果您沒有采取任何防范措施,任憑垃圾郵件通過您的傳輸通道肆意漫延時,那簡直是一場噩夢。
試想一下設置防止垃圾郵件軟件的重要性以及SpamAssassin使用的簡易性吧,你還有什麼理由不在你的Linux郵件服務器上部署SpamAssassin這個好東西呢,也許你的郵件服務器甚至你的WEB服務會因此人氣大增。