Протоколы

Разделители папок: Dovecot / против Courier .

Симптом узнаваемый: на старом сервере было аккуратное дерево папок, на новом — плоский список с точками или слэшами прямо в названиях. Виноват один символ, о котором в протоколе договориться забыли.

Откуда берётся проблема

В IMAP вложенность папок передаётся не структурой, а строкой: «Клиенты/2025» — это папка «2025» внутри папки «Клиенты». Какой символ служит разделителем, решает сервер, и протокол это разрешает.

Dovecot и большинство современных серверов используют слэш. Courier исторически использует точку. Старые сборки Cyrus — тоже точку. Встречается и обратный слэш у Exchange-шлюзов.

Клиент обязан спросить разделитель у сервера командой LIST и дальше использовать именно его. Если этого не сделать — а так ведут себя простые скрипты и часть самописных инструментов, — имя папки уезжает на другой сервер как есть, и там оно означает уже не то.

Сервер сам сообщает свой разделитель
Dovecot:  * LIST (\HasChildren) "/" "Клиенты"
Courier:  * LIST (\HasChildren) "." "INBOX.Клиенты"

Как выглядит поломка

Три типичные картины, по которым диагноз ставится сразу.

Что с этим делает автосопоставление

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

Это и есть режим автоматического сопоставления папок. В подавляющем большинстве переносов он делает ровно то, что нужно, и вмешательства не требует.

Ручное правило имеет смысл ровно в одном случае: когда в названии папки есть символ, служащий разделителем на принимающей стороне. Тогда его заменяют явно — например, точку в «ООО Ромашка. Договоры» на дефис, — иначе любое автоматическое правило создаст вложенность там, где её не было.

Что проверить до переноса

Минута на список папок избавляет от разбора завалов после.

  1. Посмотрите список папок с обеих сторон до старта: разделитель виден сразу.
  2. Найдите папки, в названии которых встречается точка или слэш, и решите, что с ними делать.
  3. Оставьте автосопоставление включённым, если нет причины его выключать.
  4. После переноса сверьте не только число писем, но и глубину дерева: совпадение счётчиков при схлопнутой структуре — не успех.

FAQ

Частые вопросы

Почему все папки оказались внутри «Входящих»?

Так устроен Courier: пользовательские папки лежат под INBOX. При переносе на Dovecot этот префикс нужно снимать — это делает автосопоставление.

Потеряются ли письма из-за неправильного разделителя?

Нет, письма доезжают. Ломается структура: они оказываются не в тех папках, а имена выглядят странно.

Можно ли переименовать папки прямо при переносе?

Да, правилом замены. Это же способ обойти точку или слэш внутри названия папки.

Как узнать разделитель своего сервера?

Он виден в ответе на команду LIST — второе поле в кавычках. Инструмент переноса показывает его в списке папок.

Куда дальше

Перенести почту в MoveMailbox

Другие записи

Узнайте объём своего ящика. Это ничего не стоит.

Подключите два сервера, посмотрите размер и решайте. Или заберите клиент и держите всё у себя.

Код на GitHub · на базе imapsync · без регистрации