Sendmail vs Qmail
首先:sendmail是發展歷史悠久的MTA,當前的版本是8.10.2。當然,Sendmail在可移植性、穩定性及確保沒有bug方面有一定的保證。但是Internet上有很多帖子都是關于如果攻擊Sendmail,這對于管理員來說是一個噩夢。Sendmail在發展過程中產生了一批經驗豐富的Sendmail管理員,并且Sendmail有大量完整的文檔資料,除了Sendmail的寶典:OReillys sendmail book written by Bryan Costales with Eric Allman以外,網絡上有大量的tutorial、FAQ和其他的資源。這些大量的文檔對于很好的利用Sendmail的各種特色功能是非常重要的。但是Sendmai當前來說是一個成熟的MTA。
當然,Sendmail具有一些缺點,其特色功能過多而導致配置文件的復雜性。當然,通過使用m4宏使配置文件的生成變的容易很多。但是,要掌握所有的配置選項是一個很不容易的事情。Sendmail在過去的版本中出現過很多安全漏洞,所以使管理員不得不趕快升級版本。而且Sendmail的流行性也使其成為攻擊的目標,這有好處也有壞處:這意味著安全漏洞可以很快地被發現,但是同樣使Sendmail更加穩定和安全。另外一個問題是Sendmail一般缺省配置都是具有最小的安全特性,從而使Sendmail往往容易被攻擊。如果使用Sendmail,應該確保明白每個打開的選項的含義和影響。一旦你理解了Sendmail的工作原理,就Sendmail的安裝和維護就變的非常容易了。通過Sendmail的配置文件,用戶實現完成一切可以想象得到的需求。
Qmail是一個選擇,其在設計實現中特別考慮了安全問題。如果你需要一個快速的解決方案如,一個安全的郵件網關,則Qmail是一個很好的選擇。Qmail和Sendmail的配置文件完全不同。而對于Qmail,其有自己的配置文件,配置目錄中包含了5-30個不同的文件,各個文件實現對不同部分的配置(如虛擬域或等)。這些配置說明都在man中有很好的文檔,但是Qmail的代碼結構不是很好。
Qmail要比Sendmail小很多,其缺乏一些現今郵件服務器所具有的特色功能。如不象Sendmail,qmail不對郵件信封的發送者的域名進行驗證,以確保域名的正確性。自身不提供對RBL的支持,而需要add-on來實現。,而Sendmail支持RBL。同樣Qmail不能拒絕接收目的接收人不存在信件,而是先將郵件接收下來,然后返回查無此用戶的的郵件。Qmail最大的問題就出在發送郵件給多個接收者的處理上。若發送一個很大的郵件給同一個域中的多個用戶,Sendmail將只向目的郵件服務器發送一個郵件拷貝。而Qmail將并行地連接多次,每次都發送一個拷貝給一個用戶。若用戶日常要發送大郵件給多個用戶,使用Qmail將浪費很多帶寬??梢赃@么認為:Sendmail優化節省帶寬資源,Qmail優化節省時間。若用戶系統有很好的帶寬,Qmail將具有更好的性能,而如果用戶系統的帶寬資源有限,并且要發送很多郵件列表信息,則Sendmail效率更高一些。Qmail不支持.forward(.forward在很多情況下對用戶很有用處);不使用/var/spool/mail,而是將郵件存放在用戶home目錄。下面是一些使用Qmail不容易完成的工作,要使用Qmail完成這些工作,可能需要用戶自己動手實現或者使用第三方提供的不夠可靠的模塊。
Qmail的源代碼相對于Sendmail來說要更加容易理解,這對于希望深入到內部了解MTA機制的人員來說是一個優點。Qmail在安全性方面也要穩定一些。Qmail有很好的技術支持,但是沒有象Sendmail那樣被廣泛地應用和大量的管理員用戶群。Qmail的安裝不象Sendmail那樣自動化,需要手工步驟。而且Qmail的文檔不如Sendmail那樣完整和豐富。
Qmail的add-ons比Sendmail要少一些。一般來說對于經驗稍微少一些的管理員,選擇Qmail相對要好一些。Qmail要簡單一些,而且其特色功能能滿足一般用戶的需求。Sendmail類似于office套件,80%的功能往往都不被使用。這就使Qmail在一些場合可能被更受歡迎一些,其具有一些Sendmail所沒有的更流行和實用的特色功能,如:Qmail具有內置的pop3支持。Qmail同樣支持如主機或用戶的偽裝、虛擬域等等。Qmail的簡單性也使配置相對容易一些。
Qmail被認為相對于Sendmail更加安全和高效,運行Qmail的一臺pentium機器一天可以處理大約200,0000條消息。
Qmail相對于其他的MTA要簡單很多,主要體現在:(1)其他的MTA的郵件轉發、郵件別名和郵件列表都是采用相互獨立的機制,而qmail采用一種簡單的轉發(forwarding)機制來允許用戶處理自己的郵件列表(2)其他的MTA都提供快速而不安全的方式及慢的隊列方式的郵件投遞機制;而qmail發送是由新郵件的出現而觸發的,所以其投遞只有一種模式:快速的隊列方式(3)其他的MTA實際上包括一個特定版本的inetd來監控MTA的平均負載,而qmail設計了內部機制來限制系統負載,所以qmail-smtpd能安全地從系統的inet來運行
Sendmail有很多的商業支持,而且由于大量的用戶群,在互聯網上有大量的潛在技術支持。而Qmail只有很有限的技術支持。有家公司inter7.com提供對Qmail的支持,該公司同樣提供了免費的add-ons,包括一個基于web的管理工具-QmailAdmin及一個通過vpopmail的對虛擬域的支持,甚至具有一個基于web的客戶借接口—SqWebMail。
Qmail還具有一些其他的缺憾。如它不是完全遵從標準,它不支持DSN,作者認為DSN是一個即將消亡的技術,而Qmail的VERP可以完成同樣的工作,而又不象DSN依賴于其他主機的支持。Qmail另外一個問題是其不遵從支持7bit系統標準,而每次都發送8bit。若郵件接收一方不能處理這種情況,就會出現郵件亂碼的情況。
從安全性來講,Sendmail要比Qmail差一些,Sendmail在發展中出現過很多很著名的安全漏洞;而Qmail相對要短小精悍,但是仍然提供了基本的STMP功能。而Qmail的代碼注釋要少一些。Qmail的一個很好的特色是其支持一種可選的基于目錄的郵件存儲格式,而不是使用一個很大的文件來存儲用戶所有的郵件。若用戶的郵件服務器進行很多的POP3服務,則這種郵件存儲格式可以提高效率。但是遺憾的是Pine自身并不支持這種存儲格式,如果需要可以使用一些補丁來達到這個目的。
Qmail的優點是:每個用戶都可以創建郵件列表而無須具有根用戶的權限,如用戶foo可以創建名為foo-slashdot, foo-linux,foo-chickens 的郵件列表,為了提供更好的功能,有一個叫ezmlm(EZ Mailing List Maker)的工具可以支持自動注冊和注銷、索引等Majordomo所具有的各種功能,但是都是CLI驅動的,只需要編輯很少的文件。Qmail非常適合在小型系統下工作,一般只支持較少的用戶或用來管理郵件列表。Qmail速度快并且簡單:Qmail是當你希望安全切容易配置的最佳的選擇;Qmail可以在2個小時內搞定配置,而Sendmail可能在兩天內都搞不定。
rocketmail internic 等都使用qmail來構建。
三、ZMailer
ZMailer是一個高性能、多進程的Unix系統郵件程序,其可以從下面的服務器 自由下載。其也是按照單塊模式設計的。如Hotmail等郵件系統就是用Zmailer構建的。
四、Exim
Exim是由Cambridge 大學開發的遵從GPL的MTA,其風格上類似與Smail 3,但是比Smail 3更加完善。當前最新版本是3.15。其主站點為。其最大的特點就是配置簡單性,但是其安全性不如Qmail及Postfix。
當然除了這里介紹的幾種MTA以外,還有 Smail, Post.Office,the Sun Internet Mail Server (SIMS), MMDF, CommuniGate,PMDF, Netscape Messaging Server,Obtuse smtpd/smtpfwdd,Intermail,MD Switch等其他商業或者免費的MTA可以選擇。
相關鏈接資源
Postfix:http://www.postfix.org/
Zmailer:http://www.zmailer.org/
Qmail:http://www.qmail.org/
Sendmail:http://www.sendmail.org/