Инструкция по переносу корпоративной почты
ИТ-поддержка

Почтовый переезд средствами IMAP

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

  • Смена платформы для корпоративного почтового сервера.
  • Смена провайдера, предоставляющего почтовый сервис.
  • Увольнение сотрудника и перенос его писем другому ответственному.

Безусловно, можно вручную переслать необходимые письма, можно скопировать письма локально при помощи почтового клиента, а затем скопировать их в новый ящик. Но что делать, если планируется переезд десятков или сотен почтовых ящиков? В таком случае нам поможет утилита IMAPCopy.

Эта небольшая утилита командной строки позволяет копировать сообщения для нескольких почтовых аккаунтов с одного IMAP-сервера на другой. К сожалению, утилита умеет работать только с протоколом IMAP: работа с IMAP over SSL/TLS ей недоступна. Для решения этой задачи воспользуемся утилитой Stunnel.

Теперь, на примере переезда с Яндекс.Почты на Gmail, рассмотрим, как это работает. Загружаем IMAPCopy тут и распаковываем. Для пользователей Linux утилиты IMAPCopy и Stunnel добавлены в репозитории многих популярных дистрибутивов. Качаем тут и устанавливаем Stunnel. В процессе установки будет сгенерирован самоподписанный сертификат – вводим данные для его генерации. На финальной стадии установки устанавливаем чек-бокс для запуска Stunnel по завершении инсталляции. Stunnel запущен – его значок отображается в области системных уведомлений (Tray).

Щелкаем правой кнопкой мыши по его значку и выбираем «Edit Configuration». Как мы видим, в конфигурации, для примера, уже прописаны настройки туннелей для серверов POP3, IMAP и SMTP для Gmail:

; ***************************************** Example TLS client mode services
[gmail-pop3]
client = yes
accept = 127.0.0.1:110
connect = pop.gmail.com:995
verifyChain = yes

CAfile = ca-certs.pem
checkHost = pop.gmail.com
OCSPaia = yes

[gmail-imap]
client = yes
accept = 127.0.0.1:143
connect = imap.gmail.com:993
verifyChain = yes
CAfile = ca-certs.pem
checkHost = imap.gmail.com
OCSPaia = yes

[gmail-smtp]
client = yes
accept = 127.0.0.1:25
connect = smtp.gmail.com:465
verifyChain = yes
CAfile = ca-certs.pem
checkHost = smtp.gmail.com
OCSPaia = yes

Удаляем настройки для POP3 и SMTP за ненадобностью и по аналогии добавляем настройку для IMAP-сервера Яндекса. Получаем конфиг:

[gmail-imap]
client = yes
accept = 127.0.0.1:143
connect = imap.gmail.com:993
verifyChain = yes
CAfile = ca-certs.pem
checkHost = imap.gmail.com
OCSPaia = yes

[ya-imap]
client = yes
accept = 127.0.0.1:1143
connect = imap.yandex.ru:993
verifyChain = yes
CAfile = ca-certs.pem
checkHost = imap.yandex.ru
OCSPaia = yes

Сохраняем, закрываем, правой кнопкой мыши по значку: «Reload Configuration». Все – пол дела сделали: теперь у нас есть SSL/TLS туннели к IMAP-серверам Яндекса и Гугла. Не верите? Проверьте:

D:\>telnet localhost 143
D:\>telnet localhost 1143

Теперь настроим конфигурацию утилиты IMAPCopy – файл ImapCopy.cfg. Открыв файл, мы увидим, что все пункты настроек хорошо прокомментированы и снабжены примерами. У утилиты есть широкие возможности отладки, возможность работать с отдельными папками, флагами и даже конвертировать время. Нам это не нужно – у нас глобальный переезд, поэтому нас интересуют пункты: Sourceserver, Destinationserver и List of users and passwords.

Исходный сервер у нас Яндекс.Почта:

##############
# Sourceserver
##############
SourceServer localhost
SourcePort 1143

Сервер назначения – Gmail:

###################
# Destinationserver
###################
DestServer localhost
DestPort 143

Указываем учетные данные исходных аккаунтов и аккаунтов назначений:

#############################
# List of users and passwords
#############################
#       SourceUser    SourcePassword        DestinationUser DestinationPassword
Copy    "petrov"      "parol_petrov_ya"     "petrov"        "parol_petrov_G"
Copy    "ivanov"      "parol_ivanov_ya"     "ivanov"        "parol_ivanov_G"
Copy    "vasechkina"  "parol_vasechkina_ya" "uliyanova"     "parol_uliyanova_G"

Сохраняем, закрываем, тестируем подключение:

d:\>imapcopy -t

Подключение происходит без проблем, значит можно запускать утилиту на копирование. Так же включим запись журнала операций в файл (imapcopy.log), чтобы можно было спокойно разобраться в случае возникновения ошибок:

d:\>imapcopy -l

Все прошло успешно – утилита отработала и выдала итог: обработано такое-то количество пользователей, скопировано количество писем, ошибок нет.

  • Р’С‹ уже пробовали РўРђРљ переносить ящики? Нет ли искажений РІ РєРѕРґРёСЂРѕРІРєРµ, утери писем или нарушению РёС… целостности?
  • Добрый день. Да, пробовали. Всегда бывают осложнения при внедрении нового почтового сервера. Но всегда с ними справляемся без потерь для клиентов.
  • Р’Рѕ-первых, РіРґРµ должна запускаться утилита? РќР° РЅРѕРІРѕРј почтовике, РЅР° старом, или РЅР° РєРѕРјРїРµ каком то? Р’Рѕ вторых - сохраняется ли структура цепочки писем Рё РёС… хронология?
  • Леня, спасибо за Ваш комментарий к данной статье, нам приятно, что наши ресурсы кому-то полезны. Как вы заметили в статье, утилита запускается на клиенте для переноса между двумя серверами, а утилита Stunnel Как раз строит "виртуальный туннель" ресурсам двух серверов - gmail и Yandex. Хронология конечно сохраняется, а вот цепочка, думаю, что нет, поскольку цепочки - это особенности отражения писем в конкретном клиенте, а не определенная характеристика писем, которые переносятся.
Обратный звонок RedConnect