postfix郵件服務器的關鍵安全策略
郵件系統是Linux網絡應用的重要組成,一個完整的郵件系統包括三個部分:底層操作系統(Linux Operation),郵件傳送代理(Mail Transport Agent,MTA),郵件分發代理(Mail Delivery Agent,MDA),郵件用戶代理(Mail User Agent,MUA)。
Postfix是一個非常優秀的MTA,她素以高效、安全的特點而著稱。Postfix是作者在UNIX上所見過的MTA中在反垃圾郵件(Anti-Spam或Anti-UCE)方面做得最好的一個,甚至有很多公司在Postfix代碼的基礎上進行二次開發而推出反垃圾郵件網關產品。MTA的反垃圾郵件功能,實際上就是在MTA處理過程中對會話進行過濾。這個過濾不但過濾了發往自身的垃圾郵件,而且還防止了自身被惡意利用發送垃圾郵件。Postfix實現了目前所有主要的MTA過濾技術。postfix是Wietse Venema在IBM的GPL協議之下開發的MTA(郵件傳輸代理)軟件。和Sendmail相比Postfix更快、更容易管理、更靈活、更安全,同時還與sendmail保持足夠的兼容性。Sendmail相比Postfix對比見表1.
MTA 成熟性 安全性 特色 性能 Sendmail兼容性 模塊化設計Postfix 中 中 中 中 支持 是Sendmail 高 低 中 低 否
垃圾郵件(SPAM) 也稱作UCE (Unsolicited Commercial Email,未經許可的商業電子郵件) 或UBE (Unsolicited Bulk Email,未經許可的大量電子郵件) .中國互聯網協會對垃圾郵件給出了一個正式的定義,只要是符合下述四條之一的電子郵件都可被稱為垃圾郵件:
(1)收件人事先沒有提出要求或同意接收的廣告、電子刊物、各種形式的宣傳品等宣傳性的電子郵件。
(2)收件人無法拒收的電子郵件。
(3)隱藏發件人身份、地址、標題等信息的電子郵件;。
(4)含有虛假的信息源、發件人、路由等信息的電子郵件。
垃圾電子郵件成為了人們最頭疼的問題之一。在Windows操作系統中也許您已經嘗夠了垃圾郵件給您帶來的苦頭,不要以為在Linux操作系統平臺中就能避免垃圾電子郵件給我們帶來的騷擾,反擊和過濾垃圾電子
郵件是一件很重要的工作。下面是一些在Linux中廣泛使用的防垃圾郵件技術。
(1)SMTP用戶認證
目前常見并十分有效的方法是,在郵件傳送代理(Mail Transport Agent,MTA)上對來自本地網絡以外的互聯網的發信用戶進行SMTP認證,僅允許通過認證的用戶進行遠程轉發。這樣既能夠有效避免郵件傳送代理服務器為垃圾郵件發送者所利用,又為出差在外或在家工作的員工提供了便利。如果不采取SMTP認證,則在不犧牲安全的前提下,設立面向互聯網的Web郵件網關也是可行的。此外,如果SMTP服務和POP3服務集成在同一服務器上,在用戶試圖發信之前對其進行POP3訪問驗證(POP before SMTP)就是一種更加安全的方法,但在應用的時候要考慮到當前支持這種認證方式的郵件客戶端程序還不多。
(2)逆向名字解析
無論哪一種認證,其目的都是避免郵件傳送代理服務器被垃圾郵件發送者所利用,但對于發送到本地的垃圾郵件仍然無可奈何。要解決這個問題,最簡單有效的方法是對發送者的IP地址進行逆向名字解析。通過DNS查詢來判斷發送者的IP與其聲稱的名字是否一致,例如,其聲稱的名字為mx.hotmail.com,而其連接地址為20.200.200.200,與其DNS記錄不符,則予以拒收。這種方法可以有效過濾掉來自動態IP的垃圾郵件,對于某些使用動態域名的發送者,也可以根據實際情況進行屏蔽。但是上面這種方法對于借助Open Relay的垃圾郵件依然無效。對此,更進一步的技術是假設合法的用戶只使用本域具有合法互聯網名稱的郵件傳送代理服務器發送電子郵件。例如,若發件人的郵件地址為someone@yahoo.com,則其使用的郵件傳送代理服務器的Internet名字應具有yahoo.com 的后綴。這種限制并不符合SMTP協議,但在多數情況下是切實有效的。需要指出的是,逆向名字解析需要進行大量的DNS查詢。
(3)實時黑名單過濾
以上介紹的防范措施對使用自身合法域名的垃圾郵件仍然無效。對此比較有效的方法就是使用黑名單服務了。黑名單服務是基于用戶投訴和采樣積累而建立的、由域名或IP組成的數據庫,最著名的是RBL、DCC和Razor等,這些數據庫保存了頻繁發送垃圾郵件的主機名字或IP地址,供MTA進行實時查詢以決定是否拒收相應的郵件。但是,目前各種黑名單數據庫難以保證其正確性和及時性。例如,北美的RBL和DCC包含了我國大量的主機名字和IP地址,其中有些是早期的Open Relay造成的,有些則是由于誤報造成的。但這些遲遲得不到糾正,在一定程度上阻礙了我國與北美地區的郵件聯系,也妨礙了我國的用戶使用這些黑名單服務。其中使用BRL認證過程見圖1.
(4)內容過濾
即使使用了前面諸多環節中的技術,仍然會有相當一部分垃圾郵件漏網。對此情況,目前最有效的方法是基于郵件標題或正文的內容過濾。其中比較簡單的方法是,結合內容掃描引擎,根據垃圾郵件的常用標題語、垃圾郵件受益者的姓名、電話號碼、Web地址等信息進行過濾。更加復雜但同時更具智能性的方法是,基于貝葉斯概率理論的統計方法所進行的內容過濾,該算法最早由Paul Graham提出(http://www.paulgraham.com/spam.html),并使用他自己設計的Arc語言實現。這種方法的理論基礎是通過對大量垃圾郵件中常見關鍵詞進行分析后得出其分布的統計模型,并由此推算目標郵件是垃圾郵件的可能性。這種方法具有一定的自適應、自學習能力,目前已經得到了廣泛的應用。最有名的垃圾郵件內容過濾是Spamassassin,它使用Perl語言實現,集成了以上兩種過濾方法,可以與當前各種主流的MTA集成使用。內容過濾是以上所有各種方法中耗費計算資源最多的,在郵件流量較大的場合,需要配合高性能服務器使用。 下面以RHEL 4.0為例,介紹上面幾種技術應對安全隱患。
#p#安裝postfix
1、查詢Sendmail是否安裝:
#rpm -qa |grep sendmail
2、強行卸載Sendmail
# rpm -e sen
dmail sendmail-cf sendmail-doc –nodeps
3、用以下命令殺死運行中的sendmail進程:
# kill all sendmail
4、下載安裝Posfix
#wget ftp://ftp.midvalleyhosting.com/pub/postfix/official/postfix-2.1.4.t ar.gz /tmp
#tar -vxf postfix-2.1.4.tar.gz
#cd postfix-2.1.4
5.編譯源代碼包
# make
6.建立一個新用戶“postfix”,該用戶必須具有唯一的用戶ID號和組ID號,同時應該讓該用戶不能登錄到系統,也即不為該用戶指定可執行的登錄外殼程序和可用的用戶宿主目錄。我們可以先用adduser postfix 添加用戶再編輯/etc/passwd文件中的相關條目如下所示:
# useradd postfix
# postfix:*:12345:12345:postfix:/no/where:/no/shell
#groupadd postdrop
7.確定/etc/aliases文件中包含如下的條目:
# postfix: root
8. 以root用戶登錄,在/tmp/ postfix目錄下執行命令:
# ./INSTALL.sh
9.啟動postfix
# postfix start
postfix的配置文件位于/etc/postfix下,這四個文件就是postfix最基本的配置文件,它們的區別在于:mail.cf:是postfix主要的配置文件。Install.cf:包含安裝過程中安裝程序產生的postfix初始化設置。master.cf:是postfix的master進程的配置文件,該文件中的每一行都是用來配置postfix的組件進程的運行方式。postfix-script:包裝了一些postfix命令,以便我們在linux環境中安全地執行這些postfix命令。
【編輯推薦】