Миграция почтовых ящиков между IMAP‑серверами с помощью IMAP TOOLS
Версия и автор
Версия 1.0
Автор: Falko Timme
Следите за автором в Twitter
О чём эта инструкция
Эта инструкция объясняет, как перенести почтовые сообщения и структуру папок между серверами с помощью IMAP TOOLS — набора Perl‑скриптов для работы с IMAP и POP3. Основные используемые скрипты:
- imapcopy.pl — копирует сообщения и папки с одного IMAP‑сервера на другой.
- pop3toimap.pl — копирует сообщения с POP3‑сервера на IMAP‑сервер.
Оба скрипта поддерживают SSL: при указании порта 993 (или 995 для POP3) устанавливается SSL‑соединение; при портах 143/110 пробуется нешифрованное соединение; при любом другом порте скрипт проверит, доступна ли TLS/SSL и выберет соответствующий режим.
Важно: перед массовой миграцией выполняйте проверку на тестовой учётной записи.
1 Предварительное замечание
Для примера используются два сервера:
- server1.example.com (источник)
- server2.example.com (приёмник)
Мы хотим перенести почтовый ящик [email protected] (логин: [email protected], пароль: secret) с server1.example.com в [email protected] на server2.example.com (логин и пароль совпадают).
2 Что проверять до начала
Просмотрите оба почтовых ящика в почтовом клиенте (Outlook, Thunderbird или веб‑интерфейс как SquirrelMail). На примере ниже на исходном сервере находятся три тестовых сообщения.
server1.example.com:

server2.example.com:

После успешной миграции три сообщения с server1.example.com должны появиться на server2.example.com.
3 Установка IMAP TOOLS
IMAP TOOLS можно установить на любом из серверов — на исходном, целевом или на третьем сервере, не участвующем в обмене почтой.
Скачиваем и распаковываем набор скриптов в каталог /usr/local/imap_tools/:
cd /usr/local/
mkdir imap_tools
cd imap_tools
wget http://www.athensfbc.com/imap_tools/files/imap_tools_V1.105.tar.gz
tar xvfz imap_tools_V1.105.tar.gzДелаем Perl‑скрипты исполняемыми:
chmod +x /usr/local/imap_tools/*.plВажно: проверяйте целостность и источник загрузки перед выполнением скриптов от третьих лиц.
4 Перенос почты между IMAP‑серверами с помощью imapcopy.pl
Синтаксис imapcopy.pl:
/usr/local/imap_tools/imapcopy.pl -S host1[:port]/user1/password1 -D host2[:port]/user2/password2Пример команды для копирования сообщений из [email protected] (server1) в [email protected] (server2):
/usr/local/imap_tools/imapcopy.pl -S server1.example.com/[email protected]/secret -D server2.example.com/[email protected]/secretПример вывода:
root@server1:/usr/local/imap_tools# /usr/local/imap_tools/imapcopy.pl -S server1.example.com/[email protected]/secret -D server2.example.com/[email protected]/secret
/usr/local/imap_tools/imapcopy.pl starting
Connected to server1.example.com on port 143
Authenticating to server1.example.com as [email protected]
Connected to server2.example.com on port 143
Authenticating to server2.example.com as [email protected]
Number of mailboxes to process: 5
Drafts mailbox is empty
Junk mailbox is empty
Trash mailbox is empty
Sent mailbox is empty
Copied 3 messages to INBOX
Copied 3 total messages
root@server1:/usr/local/imap_tools#На целевом сервере (server2.example.com) вы увидите импортированные сообщения:

Советы по использованию imapcopy.pl
- Для больших почтовых ящиков проводите миграцию поэтапно (папка за папкой) и проверяйте количество сообщений.
- Проверьте квоты и права доступа на целевом сервере — нехватка диска или ограничения могут прервать процесс.
5 Перенос почты с POP3 на IMAP с помощью pop3toimap.pl
Синтаксис pop3toimap.pl:
/usr/local/imap_tools/pop3toimap.pl -p POP3host[:port] -i IMAPhost[:port] -u users_fileФайл users_file имеет формат:
popUsername password imapUsername passwordСоздадим файл /usr/local/imap_tools/users_file с данными входа:
vi /usr/local/imap_tools/users_file| [email protected] secret [email protected] secret |
Команда для копирования сообщений с POP3 (server1) в IMAP (server2):
/usr/local/imap_tools/pop3toimap.pl -p server1.example.com -i server2.example.com -u /usr/local/imap_tools/users_fileЕсли появятся ошибки типа:
Unexpected response to SELECT INBOX. command: 1 NO Mailbox does not exist, or must be subscribed to.
unexpected APPEND response: 1 NO Access denied for APPEND on INBOX. (ACL "i" required)откройте pop3toimap.pl и отредактируйте соответствующую строку, чтобы явно указать папку INBOX. В примере нужно закомментировать строку 123 и добавить строку 124:
vi /usr/local/imap_tools/pop3toimap.pl(фрагмент из файла):
[...]
foreach $msgnum ( @popMsgList ) {
if ( $range ) {
Log("msgnum $msgnum") if $debug;
next if $msgnum < $lower;
next if $msgnum > $upper;
}
Log("Fetching POP message $msgnum") if $debug;
$msg = getPOPMsg( $msgnum, $p_conn );
getFlag( \$msg, \$flag );
getDate( \$msg, \$date );
next if $msg eq '';
#$mailbox = 'INBOX' unless $mailbox;
$mailbox = 'INBOX';
selectMbx( $mailbox, $i_conn );
if ( insertMsg(*msg, $mailbox, $date, $flag, $i_conn ) ) {
$copied++;
$grandTotal++;
Log("$copied messages migrated") if $copied/100 == int($copied/100);
# Delete the message from the POP server if the delete flag is set
deletePOPMsg( $msgnum, $p_conn ) if $delete;
}
}
[...]Запустите команду ещё раз после правки.
Пример вывода:
root@server1:/usr/local/imap_tools# /usr/local/imap_tools/pop3toimap.pl -p server1.example.com -i server2.example.com -u /usr/local/imap_tools/users_file
pop3toimap 1.3 starting
There are 1 users to be migrated
Connected to server1.example.com on port 110
Connected to server2.example.com on port 143
Migrating [email protected] on server1.example.com to [email protected] on server2.example.com (3 messages)
Summary of POP3 -> IMAP migration
Users migrated 1
Total messages 3
Total bytes 2912
root@server1:/usr/local/imap_tools#На целевом сервере вы увидите те же сообщения после импорта.
6 Частые ошибки и способы их устранения
Important: Перед правками — резервная копия скриптов и конфигураций.
- “Mailbox does not exist” — папка отсутствует или нужно подписаться на неё. Проверьте имена папок и кодировку (UTF‑7 для IMAP).
- “Access denied for APPEND” — отсутствуют права на добавление писем в целевой ящик; проверьте ACL и права пользователя (добавьте право “i” или используйте аккаунт с достаточными правами).
- Прерывания при больших объёмах — выполняйте миграцию по частям, уменьшайте количество одновременных соединений, следите за квотами диска.
7 Альтернативные подходы и сравнение
- imapsync — широко используемый инструмент на Perl/Perl‑модулях, удобен для инкрементных переносов и синхронизации.
- Экспорт в mbox/EML и импорт через клиент (Thunderbird) — подходит для единичных учетных записей, но не для массовых миграций.
- Утилиты провайдеров или встроенные миграционные сервисы — могут обеспечить интеграцию и сохранение прав, но зависят от выбранного сервиса.
Короткая эвристика: для быстрого массового переноса с контролем — imapsync; для простых разовых переносов — IMAP TOOLS или клиентские экспорты.
8 Мини‑методология успешной миграции (шаги)
- План: определить объём, количество ящиков, временное окно обслуживания.
- Тест: выбор 1–2 тестовых почтовых ящиков и пробный перенос.
- Резервная копия: экспорт критичных данных или снапшот почтового хранилища.
- Миграция: запуск скриптов по заранее подготовленным спискам пользователей.
- Верификация: проверить количество сообщений, наличие вложений, метки/флаги.
- Откат: иметь процедуру восстановления из резервной копии.
9 Критерии приёмки
- Количество сообщений в ключевых папках совпадает (+/− ожидаемая погрешность при повторных попытках).
- Вложения открываются корректно.
- Метки/fлаги (прочитано/непрочитано, важность) сохранены, если это требование проекта.
- Доступ пользователей к почте на целевом сервере восстановлен.
10 Роли и чек‑листы
Администратор:
- Проверить доступы и квоты на источнике и приёмнике.
- Настроить пользователя/сервисный аккаунт с правами на запись.
- Выполнить dry‑run и отчет о результатах.
Оператор миграции:
- Подготовить users_file и проверить формат.
- Запустить скрипты и собирать логи.
- Подтвердить соответствие по контрол‑пунктам приёмки.
11 Безопасность и приватность
- Никогда не публикуйте реальные пароли в скриптах; храните их в защищённых файлах с ограничениями доступа (chmod 600).
- При миграции через публичные сети используйте SSL/TLS и проверяйте сертификаты серверов.
- Для персональных данных соблюдайте локальные требования по хранению и передаче (например, GDPR для ЕС). При необходимости проконсультируйтесь с отделом безопасности.
12 Краткое руководство по тестированию (acceptance)
- Тестовый ящик: 5–10 писем с разными вложениями и кодировками.
- Выполнить перенос и проверить: 3 из 3 сообщений на месте, вложения открываются, тема и отправитель соответствуют.
- Проверить журналы ошибок и исправить найденные проблемы.
13 Ссылки
- IMAP TOOLS: http://www.athensfbc.com/imap_tools/
Краткое резюме
- Установите IMAP TOOLS на любом подходящем сервере и сделайте скрипты исполняемыми.
- Используйте imapcopy.pl для IMAP→IMAP и pop3toimap.pl для POP3→IMAP.
- Всегда тестируйте на небольших ящиках, резервируйте данные и проверяйте квоты и права доступа.
Notes: Если миграция затрагивает большое количество учетных записей, рассмотрите более автоматизированные решения (imapsync, скрипты с очередью задач) и планирование окон обслуживания.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента