李志東
隨著信息技術的發展,電子郵件在企業內部文件溝通、外部業務往來中承擔著越來越重要的角色。但是,垃圾郵件的泛濫及其帶來的安全問題一直在困擾著廣大用戶,對于企業來講影響更大。
垃圾郵件是指未經允許發送的出于商業宣傳、政治和色情等非正常目的的郵件。某種程度上,對垃圾郵件的定義可以是:那些人們沒有意愿去接收而收到的電子郵件都是垃圾郵件。
從郵件的發送和接收基本流程中可以看出,MAIL服務器上的反垃圾郵件過程是在發件人、收件人公司的MAIL服務器會話發起和接收過程階段進行的(見圖1),而postfix的反垃圾郵件功能,實際上就是在postfix處理過程中對會話進行過濾。該過濾不但能對發往自身的垃圾郵件進行過濾,而且還可防止自身被利用而外發垃圾郵件。因此,postfix能夠實現目前所有主要的郵件傳輸代理(Mail Transfer Agent,簡稱MTA)的過濾技術。

圖1 郵件發送和接收
當前,運行在Linux環境下的免費MTA有若干種選擇,比較常見的有 Sendmail、Qmail、postfix、exim及Zmailer等等。其中,因為postfix處理速度快、易管理、能提供盡可能的安全保障,同時和sendmail能保持最大兼容而被很多大中型郵件系統所采用。
postfix過濾分為郵件數據發送前過濾和郵件數據發送后過濾兩種。
(1)數據前過濾
數據前過濾是指在SMTP會話中,在DATA指令發送前進行的過濾(見圖2)。其過濾默認是在RCPT TO指令后生效的,但將smtpd_delay_reject設置為No可使其立刻生效;在默認狀態下smtpd_delay_reject的值是Yes,其四個子階段可以接受所有支持的規則,在RCPT TO指令后全部生效;當其為no時,只接受五個公共規則參數(見表1)、之前子階段過濾規則參數及本階段規則參數。此外,根據smtpd_delay_reject設置值的不同,又有多階段過濾和單階段過濾兩種形式。


圖2 數據前過濾流程圖

表1 公共規則參數
SMTP連接時過濾(SMTP客戶端限制)在接受客戶端SMTP連接請求時進行過濾。通過postfix的smtpd_client_restrictions指令來指定本階段過濾規則(見表2)。
HELO/EHLO指令過濾(HELO/EHLO主機名限制)是在接受SMTP連接后,對HELO或EHLO指令所發送的信息過濾檢查。本階段可用過濾規則有公共規則、SMTP連接過濾規則及HELO/EHLO指令過濾階段規則(見表3)。

表2 SMTP連接時過濾階段規則參數

表3 HELO/EHLO指令過濾階段規則
MAIL FROM指令過濾(發送者地址限制)對通過MAIL FROM指令聲明發送者的身份過濾檢查。利用smtpd_sender_restrictions指令指定該階段的過濾規則,即公共規則、之前兩個子階段規則及本階段規則(見表4)。

表4 MAIL FROM指令過濾階段規則
RCPT TO指令過濾(接收者地址限制)負責對接收者身份進行過濾檢查。通過smtpd_recipient_restrictions指令指定過濾規則,具體包括公共規則、之前三個子階段規則及本子階段規則(見表5)。
多階段過濾是指smtpd_delay_reject為Yes時,過濾分多階段進行,無論其中某個子階段的過濾結果如何,都不會影響其它子階段過濾的進行。
而單階段過濾是指當smtpd_delay_reject為No時,一旦某個規則匹配成功,則其后的所有過濾規則和子階段都不再進行。
(2)數據后過濾
即對郵件數據中的信息進行過濾以判斷其是否為垃圾郵件,通過該過濾可自動完成對垃圾郵件的判定和處理,降低病毒隨郵件擴散的可能性。

表5 RCPT TO指令過濾階段規則
數據后過濾一般分為信頭過濾和信體過濾兩種。
在SMTP會話中,DATA指令發送的數據以一個空行分隔開,前面的部分稱為信頭,后面的稱為信體。郵件中通常有主信頭、MIME頭及附帶郵件的信頭。
信頭過濾可以通過對各信頭參數進行匹配來完成。
信體過濾只檢查body_checks_max_size所指定字節的大小,對于超長的行,只檢查line_length_limi所指定的長度(默認2048字節)。
(1)允許Relay的Domain設置
編輯/etc/postfix/main.cf文件,使relay_domains=263.net…。
(2)允許接受的Domain設置
編輯/etc/postfix/main.cf文件,使mydestination=trendmicro.com.cn等。
(3)不受Relay限制的地址設置
編輯/etc/postfix/main.cf文件,使mynetworks=10.11.240.0/24,127.0.0.1等。
在Web瀏覽器中輸入:http∶//用戶IP:8081/IMSS.html,點擊“Policy Manager”選項后即可以按企業內部需求制定自己的郵件服務器郵件管理策略。
除了設置內部規則之外,SpamAssassin(郵件伺服主機上郵件過濾器)也可以訪問其它外部垃圾郵件過濾規則集。其中Chinese_rules.cf是用于垃圾郵件過濾系統SpamAssassin的中文垃圾郵件過濾規則集。具體操作時把Chinese_rules.cf復制到/usr/share/spamassassin文件中即可。
(1)隱藏郵件服務器IP地址
如果網絡中有專門發送郵件的中央郵件服務器為許多主機提供訪問,則必須隱藏郵件地址的主機名部分。具體操作時需在文件main.cf中加入兩行:
masquerade_domain=$mydomian;masquerade_exceptions=root;
其中第一句負責通知postfix郵件服務器對所在的域允許地址進行化裝,而第二句是將root用戶排除,即不對root用戶偽裝。
(2)限制服務器使用的進程數目
指定/etc/postfix/main.cf文件的下列參數來控制使用的并發進程總量:
default_process_limit=50(3)控制最大郵件尺寸可修改/etc/postfix/main.cf文件中的如下參數來控制郵件尺寸:
message_size_limit=1073741824,即規定服務器處理最大郵件為10兆。
(4)控制同時發送郵件的數量
通過下面參數設定一個站點的最大并發連接數量:
default_destination_concurrency_limit=20,可使到達單一站點的并發連接數量不超過20個。
利用postfix郵件系統的反垃圾郵件技術可以精確地設置規則參數,有效防止垃圾郵件的侵害,再加上其它專業軟件的支持,就能夠使企業的郵件系統達到更好的反垃圾郵件效果。
應該指出,垃圾郵件本質上是一個社會問題,需要通過完善相關法律法規減少垃圾郵件的傳播,而僅靠技術手段是無法從根本上杜絕的。