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