Содержание
Резервное копирование почтового сервера на базе данных PostgreSQL
1. Создаем директорию для резервной копии
Директория может быть любой. Путь /mnt/backup-mail будет рассмотрен далее при инсталляции.
mkdir /mnt/backup
2. Создание бэкапа БД
Создадим файл backup_file.sql (дамп базы данных):
cd /mnt sudo -u postgres pg_dump -U postgres -d postfix -F c -c -f /var/lib/postgresql/backup.sql mv /var/lib/postgresql/backup.sql /mnt/backup/backup.sql
3. Архивируем конфигурационные файлы и БД
В зависимости от типа ОС, будет сохранен только один конфигурационный файл SpamAssassin:
- /etc/spamassassin/local.cf— для deb дистрибутивов;
- /etc/mail/spamassassin/local.cf— для rpm дистрибутивов.
tar czvf /mnt/backup/backup-mail.tar.gz --selinux /etc/postfix/main.cf /etc/postfix/master.cf /etc/postfix/tls_policy_maps /etc/postfix/mysql/ /etc/dovecot/ /etc/ssl/mail_cert.pem /etc/ssl/mail_key.pem /etc/spamassassin/local.cf /etc/mail/spamassassin/local.cf /etc/opendkim /mail/ /mnt/backup/backup.sql
4. Переносим архив на бэкапный или новый сервер почты
Для переноса архива backup-mail.tar.gz на новый сервер c использованием SSH, вы можете к примеру воспользоваться командой scp (Secure Copy):
scp backup-mail.tar.gz user@ip_new_server:/path/to/destination/
Где:
- backup-mail.tar.gz— имя архива;
- user— имя пользователя на сервере- ip_new_server;
- /path/to/destination/— путь к целевой директории на сервере, куда вы хотите скопировать архив.
Вам будет предложено ввести пароль пользователя на сервере ip_new_server для завершения операции копирования. Убедитесь, что у вас есть права доступа и правильные учетные данные пользователя для выполнения команды scp.
Также для ежедневного резервного копирования БД можно использовать следующий подход
Создайте скрипт для выполнения резервного копирования БД.
Для этого нужно создать файл с расширением .sh, например, backup_db.sh:
vi backup_db.sh
И добавить в него следующее содержимое, где DB_PASS= пароль от базы данных:
#!/bin/bash
Задаём переменные для подключения к базе данных
DB_USER="root"
DB_PASS="password"
DB_NAME="postfix"
Определите путь и имя файла для сохранения дампа БД
BACKUP_DIR="/tmp"
DB_DUMP_FILE="${BACKUP_DIR}/postfix.sql"
Создаём дамп БД
mysqldump -u ${DB_USER} -p${DB_PASS} ${DB_NAME} > ${DB_DUMP_FILE}Сохраните скрипт и убедитесь, что он имеет права на выполнение:
chmod +x backup_db.sh
Добавьте выполнение скрипта в ежедневный планировщик (cron).
Для этого откройте файл /etc/cron.daily/backup_db для редактирования:
vi /etc/cron.daily/backup_db
Добавьте следующую строку, чтобы запланировать выполнение резервного копирования каждый день:
#!/bin/bash /path/to/your/backup_db.sh
Замените /path/to/your/backup_db.sh на полный путь к вашему скрипту backup_db.sh, который вы создали в первом шаге.
Сохраните файл и убедитесь, что он имеет права на выполнение:
chmod +x /etc/cron.daily/backup_db
Теперь резервное копирование БД будет выполняться ежедневно автоматически.
Восстановлению почтового сервера из резервной копии на базе данных PostgreSQL
1. Выполните установку почтового сервера, согласно инструкции
https://nct.r7-office.ru/doc.html?uid=342bcfa8-c3df-4d6c-b6aa-029f039477b6_433625 https://nct.r7-office.ru/doc.html?uid=08b87968-26a5-433a-8748-85d102d46b48_427489 https://nct.r7-office.ru/doc.html?uid=d88010f2-5254-441d-a57d-5e87aa6acff8_426816 https://nct.r7-office.ru/doc.html?uid=22b69614-87d1-4fc1-a42f-32e56c81b975_426817
2. Распакуйте архив с бэкапом
Произведите распаковку архива из директории куда он был загружен:
tar xzvf backup-mail.tar.gz --selinux -C /
3. Восстановите базу данных
Обновите базу до состояния выгрузки:
sudo -u postgres pg_restore -v -d postfix -c -j 1 -F c /mnt/backup/backup.sql
4. Произведите перезагрузку сервисов
sudo systemctl restart opendkim sudo systemctl restart spamassassin sudo systemctl restart postgresql sudo systemctl restart dovecot sudo systemctl restart postfix

