Как работать с письмами в формате maildir
Многие хостинг провайдеры соглашаются предоставить полные архивы почтовых ящиков клиентов в формате maildir. В этой статье мы расскажем, что делать после того, как вы заполучили архив в таком формате.
Для начала распакуйте архив. Если архив был в формате tar.gz, то потребуется установить архиватор 7zip или WinRAR. WinRAR можно скачать с официального сайта.
1. Как открывать письма. Пример для ОС Windows
После распаковки откройте папку cur или new. Каждый файл будет представлять отдельное письмо. Например здесь мы видим 3 письма:

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

Далее два раза кликните по файлу. Если вы используете Windows 10, то выберите открытие при помощи стандартного приложения Почта.
2. Структура папок в формате maildir
Структура папок в формате maildir выглядит следующим образом:
├── cur
├── new
└── tmp
Письма хранятся в каталогах cur и new. Разница между каталогами cur и new лишь в том, что файлы в cur были просмотрены программой чтения почты пользователя. А письма в new - еще не были просмотрены.
tmp используется для временного хранения новых сообщений.
Время модификации файла является датой доставки сообщения.
3. Формат maildir++
Если хостинг провайдер, у которого вы получили архив, использует для работы почты Dovecot, то с большой долей вероятности вы получили данные в формате maildir++. Проверить это очень просто - в распакованном архиве рядом с каталогами cur, new, tmp будут файлы с именами dovecot- в начале.
Формат maildir появился из-за того, что оригинальный maildir не полностью поддерживал протокол IMAP. Созданный командой Dovecot формат maildir обратно совместим с форматом maildir. Более подробно об этом формате можно прочитать на сайте wiki.dovecot.org/MailboxFormat/Maildir.
4. Названия файлов в maildir++
Пример названия файла:
1559134770.M480410P13977.mail4,S=2826,W=2881:2,S
<базовое имя файла>, <размер файла>, <флаги>
Цифры в начале файла до первой точки обозначают время в формате unixtime
1559134770.M480410P13977.mail4,S=2826,W=2881:2,S
Вот пример конвертации времени 1559134770 на сайте https://time.is/ru/Unix_time_converter:

Флаг S= указывает размер письма в байтах.
Флаг W= указывает размер письма c переводами строк CR + LF. Указывается так же в байтах.
1559134770.M480410P13977.mail4,S=2826,W=2881:2,S
Далее идет указатель версии флагов письма - специальных отметок о состоянии. В большинстве случаев это версия “2”. Версия 1 была экспериментальной и не используется.
1559134770.M480410P13977.mail4,S=2826,W=2881:2,S
В конце имени файла могут содержатся флаги, которые отображают состояние письма:
1559134770.M480410P13977.mail4,S=2826,W=2881:2,S
Возможные флаги: