Хотя я понимаю основы двух форматов хранения (1 файл на электронную почту в Maildir против 1 отдельного файла на почтовый ящик в mbox), мне интересно, каковы здесь практические последствия -
Не управляйте почтовыми ящиками из postfix. Никогда. Перенаправляйте сообщения для доставки через сервер POP / IMAP, имеющий соответствующую функциональность. В случае голубятни есть dovecot-lda
он же deliver
которые делают все и многое другое, например управляемую пользователем фильтрацию сообщений, управление квотами, автоответчик и т. д.
В любом случае maildir более новый и предпочтительный формат из-за множества улучшений по сравнению с maibox. Maildir имеет индекс для каждой папки, что позволяет контролировать дубликаты, время истечения срока действия и даже полнотекстовый поиск. Кроме того, maildir работает значительно быстрее с огромной кучей сообщений. Dovecot может легко управлять maildir с 300 КБ сообщений без видимого замедления. Почтовый ящик такой большой - это уже проблема. Кроме того, большинство современных серверов POP / IMAP имеют множество утилит для решения общих задач в большой инфраструктуре.
Если вы используете NFS для хранения почты, не используйте mbox ни при каких обстоятельствах. И если вам нужно масштабируемое решение, Maildir - это то, что вам нужно.
Основная проблема с форматом mbox заключается в блокировке файлов: если у вас более одного почтового сервера или более одного процесса, пытающегося получить доступ к почтовому ящику одновременно, вы сильно рискуете получить поврежденный почтовый ящик. Также сложно пройти через почтовый ящик и удалить большое количество сообщений, например, когда вы пережили шторм отказов.
Maildir разработан для бесперебойной работы, когда у вас есть несколько почтовых серверов или несколько процессов на одном сервере, доставляя электронную почту в одну и ту же учетную запись в то же время, когда сервер IMAP или POP обращается к учетной записи.
Основная проблема Maildir заключается в том, что вы используете файловую систему, которая замедляется при обработке слишком большого количества inodes, и если ваша система резервного копирования плохо справляется с обработкой нескольких файлов. Что касается файловых систем, то когда я занимался системным администрированием электронной почты у интернет-провайдера, VXFS была лучшей для этого. Что касается резервных копий, у меня нет рекомендаций; к сожалению, большинство из них, похоже, предназначены для работы с серверами баз данных, а не с миллионом маленьких файлов.
Postfix в основном не заботится. Он просто помещает почту в какой-то файл. Интересная часть возникает, когда вы хотите получить почту с машины через IMAP (или POP3). Большинство IMAP-серверов (я пробовал) предпочитают Maildir, так как их легче расширять с помощью различных метаданных, которые может понадобиться IMAP-серверу, при этом сохраняя базовую структуру «это Maildir», так что вы можете заменить IMAP-сервер, не нарушая слишком много (очевидно, вы потеряете метаданные, которые также включают почтовые флаги, поэтому вам следует прочитать документацию по миграции сервера IMAP, если вы действительно хотите переключиться).
Чтобы ответить на конкретные вопросы:
Один формат хранения более масштабируемый, чем другой?
Чем больше mbox, тем труднее управлять им. Поскольку он хранит все в одном большом двоичном объекте, может быть сложно выполнить инкрементное резервное копирование, и такой доступ заблокирует mbox от записи, пока это происходит. Если есть какое-то повреждение, гораздо сложнее попытаться исправить или восстановить - что, можно сказать, представляет собой риск, который увеличивается по мере того, как он хранит больше почты.
Maildir полагается на базовую файловую систему для своей масштабируемости, поскольку он обычно создает множество небольших файлов, по одному на сообщение. Если у вас много писем, с Maildir справиться проще и быстрее.
Есть ли проблемы / различия в целостности данных?
Да, основная из них заключается в том, что mbox требует блокировки файла для чтения / записи для всего архива, то есть чтение должно ждать записи, а каждая отдельная запись должна ждать всех других обращений. Если он использовался таким образом, что блокировка невозможна, например, через общий ресурс NFS, архив может быть поврежден. Любое случайное повреждение может повлиять на весь архив, а не на отдельное сообщение.
В Maildir блокировка может быть на уровне отдельного сообщения для большинства операций, и повреждение любого файла повлияет только на это сообщение. Любые индексы в сообщениях можно при необходимости перестроить из самих сообщений.
Есть ли четко определенные ситуации, когда вам следует использовать один формат вместо другого?
Скорее всего, Maildir начинает заменять mbox в качестве универсального предпочтительного формата без существенных недостатков.
Его основным ограничением является создание большого количества небольших файлов, которые могут создавать нагрузку на некоторые файловые системы и / или быть неэффективными в зависимости от размера кластера файловой системы. Это меньшая проблема с современными файловыми системами. Он также может дать информацию о вашей стратегии резервного копирования, но в целом дает больше гибкости при выборе стратегии резервного копирования.
Mbox работает быстро при поиске текста внутри почтового ящика и добавлении нового сообщения в почтовый файл, но он подвержен повреждению почты и может иметь проблемы с сетевыми файловыми системами. Кроме того, может возникнуть проблема с блокировкой файлов.
С Maildir получение определенных писем происходит быстрее и не вызывает проблем из-за блокировки файлов или сетевых файловых систем (пример: с Maildir вы можете хранить разные почтовые папки в разных общих папках NFS, с Mbox этого нельзя достичь). У вас могут возникнуть проблемы с Maildir, когда файловая система неэффективно обрабатывает большое количество файлов.
Я понимаю, что вам нужно масштабируемое решение, прежде чем вы выберете то или иное, обязательно прочтите этот документ: (даже если вы не используете Courier)