Вопрос или проблема
Я пытаюсь использовать MBSync для синхронизации локальной папки Maildir++ (данные почты dovecot) с удалённым почтовым ящиком IMAP. Хотя в целом это работает, подкаталоги INBOX игнорируются.
Конфигурация выглядит так:
MaildirStore a-local
Subfolders Maildir++
Inbox /var/kunden/mail/a/[email protected]
IMAPAccount a
Host ***
User ***
Pass ***
SSLType IMAPS
CertificateFile ~/mail/cert
IMAPStore a-remote
Account a
Channel a
Master :a-local:
Slave :a-remote:
Patterns *
SyncState ~/mail/a-imap-transfer
Вывод выглядит так (почему INBOX игнорируется?!)
pattern '*' (effective '*'): Path, no INBOX Maildir warning: ignoring
INBOX in /var/kunden/mail/a/[email protected]/ Opening slave
store a-remote... Resolving ***... ok Connecting to
*** (***:993)... Connection is now encrypted Logging in... Authenticating with SASL mechanism PLAIN... pattern '*'
(effective '*'): Path, no INBOX Opening master box INBOX... Opening
slave box INBOX...
Структура папок в файловой системе выглядит так:
.Drafts
'.Entw&APw-rfe'
.Gesendet
.INBOX.abizeitung
.INBOX.Bachelorarbeit
.INBOX.bestellungen
.INBOX.dav
Последние 4 из них не синхронизированы.
Есть подсказки?
Из мануала: Заметьте, что INBOX не совпадает с подстановочными знаками, если он не находится под Path.
. Поэтому вы должны добавить второй шаблон .INBOX.*
.
Ответ или решение
Конфигурация MBSync, описанная в вопросе, предназначена для синхронизации локальной директории в формате Maildir++ с удаленным почтовым ящиком IMAP. Основная проблема, с которой столкнулся пользователь, заключается в том, что подпапки INBOX игнорируются во время синхронизации. Давайте проанализируем это более подробно и предложим решение.
Теория
MBSync, также известный как isync, — это инструмент командной строки, используемый для синхронизации электронной почты между локальными директориями и удаленными серверами. Он часто применяется, когда необходимо поддерживать локальные копии удаленных почтовых ящиков, особенно в системах, которые используют стандарт Maildir для хранения почты.
Maildir++ — это расширение классического формата Maildir, которое позволяет использовать иерархические структуры каталогов. В этом формате подписчики могут размещаться под INBOX, как в вашем случае: .INBOX.abizeitung
, .INBOX.Bachelorarbeit
и так далее.
При настройке MBSync для такой задачи важно учитывать, что по умолчанию INBOX не будет соответствовать универсальным шаблонам (wildcards) в конфигурации. Это связано с особенностями работы с таким форматом директорий и может быть причиной того, что ваши подпапки не синхронизируются.
Пример
Ваша текущая конфигурация MBSync выглядит следующим образом:
MaildirStore a-local
Subfolders Maildir++
Inbox /var/kunden/mail/a/<a href="https://unix.stackexchange.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a1c7cecee1c3c0d38fc2cecc"></a>
IMAPAccount a
Host ***
User ***
Pass ***
SSLType IMAPS
CertificateFile ~/mail/cert
IMAPStore a-remote
Account a
Channel a
Master :a-local:
Slave :a-remote:
Patterns *
SyncState ~/mail/a-imap-transfer
Согласно руководству пользователя MBSync, как вы и отметили в вопросе, для корректного захвата всех подпапок INBOX потребуется внести дополнительные изменения в секцию Channel
.
Применение
Для того чтобы решить проблему игнорирования подпапок INBOX, нужно внести две основные коррективы в конфигурацию вашего канала:
-
Добавить шаблон для подпапок INBOX:
Используйте
Patterns
, которые явно указывают пути к подпапкам под INBOX. Например, добавить следующую строку:Patterns * .INBOX.*
Эта строка указывает MBSync, что нужно учитывать все подпапки, следующие за
.INBOX.
. -
Обработка спецификации пути:
Возможны различные настройки для обработки путей в зависимости от сервера и структуры директорий. Вам может потребоваться уточнить путь к вашей
Inbox
и параметруSubfolders
, чтобы они точно соответствовали вашему реальному пути.
Пример обновленной конфигурации может выглядеть так:
MaildirStore a-local
Subfolders Maildir++
Inbox /var/kunden/mail/a/<a href="https://unix.stackexchange.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a1c7cecee1c3c0d38fc2cecc"></a>
IMAPAccount a
Host ***
User ***
Pass ***
SSLType IMAPS
CertificateFile ~/mail/cert
IMAPStore a-remote
Account a
Channel a
Master :a-local:
Slave :a-remote:
Patterns * .INBOX.*
SyncState ~/mail/a-imap-transfer
Проверка корректности синтаксиса и формата дополнительных строк в конфигурационном файле является важным шагом для предотвращения ошибок при синхронизации.
Заключение
Эти изменения позволят MBSync обнаруживать и синхронизировать подпапки INBOX, которые находятся внутри вашей структуры Maildir++. Это настраивает программу на правильное восприятие и обработку иерархических директорий, характерных для Maildir++.
Помните, что измененные настройки могут потребовать времени и тестирования для достижения идеального результата. Протестируйте новую конфигурацию в среде, отличной от производственной, чтобы убедиться в её работоспособности. Постоянно следите за логами, чтобы увериться, что синхронизация проходит корректно и все нужные директории и сообщения обрабатываются должным образом.