Миграция IMAP ящика с одного домена на другой

Posted by

Задача: нужно из почтового домена на скопировать содержимое почтового ящика в домен «Yandex-почта для домена», Т.е. в моем случае компания решила, что ей текущий домен не подходит и она хочет быть на другой, чтобы новые ящики именовались, как: alektest@creative-impulse.ru, а не alektest@ekzorchik.ru. Пути решения такой задачи я по началу видел следующие, просто на рабочем месте где у пользователя стоит почтовый клиент Thunderbird подключить второй почтовый ящик нового домена и простым копирование с выделением («Выделить все») копировать по одному каталогу из основной почты в новую. Да это долгая процедура и зависит от размера почты, но все же это ручной способ и долгий с отрывом пользователя от работы, т. к. в это время он работать с почтой не может, ведь он может нечаянно прервать процесс. Да и к тому же компьютер начинает тормозить. Что в итоге я решил пойти другим путем, т. к. этим я уже ходил когда переводил всю компанию с Exim+DBmail+spamassasin+clamav и ящики работали только через POP3 на Zimbra (IMAP) дабы сохранить всю корреспонденцию. Но сейчас задача другого рода, а потому я хочу ее разобрать для дальнейших мест работы, т. е. Составить пошаговую заметку.

В качестве рабочего инструмента выступит пакет imapcopy, только как показала документация он не может работать с ящиками которые работают через SSL/TLS, т. е. Подключение происходит на порт 993 (Шифрование), в следствии этого нужно будет в системе поднять локальный прокси именуемый, как stunnel который будет переводить подключение с зашифрованного подключения на не зашифрованное.

Устанавливаю stunnel в систему:

ekzorchik@srv-host:~$ sudo apt-get install stunnel openssl -y

ekzorchik@srv-host:~$ sudo nano /etc/default/stunnel4

ENABLED=1

ekzorchik@srv-host:~$ openssl req -new -out stunnel.pem -keyout stunnel.pem -nodes -x509 -days 3650

Common Name (e.g. server FQDN or YOUR name) []:10.7.8.147

ekzorchik@srv-host:~$ sudo mv ~/stunnel.pem /etc/ssl/certs/

ekzorchik@srv-host:~$ sudo nano /etc/stunnel/stunnel1.conf

cert = /etc/ssl/certs/stunnel.pem

sslVersion = all

client = yes

debug = 7

output = /var/log/stunnel4/stunnel.log

[imap1] accept = 10.7.8.147:1430

connect = 10.7.8.240:143

retry = yes

[imap2] accept = 10.7.8.147:1431

connect = imap.yandex.ru:143

retry = yes

ekzorchik@srv-host:~$ sudo service stunnel4 start

Starting SSL tunnels: [Started: /etc/stunnel/stunnel1.conf] stunnel.

ekzorchik@srv-host:~$ sudo netstat -tulpn | grep stunnel

tcp 0 0 10.7.8.147:1430 0.0.0.0:* LISTEN 1957/stunnel4

tcp 0 0 10.7.8.147:1431 0.0.0.0:* LISTEN 1957/stunnel4

Устанавливаю утилиту imapcopy в задачи которой будет копирование содержимого одного почтового ящика домена на другой почтовый ящик домена:

ekzorchik@srv-host:~$ apt-cache search imapsync

imapcopy — IMAP backup, copy and migration tool

ekzorchik@srv-host:~$ sudo apt-get install imapcopy -y

ekzorchik@srv-host:~$ sudo find / -name ImapCopy.cfg

/usr/share/doc/imapcopy/examples/ImapCopy.cfg

ekzorchik@srv-host:~$ sudo cp /usr/share/doc/imapcopy/examples/ImapCopy.cfg ~/

Создаю конфигурационный файл на основе данных взаимодействия утилиты stunnel при работе с различными доменами почтовых серверов:

ekzorchik@srv-host:~$ sudo nano ImapCopy.cfg

SourceServer 127.0.0.1

SourcePort 1430

DestServer 127.0.0.1

DestPort 1431

copyfolder INBOX

Copy «alektest@ekzorchik.ru» «Aa1234567» «alektest@creative-impulse.ru» «Aa1234567»

ekzorchik@srv-host:~$ whereis imapcopy

imapcopy: /usr/bin/imapcopy /usr/share/man/man1/imapcopy.1.gz

ekzorchik@srv-host:~$ cp /usr/bin/imapcopy ~/

-l → записывать результаты работы в файле imapcopy.log

ekzorchik@srv-host:~$ ./imapcopy ImapCopy.cfg -l imapcopy.log

На заметку: если в выводе присутствуют ошибки в копировании каталогов, то их нужно будет указать в конфигурационном файле ImapCopy.cfg, у меня так было, все копировалось кроме каталога «Входящие» (INBOX), а потому пришлось его указать.

Login on sourceserver as alektest@ekzorchik.ru OK

Login on destinationserver as alektest@creative-impulse.ru OK

Getting folderlist on sourceserver OK, found 8 folder

Getting List of messages in «INBOX» OK, 137 Messages found

Processing Folder INBOX

137 Messages copied, 0 Errors (INBOX -> INBOX)

1 User processed, 137 Messages copied, 0 Error(s)

0 Folder(s) created, 0 Folder create errors, 0 Folder not copied

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

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