Каковы практические различия между Maildir и Mbox?

Хотя я понимаю основы двух форматов хранения (1 файл на электронную почту в Maildir против 1 отдельного файла на почтовый ящик в mbox), мне интересно, каковы здесь практические последствия -

  • Является ли один формат хранения более масштабируемым, чем другой?
  • Существуют ли проблемы / различия в целостности данных?
  • Существуют ли четко определенные ситуации, когда вы должны использовать один формат поверх другого?

7 ответов

Не управляйте почтовыми ящиками из postfix. Никогда. Перенаправляйте сообщения для доставки через POP/IMAP-сервер, который имеет соответствующую функциональность. В случае голубятни есть dovecot-lda ака deliver которые делают все и многое другое, такие как управляемая пользователями фильтрация сообщений, управление квотами, автоответчик и так далее.

В любом случае, maildir - более новый и предпочтительный формат из-за большого количества улучшений по сравнению с maibox. Maildir имеет индекс для каждой папки, который позволяет контролировать дубликаты, время истечения и даже полнотекстовый поиск. Кроме того, maildir значительно быстрее на огромной куче сообщений. Dovecot может легко управлять maildir с 300k сообщениями в нем без видимого замедления. Почтовый ящик такой большой - это сама проблема. Кроме того, большинство современных POP/IMAP-серверов имеют множество утилит для общих задач в большой инфраструктуре.

Если вы используете NFS для хранения почты, ни в коем случае не используйте mbox. И если вам нужно масштабируемое решение, Maildir - это то, что вам нужно.

Основная проблема с форматом mbox заключается в блокировке файлов - если у вас более одного почтового сервера или более одного процесса, пытающегося получить доступ к почтовому ящику одновременно, вы рискуете получить поврежденный почтовый ящик. Также трудно пройти через почтовый ящик и удалить большое количество сообщений, например, когда вы перенесли шторм отказов.

Maildir предназначен для безотказной работы, когда у вас есть несколько почтовых серверов или несколько процессов на одном сервере, которые доставляют электронную почту в одну и ту же учетную запись в то же время, когда сервер IMAP или POP обращается к ней.

Основная проблема с Maildir заключается в том, что вы используете файловую систему, которая замедляется при обработке слишком большого числа inode, и если ваша система резервного копирования плохо работает с несколькими файлами. Что касается файловых систем, когда я делал сисадминг электронной почты у интернет-провайдера, VXFS был лучшим для этого. Для резервных копий у меня нет никаких рекомендаций; К сожалению, большинство из них, похоже, предназначены для работы с серверами баз данных, а не с несколькими миллионами файлов.

Для решения конкретных вопросов:

Является ли один формат хранения более масштабируемым, чем другой?

С mbox становится все труднее управлять, чем больше он получает. Поскольку он хранит все в одном большом двоичном объекте, может быть сложно создавать резервные копии постепенно, и такой доступ заблокирует mbox от записи, пока это происходит. Если есть какая-то коррупция, гораздо труднее попытаться восстановить или восстановить - что, можно сказать, увеличивает риск, так как он хранит больше почты.

Maildir полагается на лежащую в основе файловую систему для ее масштабируемости, поскольку он будет типично создавать много маленьких файлов, один на сообщение. Если у вас много писем, с Maildir обычно легче и быстрее справиться.

Есть ли проблемы / различия в целостности данных?

Да, основной из них заключается в том, что mbox требует блокировки файлов чтения / записи для всего архива, то есть чтение должно ждать записи, а каждая отдельная запись должна ожидать всех других обращений. Если он использовался таким образом, что блокировка невозможна, например, через общий ресурс NFS, архив подвержен повреждению. Любое случайное повреждение может повлиять на весь архив, а не на одно сообщение.

С Maildir блокировка может быть на уровне отдельного сообщения, для большинства операций, и повреждение любого файла повлияет только на это сообщение. Любые индексы в сообщениях могут быть перестроены при необходимости из самих сообщений.

Существуют ли четко определенные ситуации, когда вы должны использовать один формат поверх другого?

Более того, Maildir начинает заменять mbox как универсально предпочтительный формат без существенных недостатков.

Его основным ограничением является создание множества мелких файлов, которые могут создавать нагрузку на некоторые файловые системы и / или быть неэффективными в зависимости от размера кластера файловой системы. Это меньше проблем с современными файловыми системами. Он также может информировать вашу стратегию резервного копирования, но в целом он дает большую гибкость в выборе стратегии резервного копирования.

Postfix не волнует, в основном. Он просто помещает почту в какой-то файл. Интересная часть возникает, когда вы хотите получить почту с аппарата через IMAP (или POP3). Большинство IMAP-серверов (я пробовал) предпочитают Maildirs, так как они легче расширяются с помощью различных метаданных, которые может понадобиться IMAP-серверу, сохраняя при этом базовую структуру "это Maildir", так что вы можете заменить IMAP-сервер, не нарушая слишком много (вы, очевидно, потеряете метаданные, которые также включают почтовые флаги, поэтому вам следует прочитать документы по миграции сервера IMAP, если вы действительно хотите переключиться).

Mbox работает быстро при поиске текста в почтовом ящике и добавлении новой почты в почтовый файл, но он подвержен повреждению почты и может иметь проблемы с сетевыми файловыми системами. Кроме того, блокировка файла может быть проблемой.

С Maildir получение определенных писем происходит быстрее и не имеет проблем из-за блокировки файлов или сетевых файловых систем (например: С Maildir вы можете хранить разные почтовые папки в разных общих папках NFS, это не может быть достигнуто с Mbox). У вас могут быть проблемы с Maildir, когда файловая система неэффективно обрабатывает большое количество файлов.

Я понимаю, что вам нужно масштабируемое решение, прежде чем выбрать одно или другое, обязательно прочитайте этот документ: (даже если вы не используете Courier)

Бенчмаркинг mbox против maildir

Основной недостаток, с которым я столкнулся при использовании формата maildir , — это используемое пространство для хранения файлов. В зависимости от файловой системы каждому файлу выделяется пространство блоками с фиксированным количеством байтов на блок. Однако большинство сообщений электронной почты не занимают размера блока, и, таким образом, возникает масса потраченного впустую пространства. Это справедливо для каталогов во многих структурах каталогов файловой системы — каждому каталогу выделяется целый блок для хранения информации о каталоге. Я обнаружил, что использование формата почтового ящика экономит мне около половины пространства файловой системы.

Тем не менее, конечные пользователи могут использовать формат maildir , но при архивировании электронной почты на сервере используйте формат почтового ящика . И если возможно, в зависимости от настроек сервера, вы можете использовать сжатие файлов почтового ящика . Это замедлит поиск и извлечение информации, но архивированная электронная почта в любом случае не предназначена для повседневного доступа.

НАСТОЯЩИЙ ОТВЕТ:

Если просто проверить логи...

cat /var/log/mail.warn

Вы увидите, что даже программа предупредит вас:

Dec  1 18:47:25 example-hostname postfix/trivial-rewrite[2192]: warning: do not list domain exampledomain.eu in BOTH mydestination and virtual_mailbox_domains

Это также хорошо задокументировано на странице официальной документации здесь (выполните поиск NEVERи вы сразу найдете проблему). Поэтому вам не следует этого делать, если программисты, создавшие программу, говорят "нет". Период.

Другие вопросы по тегам