Каждое сообщение в отдельном файле maildir

Обновлено: 05.07.2024

Maildir отключён по-умолчанию, потому что в нем ещё имеется множество недоработок. Он не на 100% готов для пользователей.

Предупреждение: Мы рекомендуем оставить Maildir отключённым, если вы не являетесь опытным пользователем, не готовы рисковать данными, не знаете, как сделать резервную копию своей электронной почты перед включением Maildir, и не знаете, как восстановить её, если столкнётесь с проблемами.

Остальная часть этой статьи объясняет как изменить формат и как протестировать Maildir.

Maildir является одним из основных изменений в Thunderbird, поскольку это изменяет механизм хранения почты. Хранение каждого письма в отдельном файле имеет значительные преимущества:

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

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

Для включения Maildir:

Пожалуйста, оформите баг, если вы столкнётесь с какими-либо проблемами при использовании Maildir. Просмотрите также уже отправленные отчеты об ошибках.

Эти прекрасные люди помогли написать эту статью:

Illustration of hands

Станьте волонтёром

Растите и делитесь опытом с другими. Отвечайте на вопросы и улучшайте нашу базу знаний.

Дата и время публикации: 2021-03-25 10:30:00 YYYY-mm-dd hh:MM:SS -->

Проблемы и решение

1. Суть проблемы

Представляет собой три поддиректории в одноименной директории Maildir , которая содержит следующие поддиректории с файлами:

В таблице 1.1 сведены преимущества и недостатки обоих форматов Mbox и Maildir

2.1 Правила использования форматов хранения

В Postfix предусмотрена опция в основном конфигурационном файле main.cf , которая позволяет устанавливать один из двух форматов хранения в директории пользователя, как показано в листинге 2.1

Postfix четко определяет [3.3], что для формата Maildir – значение, устанавливающее формат и одновременно имя директории, в правой части должно заканчиваться слешом (/), соответственно такое окончание считается недопустимым для формата Mbox , как показано в листинге 2.2

Поэтому для реализации хранения в формате Maildir необходимо определить значение для опции home_mailbox , равной значению Inbox/ , как показано в дампе 2.1 . Соответственно, для хранения в формате Mbox в опции home_mailbox указать значение Mailbox без символа слэша на конце (/).

Для установки значения Inbox/ ,устанавливающий формат хранения писем формата Maildir для переменной home_mailbox следует воспользоваться postconf , как показано в дампе 2.3

При этом не забудте перезапустить postfix , как показано в дампе 2.4

После чего остается определить переменную окружения MAIL в каждом пользовательском аккаунте, что конечно проще сделать в файле .profile из /etc/skel до того как будет создана учетка пользователя электронной почты, как показано в листинге 2.5 ниже.

Также неплохо с использованием переменной MAILGROUP огородить не входящих в группу mail (GID=8) пользователей от автоматического создания в домашних директориях не нужных им в её корне файла Mbox или директории Maildir/

А затем уже можно начать создавать учетки пользователей электронной почты, например, как показано в дампе 2.6

Что и должна, затем нам продемонстрировать утилита env , после того как учетка пользователя электронной почты будет создана и авторизована, например fmaster , как показано в дампе 2.7

После чего, можно запузырить тестовую отправку письма /вводимый контент выделен жирным/, как показан в дампе 2.8

Или с использованием утилиты Swaks , как показано в дампе 2.9

При этом не нужно парится, а правильно ли ввели команды почтовому сереверу или нет и насколько вводимый контент письма соответствует ранее RFC 822 , который поменили на RFC 2822 , потому что за Вас это сделает Swaks ( Swiss Army Knife smtp или универсальный и простой тестер smtp )

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

2.2 Устарнение ошибок из журнала postfix (/var/log/mail.log)

2.2.1 Ошибка "Temporary failure in name resolution"

Лечится правильной установкой домена и ip сервера ( 192.168.2.2 ) в файл /etc/resolv.conf , как показано в листинге 2.10

И перезапуском системного резолвера, который помогает выполнять локальным приложениям, как показано в дампе 2.11

2.2.2 Ошибка "mail for mydomain.tld loops back to myself"

Лечится правильно установленной конфигурацией доменного имени $mydomain, и транспорта получателя писем ( mail delvire transport ) $mydestion, как показано в листинге 2.12

Сайт разработан в соответствии с рекомендациями консорциума W3C для языка разметки HTML5.

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

Для начала распакуйте архив. Если архив был в формате tar.gz , то потребуется установить архиватор 7zip или WinRAR. WinRAR можно скачать с официального сайта.

1. Как открывать письма. Пример для ОС Windows

После распаковки откройте папку cur или new . Каждый файл будет представлять отдельное письмо. Например здесь мы видим 3 письма:


Если писем много, а мы хотим найти определенное письмо, то проще всего ориентироваться на дату изменения файла.

Когда вы нашли нужный файл, то осталось просмотреть его. Для этого переименуйте любой файл в ИМЯ.eml


Далее два раза кликните по файлу. Если вы используете Windows 10, то выберите открытие при помощи стандартного приложения Почта.

2. Структура папок в формате maildir

Структура папок в формате maildir выглядит следующим образом:

Письма хранятся в каталогах cur и new . Разница между каталогами cur и new лишь в том, что файлы в cur были просмотрены программой чтения почты пользователя. А письма в new - еще не были просмотрены.

3. Формат maildir++

Если хостинг провайдер, у которого вы получили архив, использует для работы почты Dovecot, то с большой долей вероятности вы получили данные в формате maildir++. Проверить это очень просто - в распакованном архиве рядом с каталогами cur , new , tmp будут файлы с именами dovecot- в начале.

4. Названия файлов в maildir++

Пример названия файла:

Цифры в начале файла до первой точки обозначают время в формате unixtime


Флаг S= указывает размер письма в байтах. Флаг W= указывает размер письма c переводами строк CR + LF. Указывается так же в байтах.

Далее идет указатель версии флагов письма - специальных отметок о состоянии. В большинстве случаев это версия "2". Версия 1 была экспериментальной и не используется.

В конце имени файла могут содержатся флаги, которые отображают состояние письма:

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

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

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

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

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

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

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

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

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

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

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

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

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

Прошло некоторое (относительно короткое) время с тех пор, как Thunderbird наконец-то получил поддержку хранилища maildir (я использую Thunderbird 38.1.0 на момент написания этой статьи). К сожалению, похоже, это применимо только к тому, как Thunderbird хранит почту внутри себя, например, для учетных записей IMAP/POP3. Однако я хотел бы иметь возможность читать содержимое типичного каталога /home/user/.maildir, который содержит почту, локально доставляемую пользователю (в качестве альтернативы доставке в стиле /var /spool /mail).

Я, конечно, могу вернуться к настройке учетной записи movemail Thunderbird с /var /spool /mail (после перенастройки exim, которая осуществляет локальную доставку почты, соответственно), но я, честно говоря, не хочу этого делать.

1 ответ 1

Моя электронная почта предварительно фильтруется, поскольку она входит в отдельные почтовые папки (отдельные файлы в моей настройке) на моем сервере Linux. Преимущество использования моего собственного клиента imap состоит в том, что у меня есть несколько компьютеров в нескольких ОС с несколькими именами пользователей - все они могут обращаться к одному и тому же почтовому хранилищу под dovecot - независимо от того, нужен ли мне доступ к нему на той же машине или через локальную сеть.

Я продолжаю играть с идеей сделать его доступным через веб-сервер из-за пределов моего дома, но на самом деле в этом не было необходимости. В любом случае, думайте о сервере imap как о типе "адаптера" для ваших данных, чтобы он мог быть передан в Thunderbird .

Читайте также: