imapsync

  • linux
  • 0 Комментарии

Иногда встаёт вопрос о переносе почтового сервера с одного хостинга на другой ну или Вы решили перенести свои почтовые ящики например на yandex, mail, google или другие сервисы. Или на оборот решили развернуть свой почтовый сервер ( например IredMail ) Но как же быть с письмами которые уже есть в ваших ящиках и их нужно обязательно сохранить. В этом нам поможет очень полезная утилита Imapsync. Для установки нам понадобится установленный, либо на виртуальную машину или на стационарный ПК, ubuntu server

Для начало переводим пользователя в сессию под root-ом и обновим все пакеты на сервере

user@imapsync:~$ sudo -i

root@imapsync:~# apt update && apt upgrafe -y

Установим необходимые зависимости для утилиты imapsync

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

root@imapsync:~# cd /opt

Скачиваем пакета imapsync с github

root@imapsync:/opt# git clone https://github.com/imapsync/imapsync.git

Далее переходим в директорию imapsync

root@imapsync:/opt# cd 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

Перейдем в директорию 

root@imapsync:/opt/imapsync# cd examples
Сам скрипт
root@imapsync:/opt/imapsync/examples# nano sync_loop_unix.sh

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 файле) далее будем редактировать этот файл.

root@imapsync:/opt/imapsync/examples# nano file.txt

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

После того как все данные о почтовых ящиках и нужные атрибуты заполнены запускаем сам скрипт

root@imapsync:/opt/imapsync/examples# ./sync_loop_unix.sh

imapsync-2 imapsync

После завершения процедуры миграции осталось только проверить все ли письма правильно перенеслись

Так же можно посмотреть логи по выполнению миграции. для каждого почтового ящика формируется свой лог файл.

root@imapsync:/opt/imapsync/examples# ls LOG_imapsync

Пример атрибутов

  • —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’)

Более подробно ознакомится с атрибутами можно по ссылке

Share this content:

  • Related Posts

    NextCloud

    Nextcloud это open source программа, с помощью которой можно организовать собственное облачное хранилище. Это почти как Dropbox, Яндекс Диск или iCloud, но с возможностью контролировать место и условия хранения ваших файлов. Также можно в Nextcloud можно интегрировать различные офисные программы такие как callabora или onlyoffice. Есть свой встроенный мессенджер Talk и многое другое.

    Nginx Proxy Manager

     Nginx Proxy Manager — это мощный инструмент для управления веб-прокси. Он может выступать в качестве обратного прокси-сервера для пересылки запросов к вашим внутренним веб-службам. Другими словами, вы можете разместить несколько веб-сайтов всего с 1 IP-адресом

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *