Тематические термины: iRedMail.
В статье будет рассказано об использовании резервных копий почтовой системы iRedMail как для восстановления, так и переноса на новый сервер.
Официальная документация на английском языке по резервированию iRedMail и его восстановлению доступна по пути docs.iredmail.org/backup.restore.html.
Для данной системы есть две возможности создания копий — автоматическая и ручная.
По умолчанию, при установке iRedMail в планировщик cron добавляются задания по созданию резервных копий баз данных — это может быть MySQL, SOGo, ldap (зависит от выбора во время установки).
Пример заданий в cron:
30 3 * * * /bin/bash /var/vmail/backup/backup_mysql.sh
1 4 * * * /bin/bash /var/vmail/backup/backup_sogo.sh
* в данных примерах система создает резервные копии для базы данных MySQL/MariaDB и базы SOGo.
По умолчанию, копии помещаются в каталог /var/vmail/backup.
Главным минусом является то, что копии создаются на том же сервере, где находится почта. При его выходе из строя мы не только потеряем сервис, но и резервные копии. Поэтому, хорошей идеей будет копирование бэкапов на внешний носитель или другой сервер.
Также, копии создаются только для баз данных, но сама почта (по умолчанию, находится в каталоге /var/vmail/vmail1) не резервируется, что является проблемой, поскольку именно она и является главной ценностью.
И так, автоматическое резервное копирование подходит только для создания копий баз, которые мы должны переносить на внешний носитель.
Для ручного запуска создания копий баз мы можем выполнить задание из cron, например:
/bin/bash /var/vmail/backup/backup_mysql.sh
* путь до bash может быть другим — проверить можно командой which bash.
Резервные копии баз данных находятся в каталоге /var/vmail/backup. Они содержат архивы для всех баз, которые отвечают за работу сервиса. Для копирования бэкапов, можно воспользоваться одной из следующих команд:
mv /var/vmail/backup/mysql/2018/04/21/* /mnt/backup/
* в данном примере, мы копируем резервную копию баз mysql за 21 апреля 2018 года в каталог backup носителя, который был примонтирован в каталог /mnt.
scp /var/vmail/backup/mysql/2018/04/21/* [email protected]:/backup
* в данном случае мы копируем тот же бэкап, но на другой компьютер сети.
По умолчанию, каталог для хранения переписки — /var/vmail/vmail1. Чтобы создать копию, достаточно скопировать его содержимое.
Это можно сделать, например, следующей командой:
cp -R /var/vmail/vmail1/* /mnt/backup/
Также, можно создать сжатый архив для экономии дискового пространства:
tar -czvf /mnt/backup/vmail.tar.gz /var/vmail/vmail1
* в этом примере мы создадим архив vmail.tar.gz для каталога с почтой.
Пример скрипта для создания архива:
#!/bin/bashPATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin destination=»/backup/archive»fdate=`date +%Y-%m-%d`
tar -czf $destination/vmail_$fdate.tar.gz /var/vmail/vmail1
* данный скрипт делает архив почты в каталоге /backup/archive, добавляя метку даты. Для его автоматического запуска мы можем создать задание в cron на еженедельное или ежемесячное выполнение.
Резервная копия для ldap выполняется ежедневно, но если нужно сделать копию вручную, запускаем скрипт:
/bin/bash /var/vmail/backup/backup_openldap.sh
Резервные копии попадают в каталог /var/vmail/backup/ldap/<год>/<месяц>/
Также, как и для базы данных, архивы можно копировать на другой сервер в сети или внешний диск:
scp /var/vmail/backup/ldap/2019/02/* [email protected]:/backup
* в данном примере, мы копируем копии за февраль на сервер с IP-адресом 192.168.0.17, в каталог /backup.
Процесс копирования резервных копий можно автоматизировать при помощи скриптов с применением rsync.
Пример команды, которая возволит поддерживать почтовые сообщения в актуальном состоянии:
rsync -a /var/vmail/vmail1/ /backup/rsync_vmail/
* данная команда синхронизирует каталог /var/vmail/vmail1 с каталогом /backup/rsync_vmail.
Подробнее о настройке rsync для автоматического копирования читайте в статье Настройка и использование Rsync Server.
В случае восстановления данных на рабочем сервере, никаких дополнительных действий не потребуется — можно переходить к следующему шагу.
В случае переноса сервера или его полной переустановки, необходимо сначала выполнить установку iRedMail, желательно, той же версии и на ту же операционную систему. Для этого можно воспользоваться инструкциями Установка и настройка iRedMail на CentOS 7 или Почтовый сервер iRedMail на Ubuntu. После установки можно сразу переходить к восстановлению.
Перед началом восстановления, переносим резервные копии на новый сервер.
Нам необходимо восстановить несколько баз — содержимое /var/vmail/backup/mysql/. В моем случае было:
Если мы переносим нашу почтовую систему на новый сервер, базу mysql восстанавливать не нужно.
Архивы баз находятся в сжатом виде. Первым делом, распаковываем их:
bzip2 -d amavisd-*.sql.bz2
bzip2 -d iredadmin-*.sql.bz2
bzip2 -d iredapd-*.sql.bz2
bzip2 -d mysql-*.sql.bz2
bzip2 -d roundcubemail-*.sql.bz2
bzip2 -d vmail-*.sql.bz2
* если система вернула ошибку и не распаковала архив, необходимо установить пакет bzip2.
Теперь можно восстановить базы:
mysql -v -u root -p amavisd < amavisd-*.sql
mysql -v -u root -p iredadmin < iredadmin-*.sql
mysql -v -u root -p iredapd < iredapd-*.sql
mysql -v -u root -p mysql < mysql-*.sql
* напомним еще раз, базу mysql восстанавливать не нужно, если мы перенесли почту на новый сервер.
mysql -v -u root -p roundcubemail < roundcubemail-*.sql
mysql -v -u root -p vmail < vmail-*.sql
Копируем данные в каталог /var/vmail/vmail1 (в случае, если мы не выбрали другой при установке).
Если мы создавали архив, то сначала распакуем его, например:
tar -xvf vmail.tar.gz
и переносим распакованное содержимое в каталог хранения почты (по умолчанию, /var/vmail/vmail1):
mv /tmp/var/vmail/vmail1/* /var/vmail/vmail1/
* в моем случае, распакованный архив находился в каталоге /tmp/var/vmail/vmail1; каталог для хранения почты — /var/vmail/vmail1.
На новом сервере заходим в каталог с дистрибутивом, который использовался для установки iRedMail. Открываем файл iRedMail.tips, например:
vi /tmp/iRedMail-0.9.8/iRedMail.tips
Находим пароли для учетных записей cn=vmail,dc=xx,dc=xx и cn=vmailadmin,dc=xx,dc=xx в строках:
OpenLDAP: … * LDAP bind dn (read-only): cn=vmail,dc=example,dc=com, password: rzeuzCPZN5dlHiyWEt9g6GWL5Jo6S9 * LDAP admin dn (used for iRedAdmin): cn=vmailadmin,dc=example,dc=com, password: FQ6Pk3hCKxL1dKv047NM0aJPEGanOv
* в данном примере, записываем пароли rzeuzCPZN5dlHiyWEt9g6GWL5Jo6S9 и FQ6Pk3hCKxL1dKv047NM0aJPEGanOv.
Используя данные пароли и получаем на них хэш:
slappasswd -h ‘{ssha}’ -s ‘rzeuzCPZN5dlHiyWEt9g6GWL5Jo6S9’
slappasswd -h ‘{ssha}’ -s ‘FQ6Pk3hCKxL1dKv047NM0aJPEGanOv’
В ответ мы получаем что-то подобное:
{SSHA}3rs/fqNZpKaWytqaQVE8AKltriyd1BsW
{SSHA}20vytDcG0NsSE8twwI/ldWW1+YCIi+xW
Теперь распаковываем архив с ldap:
bzip2 -d /tmp/2019-02-09-03-00-01.ldif.bz2
* в данном примере мы распаковываем архив из каталога /tmp.
Открываем распакованный ldif файл:
vi /tmp/2019-02-09-03-00-01.ldif
Находим учетные записи cn=vmail и cn=vmailadmin и строки их паролей, например:
dn: cn=vmail,dc=iredmail,dc=org…userPassword:: e1NTSEF9dVFnWENnWWkrWDMzMmJSNVJlazN0YjR5NllBRW9tN3hnZ1VTa0E9PQ==…dn: cn=vmailadmin,dc=iredmail,dc=orguserPassword:: e1NTSEF9eFhsWjd6MHRlQzYxRFc5QklJSStFNXBZU0YyTHIwVnh2UTNIRWc9PQ==…
… и меняем на такие строки:
dn: cn=vmail,dc=iredmail,dc=org…userPassword: {SSHA}3rs/fqNZpKaWytqaQVE8AKltriyd1BsW…dn: cn=vmailadmin,dc=iredmail,dc=orguserPassword: {SSHA}20vytDcG0NsSE8twwI/ldWW1+YCIi+xW…
* обратите внимание, что, во-первых, мы заменили пароли на наши хеши. Во-вторых, после userPassword мы убрали один знак двоеточия.
Останавливаем службу для ldap:
systemctl stop slapd
Переходим в каталог хранения данных ldap:
cd /var/lib/ldap/<домен>/
Если в нем есть файл DB_CONFIG, переносим его, остальное удаляем:
mv DB_CONFIG /tmp
rm -rf ./*
После возвращаем DB_CONFIG:
mv /tmp/DB_CONFIG ./
Снова запускаем сервис ldap:
systemctl start slapd
В каталоге с данными для ldap появятся файлы. Снова останавливаем сервис slapd:
Теперь восстанавливаем данные:
slapadd -f /etc/openldap/slapd.conf -l /tmp/2019-02-09-03-00-01.ldif
Запускаем ldap и проверяем, что он запустился:
systemctl status slapd
Желательно, восстановить настройки системы, так как некоторые из них критичные для работы почты. Если мы меняли конфигурацию, то нужно восстановить следующие файлы:
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies