У меня есть много файлов eml, заархивированных из учетной записи и хранящихся в нескольких папках, по одной в месяц. Это не стандартная структура maildir, и файлы не имеют специальных имен, они просто такие:
2015-01/
foo.eml
bar.eml
...
2015-02/
baz.eml
qux.eml
...
etc
Я хотел бы сделать их доступными, только для чтения, через IMAP, желательно с использованием dovecot, без изменения структуры / именования, если это возможно. Было бы замечательно, если бы все электронные письма могли появляться в папке «Входящие» вместе, но отдельные папки по месяцам (так как они структурированы на диске) тоже подойдут.
Чтобы это сработало, вам нужно хотя бы переместить эти сообщения в MailDir как структура. Моя почта Dovecot выглядит так для аккаунта ahoy@iswhale.com
./iswhale.com/ahoy/.Drafts/tmp
./iswhale.com/ahoy/.Drafts/new
./iswhale.com/ahoy/.Drafts/cur
./iswhale.com/ahoy/cur
./iswhale.com/ahoy/new
./iswhale.com/ahoy/tmp
Если вы создадите новую подпапку, скажите «Архив», она будет выглядеть так:
./ahoy/.Archive/tmp
./ahoy/.Archive/new
./ahoy/.Archive/cur
Tmp, new и cur - это каталоги, созданные Dovecot, когда вы создаете эту новую папку в клиенте (например, Roundcube). Когда создается новая подпапка архива, структура каталогов становится следующей:
./ahoy/.Archive.Sub-Folder/tmp
./ahoy/.Archive.Sub-Folder/new
./ahoy/.Archive.Sub-Folder/cur
Итак, вам нужно будет настроить пути к каталогам, чтобы '2015-01' стал примерно таким:
./user/.Archive.2015-01/tmp
./user/.Archive.2015-01/new
./user/.Archive.2015-01/cur
Затем, как только эти каталоги будут созданы, вы скопируете файлы .eml (которые, я надеюсь, представляют собой просто текстовое электронное письмо того типа, который ожидает Dovecot) в целевой «новый» каталог. Подключитесь к предпочтительному клиенту IMAP, и все будет хорошо.
Думаю, я нашел способ настроить структуру maildir, не внося никаких изменений в имеющиеся у меня папки и файлы. Я создал отдельную папку maildir в другом месте и использовал символические ссылки, чтобы указать на мои папки, содержащие почту, например:
maildir
├─ .2015-01
│ └─ cur -> path/to/2015-01
└─ .2015-02
└─ cur -> path/to/2015-02
Я дал dovecot права на запись для maildir и его подкаталогов, чтобы он мог записывать свои индексные файлы, новые и tmp-папки и многое другое, но у него нет прав на запись для фактических папок почтового архива.
Для конфигурации dovecot (я обслуживаю только эти файлы на этом сервере, больше ничего) я установил mail_location = maildir:/path/to/my/maildir
и использовал статические passdb и userdb.
Эта установка сработала, но я также столкнулся с несколькими проблемами:
Решение: запустить doveadm flags add '\Seen' mailbox 201x-xx
Решение: добавлен глобальный файл ACL, содержащий: * owner lr
Пока все хорошо, я обновлю, если появится что-нибудь еще.