Postfix利用擋信機(jī)制來消除垃圾郵件的隱患
“不請(qǐng)自來的大宗郵件”(Unsolicited Bulk E-mail,UBE),或“不請(qǐng)自來的廣告郵件”(Unsolicited Commercial E-mail,UCE),就是一般俗稱的“垃圾郵件”(spam),寄件人沒有事先征得收件人的同意,就擅自寄送大量(煩人的)郵件給一大群陌生的收件 人,這樣的行為稱為“濫發(fā)垃圾郵件”,而專門干這種事的人,叫做“垃圾郵件發(fā)送者”(spammer)。垃圾郵件之所以存在,是因?yàn)榧乃统杀颈阋?。郵遞量 從幾百人增加到幾千人并不會(huì)增加太多成本,所以,來郵件發(fā)送者的目標(biāo)就是盡量收集多的郵件地址。本文就介紹下Postfix利用擋信機(jī)制來消除垃圾郵件隱患,先為大家介紹下垃圾郵件的本質(zhì)和由來。
垃圾郵件的本質(zhì)
大部分的垃圾郵件都是商業(yè)廣告,但是這些廣告絕大部分都是唬人的騙局。垃圾郵件發(fā)送者才不在乎郵件內(nèi)容是否能引起收件人的興趣,而且他們的信息通常就是謊 言,若有其事的宣稱收件人曾經(jīng)跟他們公司有過怎樣的關(guān)系,或是從天而降的伙伴那時(shí)得知你需要什么信息,所以特地寫信給你云云。。。。。簡直是鬼話連篇。有 些信息被刻意便造成煞有介事的樣子,讓你誤以為有兩個(gè)正在進(jìn)行某種交易,談?wù)摰剿麄兊漠a(chǎn)品或服務(wù)有多么好,而你是因?yàn)樗麄儾恍⌒募腻e(cuò)郵件所以才會(huì)收到郵 件。。。。。??傊?,他們想盡辦法意圖勾起你貪小便宜的心,而誘使你上當(dāng)。
垃圾郵件經(jīng)常提供“我不要再收到這樣的郵件”的提示,比方說,要求你回信到某個(gè)郵箱,或是到某個(gè)網(wǎng)頁填寫你的郵件地址,或是點(diǎn)擊一個(gè)含有特殊查詢字符串的網(wǎng)址等。
然而,這樣的選退機(jī)制本身通常也是騙局,垃圾郵件發(fā)送者利用這種方法來確定你的郵件地址確實(shí)有效的,而且你是屬于那種比較容易受騙上當(dāng)?shù)娜?。換言之,如果你真的傻傻的遵照指示執(zhí)行,換來的只是被更多垃圾郵件發(fā)送者知道你的郵件地址,而你也將會(huì)收到更多的垃圾郵件。
垃圾郵件發(fā)送者通常是試圖隱藏他們的行蹤的線索,避免被人逆向追查出來。假的回信地址與捏造的郵件標(biāo)題,是最常使用的伎倆。他們?cè)贗nternet上到處 搜尋沒有妥善特定的系統(tǒng),好讓他們能夠匿名寄出大量垃圾郵件。更高明的技術(shù)是入侵防備不當(dāng)?shù)南到y(tǒng),植入他們刻意設(shè)計(jì)的秘密relay server。此外,垃圾郵件的內(nèi)容通常經(jīng)過特殊編碼或是安插隨機(jī)字母,試圖通過過濾程序的分析。
垃圾郵件發(fā)送者使用的某些伎倆,其副作用甚至必濫發(fā)垃圾郵件的行為本身更糟糕。就“漫無目標(biāo)法”而言,他們不管郵件地址實(shí)際存在與否,而盲目的將垃圾郵件 送到他們認(rèn)為可能存在的郵件地址。另一種“字典攻擊法”則是預(yù)先收集所謂的“人名”,并從DNS查出各網(wǎng)域的MX服務(wù)器,集中寄出垃圾郵件到成功可能性最 高的郵件地址。兩種伎倆都會(huì)無端造成受害系統(tǒng)的額外負(fù)擔(dān)。
垃圾郵件的問題
雖然小規(guī)模的垃圾郵件似乎不是什么大問題,但是在Internet上,這卻是相當(dāng)嚴(yán)重的問題,甚至被認(rèn)為是電子商務(wù)的殺手。一個(gè)為幾百人或幾千人提供郵件 服務(wù)的系統(tǒng),如果每人每天都收到幾百份垃圾郵件,那這個(gè)系統(tǒng)就快要癱瘓了。垃圾郵件的發(fā)送成本很低,但是垃圾郵件受害人卻要付出真實(shí)的代價(jià),這顯然是不公 平的,因?yàn)槔]件無端的占據(jù)了收件人的郵箱配額,浪費(fèi)收件人的磁盤空間與網(wǎng)絡(luò)帶寬。
垃圾郵件帶來的另一項(xiàng)損害是浪費(fèi)技術(shù)支持人員的時(shí)間。雖然技術(shù)人員或管理員刻意幫助用戶清理被塞爆的郵箱,但是,垃圾郵件的量有時(shí)候大到系統(tǒng)甚至無法勝任 其原來的任務(wù)。垃圾郵件的這種副作用,無異于刻意的“拒絕服務(wù)攻擊”。就算沒嚴(yán)重到這種地步,夾雜在正常郵件中的垃圾郵件還是會(huì)干擾用戶的閱讀,如果垃圾 郵件太多,甚至容易使人忽略重要郵件或誤刪正常郵件。
關(guān)于垃圾郵件的一項(xiàng)重要課題,在于如何處理寄給不明用戶的郵件。有些郵件系統(tǒng)在發(fā)現(xiàn)收件地址無效時(shí),當(dāng)場就予以拒收(reject),郵件沒機(jī)會(huì)進(jìn)入隊(duì) 列;有些系統(tǒng)則必須先收下郵件,然后才當(dāng)成“無法投遞的郵件”而退信,而這些退信很容易就塞滿隊(duì)列,進(jìn)而干擾合法郵件的遞送。由于垃圾郵件的回復(fù)地址通常 是無效的,所以退信不能立刻寄出去,而會(huì)在隊(duì)列里待上好一陣子,在服務(wù)器嘗試了多次無謂的遞送之后,才會(huì)因?yàn)檫^期而被移除隊(duì)列。
垃圾郵件發(fā)送者還有一種令人發(fā)指的惡行,他們會(huì)冒充無辜第三者的名義來濫發(fā)垃圾郵件,使得該受害者收到大量的退信通知。大量濫發(fā)垃圾郵件時(shí),發(fā)信系統(tǒng)勢(shì)必 時(shí)常遭到退信。當(dāng)垃圾郵件發(fā)送者使用別人的open relay濫發(fā)垃圾郵件時(shí),如果放任讓退信或拒收通知函寄送到管理員郵箱,勢(shì)必會(huì)引起管理員的警覺,一旦管理員關(guān)閉掉open relay或修補(bǔ)系統(tǒng)漏洞之后,他們將不能再繼續(xù)使用該系統(tǒng)濫發(fā)垃圾郵件。因此,他們冒用無辜第三者的郵件地址為發(fā)信地址,使退信通知送到該無辜地址,借 此延后管理員發(fā)覺系統(tǒng)被濫用的時(shí)間。而那位被冒用名義的無辜受害人將收到上千甚至上百萬封退信通知。這種情況我們稱之為“背黑鍋”,因?yàn)槭芎θ瞬⑽磪⑴c濫 發(fā)垃圾郵件的惡行。在大多數(shù)情況下,擺脫黑鍋的唯一辦法是放棄那個(gè)地址,改用另一個(gè)新地址。
開放轉(zhuǎn)發(fā)(open relay)
如果你的系統(tǒng)不得不服務(wù)來自Internet的客戶端,你有責(zé)任避免系統(tǒng)成為開放轉(zhuǎn)發(fā),以免垃圾郵件發(fā)送者使用你的系統(tǒng)來轉(zhuǎn)發(fā)垃圾郵件。open relay是一種特殊的郵件系統(tǒng),這類系統(tǒng)不限制客戶端的位置,也不查證郵件是否寄給直轄網(wǎng)域,就原意收下并代為轉(zhuǎn)寄到最終目的地。在垃圾郵件還不泛濫的 年代,郵件系統(tǒng)管理員多半愿意提供轉(zhuǎn)發(fā)服務(wù),好讓他們的用戶不管旅行到世界哪一個(gè)角落,都能通過他們的服務(wù)器寄信。因此,開放轉(zhuǎn)發(fā)服務(wù)是當(dāng)時(shí)的smtp服 務(wù)器軟件(sendmail 8之前得安版本)的默認(rèn)配置。然而,隨Internet的普及,立意很好的open relay現(xiàn)在反而成為垃圾郵件跳板的代名詞。因?yàn)閷?duì)于郵件的終點(diǎn)站而言,這類郵件看起來就像是直接從open relay發(fā)出的一樣,垃圾郵件發(fā)送者就是利用此一特性來隱藏真實(shí)的發(fā)信地點(diǎn)。現(xiàn)在,幾乎所有新一代的smtp軟件都默認(rèn)配置都會(huì)限定轉(zhuǎn)發(fā)功能的服務(wù)對(duì) 象,而postfix當(dāng)然也不例外。
倘若你的系統(tǒng)被當(dāng)成open relay使用,最可能出現(xiàn)的癥狀是寄信效率明顯變低,因?yàn)樗χ乃痛罅康睦]件,無暇遞送合法用戶的正常郵件。如果你愿意讓自己的系統(tǒng)成為垃圾郵 件的幫兇,你還得小心有心人利用你的open relay來攻陷其他系統(tǒng)。而且在你的系統(tǒng)轉(zhuǎn)發(fā)了大量的垃圾郵件之后,你的網(wǎng)絡(luò)將有很高的機(jī)率被列入黑名單,到那時(shí)候,將有許多站點(diǎn)拒收來自于你的網(wǎng)絡(luò)的 全部郵件--包括垃圾郵件與合法郵件。
辨別垃圾郵件
只要你的系統(tǒng)不被當(dāng)成open relay使用,至少刻意放心它不會(huì)被用來攻擊其他系統(tǒng),而你下一步,應(yīng)該是保護(hù)自己以及你的用戶,想辦法盡量減少收到垃圾郵件。理論上,郵件服務(wù)器應(yīng)該 能夠拒收任何看起來像垃圾郵件的郵件。然而,雖然人類有能力一眼就認(rèn)出垃圾郵件,但是要求計(jì)算機(jī)精確認(rèn)出垃圾郵件而不發(fā)生誤判,根本是不可能的。實(shí)際上, 一旦你開始拒收垃圾郵件,必定有可能將合法郵件按誤當(dāng)在門外。
拒收被誤當(dāng)成垃圾郵件的合法郵件,這種事件我們稱之為誤判。你的垃圾郵件抵制措施要盡量達(dá)成兩個(gè)相互違背的目標(biāo);盡可能擋掉可疑的垃圾郵件和盡可能降低誤 判機(jī)率。你采取的管制措施越嚴(yán)格,發(fā)生誤判的風(fēng)險(xiǎn)就越高。要采取嚴(yán)格到何種程度的管理措施,取決于發(fā)生誤判所造成的嚴(yán)重性有多高。對(duì)于完全不容許誤判的環(huán) 境(比方說,專用來接收客戶訂單的郵件系統(tǒng)),只能采取最寬松的管制,也就是接收所有的垃圾郵件。相對(duì)的,如果不在乎誤判或是能夠事先協(xié)調(diào)好用戶,則可疑 采取最嚴(yán)格的管制;只有事先特許的個(gè)人才能使用郵件系統(tǒng),也就是所謂的“白名單”。事先批準(zhǔn)似乎過于嚴(yán)苛,但是,當(dāng)垃圾郵件問題已經(jīng)嚴(yán)重到不可收拾的地 步,白名單已經(jīng)成為越來越普遍的選擇。
計(jì)算機(jī)要如何判斷來信是否為垃圾郵件?主要判定依據(jù)有二,首先是“郵件來源”,其次是“信息內(nèi)容”。前者是在收信期間檢查送信方是否為已知的垃圾郵件來 源,或是其寄信行為是否符合濫發(fā)垃圾郵件的條件。后者是在收下郵件后,檢查信息內(nèi)容是否包含可被判定為垃圾郵件的字眼或其他條件。先不管實(shí)行細(xì)節(jié)上的困 難,只要郵件管理員能夠預(yù)先設(shè)想到各種判定技術(shù)的盲點(diǎn),就能夠兼顧“盡可能擋掉可疑的垃圾郵件”與“盡可能降低誤判機(jī)率”這兩項(xiàng)彼此違背的目標(biāo)。
#p#
依據(jù)客戶端判別垃圾郵件
這里所謂的“客戶端”是指在smtp交互過程中的寄信方。如你所知,在smtp對(duì)話過程中,服務(wù)器端(收信方)可得到對(duì)方的ip地址、主機(jī)名稱與郵件地 址。這些信息片斷都可以用來與一組已知的黑名單比對(duì),借此決定應(yīng)該接收還是拒收郵件。被列在黑名單中的系統(tǒng),有可能真的是垃圾郵件發(fā)送者擁有的主機(jī),但也 有可能是無辜的open relay系統(tǒng),目前,Internet上已經(jīng)很難找到“刻意為了提供轉(zhuǎn)發(fā)服務(wù)而架設(shè)的服務(wù)器主機(jī)”,大部分的open relay多半是倒霉的、無辜的或無知的管理員所架設(shè)的系統(tǒng),open relay并非他們的本意。但不管是哪一種情況,如果你發(fā)現(xiàn)某特定對(duì)象經(jīng)常給你寄垃圾郵件,你可以考慮將對(duì)方列入黑名單。不過,依據(jù)ip地址、主機(jī)名稱或 郵件地址來判定垃圾郵件,最大的問題是這類信息都可被假造。雖然偽造ip地址需要非常高的技術(shù),但是信封地址是很容易假造的。
dns-based黑名單
為了抑止Internet上垃圾郵件的日益泛濫,各種自發(fā)性的抵制技術(shù)與網(wǎng)絡(luò)服務(wù)應(yīng)運(yùn)而生,其中一類頗有爭議的技術(shù)稱為“dns-based黑名單”或 “實(shí)時(shí)黑名單”。這類技術(shù)的原理,是將已知的open relay或垃圾郵件來源記錄在一個(gè)動(dòng)態(tài)數(shù)據(jù)庫,并通過DNS系統(tǒng)開放給MTA server查詢。他們的構(gòu)想是搶先一步提供預(yù)判結(jié)果給合法的MTA server,減輕郵件管理員自己維護(hù)黑名單的負(fù)擔(dān)。以往,垃圾郵件發(fā)送者還會(huì)使用自己的系統(tǒng)來濫發(fā)垃圾郵件,或是搜尋open relay來轉(zhuǎn)發(fā)垃圾郵件;近年來,這群人的行為越來越猖狂,他們幾乎已經(jīng)不再使用自己的系統(tǒng)發(fā)垃圾郵件,而是尋找有機(jī)可乘的受害系統(tǒng),植入可讓他們?yōu)E發(fā) 垃圾郵件的代理軟件,而被脅持的系統(tǒng)能夠甚至可能被用來發(fā)動(dòng)DOS攻擊。有些機(jī)構(gòu)的DNSBL專門提供這類非自愿的垃圾郵件轉(zhuǎn)發(fā)的查詢服務(wù)。
通常,RBL系統(tǒng)的查詢服務(wù)是通過dns提供的。對(duì)于每一個(gè)被認(rèn)定為垃圾郵件來源的ip地址,在rbl所有者的網(wǎng)域空間里都有一個(gè)對(duì)應(yīng)的PTR記錄, MAT在收信期間向RBL系統(tǒng)查詢客戶端的ip地址,借此決定應(yīng)該接收還是拒收郵件。舉例來說,假設(shè)有一家(虛構(gòu)的)RBL服務(wù)機(jī)構(gòu),他們的網(wǎng)域名稱為 nospam.example.com,位于192.168.254.31的主機(jī)已經(jīng)被他們認(rèn)定為垃圾郵件來源,于是,nospam公司在他們的網(wǎng)域空間 里創(chuàng)建一個(gè)dns ptr記錄,31.254.168.192。nospam.example.com當(dāng)192.168.254.31主機(jī)連接到你的postfix系統(tǒng), postfix可查詢?cè)搃p地址是否在nospam.example.com網(wǎng)域下有一個(gè)PRT記錄,如果有,表示該ip地址已被認(rèn)定為垃圾郵件來源, postfix可當(dāng)場拒絕該主機(jī)的寄信要求。
在你決定使用DNSBL服務(wù)之前,必須非常謹(jǐn)慎小心。有許多被用來轉(zhuǎn)發(fā)垃圾郵件的open relay系統(tǒng),它們本身也提供服務(wù)給一般的正常用戶。你雖然擋掉了來自這些系統(tǒng)的垃圾郵件,但也擋掉了源自同系統(tǒng)能夠的合法郵件。此外,將是否收信的決 定權(quán)交給無責(zé)任的第三方,由別人決定誰能夠誰不能夠寄信給你的用戶,是一種推卸責(zé)任的行為。但如果你真的深受垃圾郵件之害,在你研究出適當(dāng)?shù)牡种品椒ㄖ?前,DNSBL服務(wù)確實(shí)能夠幫上忙。如果你決定使用某家公司的服務(wù),請(qǐng)務(wù)必仔細(xì)檢視他們的服務(wù)條款與政策。再一次的,你在“盡可能擋掉可疑的垃圾郵件”與 “盡可能降低誤判機(jī)率”之間取得平衡點(diǎn)。
依據(jù)內(nèi)容判別垃圾郵件
除了以客戶端判別條件之外,郵件內(nèi)容通常也可作為供判別垃圾郵件的特征。垃圾郵件時(shí)常出現(xiàn)某些特定的廣告語。依據(jù)郵件內(nèi)容來辨識(shí)垃圾郵件,并非沒有誤判的 可能。想像一下,如果你經(jīng)常收到大量關(guān)于低率房貸的垃圾郵件,你可能會(huì)想要擋掉含有類似“lomorratetgagewest”詞組的郵件。當(dāng)然,這樣 確實(shí)可擋掉不少垃圾郵件,但是,你可能也擋掉了銀行同意核發(fā)低利率貸款給你的朋友的通知信。
判別技術(shù)的困難處
不管以客戶端還是郵件內(nèi)容作為判別依據(jù),垃圾郵件發(fā)送者總是有辦法找到辦法避過你的抵制措施。合法郵件與垃圾郵件之間,總是一有段難以理清的模糊地帶。當(dāng)你努力收集黑名單的同時(shí),垃圾郵件發(fā)送者也正在尋找新的代罪羔羊(這種無辜系統(tǒng)的數(shù)量之多,遠(yuǎn)超過你的想像)。
你可能發(fā)現(xiàn),在你收到的垃圾郵件中,有許多具有相同的回信地址。當(dāng)然,你確實(shí)可使用回信地址來阻擋垃圾郵件,但是,他們多半采用“邊打邊跑”戰(zhàn)術(shù)。他們先 向免費(fèi)郵件網(wǎng)站申請(qǐng)一個(gè)郵箱,然后使用該地址送出千萬封垃圾郵件,過了幾天之后,他們便放棄原來的郵箱,另外再申請(qǐng)一個(gè)新郵箱。所以,被你列入黑名單的回 信地址,過不了幾天就不會(huì)再出現(xiàn)了。
就算是專門的內(nèi)容過濾系統(tǒng),也必須隨垃圾郵件發(fā)送者的干擾伎倆而調(diào)整。舉例來說,很多濾信軟件會(huì)擋掉正文含有 “viagra”字樣的郵件,于是,垃圾郵件發(fā)送者便將HTML注釋標(biāo)記嵌在這類關(guān)鍵詞句中--將“viagra"改成“vi[:alpha:]/ reject suspicious embedded html comments
postfix的擋信機(jī)制
本章的其余內(nèi)容討論阻擋垃圾郵件的技術(shù)層面的問題,解釋postfix提供的UBE檢查機(jī)制。按照UBE的判別依據(jù),postfix提供的檢查機(jī)制可分四大類:
客戶端判別規(guī)則
postfix提供四種檢查客戶端身份的參數(shù),每一種參數(shù)都可設(shè)定一系列決定如何響應(yīng)客戶端的限制條件。如果條件成立,可能的響應(yīng)動(dòng)作包括ok(收下郵 件)與reject(當(dāng)場拒收)。例如,你可疑設(shè)定一條檢查規(guī)則。擋掉來自特定ip地址的郵件。相對(duì)的,如果條件不成立,則由后續(xù)條件繼續(xù)處理(這種結(jié)果 通常以DUNNO表示)。
語法檢查參數(shù)
postfix內(nèi)置一系列專用檢查語法的參數(shù),可用來核驗(yàn)客戶端的smtp對(duì)話內(nèi)容是否符合標(biāo)準(zhǔn)規(guī)定。由于垃圾郵件發(fā)送者通常不遵守標(biāo)準(zhǔn)規(guī)定,則對(duì)于不符合規(guī)定的客戶端或郵件,你可以要求postfix予以拒收。有些語法檢查參數(shù)也可作為客戶端判別規(guī)則。
內(nèi)容檢查
你可以將一組描述垃圾郵件特征的正則表達(dá)式寫在查詢表中,要求postfix依據(jù)樣式表來檢查郵件的標(biāo)題與正文內(nèi)容。
自定義過濾規(guī)則
你可將一系列內(nèi)置的限制條件組織成新的過濾規(guī)則。
設(shè)定postfix的垃圾郵件標(biāo)識(shí)參數(shù)時(shí),你還必須指定如何處理被辨認(rèn)出來的垃圾郵件。一般而言,postfix可以當(dāng)場拒收,或是收下郵件但是暫存在另一個(gè)隊(duì)列,或是交給外部過濾程序去處理。
通過上文的詳細(xì)介紹,我們都知道到底是如何辨別垃圾郵件和如何利用postfix的擋信機(jī)制來消除垃圾郵件的隱患。
【編輯推薦】