本文介紹了一些在Linux中廣泛使用的防垃圾郵件技術,同時也介紹了通過配置郵件傳送代理服務器Sendmail來抑制垃圾郵件的具體方法。
隨著Internet的發展,電子郵件作為
一種通信方式逐漸普及。當前電子郵件的用戶已經從科學和教育行業發展到了普通家庭中的用戶,電子郵件傳遞的信息也從普通文本信息發展到包含聲音、圖像在內的多媒體信息。電子郵件的廉價和操作簡便在給人們帶來巨大便利的同時,也誘使有些人將之作為大量散發自己信息的工具,最終導致了互聯網世界中垃圾郵件的泛濫。垃圾郵件問題已經極大地消耗了網絡資源,並給人們帶來了極大的不便。據中國互聯網協會(ISC)2005年第一次反垃圾郵件狀況調查顯示,中國郵件用戶2005年4月平均每人每天收到郵件16.8封,占收到郵件總數的60.87%。
垃圾電子郵件已成為人們最頭疼的問題之一。在Windows操作系統中也許用戶已經嘗夠了垃圾郵件帶來的苦頭,在Linux操作系統平台中也很難避免垃圾電子郵件給我們帶來的騷擾,反擊和過濾垃圾電子郵件是一件很重要的工作。
垃圾郵件防治策略
總體說來,抑制垃圾郵件,有如下幾種方法:
1.SMTP用戶認證
這是目前最常見、最簡單並且十分有效的方法。在郵件傳送代理(Mail Transport Agent,MTA)上對來自本地網絡以外的互聯網的發信用戶進行SMTP認證,僅允許通過認證的用戶進行遠程轉發。這樣既能夠有效避免郵件傳送代理服務器為垃圾郵件發送者所利用,又為出差在外或在家工作的員工提供了便利。如果不采取SMTP認證,則在不犧牲安全的前提下,設立面向互聯網的Web郵件網關也是可行的。
此外,如果SMTP服務和POP3服務集成在同一服務器上,在用戶試圖發信之前對其進行POP3訪問驗證就是一種更加安全的方法。目前,新浪等大型網站都相繼采用了該功能,使得這些大型服務商的服務器被利用來發送垃圾郵件的概率大大降低。當前支持這種認證方式的郵件客戶端程序比較出色的是FoxMail。
2.逆向DNS解析
無論哪一種認證,其目的都是避免郵件傳送代理服務器被垃圾郵件發送者所利用,但對於發送到本地的垃圾郵件仍然無可奈何。要解決這個問題,最簡單有效的方法是對發送者的IP地址進行逆向名字解析,即通過DNS查詢來判斷發送者的IP與其聲稱的名字是否一致。例如,其聲稱的名字為pc.sina.com,而其連接地址為120.20.96.68,與其DNS記錄不符,則予以拒收。這種方法可以有效過濾掉來自動態IP的垃圾郵件,對於某些使用動態域名的發送者,也可以根據實際情況進行屏蔽。
但是上面這種方法對於借助Open Relay的垃圾郵件依然無效。對此,更進一步的技術是假設合法的用戶只使用本域具有合法互聯網名稱的郵件傳送代理服務器發送電子郵件。需要指出的是,逆向名字解析需要進行大量的DNS查詢。這樣,在網絡中將會出現大量的UDP數據包。
3.黑名單過濾
黑名單服務是基於用戶投訴和采樣積累而建立的、由域名或IP組成的數據庫,最著名的是RBL、DCC和Razor等。這些數據庫保存了頻繁發送垃圾郵件的主機名字或IP地址,供MTA進行實時查詢以決定是否拒收相應的郵件。簡單地說,即數據庫中保存的IP地址或者域名都應該是非法的,都應該被阻斷。
但是,目前各種黑名單數據庫難以保證其正確性和及時性,一般該名單的形成需要一段時間的積累。例如,曾經一段時期,北美的RBL和DCC包含了我國大量的主機名字和IP地址,其中有些是早期的Open Relay造成的,有些則是由於誤報造成的。但這些遲遲得不到糾正,在一定程度上阻礙了我國與北美地區的郵件聯系,也妨礙了我國的用戶使用這些黑名單服務。
4.白名單過濾
白名單過濾是相對於上述的黑名單過濾來說的。它建立的數據庫的內容和黑名單的一樣,但是其性質是:庫中存在的都是合法的,不應該被阻斷。同樣,該過濾方法存在的缺點與黑名單類似,也是更新和維護難以達到實時,一些正常的、不為系統白名單所收集的郵件有可能被阻斷。從應用的角度來說,在小范圍內使用白名單是比較成功的,可以通過在企業或者是公司的網關處通過一段時間內獲取由內部發出的郵件的相關信息的辦法來生成白名單。
5.內容過濾
即使使用了前面諸多環節中的技術,仍然會有相當一部分垃圾郵件漏網。對此種情況,目前最有效、最根本的方法是基於郵件標題或正文的內容過濾。其中比較簡單的方法是,結合內容掃描引擎,根據垃圾郵件的常用標題語、垃圾郵件受益者的姓名、電話號碼、Web地址等信息進行過濾。
更加復雜但同時更具智能性的方法是,基於貝葉斯概率理論的統計方法、支持向量機(SVM)方法、人工神經網絡、Winnow等方法所進行的內容過濾,這些方法的理論基礎是通過對大量垃圾郵件中常見關鍵詞等采用上述方法進行機器學習後分析後得出其分布的統計模型,並由此推算目標郵件是垃圾郵件的可能性。這些方法具有一定的自適應、自學習能力,目前已經得到了廣泛的應用。最有名的垃圾郵件內容過濾是Spamassassin,它使用Perl語言實現,集成了以上兩種過濾方法,可以與當前各種主流的MTA集成使用。內容過濾是以上所有各種方法中耗費計算資源最多、最有效的辦法,在郵件流量較大的場合,需要配合高性能服務器使用。
Sendmail是Red Hat Linux以及大多數類Unix操作系統的郵件傳送代理,因此它是目前配置最廣泛的郵件服務器,圖1是Sendmail功能示意圖。下面以Red Hat Linux使用的Sendmail為例,介紹應對垃圾郵件的幾種具體方法。
安裝與啟動Sendmail
Sendmail郵件服務器有兩種安裝方式:RPM包安裝方式以及源代碼安裝方式。前者安裝起來更為簡單,並且Red Hat Linux的發行安裝光盤中一般也附帶了該安裝包,下面分別對這兩種安裝方式的步驟進行介紹。
1..RPM包安裝方式
首先檢測系統是否已經安裝該RPM包:
#rpm -qa |grep sendmail
如果沒有安裝,則將Red Hat Linux的第一張安裝光盤放入光驅並掛接:
#mount /mnt/cdrom //掛接光盤
#cd /mnt/cdrom/RedHat/RPMS //進入RPMS目錄
#rpm -ivh sendmail-8.12.8-4.i386.rpm //安裝可執行文件
//安裝生成Sendmail配置文件的m4工具包
#rpm -ivh m4-1.4.1-13.i386.rpm
插入Red Hat Linux的第三張安裝光盤,安裝如下軟件包:
#mount /mnt/cdrom
#cd /mnt/cdrom/RedHat/RPMS
#rpm -ivh sendmail-cf-8.12.8-4.i386.rpm
#rpm -ivh sendmail-doc-8.12.8-4.i386.rpm