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

Author Admin Reading time 2 minutes

Синхронизация электронной почты между двумя почтовыми ящиками часто требуется при переносе домена на новый сервер, миграции компании или организации резервного копирования. В этой статье я расскажу, как автоматизировать процесс копирования почты с помощью бесплатного инструмента 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-скрипта экономит время и снижает риск ручных ошибок. Используйте представленный пример как базу и адаптируйте под свои задачи.