Сверка после переноса почты: все ли письма перенесены
АйТи Фреш
Серверы и инфраструктура

Проверка переноса почты: как убедиться, что перенесены все письма, папки и отметки

Автор: , директор ООО «АйТи-Фреш» · · ~14 мин чтения
Слева горит облачный дата-центр, справа тихая бухта и домик со своим почтовым сервером
Облако — чужой сервер: когда он горит, вы ждёте. Свой сервер — тихая бухта для переписки.

«Вроде всё перенеслось» — самая дорогая фраза в истории переездов. Через месяц выясняется, что не всё. Перенос из облака на свой сервер имеет смысл только если перенесено всё — и это нужно доказать цифрами, а не ощущениями. Проверка переноса почты делается в три шага: сравнить число писем и объём по папкам на старом и новом сервере командой imapsync с опцией --justfoldersizes, убедиться, что в логе каждого ящика стоит Detected 0 errors, и выборочно проверить письма с вложениями и отметки «прочитано» и «флажок». Сверку делают сразу после финального прохода, пока сотрудники не начали работать в новых ящиках, и повторяют через 2–4 недели перед отключением старой почты. Ниже — команды и примеры вывода с нашего стенда и шаблон таблицы сверки для приёмки работ.

Своя почта вместо облака: варианты решения

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

mailcow

Почта, антиспам и веб-почта SOGo с календарями в контейнерах Docker; обновление одной командой.

Carbonio CE

Наследник Zimbra: привычный веб-клиент с календарями и адресными книгами, как в облаке.

iRedMail

Postfix, Dovecot, антиспам и веб-почта на обычном Linux-сервере; от 4 ГБ памяти.

Stalwart

Современный сервер «всё в одном»: IMAP, SMTP, CalDAV, CardDAV; скромные требования.

Почта на инфраструктуре АйТи Фреш

Carbonio CE или mailcow на наших серверах в ЦОД МТС, антиспам и ежедневные бэкапы — от 150 ₽/мес за ящик.

Подберём вариант под вашу компанию и перенесём почту →

Забрать из облака — значит забрать всё

Переезд из облака на свой сервер ценен только тогда, когда на вашем сервере вся переписка, до последнего письма. Иначе часть истории компании так и останется у провайдера — и пропадёт при его следующей аварии или после отключения старых ящиков.

Сверка — это доказательство, что переписка теперь целиком принадлежит компании.

Всё ли забрали из облака
Стенд: 755 из 755 писем, 21 737 007 байт

Без сверки вы не знаете, что потеряли

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

На своём сервере у вас есть цифры: сколько писем в каждой папке было и сколько стало, сколько прочитанных, отмеченных, отвеченных. Сверка превращает «вроде» в «точно». Это последний шаг переезда, который отделяет профессиональную работу от лотереи.

 — bay_matrix

Зачем сверять перенос отдельно

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

Сверка состоит из трёх уровней: количество писем и объём по папкам, ошибки в логах переноса и выборочная проверка содержимого. Первые два делаются автоматически для всех ящиков, третий — вручную на нескольких. Все три уровня занимают от нескольких минут до часа на ящик. Это окупается.

Ниже — как проводить каждый уровень, с командами, проверенными на нашем стенде (два сервера Dovecot 2.4.5 и imapsync 2.326). Как переносить — в инструкции по imapsync.

Есть и практическая польза для самого переноса: сверка сразу показывает ящики, где что-то пошло не так, пока старая почта ещё доступна и всё можно исправить повторным проходом. После отключения старых ящиков исправлять будет нечем.

Таблица сверки: пример со стенда
Четыре уровня сверки
Четыре уровня сверки

Уровень 1. Количество и объём по папкам

imapsync с опцией --justfoldersizes подключается к обоим серверам и выводит для каждой папки число писем и размер, ничего не копируя. Это основной инструмент сверки:

docker run --rm -v "$PWD":/var/tmp gilleslamiral/imapsync imapsync \
  --host1 imap.yandex.ru --ssl1 --user1 anna@company.ru --passfile1 /var/tmp/pass_old \
  --host2 mail.company.ru --ssl2 --user2 anna@company.ru --passfile2 /var/tmp/pass_new \
  --justfoldersizes

В конце вывода — итоговые строки по обоим серверам. На стенде после переноса тестового ящика они выглядели так:

Host1 Nb messages:                  755 messages
Host2 Nb messages:                  755 messages
Host1 Total size:              21737007 bytes (20.730 MiB)
Host2 Total size:              21737007 bytes (20.730 MiB)

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

Совет: запускайте сверку с той же машины и с теми же файлами паролей, что и перенос. Тогда результат воспроизводим, и если через месяц понадобится повторить сверку для одного ящика, команда уже есть в истории проекта.

Письма уходят из горящего облака в надёжное хранилище — пиксель-арт
Письма уходят из горящего облака в надёжное хранилище.

Почему числа могут честно не совпадать

Несовпадение не всегда означает потерю. Типичные законные причины.

ПричинаКак выглядитЧто сделать
После переноса в старый ящик пришли новые письмана старом сервере большефинальный проход с --maxage и повторная сверка
Сотрудник уже удалил что-то в новом ящикена новом меньшесравнивать сразу после переноса, до начала работы
Папки исключены опцией --excludeна новом меньше на размер этих папокучитывать исключения при сверке
Папки переименованы или сопоставлены --automapчисла по папкам разнесены по другим именамсверять по сопоставлению, а не по именам
Дубли на исходном сервереimapsync сообщает о дублях, на новом может быть меньшесмотреть строку о дублях в логе
Разный подсчёт размерачисло писем совпадает, байты нетдопустимо, если письма открываются

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

Почему числа могут честно не совпадать

Если найдена недостача: порядок разбора

Первое — определить, в какой папке недостача: сравните числа по папкам, а не только итог. Второе — посмотреть лог переноса этого ящика: были ли ошибки, исключения, сообщения о дублях. Третье — запустить повторный проход imapsync для этого ящика: если причина была временной (обрыв, таймаут), он докачает недостающее.

Если после повторного прохода недостача осталась, проверьте лимиты нового сервера (размер письма, квота ящика) и права на папку. Если и это не помогло, сравните письма в проблемной папке выборочно: какие именно не перенеслись, есть ли у них что-то общее — размер, дата, необычные заголовки.

Для писем без заголовка Message-Id, которые imapsync не может надёжно опознать, в документации есть опция --addheader: она добавляет такой заголовок при переносе. Применяйте её осознанно и проверяйте результат на тестовом ящике.

Почему числа не совпали
Почему числа не совпали

Уровень 2. Ошибки в логах переноса

Каждый запуск imapsync заканчивается сводкой. Её стоит проверять для каждого ящика:

Folders synced                          : 11/11 synced
Messages transferred                    : 755
Messages skipped                        : 0
Messages found in host1 not in host2    : 0 messages
Detected 0 errors

Ключевые строки: Detected 0 errors — ошибок нет; Messages found in host1 not in host2: 0 — на приёмнике нет недостающих писем; Folders synced — все папки обработаны. Если ошибки есть, imapsync перечисляет их в конце лога: обычно это письма, которые приёмник отказался принять по размеру, или превышение квоты ящика.

Когда ящиков много, логи удобно проверять автоматически. Скрипт, который мы использовали на стенде для резервной копии, считает ящики без строки Detected 0 errors:

for f in logs/*.log; do grep -q "Detected 0 errors" "$f" || echo "ОШИБКИ: $f"; done

Ящики из этого списка разбираются по одному: читается конец лога, устраняется причина (например, увеличивается лимит размера письма на новом сервере), и выполняется повторный проход. Повторный проход докачает только недостающее.

Переезд из облака на свой сервер — кинокадр FLUX.2
Переезд из облака на свой сервер.

Письма, которые не переносятся: лимиты размера и квоты

Самая частая причина ошибок при переносе — лимиты нового сервера. Если на старом сервисе можно было получить письмо с вложением на несколько десятков мегабайт, а на новом сервере максимальный размер письма меньше, такие письма приёмник отвергнет. imapsync сообщит о них в конце лога, а сверка покажет недостачу.

Решение — до переноса выставить на новом сервере лимит размера письма не меньше, чем у старого, и квоты ящиков с запасом. Если по политике компании большие письма не нужны, их можно сознательно пропустить опцией --maxsize и зафиксировать это в таблице сверки — тогда недостача будет объяснимой.

Как настраивается лимит размера в разных системах, мы разбирали в статьях «Postfix message_size_limit» и «Zimbra: лимит размера письма».

Чек-лист сверки
Свой сервер под защитой, пока снаружи шторм — карандашный рисунок
Свой сервер под защитой, пока снаружи шторм.

Уровень 3. Отметки писем: прочитано, флажок, отвечено

Число писем не говорит, сохранились ли отметки. Сотрудник, у которого после переезда все письма стали непрочитанными, сочтёт перенос неудачным, хотя письма на месте.

imapsync переносит флаги и синхронизирует их при каждом проходе. Чтобы проверить, мы на стенде сравнили по каждой папке четыре числа через стандартный IMAP-поиск: всего писем, прочитанных (SEEN), помеченных флажком (FLAGGED) и отвеченных (ANSWERED). Результат для тестового ящика:

папка            источник            приёмник
INBOX            (305, 221, 26, 15)  (305, 221, 26, 15)
Проекты/2025     (80, 61, 4, 4)      (80, 61, 4, 4)
Архив & старое   (150, 106, 9, 11)   (150, 106, 9, 11)

Такую проверку легко сделать небольшим скриптом на Python со стандартной библиотекой imaplib: подключиться к обоим серверам, для каждой папки выполнить SEARCH ALL, SEEN, FLAGGED, ANSWERED и сравнить числа. Её стоит запустить хотя бы для нескольких ящиков, а лучше — для всех.

На стенде мы заодно увидели, как --automap сопоставляет папки: «Отправленные» и «Черновики» на старом сервере оказались в системных папках Sent и Drafts на новом. При сверке по именам это выглядело бы как недостача, при сверке по сопоставлению — всё совпадает.

Сверка после переноса почты

Если переносите в облачный сервис

При переезде в облако сверка устроена так же, если новый сервис даёт доступ по IMAP: imapsync с --justfoldersizes подключается к нему как к любому IMAP-серверу. Если перенос делает встроенный мастер импорта сервиса, после его окончания всё равно имеет смысл сверить объёмы imapsync-ом — мастер не всегда показывает подробный отчёт.

Учтите, что облачный сервис может по-своему считать размер ящика (например, с учётом служебных данных) — для сверки опирайтесь в первую очередь на число писем по папкам.

Ключи от своей почты — у компании — изометрия
Ключи от своей почты — у компании.

Уровень 4. Выборочная проверка глазами

Автоматическая сверка не заменяет взгляд человека. Для нескольких ящиков — руководителя, бухгалтерии, самого большого ящика — проверьте вручную:

Откройте несколько старых писем с вложениями и убедитесь, что вложения открываются. Найдите письмо поиском по теме или отправителю — так проверяется и перенос, и индексация на новом сервере. Откройте вложенные папки и папки с кириллицей в названии. Проверьте папку «Отправленные»: в ней должны быть письма, отправленные до переезда.

Попросите самого сотрудника посмотреть свой ящик: он быстрее заметит, что не хватает «той самой папки с договорами».

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

Копия на другой площадке — основа плана Б — бумажная аппликация
Копия на другой площадке — основа плана Б.

Поиск на новом сервере: проверить отдельно

Письма могут быть на месте, но не находиться поиском, — для сотрудника это выглядит так же, как потеря. На новом сервере поиск работает по своему индексу, который строится после загрузки писем; на больших ящиках это занимает время.

Поэтому в ручную проверку включите поиск: найдите несколько писем по отправителю, по теме, по слову из текста. Если поиск не находит письмо, которое видно в папке, это вопрос к индексу нового сервера, а не к переносу. В mailcow, например, за полнотекстовый поиск отвечает отдельный компонент, его настройку мы описывали в статье «Flatcurve в mailcow».

Проверку поиска лучше делать не сразу после загрузки, а через несколько часов, когда индекс построится.

Письма переезжают из облака в свой дом — живопись маслом
Письма переезжают из облака в свой дом.

Сверка для общих ящиков, контактов и календарей

Общие ящики сверяются так же, как личные, но с учётом прав: проверьте, что на новом сервере у сотрудников есть доступ к общему ящику с теми же правами, что были.

Контакты и календари imapsync не переносит, их сверяют отдельно: число контактов в адресной книге и событий в календаре до и после. На стенде мы делали это запросами REPORT по CardDAV и CalDAV на обоих серверах. Подробно — в статье о переносе контактов и календарей.

Алиасы, рассылки и правила проверяются тестовыми письмами: письмо на алиас приходит нужному сотруднику, письмо на рассылку — всем участникам.

Облачный дата-центр плавится — и вместе с ним ваша переписка — акварель
Облачный дата-центр плавится — и вместе с ним ваша переписка.

Автоматизация сверки для десятков ящиков

Когда ящиков много, сверка должна быть скриптом, а не ручной работой. Минимальный вариант: цикл по списку ящиков, для каждого — imapsync с --justfoldersizes, извлечение итоговых строк Host1 Nb messages и Host2 Nb messages из вывода и запись в CSV. Затем таблица сортируется по разнице, и ящики с несовпадением разбираются в первую очередь.

Второй скрипт — сверка флагов через IMAP-поиск для каждой папки. Он медленнее, поэтому его можно запускать для выборки ящиков, а для остальных ограничиться сверкой количества.

Результаты скриптов сохраняются вместе с логами переноса. Если сверка повторяется (например, контрольная через 2–4 недели), удобно сравнить две таблицы: где появились новые письма и сколько.

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

Как оформить результат сверки

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

ЯщикПисем: было / сталоРазмер: было / сталоОшибки в логеПроверено вручную
anna@755 / 75520,7 / 20,7 МиБнетда
info@600 / 60016,4 / 16,4 МиБнет—

В таблице — данные нашего стенда. Если переезд делает подрядчик, такую таблицу стоит прописать в договоре как обязательный результат.

Если в каком-то ящике сознательно не переносили часть данных — например, папку со спамом или письма больше определённого размера, — укажите это в таблице отдельной колонкой «Исключения». Через полгода никто не вспомнит, почему в ящике на 200 писем меньше, а запись в таблице ответит на вопрос сразу.

Облако рушится, и сервер падает вместе с вашими письмами — мультяшный стиль
Облако рушится, и сервер падает вместе с вашими письмами.

Контрольная сверка через несколько недель

После переключения старые ящики ещё какое-то время получают письма от отправителей с закэшированными MX-записями. Поэтому через 2–4 недели, перед отключением старой почты, делается контрольный проход imapsync без ограничения по возрасту писем и повторная сверка.

Если в старых ящиках появились новые письма, проход их перенесёт. Если ничего не появилось — это подтверждение, что старую почту можно отключать.

Перед отключением сохраните итоговую таблицу сверки и логи переноса вместе с документацией проекта.

Если контрольный проход показал, что в старые ящики продолжают приходить письма спустя месяц, проверьте, не осталось ли где-то старой MX-записи: в зоне поддомена, у второго DNS-провайдера или в настройках отправителя, который шлёт почту напрямую на старый сервер.

Пожар в облачном дата-центре и тихая бухта со своим сервером
Авария у провайдера или тишина своего сервера — выбор за компанией.

Типичные ошибки при сверке

Сверяют только итог по ящику, а не по папкам: недостача в одной папке маскируется лишними письмами в другой. Сверяют после того, как сотрудники начали работать в новых ящиках: числа уже не могут совпасть, и непонятно, что считать нормой. Не учитывают сопоставление папок --automap: «Отправленные» на старом сервере ищут под тем же именем на новом и не находят.

И самая частая ошибка — не сохраняют результат. Сверка, которую нельзя показать через месяц, почти ничего не стоит.

Чек-лист сверки

Для каждого ящика.

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

Как проверить, что все письма перенесены?

Сравнить число писем и размер на обоих серверах командой imapsync --justfoldersizes и убедиться, что в логе переноса Detected 0 errors и 0 писем, отсутствующих на приёмнике.

Почему число писем не совпадает?

Частые причины: новые письма после переноса, исключённые папки, сопоставление папок --automap, дубли на исходном сервере. Сверку делают сразу после финального прохода.

Переносятся ли отметки «прочитано» и «флажок»?

Да, imapsync переносит флаги и синхронизирует их при каждом проходе. На стенде числа прочитанных, помеченных и отвеченных совпали во всех папках.

Что делать, если в логе есть ошибки?

Прочитать конец лога: обычно это письма больше лимита размера или превышение квоты. Устранить причину и повторить проход — он докачает только недостающее.

Когда можно отключать старую почту?

После контрольного прохода imapsync и повторной сверки через 2–4 недели после переключения, когда в старые ящики перестали приходить письма.

Нужна ли таблица сверки, если переносит подрядчик?

Да, это лучший критерий приёмки: число писем и размер на обоих серверах, ошибки в логе и ручная проверка по каждому ящику.

Миграция почты с Яндекса под ключ от АйТи Фреш

Возьмём на себя весь переезд: проверим текущую почту и домен, поможем выбрать вариант, перенесём письма, папки, календари и контакты, переключим MX, SPF, DKIM и DMARC, проверим доставляемость и поддержим сотрудников после переезда.

Куда переносим: в облако на российской площадке, на ваш собственный сервер, в гибридную схему или как резервный контур рядом с текущей почтой.

  1. Аудит текущей почты и домена — 1–2 рабочих дня
  2. План миграции и фиксированная смета — 1 рабочий день
  3. Настройка сервера, DNS и перенос ящиков — 3–5 рабочих дней
  4. Сопровождение сотрудников и проверка доставляемости — 5 рабочих дней
РаботаСтоимость
Перенос почты, календарей и контактов до 50 ящиковот 12 000 ₽ разово
Корпоративная почта под ключ: сервер, домен, SPF/DKIM/DMARC, до 15 ящиковот 25 000 ₽ разово
Ящики на нашей инфраструктуре (Carbonio CE или mailcow, ЦОД МТС)от 150 ₽/мес за ящик
Обслуживание почтового сервераот 7 000 ₽/мес

Опыт: перенесли 617 ящиков гостиничной группы за 3 дня. Точный срок и смету фиксируем после аудита; простой при переключении зависит от схемы и оговаривается в договоре. Подробнее — на странице услуги «Корпоративная почта для бизнеса».

Столкнулись с похожей задачей? Обращайтесь — решим

Если у вас происходит что-то из описанного в этой статье — или любая другая проблема с ИТ-инфраструктурой, — обращайтесь в любое время. Мои специалисты и я лично разберём ситуацию, найдём настоящую причину и доведём до решения.

Возьмёмся и за разовую задачу, и за постоянное обслуживание. Первичная консультация — бесплатно и без обязательств.

📞 +7 903 729-62-41 ✈ Telegram @ITfresh_Boss

С уважением, Семёнов Евгений Сергеевич, директор «АйТи Фреш» — IT-аутсорсинг для компаний до 50 рабочих мест, 15+ лет практики

© ООО «АйТи-Фреш» · Москва · Все статьи