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