Сотрудник передаёт рабочую переписку коллеге. Простого экспорта папки «Входящие» мало: история может находиться в десятках папок, а получатель продолжает принимать новую почту во время копирования.
В сентябрьском проекте KMVSG перенёс историю через серверный IMAP-робот. Разберём, как проверяли полноту, повторные проходы и сохранность источника.
Корпоративная почта
Перенос рабочей переписки
- 01Инвентарь
- 02Проба
- 03Копирование
- 04Сверка
- Переписка и структура папок сохраняются в целевом ящике. Доступ и совместимость проверяются на контрольной порции.
- Уже обработанные идентификаторы фиксируются в журнале. Повторный проход не копирует их заново.
- Сверяем исходные папки, число перенесённых писем и новые независимые сообщения; источник не очищаем автоматически.
Начните с инвентаря источника и назначения
Зафиксируйте доступные папки, число сообщений и содержимое цели до копирования. Отдельно проверьте поддерживаемую авторизацию, возможность записи и лимиты почтовых серверов. Структура папок и число писем — разные контрольные величины.
В кейсе на этапе первичного чтения источник содержал 35 266 писем в 45 папках, а цель — 237 писем в пяти папках. Пока шла работа, в источник пришло ещё одно письмо. Финальный объём исторического переноса поэтому составил 35 267.
Проверьте небольшой пакет на реальной цели
Контрольная порция должна подтвердить не только успешный ответ записи, но и появление писем в нужной папке. Проверьте даты, поддерживаемые флаги и исходное содержимое перед масштабированием.
Сначала перенесены 100 писем из одной папки. Повторное чтение назначения показало 337 писем и ровно 100 сообщений в созданной папке. Ошибок и удалений не было; после этой проверки включён основной режим.
Для повторов нужен устойчивый журнал
После сетевого перерыва задача должна знать, какие исходные сообщения уже обработаны. В нашем роботе состояние сохранялось по сочетанию исходного ящика, папки, UIDVALIDITY и UID. Эти идентификаторы относятся к конкретному источнику; нельзя подменять их одним общим номером письма.
Журнал исключает повторное копирование уже обработанной позиции в этом сценарии. Он не объявляется универсальным поиском одинакового содержимого или устранением дублей, которые до начала работы уже существовали в целевом ящике.
Серверный запуск не должен зависеть от длительности пакета
Большой архив копируется пакетами; следующий проход должен запускаться после завершения предыдущего. Если расписание не учитывает длительность работы, перенос может неожиданно остановиться между пакетами.
В этом проекте установлен серверный таймер через минуту после окончания предыдущего прохода, до 2000 новых писем за пакет. Копирование продолжалось без рабочего компьютера. Скорость на контрольном отрезке не использована как обещание срока для любого ящика.
Сверяйте результат по папкам и этапам
Общее число в целевом ящике включает его прежнюю и новую независимую почту. Поэтому сравнение с числом источника без этих составляющих даёт ложное расхождение. Для приёмки полезна поштучная история обработки и сверка каждой папки.
Итог 18 сентября: 35 267 перенесённых писем из 42 непустых папок; в источнике и цели по 45 папок. В цели 35 505 сообщений — прежние 237, перенос и одно независимое новое. Сверка по каждой непустой исходной папке совпала.
Сохраните источник до согласованного завершения
Копирование, удаление старого ящика и переключение адреса — разные действия. После исторического этапа согласуйте, нужно ли подхватывать новые письма, когда выполнять финальную сверку и кто принимает результат.
В кейсе источник сохранён. Последующие проходы давали copied=0, skipped=35267, deleted=0 и errors=0; таймер оставлен для новой почты. Контакты, календари, фильтры и миграция домена в этот результат не входят.
Короткий чек-лист
- Прочитать источник и цель до копирования
- Проверить запись контрольного пакета
- Сохранить журнал исходных идентификаторов
- Продолжать обработку пакетами
- Учесть прежние и новые письма цели
- Сверить каждую папку до решения об очистке
Ссылки и исходный код
В материале раскрыты запросы: Перенос почтового ящика через IMAP, Корпоративная почта, Перенос почтового ящика.