歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

qmail sendmail postfix - 三種MTA的比較

3種大型郵件系統的比較 關於sendmail/qmail/postfix孰優孰劣,以及部署郵件系統的時候該選哪一個的討論已經重復了千百次了。但事實往往並不是A好B壞,或B好A壞,必須根據場合和應用的要求來定。但雖然如此,大多數人還是需要一個相對公平的評價,以引導郵件系 3種大型郵件系統的比較

關於sendmail/qmail/postfix孰優孰劣,以及部署郵件系統的時候該選哪一個的討論已經重復了千百次了。但事實往往並不是A好B壞,或B好A壞,必須根據場合和應用的要求來定。但雖然如此,大多數人還是需要一個相對公平的評價,以引導郵件系統的部署。

自己一直很慎重於回答這類問題,以免引發不必要的爭論甚至矛盾,但還是必須面對這個問題做一定的分析和比較的,否則很多朋友經常會問“到底用哪個好?”,卻拿不出完整的答案。

首先看看三個MTA的歷史...

MTAs的發展歷史

Sendmail
毫無疑問,sendmail是最古老的MTA之一。它比qmail和postfix要古老得多。最早它誕生的時候,Inte.net還沒有被標准化,當時主機之間使用的是UUCP技術來交換郵件。

它被設計得比較靈活,便於配置和運行於各種類型的機器。

Qmail
qmail是新生一代的MTA代表,它以速度快、體積小、易配置安裝等特性而著稱。作者D. J. Bernstein(djb)是一個數學教授,富有傳奇色彩。djb於1995年開發qmail,1996年發布0.70版,並使用了多種當時比較先進的技術,包括Maildir,與sendmail單個binary不同的模塊化設計,權限分離,以及使用了大量由djb編寫的配套工具,如daemontools,ucsip-tcp等。

qmail迅速成為了Internet上最有名的MTA,使用者眾。

Postfix
Postfix作者是Wietse Venema,一名著名的安全專家。最早postfix起源於1996年,當時venema 在美國IBM研究中心負責研究更安全的郵件系統,當時稱為Vmailer。後因為商標問題於1998年11月正式更名為Postfix

Postfix以替代sendmail為目的,並提供了一個更安全、更高性能的靈活的體系。它同樣也采用模塊化設計,使用了大量優秀的技術,以達到安全的目的。由於作者的設計理念獨到,經過7,8年時間,Postfix現今已發展成為功能非常豐富,擴展性和安全性強的優秀MTA。

概括的比較

以下的分析主要基於我在CASA上發的一個小文章,對sendmail/qmail/postfix做了一個概括性的比較。

sendmail
sendmai功能非常強大,很多先進功能在sendmail上都最先有實現。sendmail裡的Milter技術是一個非常好的框架,目前postfix及qmail仍然沒有官方發布的方案比milter要好。

但sendmail也有典型的歷史問題,只有一個binary程序,需要sid權限,m4配置文件復雜難懂。這些是是阻礙sendmail更好發展的一些客觀問題。客觀來說,調教得好的sendmail,其性能也是相當不俗的,據一個國外的Unix雜志稱,在solaris+內存文件系統+帶電池的raid系統下,sendmail能達到驚人的287封/秒的注入速度!

目前sendmail比較適合那些老用戶,因為他們習慣了sendmail的應用環境和配置。

qmail
qmail體積非常小巧,source的gz包大概只有260多K,是三大MTA中最小的!模塊化設計,避免了sid問題,基本功能齊全。配置相對sendmail而言,簡單了很多,而且用戶非常廣泛。而且補丁和插件非常多,例如著名的vpopmail,netqmail,以及qmail-ldap等。

但qmail有幾個問題,一是djb已經5,6年沒有繼續開發了,補丁的良莠不齊及版本依賴是非常麻煩的事,這對初學者極為不利。二是功能擴充需要補丁來完成,擴展能力不足。

總體上qmail依然是個非常不錯的選擇。對於希望了解mta原理,或希望修改mta代碼的愛好者,qmail是值得推薦的。對於需要建立中小型郵件系統的用戶也同樣適合。而對於需要豐富功能卻不想面對補丁困難,或者需要建立大型的系統,qmail不太合適,需要更豐富的經驗和技術。

postfix
postfix如今已經獨樹一幟,流水線、模塊化的設計,兼顧了效率和功能。靈活的配置和擴展,使得配置postfix變得富有趣味。其主要的特點是速度快、穩定,而且配置/功能非常強大,並和sendmail類似,提供了與外部程序對接的API/protocol。尤其是配置部分,可以說是一掃qmail和sendmail的各自缺點。

但postfix管理及配置的入門依然需要一定的工夫,必須仔細閱讀官方文檔。postfix另一個優勢是至今依然保持活躍的開發工作,而且穩步發展,適合高流量大負載的系統,擴充能力較強。

大規模應用例
國內若干個大型email ISP(如163.net/tom.com/163.com及sohu等)過去都使用qmail,後來全部更換成postfix。

新浪使用qmail,yahoo使用qmail。但這些已經不是普通的qmail了。

技術層面的分析

這裡僅探討一些典型的技術特點,從這些特點可以看出每個MTA設計的異同,主要討論的焦點是qmail和postfix。

磁盤I/O
從隊列文件的讀寫來看,qmail處理每一封郵件時,都至少需要建立3個文件,mess, intd, info等。而Postfix使用的是單隊列文件設計,因此磁盤I/O的開銷要比qmail小得多,如果僅僅從這個方面考慮,postfix的隊列是qmail的2-4倍那麼快。

從我過去的一個qmail vs postfix對比測試中,也可以發現這個問題。

數據同步
如果從MTA對待操作系統的文件是否安全寫入磁盤的策略來看,qmail和postfix也是不同的。Postfix使用的是隨機寫,並且需要寫入完成並安全同步到磁盤後才算完成。而qmail的寫入則是即刻執行的,因此它將等待數據安全寫入磁盤後才返回。對於高流量的系統而言,這將導致性能問題。

此外,Postfix的隊列對於FreeBSD的softupdate是安全的,而qmail則是不安全的,qmail作者明確警告用戶不要使用softupdate,除非是有磁盤後寫電池。

擴充能力
sendmail有著非常好的擴充能力,支持眾多的特性,功能可謂豪華。包括頻率控制到集群支持應有盡有。而milter API則更加使sendmail的靈活性發揮至極,通過milter,用戶可以對郵件幾乎所有的參數進行控制!但是在存儲方面,由於只支持mbox,會有一定的問題。

qmail在系統容量擴展上有著獨到的設計,配合qmail-ldap補丁,可以充分利用qmqp及分布存儲的優勢。現今已有各式各樣的qmail擴展方案,最著名的是qmail-ldap。但qmail缺乏類似milter的設計,功能擴展需要各種補丁,而補丁的設計水平參差不齊,配置能力有限。實施起來相對是最復雜的。

Postfix同樣有著非常好的容量擴充能力,利用LMTP或transport的/alias的方法,可以分布式的存儲郵件,擴充容量。同時postfix的功能擴展也非常強,通過靈活的配置即可實現復雜的功能,這是其最突出的優點之一,是qmail望塵莫及的。此外,類似sendmail的milter,postfix擁有content_filter和policy 兩個與外部程序/應用對接的接口,但不如milter那樣功能集中和靈活,也沒有完整實現qmail的qmqp及類似qmail-ldap的機制。

可配置性
sendmail 使用m4語法,單一的主配置文件(sendmail.cf)是三個mta中最難使用的,但是如果熟悉使用的話卻能實現復雜的功能。

qmail使用的是大量小配置文本,格式最簡單,每個配置一個文件,存放在/var/qmail/control目錄裡。

postfix也使用單一的主配置文件(main.cf),同時還有對應master主服務進程的配置文件master.cf,但使用的是簡明易懂的key = value 格式。

總體而言,qmail的配置文件較易管理(格式最簡單)但配置文件多(10個以上),而postfix的格式簡單只有2個配置文件,並配備強大的postconf工具,sendmail的配置文件最復雜。

數據庫支持
sendmail通過一些插件/補丁,可以支持mysql/pgsql/oracle等,ldap及小型的dbm/cdb等數據存儲格式。

qmail默認只支持cdb,需通過補丁才可支持ldap,mysql,pgsql及oracle等。

postfix可以支持的數據庫應該是最多的,默認就包括了mysql/pgsql/ldap及dbm/cdb和cidr/nis*/btree等一堆。還支持特殊的tcp_table(僅在snapshot裡支持)

穩定性/負載能力
sendmail, qmail, postfix都比較穩定。在高負載下,配置不佳或沒有打足夠補丁的qmail容易被DOS攻擊打跨,而postfix在遇到超過配置的限制時會降低處理能力,但系統依然有一定資源可用。

作者介紹
sendmail - Eric Allman Unix專家、學者
qmail - DJB 數學教授,科學家
Postfix - wietse venema 安全專家 學者

Recommentaion - 建議

我建議在使用Postfix MTA,無論是小型系統,還是大中型系統,能帶來最高的性價比。

Copyright © Linux教程網 All Rights Reserved