Как синхронизировать почту между почтовыми ящиками с помощью bash-скрипта и imapsync

Синхронизация электронной почты между двумя почтовыми ящиками часто требуется при переносе домена на новый сервер, миграции компании или организации резервного копирования. В этой статье я расскажу, как автоматизировать процесс копирования почты с помощью бесплатного инструмента imapsync и простого bash-скрипта.
Почему стоит выбрать imapsync для синхронизации почты
imapsync — одна из самых популярных утилит для копирования писем между IMAP-серверами. Она поддерживает широкий спектр настроек: можно выбрать, какие папки копировать, задать фильтры по дате, размеру или исключать определённые письма и папки.
Автоматизация через bash-скрипт
Пример ниже — полностью готовый скрипт, который умеет читать список пользователей и их пароли из csv-файла и выполнять синхронизацию по каждому из них.
#!/bin/bash # Скрипт для синхронизации почты между двумя IMAP серверами с помощью imapsync # Путь к файлу со списком аккаунтов csv_file="users.csv" # Проверка наличия csv-файла if [[ ! -f "$csv_file" ]]; then echo "Файл $csv_file не найден!" exit 1 fi # Чтение параметров из файла, запуск синхронизации для каждого пользователя while IFS=',' read -r user1 password1 password2 user2; do echo "Синхронизация для $user1 -> $user2" imapsync \ --host1 imap.example1.com --user1 "$user1" --password1 "$password1" \ --host2 imap.example2.com --user2 "$user2" --password2 "$password2" \ --ssl1 --ssl2 \ --automap \ --nofoldersizes \ --syncinternaldates \ --fastio1 --fastio2 \ --folder INBOX \ --search "SINCE 01-Jan-2024" \ --exclude "Drafts" \ --exclude "Trash" \ --useuid \ --usecache \ --maxsize 20971520 echo "Синхронизация для $user1 завершена." done < "$csv_file"
Как подготовить CSV-файл со списком пользователей
Для корректной работы скрипта подготовьте файл users.csv следующего вида:
user1@example1.com,password1,password2,user2@example2.com user3@example1.com,password3,password4,user4@example2.com
Здесь user1 и user2 — имена пользователей, между которыми выполняется синхронизация, а password1 и password2 — их пароли.
Настройки imapsync, используемые в скрипте
- --automap — автоматически сопоставляет стандартные IMAP папки (INBOX, Sent и др.)
- --search "SINCE 01-Jan-2024" — копирует только почту, полученную после определённой даты
- --exclude "Drafts" и --exclude "Trash" — исключает папки Черновики и Корзина
- --maxsize 20971520 — копирует только письма размером до 20 Мб
- --usecache — ускоряет повторные синхронизации и снижает нагрузку
Советы и рекомендации
- Перед массовой синхронизацией сделайте тест для одного пользователя.
- Не храните пароли открытым текстом дольше, чем нужно.
- Имейте резервную копию исходного почтового сервера.
- Запускайте скрипт из консоли или настройте регулярное выполнение через cron.
Заключение
Автоматизация миграции почты с помощью imapsync и bash-скрипта экономит время и снижает риск ручных ошибок. Используйте представленный пример как базу и адаптируйте под свои задачи.