Maildir 和 Mbox 之间的实际区别是什么?

oly*_*e26 44 postfix maildir mbox

虽然我了解两种存储格式的基础知识(Maildir 下每个电子邮件 1 个文件,mbox 下每个邮箱 1 个单个文件),但我想知道这里的实际含义是什么 -

  • 一种存储格式是否比另一种更具可扩展性?
  • 是否存在数据完整性问题/差异?
  • 是否有明确定义的情况,您应该使用一种格式而不是另一种格式?

Kon*_*bas 23

不要从 postfix 管理邮箱。绝不。重定向邮件以通过具有适当功能的 POP/IMAP 服务器传送。在 dovecot 的情况下,有dovecot-ldaakadeliver可以做任何事情等等,比如用户控制的消息过滤、配额管理、自动回复等等。

无论如何,maildir 是更新和首选的格式,因为与 maibox 相比有很多改进。Maildir 为每个文件夹都有一个索引,允许控制重复、过期时间甚至全文搜索。此外,maildir 在处理大量消息时要快得多。Dovecot 可以轻松操作包含 300k 条消息的 maildir,而不会出现任何明显的减速。这么大的邮箱本身就是个问题。此外,大多数现代 POP/IMAP 服务器具有许多用于大型基础设施中常见任务的实用程序。


Jen*_*y D 16

如果您使用 NFS 进行邮件存储,在任何情况下都不要使用 mbox。如果您想要一个可扩展的解决方案,Maildir 是您的最佳选择。

mbox 格式的主要问题是文件锁定问题 - 如果您有多个邮件服务器,或多个进程试图同时访问邮箱,那么您将面临邮箱损坏的巨大风险。浏览邮箱并删除大量邮件也很困难,例如当您遭遇退回风暴时。

当您有多个邮件服务器或在一台服务器上有多个进程,在 IMAP 或 POP 服务器访问该帐户的同时将电子邮件传送到同一帐户时,Maildir 旨在无故障地工作。

Maildir 的主要问题是,如果您使用的文件系统在处理过多的 inode 时会变慢,并且您的备份系统在处理多个文件方面表现不佳。至于文件系统,当我在 ISP 进行电子邮件系统管理时,VXFS 是最好的。对于备份,我没有任何建议;不幸的是,它们中的大多数似乎旨在处理数据库服务器,而不是无数的小文件。


tho*_*ter 6

要解决具体问题:

一种存储格式是否比另一种更具可扩展性?

mbox 越大越难以管理。由于它将所有内容都存储在一个大 blob 中,因此很难进行增量备份,并且这种访问会在发生时锁定 mbox 以防止写入。如果存在某些损坏,则尝试修复或恢复要困难得多——您可以说这是一种风险,因为它存储了更多邮件。

Maildir 的可扩展性依赖于底层文件系统,因为它通常会创建许多小文件,每条消息一个。如果您有很多电子邮件,Maildir 通常更容易、更快速地处理。

是否存在数据完整性问题/差异?

是的,主要是 mbox 需要对整个存档进行读/写文件锁定,这意味着读取必须等待写入,并且每个单独的写入必须等待所有其他访问。如果以不可能锁定的方式使用它,例如通过 NFS 共享,则存档可能会损坏。任何随机损坏都会影响整个存档而不是单个消息。

使用 Maildir,锁定可以在单个消息的级别,对于大多数操作,任何文件中的损坏只会影响该消息。如果需要,可以从消息本身重建消息中的任何索引。

是否有明确定义的情况,您应该使用一种格式而不是另一种格式?

更多的情况是 Maildir 开始取代 mbox 作为普遍首选的格式,没有明显的缺点。

它的主要限制是它创建了很多很多小文件,这些小文件可能会给某些文件系统带来压力和/或效率低下,具体取决于文件系统集群的大小。对于现代文件系统来说,这不是什么问题。它还可以通知您的备份策略,但总的来说,它确实为您选择备份策略提供了更大的灵活性。