搜尋

進階搜尋
 
關於qmail
 
 
關於qmail

qmail是甚麼?

qmail是一個安全、可靠、簡易的信息傳送代理。它是因應一般典型連接到互聯網的UNIX主機而設計。截至2001年10月,qmail居互聯網上最普及的SMTP伺服器第二位,更為現時SMTP伺服器中增長速度最快的。

安全性:安全性並不是一個目標,而是根本的標準。對使用者而言,郵件的傳送關係重大。因為郵遞服務不能夠關掉,故必須完全安全。(這正是我開始編寫qmail的原因:我已經厭倦了sendmail及其他MTA的保安漏洞。)

可靠性:qmail採用的straight-paper-path哲學保證每一個系統接收了的郵件都不會遺失。此外,qmail亦可選擇性地支援maildir:一個新式、極為可靠的用戶郵箱格式。maildir不同於mbox檔案格式及mh資料夾,即使在寄遞中出現系統性事故,檔案亦不會損壞。再者,不單使用者能夠安全地通過NFS閱讀郵件,而且不限數量的NFS端亦能夠同時寄遞郵件至該郵箱。

效率:在一部運行BSD/OS的Pentium上面,qmail每天可以輕易處理200000區域郵件--是以獨立郵件進入系統,然後送遞到相應郵箱的真正測試!雖然遙距寄遞受到固有的限制如DNS及SMTP所影響,但qmail的啟始設定為同時處理20個郵遞動作,所以能夠快速地處理郵寄列表。(這是我完成qmail的原因:我當時需要設立一個大型的郵寄列表。)

簡易:qmail比其他互聯網絡的MTA都精簡得多。原因是:(1)其他MTA都有獨立的程序負責郵件轉寄、別名跟郵寄列表的工作;而qmail則採用一個簡單的程序讓使用者自行管理他們的郵寄列表。(2)其他MTA提供一系列的送遞模式:由fast+unsafe以至slow+queued。每當queue裡面有新郵件抵達,便會啟動qmail-send。所以qmail系統只有一個送遞模式:fast+queued。(3)其他MTA包含了一個特殊版本的inetd,負責監視平均的系統負荷。而qmail設計上已經限制了機器的負荷,故此qmail-smtpd能夠在系統下的inetd下安全地運作。

替代sendmail:qmail支援 host and user masquerading, full host hiding, virtual domains, null clients, list-owner rewriting, relay control, double-bounce recording, arbitrary RFC 822 address lists, cross-host mailing list loop detection, per-recipient checkpointing, downed host backoffs, independent message retry schedules, 等等。qmail更提供sendmail wrapper,故此不會影響你現時採用的UA或作任何設定改動。


為甚麼使用qmail?

效率

qmail的模組化、輕盈化設計及合宜的queue管理,這幾個特色令它成為最快捷的信息傳送代理。以下是它如何在五個不同的速度測試中顯示其實力。

  • 排程:我把一個郵件寄給主電腦上8192個的"廢件"收件人。所有的寄遞工序在78秒內就完成 -- 即是一天超過9百萬個郵遞的速率!比較一下Zmailer在宣傳中的排程速度,Zmailer在一台SparcStation-10/50上面一天處理1.1百萬個郵遞。(我的主電腦是一台跑BSD/OS的16M Pentium,用的是qmail的默認啟始值。qmail的事件記錄檔如常地通過accustamp寫到硬碟上。)
  • 本區郵寄列表:當qmail將郵件送遞到郵箱的時候,它會先把郵件寫進硬碟,之後才確認為成功送遞。這樣即使出現電力故障,也不會遺失郵件。我向主電腦上位於同一個硬碟上的1024個郵箱發件,只要25.5秒就完成所有寄遞。綜合計算,即是一天可以處理3.4百萬個的郵件!將1024個郵件發送到1個郵箱的速度是一樣的。比較一下Zmailer在宣傳中的速度,只是把收件人挪走而沒有把郵件送到--在一台SparcStation也只有0.48百萬。
  • 含遙距收件人的郵寄列表:qmail採用的投寄策略,也是LSOFT的LSMTP能夠快速處理外寄的關鍵 -- 你可以選擇使用多少的平行SMTP連結,qmail就會確實依照這個數量運作。當然,表現也取決於收件人有多遙遠。qmail比其他套件優勝的地方,是它需求的資源很少:譬如一位Linux用戶要同時處理60個連線時,只要一台16MB記憶體的機器,也不用swapping!
  • 獨立本區郵件:LSOFT不會告訴你LSMTP一天能夠處理多少個個別的郵件。當queue被充滿時,會不會慢下來?在我的主電腦上面,我關掉了qmail的遞送功能然後發放5000個郵件到同一個收件人。所有郵件都安全地在23分鐘內寫入queue裡面,而當queue填滿時亦沒有慢下來的現象。當我重新啟動遞送功能的時候,所有的郵件都在12分鐘內送遞到收件人的郵箱內。綜合速率為一天超過200000獨立郵件!
  • 整體表現:著眼點是qmail處理你的郵遞工序時的效率。有一天Red Hat Software察覺到他們的郵遞中樞,一部使用sendmail 8.7的48M Pentium,一天處理70000個郵件時已然表現吃力。當他們轉用qmail後--而且是使用一部配備較低的機器,16MB的486/66--現在運作得很好。

qmail管理下的郵寄列表

郵寄列表管理是qmail的其中一個強項。特色:

  • qmail容許每個使用者管理他自己的郵寄列表。寄送予user-whatever的指示都放置於~user/.qmail-whatever 裡面。
  • qmail令得設立郵寄列表非常簡易。假如使用者touch ~user/.qmail-whatever-owner,所有的bounce郵件都會寄回給他。
  • qmail支援VERP,不論大小的郵寄列表,也能夠完全可靠地自動管理bounce郵件。
  • 速度 -- qmail能以sendmail快上百倍處理郵寄列表。舉例來說,在qmail的郵寄列表中,每個郵件都可以在76秒以內送遞到1000個以上的主電腦端。
  • qmail自動防止包括跨主機的郵寄列表出現循環寄遞情形。
  • qmail能夠容許龐大的郵寄列表,而不會有隨機的限制。
  • qmail使用同樣的機制處理郵件別名(aliasing)及郵件轉寄。舉例來說,Postmaster乃經由~alias/.qmail-postmaster來操控,意即跨主機端循環寄遞的偵測對郵件別名也同樣有效。
  • qmail支援ezmlm郵寄列表管理員,可以簡易地自動處理bounce郵件、訂閱要求以及檔案庫。


下載qmail

所有的qmail發表都會在cr.yp.to/qmail.html公佈。netqmail 1.04也可以從這裡下載


資料來源/參考 :   

中文化:
qmail官方網頁
qmail官方常見問題集
Frank Law, iBASE Technologies Limited  
   系統引擎提供:iBASE Technologies Limited