Imapsync
Установка и настройка imapsync ubuntu
Перенос ( миграция )почтовых ящиков с одного сервера на другой
Установка и настройка imapsync ubuntu
Иногда встаёт вопрос о переносе почтового сервера с одного хостинга на другой ну или Вы решили перенести свои почтовые ящики например на yandex, mail, google или другие сервисы. Или на оборот решили развернуть свой почтовый сервер ( например IredMail ) Но как же быть с письмами которые уже есть в ваших ящиках и их нужно обязательно сохранить. В этом нам поможет очень полезная утилита Imapsync. Для установки нам понадобится установленный, либо на виртуальную машину или на стационарный ПК, ubuntu server
Для начало переводим пользователя в сессию под root-ом и обновим все пакеты на сервере
user@imapsync:~$ sudo -i
root@imapsync:~# apt update && apt upgrafe -y
root@imapsync:~# apt install libauthen-ntlm-perl libcgi-pm-perl libcrypt-openssl-rsa-perl libdata-uniqid-perl libencode-imaputf7-perl libfile-copy-recursive-perl libfile-tail-perl libio-socket-inet6-perl libio-socket-ssl-perl libio-tee-perl libhtml-parser-perl libjson-webtoken-perl libmail-imapclient-perl libparse-recdescent-perl libmodule-scandeps-perl libreadonly-perl libregexp-common-perl libsys-meminfo-perl libterm-readkey-perl libtest-mockobject-perl libtest-pod-perl libunicode-string-perl liburi-perl libwww-perl libtest-nowarnings-perl libtest-deep-perl libtest-warn-perl libdist-checkconflicts-perl libpar-packer-perl libtest-fatal-perl libtest-modern-perl libtest-requires-perl libtest-mock-guard-perl libproc-processtable-perl make time cpanminus git -y
root@imapsync:~# apt-get install apt-file -y
root@imapsync:~# apt-file update
Перейдем в директорию OPT
Скачиваем пакета imapsync с github
Далее переходим в директорию imapsync
Установим пакет imapsync
root@imapsync:/opt/imapsync# make
root@imapsync:/opt/imapsync# make testp
root@imapsync:/opt/imapsync# make install
На этом установка и настройка imapsync на ubuntu готово
Примет перенос одного почтового ящика
./imapsync \
–host1 imap.yandex.ru \
–user1 info@example.com \
–password1 “Pa$$word1“ \
–host2 mail.example.com \
–user2 info@example.com \
–password2 “Pa$$word1“
Но как быть если нужно перенести 10, 20 ну или 400+ ящиков
В этом нам поможет встроенный скрипт sync_loop_unix.sh. Скрипт расположен в директории /opt/imapsync/examples
Перейдем в директорию
Сам скрипт
…
echo Looping on accounts credentials found in file.txt
echo
line_counter=0
Empty the error listing
> file_failures.txt
{ while IFS=’;’ read h1 u1 p1 h2 u2 p2 extra fake
do
line_counter=`expr 1 + $line_counter`
{ echo “$h1” | tr -d ‘\r’ | egrep ‘^#|^ *$’ ; } > /dev/null && continue # thi>
echo “==== Starting imapsync with –host1 $h1 –user1 $u1 –host2 $h2 –user2>
if imapsync –host1 “$h1” –user1 “$u1” –password1 “$p1” \
–host2 “$h2” –user2 “$u2” –password2 “$p2” $extra “$@”
then
echo “success sync for line $line_counter “
else
echo “$h1;$u1;$p1;$h2;$u2;$p2;$extra;” | tee -a file_failures.txt
fi
echo “==== Ended imapsync with –host1 $h1 –user1 $u1 –host2 $h2 –user2 $u>
echo
done
} < file.txt
Углубляться в сам скрипт не буду скажу только то что он обращается к файлу file.txt который находится в этой же директории, а разделителям в тексте ставим ; (как в csv файле) далее будем редактировать этот файл.
imap.yandex.ru;info@example.com;Pa$$word1;mail.@example.com;info@example.com;Pa$$word1;–automap;–addheader;
imap.yandex.ru;admin@example.com;Pa$$word2;mail.@example.com;admin@example.com;Pa$$word2;–automap;–addheader;
imap.yandex.ru;office@example.com;Pa$$word3;mail.@example.com;office@example.com;Pa$$word3;–automap;–addheader
После того как все данные о почтовых ящиках и нужные атрибуты заполнены запускаем сам скрипт
После завершения процедуры миграции осталось только проверить все ли письма правильно перенеслись
Так же можно посмотреть логи по выполнению миграции. для каждого почтового ящика формируется свой лог файл.
Пример атрибутов
- –host1(2) доменное имя (или ip адрес) почтового сервера
- –user1(2) имя почтового ящика
- –password1(2) пароль от почтового ящика (или пароль приложения для yandex, mail, google и т.д.)
- –ssl Проверка сертификата SSL
- –automap угадывает сопоставление папок для папок, хорошо известных как “Отправленные”, “Нежелательная почта”, “Черновики”, “Все”, “Архив”, “Помеченные”.
- –addheader Когда у сообщения нет заголовков, которые нужно идентифицировать, –addheader добавляет заголовок “Message-Id”, например “Message-Id: 12345@imapsync”, где 12345 – это imap UID сообщения в папке host1. Полезно синхронизировать папки “Отправлено” или “Черновик”.
- –exclude Пропускает папки пример (–exclude ‘Spam|Trash|Draft’)
Более подробно ознакомится с атрибутами можно по ссылке