Как мигрировать почтовые ящики между IMAP‑серверами с помощью imapcopy
Версия 1.0
Автор: Falko Timme
Подпишитесь в Twitter
Введение
В этом руководстве показано, как мигрировать почтовые ящики между IMAP‑серверами с помощью imapcopy. imapcopy рекурсивно копирует все сообщения и папки из одной IMAP‑учётной записи в другую. Поддерживаются протоколы imap и imaps.
Важно: это инструкция общего характера — никаких гарантий успешности в вашей среде здесь не даётся.
Предварительное замечание
В примере используются два сервера под Debian/Ubuntu (в других дистрибутивах процедура аналогична, только способ установки Java может отличаться):
- server1.example.com (источник)
- server2.example.com (назначение)
Мы переносим почтовый ящик sales@example.com (имя пользователя: sales@example.com, пароль: secret) с server1.example.com на server2.example.com (логин и пароль остаются теми же).
Примечание для пользователей Ubuntu: все команды здесь должны выполняться с правами root. Либо добавляйте sudo перед каждой командой, либо станьте root командой:
sudo suПеред началом
Откройте оба почтовых ящика в почтовом клиенте (например, Outlook, Thunderbird или веб‑интерфейс типа SquirrelMail), чтобы оценить текущее содержимое.
server1.example.com:

server2.example.com до миграции:

После удачной миграции три сообщения с server1.example.com должны появиться на server2.example.com.
Установка imapcopy
imapcopy требует Java. В примере мы устанавливаем openjdk‑6‑jre и unzip (проверьте современную версию Java в вашей системе — если доступен openjdk‑8 или выше, используйте её):
apt-get install openjdk-6-jre unzipДалее скачиваем и распаковываем пакет imapcopy в /usr/local/imapcopy/:
cd /usr/local/
mkdir imapcopy
cd imapcopy
wget http://imapcopy.googlecode.com/files/imapCopy0.3.1.zip
unzip imapCopy0.3.1.zipСделаем скрипт исполняемым:
chmod +x /usr/local/imapcopy/imapCopy.shПримечание: если у вас другой дистрибутив, используйте соответствующую команду пакетного менеджера и путь установки.
Выполнение миграции
Синтаксис imapcopy:
/usr/local/imapcopy/imapCopy.sh protocol://user[:password]@server[:port] protocol://user[:password]@server[:port]Протоколы: imap или imaps.
Если имя пользователя содержит символ @ (например, email), замените его на %40 в строке подключения. Пример команды для копирования с server1 на server2:
/usr/local/imapcopy/imapCopy.sh imap://sales%40example.com:[email protected] imap://sales%40example.com:[email protected]Типичный вывод в консоли (усечённый пример):
root@server1:/usr/local/imapcopy# /usr/local/imapcopy/imapCopy.sh imap://sales%40example.com:[email protected] imap://sales%40example.com:[email protected]
2011-09-30 13:28:27,751 INFO ImapCopier - Starting
2011-09-30 13:28:27,751 DEBUG ImapCopier - Parameters length:2
2011-09-30 13:28:27,751 DEBUG ImapCopier - opening conections
2011-09-30 13:28:27,751 DEBUG ImapCopier - opening imap conection to server1.example.com
2011-09-30 13:28:28,737 DEBUG ImapCopier - opening imap conection to server2.example.com
2011-09-30 13:28:28,998 DEBUG ImapCopier - Creating target Folder: Drafts
2011-09-30 13:28:29,030 DEBUG ImapCopier - Copying 0 messages from Drafts Folder
2011-09-30 13:28:29,033 DEBUG ImapCopier - Creating target Folder: Junk
2011-09-30 13:28:29,058 DEBUG ImapCopier - Copying 0 messages from Junk Folder
2011-09-30 13:28:29,059 DEBUG ImapCopier - Creating target Folder: Trash
2011-09-30 13:28:29,061 DEBUG ImapCopier - Copying 0 messages from Trash Folder
2011-09-30 13:28:29,061 DEBUG ImapCopier - Creating target Folder: Sent
2011-09-30 13:28:29,120 DEBUG ImapCopier - Copying 0 messages from Sent Folder
2011-09-30 13:28:29,527 DEBUG ImapCopier - Copying 3 messages from INBOX Folder
root@server1:/usr/local/imapcopy#На целевом сервере (server2.example.com) вы увидите скопированные сообщения:

Проверка результата
- Откройте целевой почтовый ящик в клиенте и убедитесь, что все папки и сообщения присутствуют.
- Проверьте метаданные: даты и отправители должны совпадать.
- Проверьте целостность вложений у нескольких сообщений.
Если что‑то не скопировалось, см. раздел «Отладка и откат» ниже.
Отладка и откат
Важно: выполните эти шаги до массовой миграции, сначала протестируйте на одном почтовом ящике.
Частые причины ошибок и их решения:
- Ошибка аутентификации: проверьте логин/пароль, попробуйте подключиться по IMAP из почтового клиента.
- Проблемы с SSL: используйте imaps вместо imap и укажите порт 993, если требуется.
- Ограничения на стороне сервера (лимиты на количество операций): уменьшите нагрузку, мигрируйте партиями.
- Разные корневые префиксы папок (Inbox namespace): возможно, потребуется откалибровать маппинг папок вручную.
Простой план отката (rollback):
- Если вы создавали новые папки на целевом сервере, удалите их (или очистите).
- Если миграция завершилась частично — повторите копирование; imapcopy обычно пропускает дубликаты сообщений.
- При серьёзных проблемах восстановите почту из резервной копии целевого сервера.
Чеклист перед массовой миграцией
- Тестовая миграция на одном аккаунте выполнена и проверена.
- Есть актуальные резервные копии исходных и целевых почтовых данных.
- Проверены лимиты IMAP на исходном и целевом серверах.
- Уточнено, используется ли SSL/TLS и какие порты открыты.
- Пользователи предупреждены о возможных кратковременных задержках.
Альтернативные подходы
- Использовать offline‑экспорт/импорт через mbox/mbox2imap при большом объёме и доступе к файловой системе почтового хранилища.
- Использовать dovecot‑sync или dsync (для серверов Dovecot) — быстрее и с учётом UID/flags.
- Для корпоративных переносов рассмотреть специализированные инструменты миграции (коммерческие решения с поддержкой логов и отчётности).
Когда этот метод не подходит
- Если у вас ограниченный IMAP‑доступ (только веб‑интерфейс), imapcopy не применим.
- Если нужно сохранить серверные UID/интерфейсы, используйте инструменты, работающие на уровне хранилища.
- При огромных объёмах (миллионы писем) потребуется планирование ресурсов и, возможно, другой инструмент.
Короткий глоссарий
- IMAP: протокол доступа к электронной почте.
- imapcopy: утилита на Java для копирования содержимого IMAP‑ящика в другой IMAP‑ящик.
- imaps: IMAP поверх SSL/TLS.
Итог
imapcopy — простой и быстрый инструмент для одноразовой миграции почтовых ящиков между IMAP‑серверами. Перед массовой миграцией обязательно проверьте процесс на одном тестовом аккаунте, убедитесь в наличии резервных копий и продумайте откат.
Полезные ссылки
- imapcopy: http://code.google.com/p/imapcopy/
Краткая проверочная памятка для администратора
- Тест: выполните полную миграцию одного тестового ящика и проверьте сообщения/вложения.
- План: мигрируйте партиями, не нагружая сервер.
- Отслеживание: сохраняйте вывод imapcopy для последующего анализа.
Примечание: команды в примере содержат явные пароли — в реальной практике используйте защищённые способы передачи учётных данных или временные пароли и сразу их меняйте.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента