
雖然我了解兩種儲存格式的基礎知識(Maildir 下每個電子郵件 1 個文件與 mbox 下每個郵箱 1 個文件),但我想知道這裡的實際含義是什麼 -
- 一種儲存格式是否比另一種更具可擴充性?
- 是否存在資料完整性問題/差異?
- 是否存在明確定義的情況,您應該使用一種格式而不是另一種格式?
答案1
不要從 postfix 管理郵箱。絕不。重定向郵件以透過具有適當功能的 POP/IMAP 伺服器進行傳遞。就 dovecot 而言,它可以dovecot-lda
做deliver
所有事情,甚至更多,例如用戶控制的訊息過濾、配額管理、自動回覆等等。
無論如何,maildir 是更新且更受歡迎的格式,因為與 mailbox 相比有很多改進。 Maildir 對每個資料夾都有一個索引,允許控制重複項、過期時間甚至全文搜尋。此外,maildir 在處理大量郵件時速度明顯更快。 Dovecot 可以輕鬆操作包含 30 萬條訊息的 maildir,而不會出現任何明顯的速度減慢。這麼大的郵箱本身就是一個問題。此外,大多數現代 POP/IMAP 伺服器都有許多用於大型基礎架構中常見任務的實用程式。
答案2
如果您使用 NFS 進行郵件存儲,不要在任何情況下都使用 mbox。如果您想要一個可擴展的解決方案,Maildir 就是您的最佳選擇。
mbox 格式的主要問題是檔案鎖定 - 如果您有多個郵件伺服器,或者多個進程同時嘗試存取郵箱,那麼您將面臨郵箱損壞的巨大風險。瀏覽郵箱並刪除大量郵件也很困難,例如當您遭受退回風暴時。
Maildir 旨在當您有多個郵件伺服器或一台伺服器上有多個進程時,在 IMAP 或 POP 伺服器存取帳戶的同時將電子郵件傳送到相同帳戶時,不會發生故障。
Maildir 的主要問題是,如果您使用的檔案系統在處理太多 inode 時速度會變慢,並且您的備份系統不擅長處理多個檔案。至於檔案系統,當我在 ISP 進行電子郵件系統管理時,VXFS 是最適合的。對於備份,我沒有任何建議;不幸的是,它們中的大多數似乎是為了處理資料庫伺服器而不是無數的小檔案而設計的。
答案3
解決具體問題:
一種儲存格式是否比另一種更具可擴充性?
mbox 越大,管理越困難。由於它將所有內容儲存在一個大 blob 中,因此很難進行增量備份,並且這種存取會在發生這種情況時鎖定 mbox,防止寫入。如果存在一些損壞,嘗試修復或恢復就會困難得多 - 您可以說,隨著儲存的郵件數量增加,風險也會增加。
Maildir 依賴底層檔案系統的可擴展性,因為它通常會建立許多小文件,每個訊息一個。如果您有大量電子郵件,Maildir 通常可以更輕鬆、更快速地處理。
是否存在資料完整性問題/差異?
是的,主要的一點是 mbox 需要對整個存檔進行讀取/寫入檔案鎖定,這意味著讀取必須等待寫入,並且每個單獨的寫入必須等待所有其他存取。如果以不可能鎖定的方式使用它,例如透過 NFS 共享,則存檔可能會損壞。任何隨機損壞都可能影響整個存檔而不是單一訊息。
使用Maildir,對於大多數操作來說,鎖定可以在單一訊息的級別,並且任何檔案中的損壞只會影響該訊息。如果需要,可以從訊息本身重建訊息的任何索引。
是否存在明確定義的情況,您應該使用一種格式而不是另一種格式?
更重要的是,Maildir 開始取代 mbox 成為普遍首選的格式,並且沒有明顯的缺點。
它的主要限制是它會創建許多很多小文件,這可能會給某些文件系統帶來壓力和/或根據文件系統群集大小而變得低效。對於現代檔案系統來說,這不是一個問題。它還可以告知您的備份策略,但總的來說,它確實為您選擇備份策略提供了更大的靈活性。
答案4
在搜尋郵箱內的文字並將新郵件附加到郵件檔案時,Mbox 速度很快,但它很容易出現郵件損壞,並且可能存在網路檔案系統問題。此外,文件鎖定可能是一個問題。
使用Maildir,檢索特定郵件的速度更快,並且不會因檔案鎖定或網頁檔案系統而出現問題(例如:使用Maildir,您可以將不同的郵件資料夾儲存在不同的NFS 共用中,這是Mbox 無法實現的)。當檔案系統無法有效處理大量檔案時,Maildir 可能會出現問題。
我知道您需要一個可擴展的解決方案,在您選擇一個或另一個之前,請務必閱讀此文件:(即使您不使用 Courier)