SpamAssassin 是一種安裝在郵件伺服主機(jī)上的郵件過(guò)濾器,用來(lái)辨識(shí)垃圾信。它是使用大量的預(yù)設(shè)規(guī)則檢查垃圾信,這些規(guī)則會(huì)檢查寄到網(wǎng)域內(nèi)所有郵件的標(biāo)頭,內(nèi)文,以及送信者。他采取的過(guò)濾方式是采用記分制,也就是說(shuō)會(huì)根據(jù)我們所設(shè)定的標(biāo)準(zhǔn)來(lái)給予分?jǐn)?shù)超過(guò)標(biāo)準(zhǔn)值的時(shí)候即判定為 SPAM(垃圾郵件)。
正文
優(yōu)勢(shì)
1、SpamAssassin使用大量的、不同類型的規(guī)則和權(quán)重來(lái)判斷垃圾郵件,那些已經(jīng)被證實(shí)有效的規(guī)則會(huì)被賦予較高的權(quán)重用以區(qū)分垃圾郵件和非垃圾郵件。
2、既便于調(diào)整每一個(gè)規(guī)則的得分,又便于添加新的、基于正則表達(dá)式的判斷規(guī)則。
3、SpamAssassin適用于各種系統(tǒng)的電子郵件環(huán)境,快速識(shí)別受信信源或是識(shí)別新的垃圾郵件類別。
4、通過(guò)建立一個(gè)俗稱“垃圾郵件陷阱”的電子郵件地址(這種電子郵件地址的唯一作用就是將所有的垃圾郵件都轉(zhuǎn)發(fā)給垃圾郵件信息交換中心),SpamAssassin能夠隨時(shí)向不同的垃圾郵件信息交換中心報(bào)告新的垃圾郵件信息
5、SpamAssassin是一個(gè)自由軟件,它基于GUN的公共許可或是Perl的AL進(jìn)行分發(fā)。這兩個(gè)分發(fā)許可都允許用戶自由修改該軟件,并強(qiáng)制其以相同的分發(fā)許可再次分發(fā)該修改。
SpamAssassin可以通過(guò)許多方法來(lái)檢驗(yàn)一封電子郵件到底是不是垃圾郵件:
1、檢查電子郵件的首部信息是否符合各種Internet標(biāo)準(zhǔn)(例如:數(shù)據(jù)的格式是否正確?)
2、檢查電子郵件的首部和內(nèi)容部分的信息是否包含一些垃圾郵件中常見的、用各種語(yǔ)言寫成的短語(yǔ)或是句子(例如:“快速致富”或是退定該郵件的一些方法描述)。
3、將首部和內(nèi)容部分的“校驗(yàn)和”與多個(gè)垃圾郵件信息在線數(shù)據(jù)庫(kù)中的“校驗(yàn)和”作比較來(lái)確認(rèn)垃圾郵件。
4、檢查郵件發(fā)送者的IP地址是否在一些在線的站點(diǎn)列表中(這是一些已經(jīng)被垃圾郵件發(fā)送者利用,或是懷疑被垃圾郵件發(fā)送者利用的站點(diǎn))。
5、自定義地址、主機(jī)名和域名的白名單(白名單中的郵件不會(huì)作為垃圾郵件)和黑名單(上了黑名單的郵件會(huì)被當(dāng)作垃圾郵件)。SpamAssassin可以根據(jù)用戶郵件的歷史記錄自動(dòng)構(gòu)建白名單。
6、使用人為指定的一些垃圾郵件(通常成為spam)和非垃圾郵件(通常成為ham)的例子來(lái)訓(xùn)練SpamAssassin識(shí)別用戶收到的各種不同的垃圾郵件。
7、使用SPF協(xié)議(sender Policy Framework)比較郵件發(fā)送系統(tǒng)的IP地址和郵件發(fā)送人的域名,來(lái)確定該郵件發(fā)送系統(tǒng)是否允許該域名下的用戶發(fā)送郵件。這是SpamAssassin 3.0中增加的新特性。
8、SpamAssassin會(huì)優(yōu)先排除那些愿意使用Hashcash形式的郵件發(fā)送者(使用Hashcash形式會(huì)作一些附加計(jì)算,消耗一些時(shí)間)。因?yàn)槔]件發(fā)送者如果支持這些附加計(jì)算,就不能迅速發(fā)送大量垃圾郵件了。這是SpamAssassin 3.0中增加的新特性。
9、SpamAssassin將信息格式驗(yàn)證、內(nèi)容過(guò)濾和參考網(wǎng)絡(luò)黑名單這三種方式相結(jié)合。基于過(guò)濾的系統(tǒng)要求用戶參與,而且會(huì)引起郵件收發(fā)時(shí)的系統(tǒng)延遲。還有其他一些反垃圾郵件的方法,這些方法都各有利弊,,其中一些可以還可以用來(lái)替代SpamAssassin。
10、在一個(gè)挑戰(zhàn)/應(yīng)答系統(tǒng)中,系統(tǒng)會(huì)暫存一個(gè)陌生發(fā)送者發(fā)送的所有信息,并返回一個(gè)特定代碼或是一組指令作為一個(gè)挑戰(zhàn)。陌生發(fā)送者必須以某種方式作出應(yīng)答,以驗(yàn)證其郵件地址,并證實(shí)(通常使用交談的方式)發(fā)送者是一個(gè)人而不是一個(gè)自動(dòng)垃圾郵件發(fā)送程序。如果發(fā)送者應(yīng)答成功,系統(tǒng)就會(huì)真正接受該信息。
11、在灰名單系統(tǒng)中,當(dāng)郵件服務(wù)器遇到陌生的郵件發(fā)送人或是陌生的郵件發(fā)送系統(tǒng)時(shí),它先返回一個(gè)臨時(shí)的SMTP失敗代碼。如果上述的郵件發(fā)送系統(tǒng)在經(jīng)過(guò)一個(gè)合理的時(shí)間間隔后,試圖重新發(fā)送郵件,郵件服務(wù)器會(huì)正常接收該郵件,及隨后來(lái)自于該郵件發(fā)送系統(tǒng)的其他郵件(譯注:郵件服務(wù)器認(rèn)為這不是一個(gè)發(fā)送垃圾郵件的郵件發(fā)送系統(tǒng),因此同意接收郵件)。因?yàn)楫?dāng)垃圾郵件發(fā)送者遇到上面的臨時(shí)SMTP錯(cuò)誤時(shí),通常會(huì)把它當(dāng)作永久性錯(cuò)誤,或是試圖在灰名單規(guī)定的時(shí)間間隔內(nèi)連續(xù)多次發(fā)送該郵件,于是郵件服務(wù)器就會(huì)拒絕接收來(lái)自這個(gè)郵件發(fā)送系統(tǒng)的郵件(譯注:郵件服務(wù)器認(rèn)為這就是一個(gè)發(fā)送垃圾郵件的郵件發(fā)送系統(tǒng),因此拒絕接收郵件)。
12、在限時(shí)地址系統(tǒng)中,一個(gè)電子郵件地址可以衍生出多個(gè)唯一性變體地址,用戶可以在不同的web表格、電子郵件或是新聞組等需要電子郵件地址的地方分別填寫不同的變體地址。可以限定這些變體地址的有效時(shí)間,也可以通過(guò)“激活”方式來(lái)激活某個(gè)原來(lái)無(wú)效變體地址。在這些系統(tǒng)中,如果用戶的某一個(gè)變體地址收到了垃圾郵件,那么他(或她)就能輕易的找到發(fā)送垃圾郵件的公司(或是那些把你的郵件地址買給垃圾郵件發(fā)送者的公司),用戶只需要取消這個(gè)變體地址就可以阻止垃圾郵件了。
13、在小額付費(fèi)系統(tǒng)中,郵件發(fā)送者每次發(fā)送郵件都必須付費(fèi)(金額很小),這樣一來(lái)發(fā)送大量的垃圾郵件就會(huì)導(dǎo)致高額的開銷。在一些類似的系統(tǒng)中,如果收件人確認(rèn)其收到的不是垃圾郵件,則小額付費(fèi)會(huì)返還給郵件發(fā)送者。(SpamAssassin 3.0中通過(guò)Hashcash的方式來(lái)支持小額付費(fèi)的一個(gè)變體,在這個(gè)變體中小額付費(fèi)演變?yōu)镠ashcash中處理時(shí)間的消耗而不是真的付錢。)
郵件系統(tǒng)和SpamAssassin
SpamAssassin的組織結(jié)構(gòu)
雖然可以手動(dòng)運(yùn)行SpamAssassin來(lái)檢查單個(gè)郵件,但是只有自動(dòng)運(yùn)行SpamAssassin掃描所有郵件,才能真正發(fā)揮SpamAssassin的威力。可以有多種方法實(shí)現(xiàn)上面提到的自動(dòng)運(yùn)行SpamAssassin并掃描所有郵件:
圖1-1顯示了一個(gè)典型的郵件傳輸過(guò)程。郵件發(fā)送系統(tǒng)先連接收件人所屬的Qmail,將郵件傳遞給MTA。如果收件人屬于這個(gè)MTA,則MTA將郵件轉(zhuǎn)交給本地的MDA,MDA負(fù)責(zé)將收到的郵件保存在用戶的私人郵箱中。多個(gè)用戶可以同時(shí)登陸到系統(tǒng)上,直接從郵箱中讀取郵件,這是多用戶unix系統(tǒng)中的典型方式;系統(tǒng)也可以啟動(dòng)POP或是IMAP服務(wù),客戶使用支持POP或是IMAP的郵件客戶端程序?qū)⑧]件下載到本地閱讀。
SpamAssassin可以運(yùn)行在上面提到的三個(gè)地方:MTA、MDA和POP代理。這三種方式各有千秋。
SpamAssassin運(yùn)行在Qmail上
一些MTA會(huì)在SMTP事務(wù)中執(zhí)行郵件過(guò)濾操作;另一些MTA則在SMTP事務(wù)結(jié)束后才執(zhí)行郵件過(guò)濾操作。垃圾郵件檢測(cè)就是適于在MTA上執(zhí)行的過(guò)濾操作之一,病毒檢測(cè)也算一個(gè)。通常每個(gè)MTA都有自己的過(guò)濾守護(hù)進(jìn)程,這類過(guò)濾守護(hù)進(jìn)程是調(diào)用SpamAssassin以完成垃圾郵件檢測(cè)的理想位置。
因?yàn)榘l(fā)送給某主機(jī)上特定用戶的郵件必須通過(guò)MTA來(lái)傳遞,因此通常可以在MTA上實(shí)現(xiàn)集中式的垃圾郵件檢測(cè)。如果你是在一個(gè)“同時(shí)為多個(gè)內(nèi)部系統(tǒng)提供郵件服務(wù)”的網(wǎng)關(guān)型Qmail環(huán)境下工作,你同樣可以在網(wǎng)關(guān)型MTA上加入垃圾郵件檢測(cè)功能,這樣可以同時(shí)減少多個(gè)內(nèi)部系統(tǒng)中的垃圾郵件的數(shù)量。
“基于MTA的過(guò)濾”除了可以標(biāo)識(shí)垃圾郵件以外,還可以做一些其他的事情,例如:實(shí)現(xiàn)郵件拒收功能(如果在SMTP事務(wù)中執(zhí)行過(guò)濾,可以通過(guò)“拒絕SMTP事務(wù)完成”來(lái)實(shí)現(xiàn);如果在SMTP事務(wù)結(jié)束后執(zhí)行過(guò)濾,則可以通過(guò)“拋棄該郵件”來(lái)實(shí)現(xiàn)),或是將郵件重定向到隔離區(qū)中。如果MTA上已經(jīng)運(yùn)行了一個(gè)用于病毒檢測(cè)的過(guò)濾系統(tǒng),通常可以使用相同的過(guò)濾系統(tǒng)來(lái)執(zhí)行垃圾郵件檢測(cè),二者共享與過(guò)濾系統(tǒng)相關(guān)的一些開銷(overhead)。
單獨(dú)在Qmail上部署的過(guò)濾系統(tǒng)的缺點(diǎn)在于當(dāng)過(guò)濾系統(tǒng)沒有訪問(wèn)“收件人自定義規(guī)則信息”的訪問(wèn)權(quán)限時(shí),或是當(dāng)收件人與該MTA不在同一個(gè)主機(jī)上時(shí),或是當(dāng)一個(gè)郵件同時(shí)發(fā)送給同一個(gè)系統(tǒng)上的多個(gè)收件人時(shí),部署在MTA上的過(guò)濾系統(tǒng)可能無(wú)法根據(jù)每個(gè)收件人的喜好(譯者注:一些用戶自定義的規(guī)則)來(lái)執(zhí)行可定制的過(guò)濾操作。
SpamAssassin運(yùn)行在MDA上
大多數(shù)的unix系統(tǒng)中都使用procmail這個(gè)MDA,procmail可以向SpamAssassin提交郵件信息,并處理SpamAssassin反饋的結(jié)果。“單獨(dú)安裝,并配合MDA執(zhí)行”是SpamAssassin最典型的使用方式,因?yàn)樗灰驧TA提供任何明確的過(guò)濾接口支持。
這種配置方式可以提供最大的靈活性。系統(tǒng)級(jí)SpamAssassin規(guī)則可以應(yīng)用于系統(tǒng)中的所有郵件,而每個(gè)用戶都可以在自己的個(gè)人SpamAssassin規(guī)則配置中補(bǔ)充或修改系統(tǒng)級(jí)SpamAssassin規(guī)則。顯然MDA肯定知道它所服務(wù)的收件人的具體情況,并能夠訪問(wèn)其自定義信息(譯者注:這與MTA中的情況完全不同)。那些精于編寫procmail配置腳本的用戶可以完全控制“被標(biāo)識(shí)為可能是垃圾郵件的”郵件信息的處理過(guò)程;procmail會(huì)根據(jù)腳本中的指令選擇丟棄這些郵件,或是以文件的形式保存到一個(gè)單獨(dú)的收件箱中,或是修改郵件的頭部信息,或其他任何操作。
在MDA上使用SpamAssassin的缺陷在于,只有MDA系統(tǒng)接收了郵件后,其垃圾郵件檢測(cè)功能才起作用,而此時(shí)已經(jīng)浪費(fèi)了一些系統(tǒng)資源。另一個(gè)缺點(diǎn)是,在網(wǎng)關(guān)型MTA環(huán)境下,垃圾郵件檢測(cè)工具必須同時(shí)安裝在多個(gè)具有本地收件人的MDA系統(tǒng)上,而不是僅僅安裝在集中的MTA網(wǎng)關(guān)上。
SpamAssassin運(yùn)行在POP代理上
有些POP郵件的用戶想使用SpamAssassin的垃圾郵件檢測(cè)功能,但其POP服務(wù)器并不支持SpamAssassin。這些用戶可以使用一個(gè)代理來(lái)執(zhí)行垃圾郵件檢測(cè)。這個(gè)代理運(yùn)行在客戶端的計(jì)算機(jī)上與POP郵件讀取程序集成在一起,并在通過(guò)POP協(xié)議下載POP郵件時(shí)掃描郵件內(nèi)容。
Windows平臺(tái)上最知名的SpamAssassin POP代理是Stata labs的SAproxy產(chǎn)品。SAproxy Pro是一個(gè)商業(yè)產(chǎn)品,但是它本身仍然是一個(gè)開源軟件,并且遵循與SpamAssassin相同的分發(fā)許可。想要使用該產(chǎn)品的系統(tǒng)管理員可以下載并編譯其代碼,并提供給用戶使用。
使用代理是分散性最強(qiáng)的一種垃圾郵件檢測(cè)方式,郵件服務(wù)器可以自由接收所有的郵件,由代理根據(jù)客戶的標(biāo)準(zhǔn)自行處理郵件。代理一方面增加了郵件服務(wù)器的存儲(chǔ)負(fù)載,另一方面也完全取消了郵件服務(wù)器上用于垃圾郵件檢測(cè)的計(jì)算負(fù)載,因?yàn)樗械睦]件檢測(cè)工作都由客戶端來(lái)完成。
SpamAssassin同時(shí)運(yùn)行在多個(gè)位置上
SpamAssassin最可能的運(yùn)行情況是同時(shí)運(yùn)行在上面描述的兩個(gè)、甚至是三個(gè)位置。一個(gè)基于MTA的過(guò)濾系統(tǒng)中使用的SpamAssassin應(yīng)該做保守配置,用來(lái)過(guò)濾那些高危信息。同一個(gè)系統(tǒng)中的Qmail過(guò)濾可以使用比較自由的規(guī)則定義,并為用戶提供自定義規(guī)則設(shè)定以標(biāo)識(shí)垃圾郵件,因?yàn)橛行┯脩粜枰苯釉诜?wù)器上讀取郵件。最后,POP郵件用戶可以在客戶端的機(jī)器上使用SAproxy來(lái)自定義垃圾郵件檢測(cè)規(guī)則。
郵件掃描策略
如果你是一個(gè)提供郵件服務(wù)的ISP,有一些客戶可能希望(甚至是要求)你提供標(biāo)識(shí)垃圾郵件或是過(guò)濾垃圾郵件的功能,而另一些客戶卻并不需要這種標(biāo)識(shí)或是過(guò)濾功能(因?yàn)樗麄兊睦]件不是很多,他們并不介意這個(gè)問(wèn)題,或是他們害怕正常的郵件被錯(cuò)誤的作為垃圾郵件標(biāo)識(shí)或是過(guò)濾掉了。)
在你實(shí)現(xiàn)系統(tǒng)級(jí)或是站點(diǎn)級(jí)的垃圾郵件檢測(cè)之前,請(qǐng)仔細(xì)考慮客戶的需求和你對(duì)他們所負(fù)有的責(zé)任。你至少應(yīng)該將任何無(wú)條件的垃圾郵件檢測(cè)行為通知你的客戶(和潛在客戶)。然而更好的方法是只為那些選擇了開放垃圾郵件檢測(cè)功能的用戶提供相應(yīng)的服務(wù)。最好的方法是允許每個(gè)客戶自定義垃圾郵件檢測(cè)的配置設(shè)定,并指定用于確認(rèn)垃圾郵件的閾值。
不但能標(biāo)識(shí)垃圾郵件,而且可以過(guò)濾垃圾郵件(或阻止垃圾郵件打擾用戶),這才是最重要的。
SpamAssassin是一個(gè)區(qū)分垃圾郵件和非垃圾郵件的優(yōu)秀工具,但是只有當(dāng)你的用戶確實(shí)需要這種功能的時(shí)候才應(yīng)該使用它。
參考資料 >