Установка для Debian они выглядят следующим образом:
Код: Выделить всё
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 \
libproc-processtable-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 \
make \
time \
cpanminus
Код: Выделить всё
cd /usr/local/bin
wget -N https://raw.githubusercontent.com/imapsync/imapsync/master/imapsync
Код: Выделить всё
chmod +x imapsync
Использование утилиты достаточно просто. Но, прежде всего, стоит ознакомиться с терминологией: сервер-источник именуется как host1, сервер-приемник - host2 и все опции с индексом 1 относятся к источнику, а с индексом 2 - к приемнику, например, user1 или password2.
В простейшем случае перенос ящика будет выглядеть так:
Код: Выделить всё
./imapsync --host1 imap.yandex.ru --user1 user@mydomain.ru --password1 "Password1" --host2 imap.mail.ru --user2 user2@mail.ru --password2 "Pa$Sword2"
Для исключения следует использовать опцию --exclude, которая поддерживает регулярные выражения. Скажем, уберем из синхронизации папку Спам и Корзину:
Код: Выделить всё
--exclude 'Spam|Trash'
Код: Выделить всё
--f1f2 Outbox=Sent
Еще одной полезной опцией является указание возраста писем, допустим мы хотим перенести корреспонденцию только за текущий год, не проблема, указываем:
Код: Выделить всё
--maxage 365
А что делать с остальными? А можно перенести их в другой, архивный ящик, в этом нам поможет другая опция:
Код: Выделить всё
--minage 365
Также эти опции можно комбинировать, они сочетаются по принципу И:
Код: Выделить всё
--maxage 730 --minage 365
А если указать наоборот?
Код: Выделить всё
--maxage 365 --minage 730
Подобных опций достаточно много и все они перечислены в документации, поэтому советуем подробно с ней ознакомиться. Там же имеются готовые советы и рецепты для многих публичных служб и почтовых серверов.
С синтаксисом немного разобрались, но как быть, если ящиков много? Конечно же автоматизировать, для этого в официальной документации приведен пример скрипта:
Код: Выделить всё
#!/bin/sh
{ while IFS=';' read h1 u1 p1 h2 u2 p2 fake
do
imapsync --host1 "$h1" --user1 "$u1" --password1 "$p1" \
--host2 "$h2" --user2 "$u2" --password2 "$p2" "$@"
done
} < file.txt
Код: Выделить всё
host1;user1_1;password11_1;host2;user2_1;password2_1;
host1;user1_2;password11_2;host2;user2_2;password2_2;
host1;user1_3;password11_3;host2;user2_3;password2_3;
host1;user1_4;password11_4;host2;user2_4;password2_4;