李志東
隨著信息技術(shù)的發(fā)展,電子郵件在企業(yè)內(nèi)部文件溝通、外部業(yè)務(wù)往來中承擔(dān)著越來越重要的角色。但是,垃圾郵件的泛濫及其帶來的安全問題一直在困擾著廣大用戶,對于企業(yè)來講影響更大。
垃圾郵件是指未經(jīng)允許發(fā)送的出于商業(yè)宣傳、政治和色情等非正常目的的郵件。某種程度上,對垃圾郵件的定義可以是:那些人們沒有意愿去接收而收到的電子郵件都是垃圾郵件。
從郵件的發(fā)送和接收基本流程中可以看出,MAIL服務(wù)器上的反垃圾郵件過程是在發(fā)件人、收件人公司的MAIL服務(wù)器會話發(fā)起和接收過程階段進行的(見圖1),而postfix的反垃圾郵件功能,實際上就是在postfix處理過程中對會話進行過濾。該過濾不但能對發(fā)往自身的垃圾郵件進行過濾,而且還可防止自身被利用而外發(fā)垃圾郵件。因此,postfix能夠?qū)崿F(xiàn)目前所有主要的郵件傳輸代理(Mail Transfer Agent,簡稱MTA)的過濾技術(shù)。
圖1 郵件發(fā)送和接收
當(dāng)前,運行在Linux環(huán)境下的免費MTA有若干種選擇,比較常見的有 Sendmail、Qmail、postfix、exim及Zmailer等等。其中,因為postfix處理速度快、易管理、能提供盡可能的安全保障,同時和sendmail能保持最大兼容而被很多大中型郵件系統(tǒng)所采用。
postfix過濾分為郵件數(shù)據(jù)發(fā)送前過濾和郵件數(shù)據(jù)發(fā)送后過濾兩種。
(1)數(shù)據(jù)前過濾
數(shù)據(jù)前過濾是指在SMTP會話中,在DATA指令發(fā)送前進行的過濾(見圖2)。其過濾默認(rèn)是在RCPT TO指令后生效的,但將smtpd_delay_reject設(shè)置為No可使其立刻生效;在默認(rèn)狀態(tài)下smtpd_delay_reject的值是Yes,其四個子階段可以接受所有支持的規(guī)則,在RCPT TO指令后全部生效;當(dāng)其為no時,只接受五個公共規(guī)則參數(shù)(見表1)、之前子階段過濾規(guī)則參數(shù)及本階段規(guī)則參數(shù)。此外,根據(jù)smtpd_delay_reject設(shè)置值的不同,又有多階段過濾和單階段過濾兩種形式。
圖2 數(shù)據(jù)前過濾流程圖
表1 公共規(guī)則參數(shù)
SMTP連接時過濾(SMTP客戶端限制)在接受客戶端SMTP連接請求時進行過濾。通過postfix的smtpd_client_restrictions指令來指定本階段過濾規(guī)則(見表2)。
HELO/EHLO指令過濾(HELO/EHLO主機名限制)是在接受SMTP連接后,對HELO或EHLO指令所發(fā)送的信息過濾檢查。本階段可用過濾規(guī)則有公共規(guī)則、SMTP連接過濾規(guī)則及HELO/EHLO指令過濾階段規(guī)則(見表3)。
表2 SMTP連接時過濾階段規(guī)則參數(shù)
表3 HELO/EHLO指令過濾階段規(guī)則
MAIL FROM指令過濾(發(fā)送者地址限制)對通過MAIL FROM指令聲明發(fā)送者的身份過濾檢查。利用smtpd_sender_restrictions指令指定該階段的過濾規(guī)則,即公共規(guī)則、之前兩個子階段規(guī)則及本階段規(guī)則(見表4)。
表4 MAIL FROM指令過濾階段規(guī)則
RCPT TO指令過濾(接收者地址限制)負責(zé)對接收者身份進行過濾檢查。通過smtpd_recipient_restrictions指令指定過濾規(guī)則,具體包括公共規(guī)則、之前三個子階段規(guī)則及本子階段規(guī)則(見表5)。
多階段過濾是指smtpd_delay_reject為Yes時,過濾分多階段進行,無論其中某個子階段的過濾結(jié)果如何,都不會影響其它子階段過濾的進行。
而單階段過濾是指當(dāng)smtpd_delay_reject為No時,一旦某個規(guī)則匹配成功,則其后的所有過濾規(guī)則和子階段都不再進行。
(2)數(shù)據(jù)后過濾
即對郵件數(shù)據(jù)中的信息進行過濾以判斷其是否為垃圾郵件,通過該過濾可自動完成對垃圾郵件的判定和處理,降低病毒隨郵件擴散的可能性。
表5 RCPT TO指令過濾階段規(guī)則
數(shù)據(jù)后過濾一般分為信頭過濾和信體過濾兩種。
在SMTP會話中,DATA指令發(fā)送的數(shù)據(jù)以一個空行分隔開,前面的部分稱為信頭,后面的稱為信體。郵件中通常有主信頭、MIME頭及附帶郵件的信頭。
信頭過濾可以通過對各信頭參數(shù)進行匹配來完成。
信體過濾只檢查body_checks_max_size所指定字節(jié)的大小,對于超長的行,只檢查line_length_limi所指定的長度(默認(rèn)2048字節(jié))。
(1)允許Relay的Domain設(shè)置
編輯/etc/postfix/main.cf文件,使relay_domains=263.net…。
(2)允許接受的Domain設(shè)置
編輯/etc/postfix/main.cf文件,使mydestination=trendmicro.com.cn等。
(3)不受Relay限制的地址設(shè)置
編輯/etc/postfix/main.cf文件,使mynetworks=10.11.240.0/24,127.0.0.1等。
在Web瀏覽器中輸入:http∶//用戶IP:8081/IMSS.html,點擊“Policy Manager”選項后即可以按企業(yè)內(nèi)部需求制定自己的郵件服務(wù)器郵件管理策略。
除了設(shè)置內(nèi)部規(guī)則之外,SpamAssassin(郵件伺服主機上郵件過濾器)也可以訪問其它外部垃圾郵件過濾規(guī)則集。其中Chinese_rules.cf是用于垃圾郵件過濾系統(tǒng)SpamAssassin的中文垃圾郵件過濾規(guī)則集。具體操作時把Chinese_rules.cf復(fù)制到/usr/share/spamassassin文件中即可。
(1)隱藏郵件服務(wù)器IP地址
如果網(wǎng)絡(luò)中有專門發(fā)送郵件的中央郵件服務(wù)器為許多主機提供訪問,則必須隱藏郵件地址的主機名部分。具體操作時需在文件main.cf中加入兩行:
masquerade_domain=$mydomian;masquerade_exceptions=root;
其中第一句負責(zé)通知postfix郵件服務(wù)器對所在的域允許地址進行化裝,而第二句是將root用戶排除,即不對root用戶偽裝。
(2)限制服務(wù)器使用的進程數(shù)目
指定/etc/postfix/main.cf文件的下列參數(shù)來控制使用的并發(fā)進程總量:
default_process_limit=50(3)控制最大郵件尺寸可修改/etc/postfix/main.cf文件中的如下參數(shù)來控制郵件尺寸:
message_size_limit=1073741824,即規(guī)定服務(wù)器處理最大郵件為10兆。
(4)控制同時發(fā)送郵件的數(shù)量
通過下面參數(shù)設(shè)定一個站點的最大并發(fā)連接數(shù)量:
default_destination_concurrency_limit=20,可使到達單一站點的并發(fā)連接數(shù)量不超過20個。
利用postfix郵件系統(tǒng)的反垃圾郵件技術(shù)可以精確地設(shè)置規(guī)則參數(shù),有效防止垃圾郵件的侵害,再加上其它專業(yè)軟件的支持,就能夠使企業(yè)的郵件系統(tǒng)達到更好的反垃圾郵件效果。
應(yīng)該指出,垃圾郵件本質(zhì)上是一個社會問題,需要通過完善相關(guān)法律法規(guī)減少垃圾郵件的傳播,而僅靠技術(shù)手段是無法從根本上杜絕的。