垃圾電子郵件成為了人們最頭疼的問題之一。在Windows操作系統中也許您已經嘗夠了垃圾郵件給您帶來的苦頭,不要以為在Linux操作系統平台中就能避免垃圾電子郵件給我們帶來的騷擾,反擊和過濾垃圾電子郵件是一件很重要的工作。下面介紹一些在Linux中廣泛使用的防垃圾郵件技術。
(1)SMTP用戶認證
目前常見並十分有效的方法是,在郵件傳送代理(Mail Transport Agent,MTA)上對來自本地網絡以外的互聯網的發信用戶進行SMTP認證,僅允許通過認證的用戶進行遠程轉發。這樣既能夠有效避免郵件傳送代理服務器為垃圾郵件發送者所利用,又為出差在外或在家工作的員工提供了便利。如果不采取SMTP認證,則在不犧牲安全的前提下,設立面向互聯網的Web郵件網關也是可行的。 此外,如果SMTP服務和POP3服務集成在同一服務器上,在用戶試圖發信之前對其進行POP3訪問驗證(POP before SMTP)就是一種更加安全的方法,但在應用的時候要考慮到當前支持這種認證方式的郵件客戶端程序還不多。
(2)逆向名字解析
無論哪一種認證,其目的都是避免郵件傳送代理服務器被垃圾郵件發送者所利用,但對於發送到本地的垃圾郵件仍然無可奈何。要解決這個問題,最簡單有效的方法是對發送者的IP地址進行逆向名字解析。通過DNS查詢來判斷發送者的IP與其聲稱的名字是否一致,例如,其聲稱的名字為mx.hotmail.com,而其連接地址為20.200.200.200,與其DNS記錄不符,則予以拒收。這種方法可以有效過濾掉來自動態IP的垃圾郵件,對於某些使用動態域名的發送者,也可以根據實際情況進行屏蔽。但是上面這種方法對於借助Open Relay的垃圾郵件依然無效。對此,更進一步的技術是假設合法的用戶只使用本域具有合法互聯網名稱的郵件傳送代理服務器發送電子郵件。例如,若發件人的郵件地址為[email protected],則其使用的郵件傳送代理服務器的Internet名字應具有yahoo.com 的後綴。這種限制並不符合SMTP協議,但在多數情況下是切實有效的。 需要指出的是,逆向名字解析需要進行大量的DNS查詢。
(3)實時黑名單過濾
以上介紹的防范措施對使用自身合法域名的垃圾郵件仍然無效。對此比較有效的方法就是使用黑名單服務了。黑名單服務是基於用戶投訴和采樣積累而建立的、由域名或IP組成的數據庫,最著名的是RBL、DCC和Razor等,這些數據庫保存了頻繁發送垃圾郵件的主機名字或IP地址,供MTA進行實時查詢以決定是否拒收相應的郵件。但是,目前各種黑名單數據庫難以保證其正確性和及時性。例如,北美的RBL和DCC包含了我國大量的主機名字和IP地址,其中有些是早期的Open Relay造成的,有些則是由於誤報造成的。但這些遲遲得不到糾正,在一定程度上阻礙了我國與北美地區的郵件聯系,也妨礙了我國的用戶使用這些黑名單服務。
(4)內容過濾
即使使用了前面諸多環節中的技術,仍然會有相當一部分垃圾郵件漏網。對此情況,目前最有效的方法是基於郵件標題或正文的內容過濾。其中比較簡單的方法是,結合內容掃描引擎,根據垃圾郵件的常用標題語、垃圾郵件受益者的姓名、電話號碼、Web地址等信息進行過濾。更加復雜但同時更具智能性的方法是,基於貝葉斯概率理論的統計方法所進行的內容過濾,該算法最早由Paul Graham提出(http://www.paulgraham.com/spam.html),並使用他自己設計的Arc語言實現。這種方法的理論基礎是通過對大量垃圾郵件中常見關鍵詞進行分析後得出其分布的統計模型,並由此推算目標郵件是垃圾郵件的可能性。這種方法具有一定的自適應、自學習能力,目前已經得到了廣泛的應用。最有名的垃圾郵件內容過濾是Spamassassin,它使用Perl語言實現,集成了以上兩種過濾方法,可以與當前各種主流的MTA集成使用。內容過濾是以上所有各種方法中耗費計算資源最多的,在郵件流量較大的場合,需要配合高性能服務器使用。
Sendmail是Redhat Linux以及大多數類Unix操作系統的郵件傳送代理,因此它是目前配置最廣泛的郵件服務器。下面以Redhat Linux 9.0使用的Sendmail為例,介紹應對垃圾郵件的幾種具體方法。
_art_center>
(1)關閉Sendmail的Relay功能
所謂Relay就是指別人能用這台SMTP郵件服務器給任何人發信,這樣別有用心的垃圾發送者就可以使用這台郵件服務器大量發送垃圾郵件,而最後別人投訴的不是垃圾發送者,而是這台服務器,因此必須關閉Relay。其方法就是,到Linux服務器的/etc/mail目錄編輯access文件,去掉"*relay"之類的設置,只留"localhost relay"和"127.0.0.1 relay"兩條即可。注意,修改access文件後還要使用命令使修改生效:makemap hash access.db < access。
(2)在Sendmail中添加RBL功能
RBL(Realtime Blackhole List)是實時黑名單。國外有一些機構提供RBL服務,常用的RBL服務器地址有relays.ordb.org、dnsbl.njabl.org、bl.spamcop.net、sbl.spamhaus.org、dun.dnsrbl.net和dnsbl.sorbs.net。查詢和刪除RBL中的IP地址可以到http://openrbl.org/和http://ordb.org。RBL將收集到的專發垃圾郵件的IP地址加入他們的黑名單,只要在Sendmail中加入RBL認證功能,就會使郵件服務器在每次收信時都自動到RBL服務器上去查實,如果信件來源於黑名單,則Sendmail會拒收郵件,從而使單位的用戶少受垃圾郵件之苦。在Sendmail中添加RBL認證,需要對sendmail.mc添加以下內容:
FEATURE(`dnsbl',`relays.ordb.org',`″Email blocked using ORDB.org - see _addr}″">″')
最後執行"m4 sendmail.mc>sendmail.cf"和"service sendmail restart"兩條命令,使有關Sendmail的修改生效。