Если у вас есть почтовый сервер на Linux (например, с Postfix и Dovecot, использующий формат Maildir), и вы хотите делать регулярные резервные копии почтовых ящиков — лучший способ это сделать — rsync по SSH. Это безопасно, эффективно и не нарушает работу почтового сервера.
В этой статье мы рассмотрим пошаговую настройку ежедневного бэкапа без использования сетевых файловых систем (NFS, Samba), без монтирования и без риска повредить "живую" почту.
new/ и cur/ всегда целые.sshd).Убедитесь, что у вас есть пользователь, от имени которого будет происходить копирование. Лучше создать отдельного пользователя без прав на запись в систему:
sudo adduser backupuser
sudo usermod -s /usr/sbin/nologin backupuser
Убедитесь, что этот пользователь имеет права на чтение почтовой директории (обычно /var/mail или /mnt/mail). Например:
sudo setfacl -R -m u:backupuser:rx /mnt/mail
Или добавьте его в группу владельца:
sudo usermod -aG mail backupuser
На сервере, который будет забирать бэкапы (например, с IP 10.11.12.113), выполните:
ssh-keygen -t ed25519 -f ~/.ssh/mail_backup -N ""
Это создаст приватный ключ ~/.ssh/mail_backup и публичный ~/.ssh/mail_backup.pub.
Скопируйте публичный ключ на почтовый сервер:
ssh-copy-id -i ~/.ssh/mail_backup.pub backupuser@внешний_IP_почтового_сервера
Если ssh-copy-id недоступен, вручную добавьте содержимое mail_backup.pub в файл /home/backupuser/.ssh/authorized_keys на почтовом сервере.
Проверьте подключение:
ssh -i ~/.ssh/mail_backup backupuser@внешний_IP_почтового_сервера
Должно подключиться без пароля.
Запустите вручную команду rsync для проверки:
rsync -avz --delete \
-e "ssh -i /home/user/.ssh/mail_backup -o StrictHostKeyChecking=yes" \
backupuser@внешний_IP_почтового_сервера:/mnt/mail/ \
/mnt/mail_backup/
Обратите внимание на слэш в конце /mnt/mail/ — он означает "содержимое папки", а не саму папку.
Флаг --delete удаляет на бэкап-сервере файлы, которые уже удалены на почтовом (опционально, но рекомендуется для экономии места).
Откройте crontab на бэкап-сервере:
crontab -e
Добавьте строку для ежедневного бэкапа в 02:00 ночи:
0 2 * * * /usr/bin/rsync -avz --delete -e "ssh -i /home/user/.ssh/mail_backup -o StrictHostKeyChecking=yes -o ConnectTimeout=30" backupuser@внешний_IP_почтового_сервера:/mnt/mail/ /mnt/mail_backup/ >> /var/log/mail_backup.log 2>&1
Разбор параметров:
-avz — архивный режим, подробный вывод, сжатие.--delete — синхронизировать удаления.-o ConnectTimeout=30 — не висеть вечно, если сервер недоступен.>> — логирование в файл.Если ваш бэкап-сервер выходит в интернет через статический внешний IP (например, IP вашего pfSense), ограничьте SSH-доступ на почтовом сервере только для этого IP.
В файле /etc/ssh/sshd_config добавьте:
AllowUsers backupuser@123.45.67.89
Или через /etc/hosts.allow:
sshd: 123.45.67.89
sshd: ALL : deny
После изменений перезапустите SSH:
sudo systemctl reload sshd
new/ и cur/ всегда целые, так как Postfix сначала пишет в tmp/, а потом атомарно перемещает в new/.tail /var/log/mail_backup.log.Синхронизация почты через rsync по SSH — это простой, безопасный и надёжный способ делать резервные копии. Он не требует дополнительных сервисов, не мешает работе почтового сервера и отлично работает даже в условиях ограниченного дискового пространства.
Настройте один раз — и спите спокойно, зная, что ваша почта в безопасности.
Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!