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