自己動手打造企業垃圾郵件過濾系統
原創【51CTO.com 獨家特稿】電子郵件是整個互聯網業務重要的組成部分。據相關報道統計,四分之三以上的用戶上網的主要目的是收發郵件,每天有十數億封電子郵件在全球傳遞,其應用頻率已經超過了WWW服務,因此,電子郵件已成為網絡用戶不可或缺的需要。
然而,由于電子郵件的免費特性以及一些電子郵件服務器的開放性,使得電子郵件服務面臨著垃圾郵件、病毒感染以及服務器濫用等嚴重的安全問題。基于這個背景,本專題對Linux系統中的著名郵件服務器(包括qmail郵件服務器、Postfix郵件服務器)的安全配置和使用作詳細介紹。
1、電子郵件系統面臨的安全威脅
一般說來,電子郵件系統面臨如下兩種安全威脅:
(1)電子郵件系統自身的安全問題:電子郵件系統自身作為一個網絡服務器,存在著配置和誤操作上的安全威脅和隱患,如沒有合理配置服務器的相關配置文件中的重要選項等,極有可能造成潛在的安全隱患。另外,電子郵件系統版本的及時更新與否也影響到其安全;
(2)垃圾郵件問題:垃圾郵件問題是當今最讓網絡用戶頭疼的頑疾之一。許多不請自來的垃圾郵件不但占據網絡帶寬,也極大地消耗了郵件服務器的存儲資源,給用戶帶來非常大的不便。如何應對該問題,是電子郵件系統面臨的最大的挑戰;
(3)開放性中繼的安全問題:這就是大家經常所談到的open relay的原理,如果設置不合理,將直接引起電子郵件系統的濫用,甚至會成為垃圾郵件的溫床,它可以說是電子郵件系統中的“定時炸彈”。
2、安全使用Qmail郵件服務器
Qmail 的配置文件是由多個文件組成的,不是集中在一個文件中。每個文件控制相應部分的功能和屬性,一個可執行程序可能有多個配置文件控制,所有的配置文件共同決定了 qmail 運行的實現和模式。這些配置文件都在qmail的control目錄中,即位于 /var/qmail/control 目錄中。合理設定如下選項,可以有效地增強Qmail服務器的安全性能。
(1)badmailfrom
這個配置文件是控制郵件系統拒絕接收的郵件地址和郵件域,主要是為了防止垃圾郵件。如果一個郵件地址或者郵件域被列入到這個文件中,系統就會拒絕接收這個郵件地址發來的郵件,或者拒絕郵件域下所有郵件地址發來的郵件。不過這個配置文件只是一般的垃圾郵件防范手段,對于比較全面的垃圾郵件過濾技術還要靠第三方軟件來實現。該文件的格式如下:
example@deny.com //拒絕這個地址發來的郵件
@deny.com //拒絕這個郵件域下的所有帳號發來的郵件
(2)concurrencylocal
這個文件定義了 qmail 可以同時投遞的本地郵件的個數。這個參數的缺省值是 10,也就是說系統允許同時有 10 個郵件在本地投遞。 concurrencylocal 這個參數的最大值是由編譯時的conf-spawn參數來決定的,缺省值是120,最大值是255。該值應該設置恰當,設得過大或者過小會浪費或者損失Qmail服務器的性能。
(3)concurrencyremote
這個參數定義了 qmail 可以同時投遞的遠端郵件的個數,這個參數的缺省值是 20。這個參數的最大值也是由 conf-spawn 來決定的。設置的重要性如同選項(2)所示。
(4)databyes
它定義了 qmail-smtpd 所允許接收的郵件的最大字節數。
這個參數的缺省值為 0,表示對接收郵件的字節數沒有限制。如果要限制最大的接收為 10M,操作如下:
echo 10485760 > /var/qmail/control/databytes
這是任何大于 10M 的郵件都會被拒絕。這個參數最好合理設置,以避免惡意的對你服務器發送大量的超大郵件,產生郵件服務器負荷過大,甚至系統崩潰的危險。
(5)me
這個配置文件是 qmail 系統十分重要的一個文件,如果這個文件不存在,qmail 系統將無法運行。 me 是用來定義本地郵件服務器的主機名的。有多個配置文件是和 me 有關聯的。如果那些配置文件不存在,系統默認會從 me 中讀取參數值的。me 這個配置文件一般都是在 qmail 系統安裝時使用 configure-fast 來創建的。
(6)queuelifetime
這個配置文件是定義一個郵件在郵件隊列中存活的時間。
缺省值為 7 天(604800s),這個期限掉了以后 qmail-send 將會進行最后一次的投遞嘗試,如果投遞失敗,該郵件將會從郵件隊列中刪除。
(7)rcphosts
這個配置文件也是 qmail 一個十分重要的文件,這個文件是定義系統允許轉發郵件的郵件域。 如果這個文件不存在或者為空,你的系統將會接收 Internet 上所有的域的郵件轉發,即你的系統是 Open relay(存在被惡意用戶作為垃圾郵件發送服務器的危險!!!)。配置文件 rcpthosts 最多可以支持 50 個主機名和域名。如果超個這個數字,就需要保存到他的擴充配置文件 morercphosts 中,然后使用 qmail 的命令程序 qmail-newmrh (該文件一般在 /var/qmail/bin 目錄下)來生成二進制的 morercpthosts.cdb 文件,這樣 qmail-smtpd 才可以從這個二進制文件中讀取信息。
(8)virtualdomains
這也是 qmail 的一個非常重要的配置文件,它定義了 qmail 的虛擬郵件域,qmail 結合 vpopmail 的虛擬域管理功能可以定義多個虛擬郵件域。
3、安全Postfix電子郵件服務器
Postfix是一個由IBM資助、由Wietse Venema負責開發的自由軟件工程產物,它的目的就是為用戶提供除Qmail之外的郵件服務器選擇。Postfix在快速、易于管理和提供盡可能的安全性方面都進行了較好的考慮。Postfix是基于半駐留、互操作的進程的體系結構,每個進程完成特定的任務,沒有任何特定的進程衍生關系,使整個系統進程得到很好的保護。同時Postfix也可以和Qmail郵件服務器保持兼容性以滿足用戶的使用習慣。
(1)安全配置Postfix郵件服務器
與Qmail相比,Postfix最被人稱道的地方就在于其配置文件的可讀性很高。Postfix的主配置文件是/etc/postfix/main.cf。雖然該配置文件的內容比較多,但其中大部分內容都是注釋(“#”號開頭的行),真正需要自行定義的參數并不多。然而,為了對其進行安全配置,還是需要針對某些選項進行細心的設置。
在main.cf文件中,參數都是以類似變量的設置方法來設置的,這些參數的使用主要包含兩部分的內容:
(1)定義和聲明變量:例如definename = good-better-best。等號左邊是變量的名稱,等號右邊是變量的值。
(2)引用變量:可以在變量的前面加上符號“$”來引用該變量,如:myname = $ definename(相當于definename = good-better-best)。
需要注意的是:等號兩邊需要有空格字符。此外,如果變量有兩個以上的設置值,就必須用逗號“,”或者空格符“ ”將它們分開。
在熟悉了上述變量的定義和引用方法后,下面詳細介紹如何安全、高效地配置Postfix服務器的相關選項。
1.設置Postfix服務監聽的網絡接口
默認情況下,inet_interfaces參數的值被設置為localhost,這表明只能在本地郵件主機上寄信。如果郵件主機上有多個網絡接口,而又不想使全部的網絡接口都開放Postfix服務,就可以用主機名指定需要開放的網絡接口。不過,通常是將所有的網絡接口都開放,以便接收從任何網絡接口來的郵件,即將inet_interfaces參數的值設置為“all”,如下所示:
inet_interfaces = all
2.安全設置可接收郵件的主機名稱或域名
mydestination參數非常重要,因為只有當發來的郵件的收件人地址與該參數值相匹配時,Postfix才會將該郵件接收下來。通過該選項的設置可以過濾掉許多沒有經過認證和授權的郵件,從而節省服務器的存儲空間,以及節省用戶的郵件處理時間。
舉一個簡單的例子,用戶可以將該參數值設置為如下:
accept_domain = test.net
mydestination = $accept_domain
這就表明無論來信的收件人地址是X@test.net(其中X表示某用戶在test.net域中的郵件賬戶名),Postfix都會接收這些郵件。而除此之外的郵件,Postfix都不會接受。
3.安全設置可轉發郵件的網絡(IP設置)
有關安全設置可轉發郵件的網絡可以使用mynetworks參數來設置。可將該參數值設置為所信任的某臺主機的IP地址,也可設置為所信任的某個IP子網或多個IP子網(采用“,”或者“ ”分隔)。
比如,用戶可以將mynetworks參數值設置為172.168.96.0/24,則表示這臺郵件主機只轉發子網172.168.96.0/24中的客戶端所發來的郵件,而拒絕為其他子網轉發郵件:
mynetworks = 172.168.96.0/24
除了mynetworks參數外,還有一個用于控制網絡郵件轉發的參數是mynetworks-style,它主要用來設置可轉發郵件網絡的方式。通常有以下三種方式:
(1)class:在這種方式下,Postfix會自動根據郵件主機的IP地址得知它所在的IP網絡類型(即A類、B類或是C類),從而開放的它所在的IP網段。
(2)subnet:這是postfix的默認值,postfix會根據郵件主機的網絡接口上所設置的IP地址、子網掩碼來得知所要開放的IP網段。
(3)host:在這種方式下,postfix只會開放本機。
通常,用戶一般不需要設置mynetworks-style參數,而直接設置mynetworks參數。如果這兩個參數都進行了設置,那么mynetworks參數的設置有效。
4.設置可轉發郵件的網絡(域名設置)
上面介紹的mynetworks參數是針對郵件來源的IP來設置的,而relay_domains參數則是針對郵件來源的域名或主機名來設置的,其實從原理上來說是一致的,不過是區分了IP地址和域名而已,不過,relay_domains還需要依賴DNS這個基礎設施。
例如,用戶可以將relay_domains參數值設置為test.net,則表示任何由域test.net發來的郵件都會被認為是信任的,Postfix會自動對這些郵件進行轉發,如下所示:
relay_domains = test.net
那么,要使它能在實際網絡中更好地轉發郵件,還必須進行相應的DNS設置。那么,需要在該網絡的DNS服務器上定義了一個主區域test.net,并在該區域配置文件中定義了以下記錄:
//定義郵件服務器的IP地址
patterson.test.net. IN A 172.168.96.254
//定義郵件服務器的別名
mail.test.net. IN CNAME patterson.test.net.
//定義優先級別
test.net. IN MX 10 mail.test.net.
上述記錄只對郵件服務器進行了定義,還有諸如SOA、NS等的定義,在這里就不再贅述。
(2)Postfix使用SMTP安全認證
如同前面所述的qmail服務器面臨的郵件轉發的問題,在Postfix服務器中同樣也存在。為了避免這種情況的出現,Postfix默認不會對外開放轉發功能,而僅對本機(localhost)開放轉發功能。但是,在實際應用中,必須在Postfix主配置文件中通過設置mynetworks、relay_domains參數來開放一些所信任的網段或網域,否則該郵件服務器幾乎沒有什么用處。在開放了這些所信任的網段或網域后,還可以通過設置SMTP認證,對要求轉發郵件的客戶端進行用戶身份(用戶賬戶名與密碼)驗證。只有通過了驗證,才能接收該用戶寄來的郵件并幫助轉發。同樣,Postfix中目前比較常用的SMTP認證機制是通過Cyrus SASL包來實現的。
默認情況下,Postfix并沒有啟用SMTP認證機制。要讓Postfix啟用SMTP認證,就必須對Postfix的主配置文件/etc/postfix/main.cf進行修改。用戶需要在main.cf文件中添加如下有關SMTP認證的設置部分:
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = ''
smtpd_recipient_restrictions = permit_mynetworks
permit_sasl_authenticated, reject_unauth_destination
broken_sasl_auth_clients=yes
smtpd_client_restrictions = permit_sasl_authenticated
smtpd_sasl_security_options = noanonymous
其中,每個選項的具體含義如下:
(1)smtpd_sasl_auth_enable:指定是否要啟用SASL作為SMTP認證方式。默認不啟用,這里必須將它啟用,所以要將該參數值設置為yes。
(2)smtpd_sasl_local_domain:如果采用Cyrus-SASL版進行認證,那么這里不做設置。
(3)smtpd_recipient_restrictions:表示通過收件人地址對客戶端發來的郵件進行過濾。通常有以下幾種限制規則:
permit_mynetworks:表示只要是收件人地址位于mynetworks參數中指定的網段就可以被轉發郵件。
permit_sasl_authenticated:表示允許轉發通過SASL認證的郵件。
reject_unauth_destination:表示拒絕轉發含未信任的目標地址的郵件。
(4)broken_sasl_auth_clients:表示是否兼容非標準的SMTP認證。有一些Microsoft的SMTP客戶端采用非標準的SMTP認證協議,只需將該參數設置為yes就可解決這類不兼容問題。
(5)smtpd_client_restrictions:表示限制可以向Postfix發起SMTP連接的客戶端。如果要禁止未經過認證的客戶端向Postfix發起SMTP連接,則可將該參數值設置為permit_sasl_authenticated。
(6)smtpd_sasl_security_options:用來限制某些登錄的方式。如果將該參數值設置為noanonymous,則表示禁止采用匿名登錄方式。
在完成上述設置后,必須使用命令/etc/init.d/postfix reload重新載入配置文件,或使用命令/etc/init.d/postfix restart重新啟動Postfix服務,以使該配置生效。當然,這兩個命令的具體使用需要根據不同的Linux版本來選用。
此外,由于當Postfix要使用SMTP認證時,會讀取/usr/lib/sasl2/smtpd.conf文件中的內容,以確定所采用的認證方式,因此如果要使用saslauthd這個守護進程來進行密碼認證,就必須確保/usr/lib/sasl2/smtpd.conf文件中的內容為:
pwcheck_method: saslauthd
4、常用的垃圾郵件防范技術
電子郵件的廉價和操作簡便在給人們帶來巨大便利的同時,也誘使有些人將它作為大量散發自己信息的工具,最終導致了互聯網世界中垃圾郵件的泛濫。垃圾郵件問題已經極大地消耗了網絡資源,并給人們帶來了極大的不便。據中國互聯網協會(ISC)2005年第一次反垃圾郵件狀況調查顯示,中國郵件用戶2005年4月平均每人每天收到郵件16.8封,占收到郵件總數的60.87%。并且,從垃圾郵件的總數量來看,每年網民收到的垃圾郵件總量增長率均為40%左右,問題十分嚴重。
目前,垃圾電子郵件已成為人們最頭疼的問題之一。在Linux操作系統平臺中,反擊和過濾垃圾電子郵件是一件很重要的工作。下面介紹一些在Linux中廣泛使用的防垃圾郵件技術。
1.SMTP用戶認證技術
目前常見并十分有效的方法是,在郵件傳送代理MTA上對來自本地網絡以外的互聯網的發信用戶進行SMTP認證,僅允許通過認證的用戶進行遠程轉發。這樣既能夠有效避免郵件傳送代理服務器為垃圾郵件發送者所利用,又為出差在外或在家工作的員工提供了便利。如果不采取SMTP認證,那么在不犧牲安全的前提下,設立面向互聯網的Web郵件網關也是可行的。此外,如果SMTP服務和POP3服務集成在同一服務器上,在用戶試圖發信之前對其進行POP3訪問驗證(POP before SMTP)就是一種更加安全的方法,但在應用的時候要考慮到當前支持這種認證方式的郵件客戶端程序還不多。
2.逆向DNS解析
無論哪一種認證,其目的都是避免郵件傳送代理服務器被垃圾郵件發送者所利用,但對于發送到本地的垃圾郵件仍然無可奈何。要解決這個問題,最簡單有效的方法是對發送者的IP地址進行逆向名字解析。通過DNS查詢來判斷發送者的IP與其聲稱的名字是否一致,例如,其聲稱的名字為mx.hotmail.com,而其連接地址為20.200.200.200,與其DNS記錄不符,則予以拒收。這種方法可以有效過濾掉來自動態IP的垃圾郵件,對于某些使用動態域名的發送者,也可以根據實際情況進行屏蔽。但是上面這種方法對于借助Open Relay的垃圾郵件依然無效。對此,更進一步的技術是假設合法的用戶只使用本域具有合法互聯網名稱的郵件傳送代理服務器發送電子郵件。例如,若發件人的郵件地址為someone@yahoo.com,則其使用的郵件傳送代理服務器的Internet名字應具有yahoo.com的后綴。這種限制并不符合SMTP協議,但在多數情況下是切實有效的。須要指出的是,逆向名字解析要進行大量的DNS查詢。
3.實時黑名單過濾
以上介紹的防范措施對使用自身合法域名的垃圾郵件仍然無效。對此比較有效的方法就是使用黑名單服務了。黑名單服務是基于用戶投訴和采樣積累而建立的、由域名或IP組成的數據庫,最著名的是RBL、DCC和Razor等,這些數據庫保存了頻繁發送垃圾郵件的主機名字或IP地址,供MTA進行實時查詢以決定是否拒收相應的郵件。但是,目前各種黑名單數據庫難以保證其正確性和及時性。例如,北美的RBL和DCC包含了我國大量的主機名字和IP地址,其中有些是早期的Open Relay造成的,有些則是由于誤報造成的。但這些問題遲遲得不到糾正,在一定程度上阻礙了我國與北美地區的郵件聯系,也妨礙了我國的用戶使用這些黑名單服務。
4.白名單過濾
白名單過濾是相對于上述的黑名單過濾來說的。其建立的數據庫的內容和黑名單的一樣,但其性質是:庫中存在的都是合法的,不應該被阻斷。同樣,該過濾方法存在的缺點與黑名單類似,也是更新和維護難以達到實時,一些正常的、不為系統白名單所收集的郵件有可能被阻斷。從應用的角度來說,在小范圍內使用白名單是比較成功的。
5.內容過濾
即使使用了前面諸多環節中的技術,仍然會有相當一部分垃圾郵件漏網。對此情況,目前最有效的方法是基于郵件標題或正文的內容過濾。其中比較簡單的方法是,結合內容掃描引擎,根據垃圾郵件的常用標題語、垃圾郵件受益者的姓名、電話號碼、Web地址等信息進行過濾。更加復雜但同時更具智能性的方法是,基于貝葉斯(Bayes)概率理論的統計方法所進行的內容過濾,該算法最早由Paul Graham提出(http://www.paulgraham.com/spam.html),并使用他自己設計的Arc語言實現。這種方法的理論基礎是通過對大量垃圾郵件中常見關鍵詞進行分析后得出其分布的統計模型,并由此推算目標郵件是垃圾郵件的可能性。這種方法具有一定的自適應、自學習能力,目前已經得到了廣泛的應用。最有名的垃圾郵件內容過濾是Spamassassin,其使用Perl語言實現,集成了以上兩種過濾方法,可以與當前各種主流的MTA集成使用。內容過濾是以上所有各種方法中耗費計算資源最多的,在郵件流量較大的場合,需要配合高性能服務器使用。另外,當前也有很多學者將人工神經網絡、支持向量機、Winnow算法等及其學習的方法引入到內容過濾垃圾郵件的研究中來,并且取得了很好的效果。
#p#
5、客戶端配置垃圾郵件防護功能
1.正確配置Foxmail收發郵件
在安裝和啟動了SMTP以及POP服務器之后,就可以使用其來收發郵件了,由于命令行方式的使用比較麻煩和需要相當的背景知識,所以現在普遍的方式是使用Windows下的一些郵件客戶端軟件來發送和接收郵件。
這些客戶端軟件主要有Foxmail、Outlook Express、Netscape、Eudora等等,由于其他的客戶端軟件與Foxmail具有差不多的功能,下面主要介紹使用Foxmail這款典型的、最為常用的軟件,該軟件功能強大,使用靈活、方便,首先介紹如何來對其收發郵件的相應選項進行配置。
在安裝好該軟件的Foxmail 6.0版本以后,就可以按照如下的步驟進行配置:
(1)選擇并單擊菜單欄上的【郵箱(B)】選項,彈出下拉菜單,單擊【新建郵箱賬戶(N)】選項,系統彈出【向導】對話框,如圖1所示。向導將提示用戶建立新的用戶賬戶,在這里,建立一個新的用戶為patterson。
(2)單擊【下一步】按鈕,向導提示用戶輸入POP3服務器地址、用戶名、密碼以及SMTP服務器地址,以方便發送和接收郵件,如圖2所示。這里POP3服務器地址為:pop3.test.net,用戶名為:patterson,密碼隱藏,SMTP服務器地址為:smtp.test.net。
(3)單擊【下一步】按鈕,如圖3所示,并且單擊【完成】按鈕,完成賬戶的建立工作。配置完成后,用戶就可以使用Foxmail方便地使用前面建立的test.net的SMTP以及POP3服務器收發電子郵件了。
2.配置Foxmail垃圾郵件過濾高級功能
Foxmail提供了強大的垃圾郵件過濾功能,它基本上集成了本專題第4節中介紹的所有垃圾郵件過濾技術,使用該客戶端的用戶可以結合其與qmail郵件服務器高速使用,從而保證從一定程度上減輕垃圾郵件對自己的“騷擾”,具體的設置步驟如下:
(1)選擇并單擊菜單欄上的【工具(T)】選項,彈出下拉菜單,單擊【反垃圾郵件功能設置(Z)】選項,系統彈出【反垃圾郵件設置】對話框,如圖4所示。
(2)選擇并單擊對話框上的【常規】標簽,可以設置最簡單的垃圾郵件轉移處理功能。
(3)選擇并單擊對話框上的【規則過濾】標簽,可以設置垃圾郵件過濾的相關規則。如圖5所示。
(4)選擇并單擊對話框上的【貝葉斯過濾】標簽,可以設置基于貝葉斯人工智能方法的垃圾郵件過濾的相關方法,通過對現有用戶標記的郵件的學習,Foxmail可以學習到垃圾郵件具有的關鍵字、IP地址、域名等信息,從而在郵件到來后,及時地、自動地為用戶進行標記和判別,減少用戶的處理時間。如圖6所示。
(5)選擇并單擊對話框上的【黑名單】標簽,可以人工設置哪些郵件將直接列入黑名單而被Foxmail直接刪除,從而在郵件到來后,及時地、自動地為用戶進行標記和判別,同樣減少用戶的處理時間。在使用黑名單時特別要注意,千萬不要把有用的郵件地址列入其中,否則有可能將給用戶帶來不可挽回的損失,如圖7所示。
(6)選擇并單擊對話框上的【白名單】標簽,可以人工設置哪些郵件將直接列入白名單而不為Foxmail進行處理提示是否為垃圾郵件,從而交給用戶作進一步處理,這樣做同樣可以減少用戶的處理時間。如圖8所示。
6、服務器端使用SpamAssasin防治垃圾郵件
1.SpamAssasin簡介
SpamAssasin是一個郵件過濾器,它可以使用一系列的機制來確認垃圾郵件,這些機制包括:文本分析、Bayesian (貝葉斯判決規則)過濾、DNS數據塊列表,以及合作性的過濾數據庫。SpamAssasin并不能刪除垃圾郵件,但它卻可以阻止垃圾郵件。究其原因,主要在于它有如下一些特性:
? 適用范圍廣:SpamAssasin使用大量的本地和網絡的測試來確認垃圾郵件特征。這使得垃圾郵件制造者在明確其制造的信息的可工作性時增加了難度。
? 自由軟件,應用廣泛:與其它流行的開源軟件一樣,愛好者可以廣泛的應用和修改、發布,應用前景很好。
? 易于擴展:SpamAssasin將反垃圾測試和配置信息存儲在純文本中,這使得配置和增加新的規則相當容易。
? 靈活性:SpamAssasin將其邏輯封裝在一個設計精良的、抽象化的API中,因此它可被集成到電子郵件數據流中的任何地方。SpamAssasin可被用于多種電子郵件系統中,其中包括:procmail、sendmail、Postfix、qmail等。
? 易于配置:SpamAssasin幾乎不需要用戶的配置。用戶不必用郵件帳戶或郵件列表的成員資格詳細信息來不斷地更新SpamAssasin配置。一旦分類,站點和用戶規則就可以被運用于垃圾郵件。而且規則可以適用于郵件服務器,并且在以后又可以使用用戶自己的郵件用戶代理應用程序。
2.安裝SpamAssasin
可以在網站上http://spamassassin.apache.org/downloads.cgi下載SpamAssasin的最新版本進行安裝,目前其最新版本為3.2.5,具體的安裝步驟如下所示:
(1)解壓縮軟件包
#tar xzvf Mail-SpamAssassin-3.2.5.tar.gz
(2)進入目錄進行安裝
#./configure
#make & make install
3.配置與啟動SpamAssasin
就像大多數Linux應用程序一樣,SpamAssasin需要對配置文件的編輯。這個配置文件的路徑是:/etc/mail/spamassassin/local.cf。下面給出了一個配置該文件的示例:
# How many hits before a message is considered spam.
required_score 7.5
# Change the subject of suspected spam
rewrite_header subject [SPAM]
# Encapsulate spam in an attachment (0=no, 1=yes, 2=safe)
report_safe 1
# Enable the Bayes system
use_bayes 1
# Enable Bayes auto-learning
bayes_auto_learn 1
# Enable or disable network checks
skip_rbl_checks 0
use_razor2 1
use_dcc 1
use_pyzor 1
# Mail using languages used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_languages all
# Mail using locales used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_locales all
其中,主要包括如下幾個重點項需要進行設置:
required_score(評價閾值):設定該閾值通常情況下需要根據管理員的長期經驗。閾值越低,就會有更少的郵件通過,因而將正常郵件誤報為垃圾郵件的概率越高;閾值越高,則有可能將更多的垃圾郵件漏報為正常郵件,通常的默認值為5。
Rewrite header Subjects(重寫消息主題):通過這個選項,用戶可以配置SpamAssassin用你選擇的任何對象來編輯電子郵件的主題行。默認值設置為:[SPAM]
bayes_auto_learn(使用自動學習):SpamAssassin可以通過分析具有一定評價的消息,去自動化地整理其Bayes(貝葉斯)數據庫,這個評價強烈地顯示了消息是垃圾還是非垃圾消息。
Enable or disable network checks(使用網絡檢查和檢驗):選擇是否使用將消息檢查和(Checksum)與已知的垃圾郵件相比較的服務:這些服務有:Vipul's Razor 2.x、 DCC、 Pyzor等,不過只有當每種服務的客戶端軟件安裝時這些服務才能正常工作。(即通過use_razor2, use_dcc, use_pyzor進行)。另外,該選項中還包括了Enable RBL Checks(啟用RBL檢查),即選擇SpamAssassin是否應使用RBLS(DNS黑名單)。這有助于檢測難于檢測的垃圾信息,但需要消耗一些時間、網絡帶寬以及一個可用的DNS服務器。
Languages(語言):最后兩種配置是關于語言的,第一個是哪些語言應檢查,默認選項是檢查所有的語言,建議不要修改。
在成功配置好spamassassin后,需要啟動spamassassin應用程序。要想運行spamassassin,必須以根用戶身份運行如下的命令:
#/etc/rc.d/init.d/spamassassin start
4.與qmail協同工作
你的spamassassin已經啟動并正常運行,現在需要設置它與郵件傳輸代理(Mail Delivery Agent)一起工作。本文介紹它與qmail協同工作的設置,因為qmail是在Linux環境中應用最廣泛的郵件傳輸代理。
用戶需要編輯/etc/mail/spamassassin/spamc.cf文件,并增加如圖9所示的內容:
現在senmail被設置為使用SpamAssassin來評價和過濾進入的垃圾郵件。
5.垃圾郵件黑名單
通常情況下,垃圾郵件發送者都會借助某些域和用戶會發送垃圾信息。幸運的是,SpamAssassin有一個對付已知垃圾郵件制造者的手段。設置黑名單是很簡單的事情。用戶可以向配置文件etc/mail/spamassain/local.cf添加黑名單。黑名單的書寫方式如下所示:
blacklist_from sample_email@sampledomain.com
blacklist_from *@sampledomain.com
blacklist_from *@sampledomain.com
blacklist_from *@sampledomain.com
上面的內容相當明顯地向讀者展示了如何配置黑名單。用戶既可以配置具體的電子郵件地址(如sample_email@sampledomain.com),也可以配置整個域(如*@sampledomain.com)。另外,為了使用最新的網絡上共享的垃圾郵件過濾信息,還可以從http://www.sa-blacklist.stearns.org/sa-blacklist/sa-blacklist.current下載最新的黑名單。不過,這個列表相當龐大,且有可能不會非常適合用戶的需要,因此在下載此列表并添加到用戶的黑名單時還需要進行細致的過濾和篩選。
【51CTO.com 獨家特稿,轉載請注明出處及作者!】