Linux下的郵件服務器 Qmail
現(xiàn)在,運行在Linux環(huán)境下免費的郵件服務器,或者稱為MTA(Mail Transfer Agent)有若干種選擇,比較常見的有Sendmail、Qmail、Postfix、exim及Zmailer 等。
本文希望通過對幾種影響相對來說比較大的主流Linux環(huán)境下的MTA的特點進行闡述,并對其優(yōu)缺點一一分析比較,使用戶在選擇Linux環(huán)境下的免費MTA時有一個選擇的依據(jù)。
Qmail的缺點就是配置方式和Sendmail不一致,不容易維護。而且Qmail的版權(quán)許可證含義非常模糊,甚至沒有和軟件一起發(fā)布。應用作者的話:若你希望分發(fā)自己修改版本的Qmail,你必須得到我的許可。
Qmail qmail是有Dan Bernstein開發(fā)的可以自由下載的MTA,其第一個beta版本0.70.7發(fā)布于1996年1月24日,1997年2月發(fā)布了1.0版,當前版本是1.03。
一、Qmail的特點
安全性 為了驗證Qmail的安全性,Qmail的支持者甚至出資$1000懸賞尋找Qmail的安全漏洞,一年以后,該獎金沒有被領取,而被捐獻給自由軟件基金會。目前,Qmail的作者也出資$500來尋求Qmail的安全漏洞。
速度:Qmail在一個中等規(guī)模的系統(tǒng)可以投遞大約百萬封郵件,甚至在一臺486一天上能處理超過10萬封郵件,起支持并行投遞。Qmail支持郵件的并行投遞,同時可以投遞大約20封郵件。目前郵件投遞的瓶頸在于SMTP協(xié)議,通過STMP向另外一臺互聯(lián)網(wǎng)主機投遞一封電子郵件大約需要花費10多秒鐘。Qmail的作者提出了QMTP(Quick Mail Transfer Protocol)來加速郵件的投遞,并且在Qmail中得到支持。Qmail的設計目標是在一臺16M的機器上最終達到每天可以投遞大約百萬級數(shù)目的郵件。
可靠性:為了保證可靠性,Qmail只有在郵件被正確地寫入到磁盤才返回處理成功的結(jié)果,這樣即使在磁盤寫入中發(fā)生系統(tǒng)崩潰或斷電等情況,也可以保證郵件不被丟失,而是重新投遞。
特別簡單的虛擬域管理,甚至有一個第三方開發(fā)的稱為vpopmail的add-on來支持虛擬POP域。使用這個軟件包,POP3用戶不需要具有系統(tǒng)的正式帳戶。
使用ezmlm支持用戶自控制的郵件列表功能。
郵件用戶和系統(tǒng)帳戶隔離,為用戶提供郵件帳戶不需要為其設置系統(tǒng)帳戶,從而增加了安全性。
二、與Sendmail 的比較
首先:sendmail是發(fā)展歷史悠久的MTA,當前的版本是8.10.2。當然,Sendmail在可移植性、穩(wěn)定性及確保沒有bug方面有一定的保證。但是Internet上有很多帖子都是關于如果攻擊Sendmail,這對于管理員來說是一個噩夢。Sendmail在發(fā)展過程中產(chǎn)生了一批經(jīng)驗豐富的Sendmail管理員,并且Sendmail有大量完整的文檔資料,除了Sendmail的寶典:O‘Reilly‘s sendmail book written by Bryan Costales with Eric Allman以外,網(wǎng)絡上有大量的tutorial、FAQ和其他的資源。這些大量的文檔對于很好的利用Sendmail的各種特色功能是非常重要的。但是Sendmai當前來說是一個成熟的MTA。
當然,Sendmail具有一些缺點,其特色功能過多而導致配置文件的復雜性。當然,通過使用m4宏使配置文件的生成變的容易很多。但是,要掌握所有的配置選項是一個很不容易的事情。Sendmail在過去的版本中出現(xiàn)過很多安全漏洞,所以使管理員不得不趕快升級版本。而且Sendmail的流行性也使其成為攻擊的目標,這有好處也有壞處:這意味著安全漏洞可以很快地被發(fā)現(xiàn),但是同樣使Sendmail更加穩(wěn)定和安全。另外一個問題是Sendmail一般缺省配置都是具有最小的安全特性,從而使Sendmail往往容易被攻擊。如果使用Sendmail,應該確保明白每個打開的選項的含義和影響。一旦你理解了Sendmail的工作原理,就Sendmail的安裝和維護就變的非常容易了。通過Sendmail的配置文件,用戶實現(xiàn)完成一切可以想象得到的需求。
Qmail是一個選擇,其在設計實現(xiàn)中特別考慮了安全問題。如果你需要一個快速的解決方案如,一個安全的郵件網(wǎng)關,則Qmail是一個很好的選擇。Qmail和Sendmail的配置文件完全不同。而對于Qmail,其有自己的配置文件,配置目錄中包含了5-30個不同的文件,各個文件實現(xiàn)對不同部分的配置(如虛擬域或虛擬主機等)。這些配置說明都在man中有很好的文檔,但是Qmail的代碼結(jié)構(gòu)不是很好。
Qmail要比Sendmail小很多,其缺乏一些現(xiàn)今郵件服務器所具有的特色功能。如不象Sendmail,qmail不對郵件信封的發(fā)送者的域名進行驗證,以確保域名的正確性。自身不提供對RBL的支持,而需要add-on來實現(xiàn)。,而Sendmail支持RBL。同樣Qmail不能拒絕接收目的接收人不存在信件,而是先將郵件接收下來,然后返回查無此用戶的的郵件。Qmail最大的問題就出在發(fā)送郵件給多個接收者的處理上。若發(fā)送一個很大的郵件給同一個域中的多個用戶,Sendmail將只向目的郵件服務器發(fā)送一個郵件拷貝。而Qmail將并行地連接多次,每次都發(fā)送一個拷貝給一個用戶。若用戶日常要發(fā)送大郵件給多個用戶,使用Qmail將浪費很多帶寬??梢赃@么認為:Sendmail優(yōu)化節(jié)省帶寬資源,Qmail優(yōu)化節(jié)省時間。若用戶系統(tǒng)有很好的帶寬,Qmail將具有更好的性能,而如果用戶系統(tǒng)的帶寬資源有限,并且要發(fā)送很多郵件列表信息,則Sendmail效率更高一些。Qmail不支持.forward(.forward在很多情況下對用戶很有用處);不使用/var/spool/mail,而是將郵件存放在用戶home目錄。下面是一些使用Qmail不容易完成的工作,要使用Qmail完成這些工作,可能需要用戶自己動手實現(xiàn)或者使用第三方提供的不夠可靠的模塊。
Qmail的源代碼相對于Sendmail來說要更加容易理解,這對于希望深入到內(nèi)部了解MTA機制的人員來說是一個優(yōu)點。Qmail在安全性方面也要穩(wěn)定一些。Qmail有很好的技術(shù)支持,但是沒有象Sendmail那樣被廣泛地應用和大量的管理員用戶群。Qmail的安裝不象Sendmail那樣自動化,需要手工步驟。而且Qmail的文檔不如Sendmail那樣完整和豐富。
Qmail的add-ons比Sendmail要少一些。一般來說對于經(jīng)驗稍微少一些的管理員,選擇Qmail相對要好一些。Qmail要簡單一些,而且其特色功能能滿足一般用戶的需求。Sendmail類似于office套件,80%的功能往往都不被使用。這就使Qmail在一些場合可能被更受歡迎一些,其具有一些Sendmail所沒有的更流行和實用的特色功能,如:Qmail具有內(nèi)置的pop3支持。Qmail同樣支持如主機或用戶的偽裝、虛擬域等等。Qmail的簡單性也使配置相對容易一些。
Qmail被認為相對于Sendmail更加安全和高效,運行Qmail的一臺pentium機器一天可以處理大約200,0000條消息。
Qmail相對于其他的MTA要簡單很多,主要體現(xiàn)在:(1)其他的MTA的郵件轉(zhuǎn)發(fā)、郵件別名和郵件列表都是采用相互獨立的機制,而qmail采用一種簡單的轉(zhuǎn)發(fā)(forwarding)機制來允許用戶處理自己的郵件列表(2)其他的MTA都提供快速而不安全的方式及慢的隊列方式的郵件投遞機制;而qmail發(fā)送是由新郵件的出現(xiàn)而觸發(fā)的,所以其投遞只有一種模式:快速的隊列方式(3)其他的MTA實際上包括一個特定版本的inetd來監(jiān)控MTA的平均負載,而qmail設計了內(nèi)部機制來限制系統(tǒng)負載,所以qmail-smtpd能安全地從系統(tǒng)的inet來運行
sendmail有很多的商業(yè)支持,而且由于大量的用戶群,在互聯(lián)網(wǎng)上有大量的潛在技術(shù)支持。而Qmail只有很有限的技術(shù)支持。有家公司inter7.com提供對Qmail的支持,該公司同樣提供了免費的add-ons,包括一個基于web的管理工具-QmailAdmin及一個通過vpopmail的對虛擬域的支持,甚至具有一個基于web的客戶借接口—SqWebMail。
Qmail還具有一些其他的缺憾。如它不是完全遵從標準,它不支持DSN,作者認為DSN是一個即將消亡的技術(shù),而Qmail的VERP可以完成同樣的工作,而又不象DSN依賴于其他主機的支持。Qmail另外一個問題是其不遵從支持7bit系統(tǒng)標準,而每次都發(fā)送8bit。若郵件接收一方不能處理這種情況,就會出現(xiàn)郵件亂碼的情況。
從安全性來講,Sendmail要比Qmail差一些,Sendmail在發(fā)展中出現(xiàn)過很多很著名的安全漏洞;而Qmail相對要短小精悍,但是仍然提供了基本的STMP功能。而Qmail的代碼注釋要少一些。Qmail的一個很好的特色是其支持一種可選的基于目錄的郵件存儲格式,而不是使用一個很大的文件來存儲用戶所有的郵件。若用戶的郵件服務器進行很多的POP3服務,則這種郵件存儲格式可以提高效率。但是遺憾的是Pine自身并不支持這種存儲格式,如果需要可以使用一些補丁來達到這個目的。
Qmail的優(yōu)點是:每個用戶都可以創(chuàng)建郵件列表而無須具有根用戶的權(quán)限,如用戶foo可以創(chuàng)建名為foo-slashdot, foo-linux,foo-chickens 的郵件列表,為了提供更好的功能,有一個叫ezmlm(EZ Mailing List Maker)的工具可以支持自動注冊和注銷、索引等Majordomo所具有的各種功能,但是都是CLI驅(qū)動的,只需要編輯很少的文件。Qmail非常適合在小型系統(tǒng)下工作,一般只支持較少的用戶或用來管理郵件列表。Qmail速度快并且簡單:Qmail是當你希望安全切容易配置的最佳的選擇;Qmail可以在2個小時內(nèi)搞定配置,而Sendmail可能在兩天內(nèi)都搞不定。
rocketmail internic 等都使用qmail來構(gòu)建
【編輯推薦】