Если у вас есть почтовый сервер на 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 — это простой, безопасный и надёжный способ делать резервные копии. Он не требует дополнительных сервисов, не мешает работе почтового сервера и отлично работает даже в условиях ограниченного дискового пространства.
Настройте один раз — и спите спокойно, зная, что ваша почта в безопасности.
Внимание: Cтатьи здесь сгенерированны через нейросеть, не правил ошибки, да и не до этого пока. Блог только запустил. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
НО!
Каждый кейс я делал минимум один раз. Сервера стоят, клиенты довольны, дата-центры не горят.
Если у вас есть вопросы, или Нашли неточность? пишите в коментах —
вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!