Netscape郵件服務(wù)器的UBE插件
1.關(guān)于Netscape郵件服務(wù)器的SMTP插件
3.x版后Netscape郵件服務(wù)器提供了一個應(yīng)用編程接口,方便第三方開發(fā)服務(wù)器插件,來擴(kuò)展郵件服務(wù)器的特定站點功能。SMTP插件就是利用該編程接口開發(fā)的,它可對信頭和信體進(jìn)行預(yù)處理,包括字符集轉(zhuǎn)換、內(nèi)容過濾以及拆分信封信息進(jìn)行重新定義等等。SMTP插件作用于服務(wù)器處理郵件的兩個特定時段:郵件收到后(PostSmtpAccept)或郵件遞送前(PreSmtpDeliver),前者實際是MTA過濾,后者是MDA過濾,在這兩個時段攔截進(jìn)出的郵件,分析其特征,在放行之前采取適當(dāng)?shù)男袆印?br>2.UBE 插件簡介
UBE插件是SMTP 插件的一種,3.x版后Netscape郵件服務(wù)器內(nèi)預(yù)建了該插件,隨郵件服務(wù)器自動安裝。它提供了靈活的、可訂制的過濾能力來移除或重定向不需要的信息。UBE即Unsolicited Bulk Email,由UCE(Unsolicited Commercial Email)演化而來,英文俗稱spam(垃圾郵件)。UBE 插件支持簡單的腳本語言,可按需訂制,創(chuàng)建過濾規(guī)則(rule),生成過濾指令(filter)。UBE 插件就是做MTA過濾,它在PostSmtpAccept時段產(chǎn)生動作,逐一檢查要求發(fā)送的郵件與過濾指令的匹配程度,有選擇地刪除、攔截和重定向那些有UBE特征的數(shù)據(jù)流。不受過濾規(guī)則影響的郵件可繼續(xù)進(jìn)行正常行程。
過濾指令就是篩選郵件的標(biāo)準(zhǔn),在任何時候只要郵件信息滿足這個標(biāo)準(zhǔn),就觸發(fā)你在其中指定的動作(action)。你可創(chuàng)建不同類型的過濾指令,根據(jù)情況的變化隨時激活或禁用它們。通過Netscape服務(wù)器的管理界面或直接編輯所在的UBEfilter.cfg文件是操作過濾的兩個途徑。
3.UBE過濾指令的格式
一條過濾指令在UBE配置文件UBEfilter.cfg中就是一行純文本文字,包含3到5個字段。順序如下:
[:label] | MessageField | MatchCriterion | Action | [argument] [:label]——過濾指令的標(biāo)簽。僅當(dāng)本指令是另一條過濾指令的跳轉(zhuǎn)(JUMP)動作的目的地時才用標(biāo)簽來識別。
MessageField——過濾指令所分析郵件的信頭(Header)或信封(envelope)中的一部分。過濾指令利用這些信息來決定如何處理郵件。信頭由客戶端(client)在發(fā)送郵件時產(chǎn)生,信封是服務(wù)器在將郵件從發(fā)送者傳送到接收者過程中發(fā)送或再轉(zhuǎn)發(fā)信息時產(chǎn)生的,包含了關(guān)于該郵件的一些關(guān)鍵信息。RFC821定義了一些標(biāo)準(zhǔn)的Header field,包括To、From、Sender、Reply-To、Content-type、Subject等等。
在應(yīng)用過濾規(guī)則時,你可以規(guī)定UBE插件既檢查信封也檢查信頭,也可以加一個標(biāo)記 (tag)——envonly來指示過濾指令僅僅考查信封信息。由于信頭比信封更容易被郵件發(fā)送者改變,使用該標(biāo)記可以抵制基于信頭信息的欺騙攻擊。可用于過濾規(guī)則的信封項包含:submitted-date、host-from、user-from、auth-sender、mail-exts、channel-to、rcpt-exts、messages-size、MTA-hops等等。
MatchCriterion——關(guān)于messagefield的相應(yīng)匹配標(biāo)準(zhǔn)。它是一些字符串或規(guī)則表達(dá)式。Messagefield與MatchCriterion的結(jié)合稱作過濾規(guī)則的聲明。比如:Subject“Bad mail”就是一個聲明。聲明的狀態(tài),即匹配或不匹配決定了該規(guī)則是否被應(yīng)用。
Action——規(guī)定了當(dāng)聲明匹配時UBE插件采取的動作。可用的Action有:copy、drop、exit、holdcopy、holdonly、jump、reject、run等等。
[argument]——用于對某些特殊動作做附加說明。說明文字隨退信一起發(fā)給發(fā)件人。
郵件過濾
下面來看如何利用UBE 插件設(shè)計一套過濾規(guī)則對垃圾郵件實行Anti-Relay。
1.如果你在防火墻外面安裝了一個獨立的外部郵件服務(wù)器,設(shè)置它只接收外部郵件但并不向外轉(zhuǎn)發(fā)內(nèi)部郵件,也就是說只是一個MX,那么通過檢查Channel-To 信封項就能有效地阻止relaying。
* Channel-To “xyz.com” EXIT
Channel-To
表示特定發(fā)件指向,后跟郵件接收者列表,相當(dāng)于SMTP的rcpt to命令后跟的郵件接收人,可以是單個郵件地址、郵件列表或一個郵件域;
xyz.com
表示具體匹配標(biāo)準(zhǔn),這里指xyz.com域內(nèi)的所有信箱;
EXIT
表示只要是發(fā)給xyz.com域內(nèi)任意信箱的郵件,無須下面的過濾就可放行。
* $ANY “.*”REJECT “We accept mail for XYZ Company only”
$ANY
任意信封項;
.*
匹配任意字符串(可以為空);
REJECT
表示通不過上一條過濾的郵件就退回發(fā)送者;
We accept mail for XYZ Company only
Argument,是在退函中的附言。
第一條規(guī)則對接收方是內(nèi)部域xyz.com的郵件放行并退出UBE filter的檢查。
第二條規(guī)則將任何不匹配第一條規(guī)則的郵件退回(reject)發(fā)送者。
2.如果發(fā)送、接收郵件都使用同一個郵件服務(wù)器,就需要預(yù)先加一步過濾:首先查看Auth-sender信封項,驗證發(fā)件人是不是本地用戶,即對發(fā)件人進(jìn)行SMTP認(rèn)證。
* Auth-sender“.+”EXIT
Auth-Sender
信封項,是當(dāng)客戶端要求服務(wù)器對其進(jìn)行“發(fā)件認(rèn)證”時所發(fā)出郵件的信封中特有的一項,不要求“發(fā)件認(rèn)證”的郵件無此項。該項內(nèi)容在服務(wù)器收到客戶端發(fā)來的郵件后,根據(jù)其提供的userID和passwd值由服務(wù)器填寫,內(nèi)容就是發(fā)件人的Email地址。之后郵件服務(wù)器將郵件交給UBE插件進(jìn)一步處理。UBE插件通過檢查這個信封項可讓郵件服務(wù)器僅僅傳送經(jīng)過認(rèn)證的本地用戶發(fā)來的信。
.+
不可為空的任意字符串,可以是任意一個Email地址。
EXIT
表示無須再進(jìn)行下面的過濾即可放行。
這里要注意:應(yīng)限制過濾規(guī)則的Message field是envonly,以免惡意的郵件發(fā)送者改變信頭,冒充本地用戶。
3.如果你的企業(yè)網(wǎng)內(nèi)部有幾個分支局域網(wǎng)也部署著郵件服務(wù)器,都通過總部郵件服務(wù)器收發(fā)郵件,則還應(yīng)制定一條規(guī)則檢查那些要求轉(zhuǎn)發(fā)的信息來源。即:
* Host-From “10.x.x.x ” EXIT
Host-From
信封項與之直接相連的,需要本服務(wù)器幫助其轉(zhuǎn)發(fā)郵件的其它服務(wù)器的IP地址。這一規(guī)則限制了服務(wù)器轉(zhuǎn)發(fā)非法郵件。
10.x.x.x
內(nèi)部子域郵件服務(wù)器的IP地址。
EXIT
表示無須再進(jìn)行下面的過濾即可放行。
以上設(shè)置能夠阻止郵件服務(wù)器Relay無關(guān)郵件。但應(yīng)該注意:一般不推薦對向內(nèi)和向外的郵件采用同一臺郵件服務(wù)器來處理,這會使你的郵件系統(tǒng)對外部攻擊更為開放。
設(shè)計UBE filter
我們的企業(yè)網(wǎng)郵件系統(tǒng)是這樣部署的:總部郵件服務(wù)器部署在防火墻的DMZ區(qū),負(fù)責(zé)向內(nèi)向外的郵件收發(fā),各分支局域網(wǎng)的郵件服務(wù)器放在內(nèi)部。我們在總部郵件服務(wù)器上首先創(chuàng)建了以下幾條過濾規(guī)則:
* Auth-Sender“.+” EXIT
* Host-From“subdom mailserver IP” EXIT
* Channel-To“academy.net” EXIT
* $ANY“.*” DROP ()
最后一條過濾規(guī)則表示通不過上述任一條過濾規(guī)則的郵件就丟棄到garbage郵箱中,而不是退回發(fā)件人,這樣做的好處是能減輕郵件服務(wù)器的負(fù)擔(dān),避免由于不存在的發(fā)件人而造成來回退信,擠占資源。另外,在分支局域網(wǎng)的郵件服務(wù)器中也應(yīng)做以上的第一、三、四條設(shè)置。
在垃圾郵件不甚嚴(yán)重時,也可將第四條指令改為:
* +$ANY“.*” REJECT“SMTP authentication needed”
“SMTP authentication needed”是在退函中的附言。這樣,尚未添加發(fā)件認(rèn)證的Outlook Express用戶可在退信中獲得“SMTP authentication needed”提示。
UBE插件是按照過濾規(guī)則在配置文件中的排列順序攔截郵件、逐一比較,這個順序很重要,它決定了你的郵件過濾工作是否正常。
局域網(wǎng)內(nèi)垃圾郵件處理辦法
以上四條措施保證了郵件服務(wù)器不會受到來自Internet的垃圾郵件的攻擊。但隨著Sircam、求職信等病毒在因特網(wǎng)上的泛濫,我們的郵件服務(wù)器再次遭受重創(chuàng)。這幾種蠕蟲病毒擁有自己的SMTP引擎,能進(jìn)行郵件路由,它們從系統(tǒng)相關(guān)文件及注冊表中搜集用戶使用的SMTP服務(wù)器的IP,利用系統(tǒng)默認(rèn)賬號,對通訊簿中的賬號或眾多自造的不存在的Email賬號瘋狂地發(fā)送帶毒的電子郵件,擠占網(wǎng)絡(luò)帶寬。企業(yè)網(wǎng)用戶機(jī)器中一般都填有本企業(yè)郵件服務(wù)器地址信息,這種病毒就會對本企業(yè)郵件服務(wù)器產(chǎn)生過大負(fù)載。病毒發(fā)信甚至無須打開Outlook Express,發(fā)出的信都不可能要求認(rèn)證,若收件人地址在本域以外時,病毒發(fā)出的垃圾郵件將無法通過上述UBE過濾而被當(dāng)作垃圾投入garbage信箱。但如果收件人地址在本域內(nèi),病毒發(fā)出的郵件將順利通過上述第三條過濾,使病毒迅速在局域網(wǎng)內(nèi)蔓延。為此,我們加了一條過濾規(guī)則放在第二條,它針對來自本域內(nèi)的郵件,只要它未通過第一條認(rèn)證(如病毒所為),同樣投入garbage垃圾郵箱,使得未通過發(fā)信認(rèn)證但又是本域用戶發(fā)的信也被過濾掉。即:
* Auth-Sender“.+” EXIT |
過濾雖然堵住了垃圾郵件,但并不能降低郵件服務(wù)器的負(fù)擔(dān)。病毒的發(fā)信頻率極高,單機(jī)達(dá)到2-3封/秒,如果有幾臺、幾十臺終端中毒,同時用該企業(yè)網(wǎng)的郵件服務(wù)器發(fā)信,不僅服務(wù)器本身,而且用于UBE過濾的garbage郵箱都將不堪重負(fù)。既然問題主要出自病毒,那么根本的解決辦法就從防毒入手,從源頭堵住垃圾郵件。于是我們給郵件服務(wù)器添加病毒掃描功能——設(shè)置一條檢查信頭項subject內(nèi)容的規(guī)則,當(dāng)郵件的subject為某種流行病毒的特征主題時,直接將其清除。這可用以代替某些外加的郵件內(nèi)容安全檢查軟件。這一過濾規(guī)則是這樣的:
|
UBE插件所內(nèi)置的RUN這一動作擴(kuò)展了UBE 插件的能力,使它不僅與Messaging server配合傳送郵件,還能觸發(fā)一個外部程序與UBE過濾器協(xié)同處理郵件。以這種方式調(diào)用的外部程序除了能夠進(jìn)行病毒掃描,還能執(zhí)行其它一些自己編寫的腳本程序。
在服務(wù)器上設(shè)置完以上幾條過濾規(guī)則并使之生效后,還有三項工作要做:①將郵件服務(wù)器的SMTP設(shè)置改為ESMTP; ②新建garbage賬號,取消其郵箱大小限制,并做好計劃任務(wù):每10至20分鐘自動清空garbage信箱;③通知所有內(nèi)網(wǎng)Outlook Express用戶設(shè)置“請求發(fā)信認(rèn)證”。
值得一提的是,現(xiàn)在高版本的Netscape郵件服務(wù)器已增加了Antirelay功能,這樣對有規(guī)律的垃圾郵
件可用Antirelay進(jìn)行抵御,對量少的特殊垃圾郵件用UBE進(jìn)行過濾,這種配合使得控制垃圾郵件的效率更高.