Imapsync

Imapsync

Imapsync — это утилита для переноса писем и метаданных (флаги, даты) между двумя IMAP-серверами. Она поддерживает инкрементальную синхронизацию, рекурсивное копирование папок и дедупликацию сообщений. Инструмент полезен для миграции почтовых ящиков между провайдерами, резервного копирования и переноса данных на новый сервер.

Установка в разные дистрибутивы Linux

Debian/Ubuntu

Установите зависимости:

sudo apt update && apt upgrade && apt install \
libauthen-ntlm-perl \
libclass-load-perl \
libcrypt-openssl-rsa-perl \
libcrypt-ssleay-perl \
libdata-uniqid-perl \
libdigest-hmac-perl \
libdist-checkconflicts-perl \
libencode-imaputf7-perl \
libfile-copy-recursive-perl \
libfile-tail-perl \
libio-compress-perl \
libio-socket-inet6-perl \
libio-socket-ssl-perl \
libio-tee-perl \
libjson-webtoken-perl \
libmail-imapclient-perl \
libmodule-scandeps-perl \
libnet-dbus-perl \
libnet-ssleay-perl \
libpar-packer-perl \
libproc-processtable-perl \
libreadonly-perl \
libregexp-common-perl \
libsys-meminfo-perl \
libterm-readkey-perl \
libtest-fatal-perl \
libtest-mock-guard-perl \
libtest-mockobject-perl \
libtest-pod-perl \
libtest-requires-perl \
libtest-simple-perl \
libunicode-string-perl \
liburi-perl \
libtest-nowarnings-perl \
libtest-deep-perl \
libtest-warn-perl \
make \
time \
cpanminus

Скачайте и установите Imapsync:

wget -N https://raw.githubusercontent.com/imapsync/imapsync/master/imapsync
chmod +x imapsync
mv imapsync /usr/bin/

Для проверки версии выполните imapsync -v

CentOS/RHEL/Fedora

Добавьте репозиторий EPEL:

sudo yum install epel-release

Установите Imapsync:

sudo yum install imapsync 

В CentOS 8 можно использовать dnf вместо yum

Arch Linux

Установите пакет через pacman:

sudo pacman -S imapsync

Пакет доступен в репозитории extra.

Примеры использования

Базовый синтаксис для переноса писем:

imapsync \
  --host1 imap.source.example.com \
  --user1 user@example.com \
  --password1 "SourcePassw0rd" \
  --ssl1 \
  --host2 imap.dest.example.com \
  --user2 user@example.com \
  --password2 "Dest1nat10NPassw0rd" \
  --ssl2

Параметры с индексом 1 относятся к исходному серверу (host1, user1, password1), с индексом 2 — к целевому (host2, user2, password2). 

Некоторые опции:

  • --exclude 'регулярное_выражение' — исключение папок из синхронизации. Например, --exclude 'Spam|Trash' пропустит папки «Спам» и «Корзина».
  • --f1f2 Outbox=Sent — явно указывает соответствие папок: содержимое папки Outbox на исходном сервере будет помещено в папку Sent на целевом.
  • --maxage 365 — перенос писем не старше 365 дней.
  • --minage 365 — перенос писем старше 1 года.
  • --delete1 — удаление сообщений с исходного сервера после успешной копии на целевой. Опция подразумевает --expunge1, то есть удаление помеченных как удалённые сообщений.
  • --useheader 'Message-Id' --useheader 'Date' --useheader 'Subject' — более строгая дедупликация по указанным заголовкам.

Проверка конфигурации без переноса данных:

imapsync --justconnect

Эта команда подключится к обоим серверам и выведет информацию о них. 

Тестирование с реальными серверами:

imapsync --testslive

Выполнит синхронизацию между тестовыми ящиками на сервере test.lamiral.info

Важные замечания

  • Imapsync не поддерживает локальное резервное копирование или двустороннюю синхронизацию (для этого подойдут offlineimap или mbsync). 
  • Утилита не работает с групповыми функциями (календари, контакты, задачи). 
  • При использовании самоподписанных сертификатов может потребоваться их добавление в доверенные на сервере. 
  • Для Gmail при миграции может понадобиться создать «пароль приложения» вместо обычного пароля аккаунта.

Подробнее о возможностях и опциях Imapsync можно узнать в официальной документации на сайте проекта.