目前最主要的對抗垃圾郵件的技術是郵件過濾技術(Mail Filter)。實時黑名單技術只是其中的一種特定的方法。
郵件過濾按照在郵件系統結構中的角色可以分為三類:
MTA(郵件傳輸代理)過濾
MDA(郵件遞交代理)過濾
MUA(郵件用戶代理)過濾
MTA過濾是指MTA在會話過程中對會話的數據進行檢查,對于符合過濾條件的郵件進行過濾處理。郵件會話過程中有兩個階段可以進行過濾:
郵件發送郵件數據前,即在發送DATA指令前的過濾。在發送DATA指令前,郵件對話可以在SMTP連接開始、HELO/EHLO指令、MAIL FROM指令和RCPT TO指令中對會話數據進行檢查。
SMTP連接時,可以檢查客戶端IP地址是不是特定的不允許連接的地址,如被列入黑名單IP就會被立刻拒絕連接。這里的黑名單可以是實時黑名單(RBL),也可以是訪問列表。
對HELO/EHLO指令所提供的身份,可以檢查是不是FQDN(完全限定域名,包括完整的主機名、域名的地址)、是不是要求的身份等。
對MAIL FROM指令所提供的郵件來源,可以檢查是不是有效域(可以通過DNS反向查詢檢查)、是不是FQDN、是不是符合RFC822格式等。
對RCPT TO指令所提供郵件接收者,可以檢查是不是屬于允許轉發的域、是不是符合RFC822格式、是不是通過認證的發信人等。
如果在檢查中該會話符合過濾的條件,就可以按照過濾規則采取相應的動作,如直接在會話階段斷開連接、發出警告代碼等。
郵件發送郵件數據前的檢查也叫做信封檢查。
郵件發送郵件數據后,即在發送DATA指令后的過濾。在通過一個點的單行結束DATA指令后,可以對DATA指令接收到的數據進行檢查,這包括信頭檢查和信體檢查。在DATA指令所傳送的數據中,信頭和信體是通過一個空行分隔開的。
信頭檢查。通常垃圾郵件在信頭中都有一定的特征可供識別。通過這些特定信頭字段可以很快地識別為垃圾郵件。
信體檢查。有時候通過信頭檢查還不足以判斷一封郵件是否是垃圾郵件,往往還要針對情況進行信體檢查。
信頭一般都比較小,通常在1KB-10KB之間,檢查信頭也比較快。而信體檢查就要檢查大量的數據,會給郵件服務器帶來很大的負載,所以通常信體檢查放在其他檢查的后面進行。目前最流行的信體檢查是貝葉斯(Bayes)算法的內容概率檢查。
郵件發送郵件數據后的檢查實際上是在郵件數據傳輸基本完畢后進行的,因此并不能節省下被垃圾郵件占用的帶寬和處理能力,只是可以讓用戶不再收到這些已被過濾的垃圾郵件。
MDA過濾是指MDA在從MTA中接收到信件,在本地或遠程進行遞交時進行檢查,對于符合過濾條件的郵件進行過濾處理。
很多的MDA都支持在這個過程進行過濾,如Procmail、Maildrop和Cyrus-IMAP等,甚至它們本身就是作為過濾器使用的。這些過濾器使用過濾語言(如Sieve,它是一個標準化的郵件過濾語言,現在已成為IETF標準)來制訂過濾規則,因此配置比較靈活、功能強大。但是由于是在郵件遞交階段進行過濾,同MTA的郵件發送郵件數據后的檢查一樣,并不能節省下被垃圾郵件占用的帶寬和處理能力,只是可以讓用戶不再收到這些已被過濾的垃圾郵件。
MTA和MDA過濾都是郵件服務器端的過濾,而MUA過濾是郵件用戶的客戶端的過濾。多數流行的郵件客戶端,如Outlook、Outlook Express、Netscape Mail、Foxmail等都支持MUA過濾。
郵件過濾技術作為一個有效的對抗垃圾郵件的手段,就如同殺毒軟件對病毒的查殺一樣,也是需要不斷根據情況更新郵件過濾規則的。通常都是管理員自行根據垃圾郵件監測情況來更新過濾規則。不過本站所推出的BBL服務可以用于郵件服務器的規則過濾,BBL中的過濾規則是我們經過整理的垃圾郵件受益人列表,詳情請參閱我們的BBL服務。
郵件過濾是一項應用的相當早也相當廣泛的技術,因而也發展的比較完善。絕大多數的主流郵件系統都支持郵件過濾,一些不直接支持該功能的郵件系統也可以通過補丁或外置的郵件過濾器來實現郵件過濾。