Иногда нужно перенести почту с одного сервера на другой — например, при смене хостинга, миграции на новый VPS или просто для резервного копирования. В этой статье я покажу, как это сделать с помощью утилиты imapsync, а также как настроить регулярную синхронизацию, чтобы резервная копия всегда оставалась свежей.
imapsync — это надёжный инструмент для переноса почты между IMAP-серверами. Он работает на уровне сообщений, сохраняет структуру папок, флаги (прочитано/непрочитано), даты и даже UID'ы (если поддерживается). Главное — оба сервера должны поддерживать IMAP.
Важно: Postfix сам по себе не хранит почту и не предоставляет IMAP. Для работы с imapsync тебе нужен IMAP-сервер, например Dovecot или Cyrus.
На большинстве Linux-систем установка проста:
sudo apt update
sudo apt install imapsync
Если в репозиториях нет — можно установить через CPAN:
cpan install Mail::IMAPClient
cpan install Term::ReadKey
wget https://github.com/imapsync/imapsync/archive/master.tar.gz
tar -xzf master.tar.gz
cd imapsync-master
make install
Пример команды для переноса почты с твоего старого сервера на Mail.ru (или любой другой IMAP-сервер):
imapsync \
--host1 old-server.com \
--user1 user@old-server.com \
--password1 'пароль_от_старого_сервера' \
--ssl1 \
--host2 imap.mail.ru \
--user2 your@mail.ru \
--password2 'пароль_приложения_mailru' \
--ssl2 \
--noauthmd5 \
--split1 100 \
--split2 100 \
--syncinternaldates
Разберём ключевые опции:
--ssl1, --ssl2 — обязательны для Mail.ru и большинства современных серверов.--noauthmd5 — Mail.ru не любит AUTH=MD5.--split1, --split2 — уменьшают размер пакетов, полезно при нестабильном соединении.--syncinternaldates — сохраняет оригинальные даты писем.Чтобы почта всегда была в актуальном состоянии на резервном сервере, запускай imapsync по расписанию через cron.
Создай скрипт /root/backup-mail.sh:
#!/bin/bash
imapsync \
--host1 old-server.com \
--user1 user@old-server.com \
--password1 'твой_пароль' \
--ssl1 \
--host2 backup-server.com \
--user2 user@backup-server.com \
--password2 'пароль_резерва' \
--ssl2 \
--noauthmd5 \
--syncinternaldates \
--useuid \
--addheader
Флаги --useuid и --addheader помогают избежать дублирования при повторных запусках.
Сделай скрипт исполняемым:
chmod +x /root/backup-mail.sh
Добавь в cron (например, каждую ночь в 2:00):
crontab -e
И вставь строку:
0 2 * * * /root/backup-mail.sh >> /var/log/mail-backup.log 2>&1
Теперь каждый день в 2 ночи будет происходить синхронизация, и в логе будет видно, что перенеслось.
Скорость переноса зависит от нескольких факторов:
В среднем, на сервере с хорошим каналом и 10 ГБ почты перенос занимает от 30 минут до 2 часов. При повторной синхронизации (бэкапе) imapsync проверяет UID и переносит только новые письма — это занимает секунды или минуты.
--port1 143 или --port1 993.чет нейросеть негенрила фигню, наверное мало ее гонял потеме ) короч в репозиториях нет imapsync потому apt get install не сработает. Ну покране мере на моей Ubuntu 24.04.3 LTS не было. Короч вот нашел официальную докумнтацию как ставить и как пользоваться.
Для установки зависимостей imapsync потребуются права root. Выполните следующую команду:
sudo apt-get 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-dns-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
Если вы хотите обновить основной Perl-модуль Mail::IMAPClient вручную, выполните:
sudo cpanm Mail::IMAPClient
После установки зависимостей вы можете использовать imapsync без прав root.
Скачайте актуальную версию напрямую с официального репозитория:
wget -N https://raw.githubusercontent.com/imapsync/imapsync/master/imapsync
chmod +x imapsync
Или с основного сайта:
wget -N https://imapsync.lamiral.info/imapsync
chmod +x imapsync
Проверьте зависимости и посмотрите пример использования:
./imapsync
Запустите тестовую синхронизацию (требуется интернет):
./imapsync --testslive
Чтобы установить imapsync системно (снова нужны права root):
sudo cp imapsync /usr/bin/
Теперь вы можете вызывать imapsync из любого места:
./imapsync \
--host1 pochta.site.ru \
--user1 user@site.ru \
--password1 'passssss$' \
--ssl1 \
--host2 imap.mail.ru \
--user2 user@site.ru \
--password2 'passssss' \
--ssl2 \
--noauthmd5 \
--split1 100 \
--split2 100 \
--syncinternaldates
Подробное руководство и примеры использования доступны в официальном учебнике для Unix.
Перенос почты — задача, которая кажется сложной, но на деле решается парой команд. imapsync — проверенный инструмент, который работает годами. А регулярная синхронизация через cron превращает его в надёжную систему резервного копирования.
Если у тебя есть свои нюансы (например, Dovecot на обеих сторонах, или нужно перенести 50 ящиков), — пиши в комментарии, разберём вместе.
Удачи в миграциях и бэкапах! 📬
Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!