Протоколи

Роздільники папок: Dovecot / проти Courier .

Симптом упізнаваний: на старому сервері було охайне дерево папок, на новому — плоский список із крапками або скісними рисками просто в назвах. Винен один символ, про який у протоколі забули домовитися.

Звідки береться проблема

В IMAP вкладеність папок передається не структурою, а рядком: «Клієнти/2025» — це папка «2025» всередині папки «Клієнти». Який символ є роздільником, вирішує сервер.

Dovecot і більшість сучасних серверів використовують скісну риску. Courier історично використовує крапку. Старі збірки Cyrus — теж крапку.

Клієнт зобов’язаний запитати роздільник у сервера командою LIST і далі використовувати саме його. Якщо цього не зробити, ім’я папки їде на інший сервер як є, і там воно означає вже не те.

Сервер сам повідомляє свій роздільник
Dovecot:  * LIST (\HasChildren) "/" "Клієнти"
Courier:  * LIST (\HasChildren) "." "INBOX.Клієнти"

Який вигляд має поломка

Три типові картини, за якими діагноз ставиться одразу.

Що з цим робить автозіставлення

Правильний інструмент запитує роздільник в обох сторін і переписує імена під час перенесення, а заодно знімає або додає префікс INBOX там, де він потрібен.

Це і є режим автоматичного зіставлення папок. У переважній більшості перенесень він робить саме те, що треба.

Ручне правило має сенс рівно в одному випадку: коли в назві папки є символ, що є роздільником на приймальному боці.

Що перевірити до перенесення

Хвилина на список папок рятує від розбору завалів після.

  1. Подивіться список папок з обох боків до старту: роздільник видно одразу.
  2. Знайдіть папки, у назві яких є крапка або скісна риска, і вирішіть, що з ними робити.
  3. Лишіть автозіставлення ввімкненим, якщо немає причини його вимикати.
  4. Після перенесення звірте не лише кількість листів, а й глибину дерева.

FAQ

Часті запитання

Чому всі папки опинилися всередині «Вхідних»?

Так влаштований Courier: користувацькі папки лежать під INBOX. Під час перенесення на Dovecot цей префікс треба знімати.

Чи втратяться листи через неправильний роздільник?

Ні, листи доїжджають. Ламається структура.

Чи можна перейменувати папки просто під час перенесення?

Так, правилом заміни.

Як дізнатися роздільник свого сервера?

Він видно у відповіді на команду LIST — друге поле в лапках.

Куди далі

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

Інші записи

Дізнайтеся обсяг своєї скриньки. Це нічого не коштує.

Підключіть два сервери, подивіться розмір і вирішуйте. Або заберіть клієнт і тримайте все в себе.

Код на GitHub · на базі imapsync · без реєстрації