spamassassin

spamassassin

SpamAssassin 是一種安裝在郵件伺服主機上的郵件過濾器,用來辨識垃圾信。它是使用大量的預設規則檢查垃圾信,這些規則會檢查寄到網域內所有郵件的標頭,內文,以及送信者。他採取的過濾方式是採用記分制,也就是說會根據我們所設定的標準來給予分數超過標準值的時候即判定為 SPAM(垃圾郵件

基本介紹

  • 外文名:SpamAssassin
  • 類別:開源軟體
  • 軟體許可:Apache License
  • 兼容性:Linux,FreeBSD,Solaris
優勢,spamAssassin的工作原理,SpamAssassin的組織結構,SpamAssassin運行在MTA上,SpamAssassin運行在MDA上,SpamAssassin運行在POP代理上,SpamAssassin同時運行在多個位置上,郵件掃描策略,

優勢

1、SpamAssassin使用大量的、不同類型的規則和權重來判斷垃圾郵件,那些已經被證實有效的規則會被賦予較高的權重用以區分垃圾郵件和非垃圾郵件。
2、既便於調整每一個規則的得分,又便於添加新的、基於正則表達式的判斷規則。
3、SpamAssassin適用於各種系統的電子郵件環境,快速識別受信信源或是識別新的垃圾郵件類別。
4、通過建立一個俗稱“垃圾郵件陷阱”的電子郵件地址(這種電子郵件地址的唯一作用就是將所有的垃圾郵件都轉發給垃圾郵件信息交換中心),SpamAssassin能夠隨時向不同的垃圾郵件信息交換中心報告新的垃圾郵件信息
5、SpamAssassin是一個自由軟體,它基於GUN的公共許可或是Perl的AL進行分發。這兩個分發許可都允許用戶自由修改該軟體,並強制其以相同的分發許可再次分發該修改。

spamAssassin的工作原理

SpamAssassin可以通過許多方法來檢驗一封電子郵件到底是不是垃圾郵件:
1、檢查電子郵件的首部信息是否符合各種Internet標準(例如:數據的格式是否正確?)
2、檢查電子郵件的首部和內容部分的信息是否包含一些垃圾郵件中常見的、用各種語言寫成的短語或是句子(例如:“快速致富”或是退定該郵件的一些方法描述)。
3、將首部和內容部分的“校驗和”與多個垃圾郵件信息線上資料庫中的“校驗和”作比較來確認垃圾郵件。
4、檢查郵件傳送者的IP位址是否在一些線上的站點列表中(這是一些已經被垃圾郵件傳送者利用,或是懷疑被垃圾郵件傳送者利用的站點)。
5、自定義地址、主機名和域名的白名單(白名單中的郵件不會作為垃圾郵件)和黑名單(上了黑名單的郵件會被當作垃圾郵件)。SpamAssassin可以根據用戶郵件的歷史記錄自動構建白名單。
6、使用人為指定的一些垃圾郵件(通常成為spam)和非垃圾郵件(通常成為ham)的例子來訓練SpamAssassin識別用戶收到的各種不同的垃圾郵件。
7、使用SPF協定(Sender Policy Framework)比較郵件傳送系統的IP位址和郵件傳送人的域名,來確定該郵件傳送系統是否允許該域名下的用戶傳送郵件。這是SpamAssassin 3.0中增加的新特性。
8、SpamAssassin會優先排除那些願意使用Hashcash形式的郵件傳送者(使用Hashcash形式會作一些附加計算,消耗一些時間)。因為垃圾郵件傳送者如果支持這些附加計算,就不能迅速傳送大量垃圾郵件了。這是SpamAssassin 3.0中增加的新特性。
9、SpamAssassin將信息格式驗證、內容過濾和參考網路黑名單這三種方式相結合。基於過濾的系統要求用戶參與,而且會引起郵件收發時的系統延遲。還有其他一些反垃圾郵件的方法,這些方法都各有利弊,,其中一些可以還可以用來替代SpamAssassin。
10、在一個挑戰/應答系統中,系統會暫存一個陌生髮送者傳送的所有信息,並返回一個特定代碼或是一組指令作為一個挑戰。陌生髮送者必須以某種方式作出應答,以驗證其郵件地址,並證實(通常使用交談的方式)傳送者是一個人而不是一個自動垃圾郵件傳送程式。如果傳送者應答成功,系統就會真正接受該信息。
11、在灰名單系統中,當郵件伺服器遇到陌生的郵件傳送人或是陌生的郵件傳送系統時,它先返回一個臨時的SMTP失敗代碼。如果上述的郵件傳送系統在經過一個合理的時間間隔後,試圖重新傳送郵件,郵件伺服器會正常接收該郵件,及隨後來自於該郵件傳送系統的其他郵件(譯註:郵件伺服器認為這不是一個傳送垃圾郵件的郵件傳送系統,因此同意接收郵件)。因為當垃圾郵件傳送者遇到上面的臨時SMTP錯誤時,通常會把它當作永久性錯誤,或是試圖在灰名單規定的時間間隔內連續多次傳送該郵件,於是郵件伺服器就會拒絕接收來自這個郵件傳送系統的郵件(譯註:郵件伺服器認為這就是一個傳送垃圾郵件的郵件傳送系統,因此拒絕接收郵件)。
12、在限時地址系統中,一個電子郵件地址可以衍生出多個唯一性變體地址,用戶可以在不同的web表格、電子郵件或是新聞組等需要電子郵件地址的地方分別填寫不同的變體地址。可以限定這些變體地址的有效時間,也可以通過“激活”方式來激活某個原來無效變體地址。在這些系統中,如果用戶的某一個變體地址收到了垃圾郵件,那么他(或她)就能輕易的找到傳送垃圾郵件的公司(或是那些把你的郵件地址買給垃圾郵件傳送者的公司),用戶只需要取消這個變體地址就可以阻止垃圾郵件了。
13、在小額付費系統中,郵件傳送者每次傳送郵件都必須付費(金額很小),這樣一來傳送大量的垃圾郵件就會導致高額的開銷。在一些類似的系統中,如果收件人確認其收到的不是垃圾郵件,則小額付費會返還給郵件傳送者。(SpamAssassin 3.0中通過Hashcash的方式來支持小額付費的一個變體,在這個變體中小額付費演變為Hashcash中處理時間的消耗而不是真的付錢。)
郵件系統和SpamAssassin

SpamAssassin的組織結構

雖然可以手動運行SpamAssassin來檢查單個郵件,但是只有自動運行SpamAssassin掃描所有郵件,才能真正發揮SpamAssassin的威力。可以有多種方法實現上面提到的自動運行SpamAssassin並掃描所有郵件:
圖1-1顯示了一個典型的郵件傳輸過程。郵件傳送系統先連線收件人所屬的MTA,將郵件傳遞給MTA。如果收件人屬於這個MTA,則MTA將郵件轉交給本地的MDA,MDA負責將收到的郵件保存在用戶的私人信箱中。多個用戶可以同時登入到系統上,直接從信箱中讀取郵件,這是多用戶UNIX系統中的典型方式;系統也可以啟動POP或是IMAP服務,客戶使用支持POP或是IMAP的郵件客戶端程式將郵件下載到本地閱讀。
SpamAssassin可以運行在上面提到的三個地方:MTA、MDA和POP代理。這三種方式各有千秋。

SpamAssassin運行在MTA上

一些MTA會在SMTP事務中執行郵件過濾操作;另一些MTA則在SMTP事務結束後才執行郵件過濾操作。垃圾郵件檢測就是適於在MTA上執行的過濾操作之一,病毒檢測也算一個。通常每個MTA都有自己的過濾守護進程,這類過濾守護進程是調用SpamAssassin以完成垃圾郵件檢測的理想位置。
因為傳送給某主機上特定用戶的郵件必須通過MTA來傳遞,因此通常可以在MTA上實現集中式的垃圾郵件檢測。如果你是在一個“同時為多個內部系統提供郵件服務”的網關型MTA環境下工作,你同樣可以在網關型MTA上加入垃圾郵件檢測功能,這樣可以同時減少多個內部系統中的垃圾郵件的數量。
“基於MTA的過濾”除了可以標識垃圾郵件以外,還可以做一些其他的事情,例如:實現郵件拒收功能(如果在SMTP事務中執行過濾,可以通過“拒絕SMTP事務完成”來實現;如果在SMTP事務結束後執行過濾,則可以通過“拋棄該郵件”來實現),或是將郵件重定向到隔離區中。如果MTA上已經運行了一個用於病毒檢測的過濾系統,通常可以使用相同的過濾系統來執行垃圾郵件檢測,二者共享與過濾系統相關的一些開銷(overhead)。
單獨在MTA上部署的過濾系統的缺點在於當過濾系統沒有訪問“收件人自定義規則信息”的訪問許可權時,或是當收件人與該MTA不在同一個主機上時,或是當一個郵件同時傳送給同一個系統上的多個收件人時,部署在MTA上的過濾系統可能無法根據每個收件人的喜好(譯者註:一些用戶自定義的規則)來執行可定製的過濾操作。

SpamAssassin運行在MDA上

大多數的UNIX系統中都使用procmail這個MDA,procmail可以向SpamAssassin提交郵件信息,並處理SpamAssassin反饋的結果。“單獨安裝,並配合MDA執行”是SpamAssassin最典型的使用方式,因為它不要求MTA提供任何明確的過濾接口支持。
這種配置方式可以提供最大的靈活性。系統級SpamAssassin規則可以套用於系統中的所有郵件,而每個用戶都可以在自己的個人SpamAssassin規則配置中補充或修改系統級SpamAssassin規則。顯然MDA肯定知道它所服務的收件人的具體情況,並能夠訪問其自定義信息(譯者註:這與MTA中的情況完全不同)。那些精於編寫procmail配置腳本的用戶可以完全控制“被標識為可能是垃圾郵件的”郵件信息的處理過程;procmail會根據腳本中的指令選擇丟棄這些郵件,或是以檔案的形式保存到一個單獨的收件箱中,或是修改郵件的頭部信息,或其他任何操作。
在MDA上使用SpamAssassin的缺陷在於,只有MDA系統接收了郵件後,其垃圾郵件檢測功能才起作用,而此時已經浪費了一些系統資源。另一個缺點是,在網關型MTA環境下,垃圾郵件檢測工具必須同時安裝在多個具有本地收件人的MDA系統上,而不是僅僅安裝在集中的MTA網關上。

SpamAssassin運行在POP代理上

有些POP郵件的用戶想使用SpamAssassin的垃圾郵件檢測功能,但其POP伺服器並不支持SpamAssassin。這些用戶可以使用一個代理來執行垃圾郵件檢測。這個代理運行在客戶端的計算機上與POP郵件讀取程式集成在一起,並在通過POP協定下載POP郵件時掃描郵件內容。
Windows平台上最知名的SpamAssassin POP代理是Stata Labs的SAproxy產品。SAproxy Pro是一個商業產品,但是它本身仍然是一個開源軟體,並且遵循與SpamAssassin相同的分發許可。想要使用該產品的系統管理員可以下載並編譯其代碼,並提供給用戶使用。
使用代理是分散性最強的一種垃圾郵件檢測方式,郵件伺服器可以自由接收所有的郵件,由代理根據客戶的標準自行處理郵件。代理一方面增加了郵件伺服器的存儲負載,另一方面也完全取消了郵件伺服器上用於垃圾郵件檢測的計算負載,因為所有的垃圾郵件檢測工作都由客戶端來完成。

SpamAssassin同時運行在多個位置上

SpamAssassin最可能的運行情況是同時運行在上面描述的兩個、甚至是三個位置。一個基於MTA的過濾系統中使用的SpamAssassin應該做保守配置,用來過濾那些高危信息。同一個系統中的MTA過濾可以使用比較自由的規則定義,並為用戶提供自定義規則設定以標識垃圾郵件,因為有些用戶需要直接在伺服器上讀取郵件。最後,POP郵件用戶可以在客戶端的機器上使用SAproxy來自定義垃圾郵件檢測規則。

郵件掃描策略

如果你是一個提供郵件服務的ISP,有一些客戶可能希望(甚至是要求)你提供標識垃圾郵件或是過濾垃圾郵件的功能,而另一些客戶卻並不需要這種標識或是過濾功能(因為他們的垃圾郵件不是很多,他們並不介意這個問題,或是他們害怕正常的郵件被錯誤的作為垃圾郵件標識或是過濾掉了。)
在你實現系統級或是站點級的垃圾郵件檢測之前,請仔細考慮客戶的需求和你對他們所負有的責任。你至少應該將任何無條件的垃圾郵件檢測行為通知你的客戶(和潛在客戶)。然而更好的方法是只為那些選擇了開放垃圾郵件檢測功能的用戶提供相應的服務。最好的方法是允許每個客戶自定義垃圾郵件檢測的配置設定,並指定用於確認垃圾郵件的閾值。
不但能標識垃圾郵件,而且可以過濾垃圾郵件(或阻止垃圾郵件打擾用戶),這才是最重要的。
SpamAssassin是一個區分垃圾郵件和非垃圾郵件的優秀工具,但是只有當你的用戶確實需要這種功能的時候才應該使用它。

相關詞條

熱門詞條

聯絡我們