Гид по технологиям

Миграция почтовых ящиков между IMAP‑серверами с помощью IMAP TOOLS

• 5 min read • Почта • Обновлено 22 Nov 2025
Миграция IMAP-почты с IMAP TOOLS
Миграция 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:

Список папок и писем на server1.example.com перед миграцией

server2.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) вы увидите импортированные сообщения:

Сообщения на 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. Тест: выбор 1–2 тестовых почтовых ящиков и пробный перенос.
  3. Резервная копия: экспорт критичных данных или снапшот почтового хранилища.
  4. Миграция: запуск скриптов по заранее подготовленным спискам пользователей.
  5. Верификация: проверить количество сообщений, наличие вложений, метки/флаги.
  6. Откат: иметь процедуру восстановления из резервной копии.

9 Критерии приёмки

  • Количество сообщений в ключевых папках совпадает (+/− ожидаемая погрешность при повторных попытках).
  • Вложения открываются корректно.
  • Метки/fлаги (прочитано/непрочитано, важность) сохранены, если это требование проекта.
  • Доступ пользователей к почте на целевом сервере восстановлен.

10 Роли и чек‑листы

Администратор:

  • Проверить доступы и квоты на источнике и приёмнике.
  • Настроить пользователя/сервисный аккаунт с правами на запись.
  • Выполнить dry‑run и отчет о результатах.

Оператор миграции:

  • Подготовить users_file и проверить формат.
  • Запустить скрипты и собирать логи.
  • Подтвердить соответствие по контрол‑пунктам приёмки.

11 Безопасность и приватность

  • Никогда не публикуйте реальные пароли в скриптах; храните их в защищённых файлах с ограничениями доступа (chmod 600).
  • При миграции через публичные сети используйте SSL/TLS и проверяйте сертификаты серверов.
  • Для персональных данных соблюдайте локальные требования по хранению и передаче (например, GDPR для ЕС). При необходимости проконсультируйтесь с отделом безопасности.

12 Краткое руководство по тестированию (acceptance)

  • Тестовый ящик: 5–10 писем с разными вложениями и кодировками.
  • Выполнить перенос и проверить: 3 из 3 сообщений на месте, вложения открываются, тема и отправитель соответствуют.
  • Проверить журналы ошибок и исправить найденные проблемы.

13 Ссылки


Краткое резюме

  1. Установите IMAP TOOLS на любом подходящем сервере и сделайте скрипты исполняемыми.
  2. Используйте imapcopy.pl для IMAP→IMAP и pop3toimap.pl для POP3→IMAP.
  3. Всегда тестируйте на небольших ящиках, резервируйте данные и проверяйте квоты и права доступа.

Notes: Если миграция затрагивает большое количество учетных записей, рассмотрите более автоматизированные решения (imapsync, скрипты с очередью задач) и планирование окон обслуживания.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро