Задача: нужно из почтового домена на Zimbra скопировать содержимое почтового ящика в домен «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.