祝毅鳴 張波
摘要:反垃圾郵件問題已經成為全球性的具有重要現(xiàn)實意義的課題。反垃圾是一項大工程,有時僅靠一種方法或技術,并不能達到我們想要的結果,需要幾種方法相結合,來更好的處理垃圾郵件。本文所寫的實時黑名單跟其他的反垃圾郵件技術一起可以取得更好的反垃圾效果。實時黑名單就是通過調用linux的系統(tǒng)命令,使得模塊可以隨時去國際互聯(lián)網協(xié)會網站下載最新的黑名單,從而降低用戶收到垃圾郵件的可能性。
關鍵詞:垃圾郵件實時黑名單
中圖分類號:TP393 文獻標識碼:A 文章編號:1672-3791(2012)04(c)-0033-01
隨著互聯(lián)網絡的日益普及,電子郵件走進了大眾人們的工作和生活,它的快速、便捷的優(yōu)勢使它成為現(xiàn)代社會主要通訊方式之一和互聯(lián)網上最重要、最普及的應用之一。而近年來,一些公司、團體和個人為了商業(yè)利益或政治目的,在未經用戶同意的情況下,利用電子郵件發(fā)送大量商業(yè)廣告及各種不良信息,形成影響極壞、后果嚴重的垃圾郵件問題。
垃圾郵件問題如不能及時、有效解決,將會給我國帶來多方面的危害。
1研究現(xiàn)狀
目前存在的反垃圾郵件技術,主要有三個大的方向。
第一種是修改現(xiàn)有的SMTP協(xié)議,制定一個新的安全可靠郵件協(xié)議,讓垃圾郵沒有“生存的環(huán)境”。
第二種是使大量垃圾郵件發(fā)送者承受“巨大的成本”,以致通過電子郵件渠道來大量發(fā)送廣告信息在經濟利益上不合算,來減少垃圾郵件。
第三種是根據(jù)郵件的格式,發(fā)送時間,文件大小,內容以及其他特性,來識別該郵件是否為垃圾郵件,如果是,則把垃圾郵件過濾掉。識別的方法多種多樣。過濾垃圾郵件效果的好壞取決于識別方法的準確度。
前兩種是主動的方式,推的方式,從垃圾郵件產生的根源出發(fā),不同的是一個是從技術的角度,一個是從經濟的角度,讓大量發(fā)送垃圾郵件是不可行的。而第三種方式是被動的方式、拉的方式,它并不能杜絕垃圾郵件的重復產生,只能當垃圾郵件產生后,通過方法識別出垃圾郵件,及時的剔除它們。前兩種方式應用起來更加困難、復雜,而第三種方式相對簡單易行,因此,當前第三種方式的反垃圾郵件方法研究和應用的更多。
2本課題的提出
隨著垃圾郵件的泛濫,反垃圾郵件技術越來越被人們所重視,出現(xiàn)了很多的過濾技術和過濾系統(tǒng),因為郵件能傳送文本、聲音、圖像等多媒體信息,因此垃圾郵件的過濾系統(tǒng)就要從多方面加以過濾。不是哪一種技術就可以很好的解決垃圾郵件問題的。
本文提出的黑名單也不能獨自處理好垃圾郵件的問題,可以把這種技術跟其他郵件過濾技術一起來完成處理垃圾郵件問題。
黑名單可以是發(fā)送垃圾郵件服務器、開放的代理、開放的中繼以及發(fā)送者郵箱地址。基于黑名單的方法認為,如果郵件來自黑名單中的地址,則認為該郵件時垃圾郵件。它的缺點在于需要時間和精力來維護管理RBLs,因為垃圾郵件發(fā)送者不斷更換他的域名和地址,為了讓該技術實時有效,RBLs也得不斷的更新升級。而且會對一些合法的服務器造成誤傷,例如一個垃圾郵件發(fā)送者通過撥號上網發(fā)送垃圾郵件,那么他是通過ISP提供商服務器登錄到自己的郵件服務器上,則ISP服務商就是垃圾郵件的源地址,如果把這個地址設置為黑名單,就會讓很多合法用戶無法發(fā)送正常的郵件。
本文的實時黑名單模塊采用的是用linux的外部命令實時的去互聯(lián)網協(xié)會的網站上下載其定期發(fā)布的黑名單,把域名解析出來放在一個臨時文本文件中,然后用hash函數(shù)將該文本文件在內存中散列成便于查找的hash表,如果一封郵件的地址我們可以在表中找到,就拒收該郵件。由于黑名單牽涉到一些法律、個人的隱私問題,本文只是供本論文研究之用。
3模塊設計與實現(xiàn)
該模塊主要包括四個子模塊。
(1)下載模塊:定時下載國內RBL(Realtime Blackhole List)到臨時HTML文件。
(2)解析模塊:將臨時HTML文件中的黑名單解析到一個臨時文本文件中。
(3)散列模塊:將RBL臨時文件利用哈希函數(shù)在內存中散列成便于查找的哈希表。
(4)查找模塊:在內存的哈希表結構中,檢測待查的域名是否存在,若存在則拒收從那里發(fā)來的郵件。
3.1 下載模塊
RBL模塊被調用時,首先實現(xiàn)一個服務器的功能,使用linux系統(tǒng)的unsigned int alarm(unsigned int seconds)函數(shù)來定時發(fā)送信號,觸發(fā)相應的下載函數(shù)。此函數(shù)被觸發(fā)后,使用Linux的外部命令wget,從Internet上下載國內RBL到一個臨時HTML文件。
3.2 解析模塊
根據(jù)下載的HTML臨時文件的具體信息,將其中的黑名單解析出來,逐條放入一個TXT文檔,并以空格來分隔每一條。
3.3 散列模塊
以下載模塊中輸出的臨時TXT文件作為解析對象,將每一行讀出,根據(jù)相應的哈希算法建立哈希查找表。
哈希算法:設定一個兩倍于待查數(shù)據(jù)的靜態(tài)地址空間,首先根據(jù)哈希函數(shù)確定待查找字符串的位置nHashPos,如果有沖突,就用線性探測再地址散列的方法處理沖突。然后使用無沖突哈希函數(shù)確定字符串的哈希值,作為它內容的唯一標識。
3.4 查找模塊
讀入待查的字符串,計算其哈希值,并且在哈希表中查找。首先檢索它的位置nHashPos,并比較字符串內容nHashA,查到就拒收郵件。若有沖突,則利用線性探測再地址散列的方法繼續(xù)查找,找到仍然拒收,若找不到則表明它不在黑名單中,可以接收。
4結語
基于黑名單是一個簡單有效最常用的過濾方法,它首先檢查郵件頭,如果發(fā)送者在黑名單內,就拒絕該郵件,它的缺點在于需要時間和精力來維護管理RBLs,黑名單模塊中,直接調用了linux的系統(tǒng)函數(shù)從互聯(lián)網上下載黑名單,然后解析再散列,提高了實時性,但是每次調用就觸發(fā)去下載有可能造成系統(tǒng)性能的下降,因為黑名單也不是每時都更新,而是定期發(fā)布。
參考文獻
[1] 譚立球,谷士文,費耀平.個人化電子郵件自動過濾系統(tǒng)的設計[J].計算機應用,2002,22(6):54~55.
[2] 楊峰,曹麒麟,段海星,等.基于DNSB locklist的反垃圾郵件系統(tǒng)的設計與實現(xiàn)[J].計算機工程與應用,2003,7:11~12,45.
[3] S.Hambrigdge,A.Lunde.Dont Spew, A Set of Guidelines for Mass Unsolicited Mailings and Postings(spam). RFC2635 http://www.rfc-editor.org./rfc/rfc2635.txt,1999:23~25.