Резервное копирование и восстановление iRedMail

Обновлено Обновлено: Опубликовано Опубликовано:

Тематические термины: 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/* dmosk@192.168.0.15:/backup

* в данном случае мы копируем тот же бэкап, но на другой компьютер сети.

Копируем почту

По умолчанию, каталог для хранения переписки — /var/vmail/vmail1. Чтобы создать копию, достаточно скопировать его содержимое.

Это можно сделать, например, следующей командой:

cp -R /var/vmail/vmail1/* /mnt/backup/

Также, можно создать сжатый архив для экономии дискового пространства:

tar -czvf /mnt/backup/vmail.tar.gz /var/vmail/vmail1

* в этом примере мы создадим архив vmail.tar.gz для каталога с почтой.

Копируем ldap

Резервная копия для ldap выполняется ежедневно, но если нужно сделать копию вручную, запускаем скрипт:

/bin/bash /var/vmail/backup/backup_openldap.sh

Резервные копии попадают в каталог /var/vmail/backup/ldap/<год>/<месяц>/

Также, как и для базы данных, архивы можно копировать на другой сервер в сети или внешний диск:

scp /var/vmail/backup/ldap/2019/02/* dmosk@192.168.0.17:/backup

* в данном примере, мы копируем копии за февраль на сервер с IP-адресом 192.168.0.17, в каталог /backup.

Синхронизация

Процесс копирования резервных копий можно автоматизировать при помощи скриптов с применением rsync. Подробнее о настройке rsync для автоматического копирования читайте в статье Настройка и использование Rsync Server.

Перед восстановлением или переносом

В случае восстановления данных на рабочем сервере, никаких дополнительных действий не потребуется — можно переходить к следующему шагу.

В случае переноса сервера или его полной переустановки, необходимо сначала выполнить установку iRedMail, желательно, той же версии и на ту же операционную систему. Для этого можно воспользоваться инструкциями Установка и настройка iRedMail на CentOS 7 или Почтовый сервер iRedMail на Ubuntu. После установки можно сразу переходить к восстановлению.

Восстановление из резервных копий

Перед началом восстановления, переносим резервные копии на новый сервер.

Восстановление баз данных

Нам необходимо восстановить несколько баз — содержимое /var/vmail/backup/mysql/. В моем случае было:

  • amavisd
  • iredadmin
  • iredapd
  • mysql
  • roundcubemail
  • vmail

Если мы переносим нашу почтовую систему на новый сервер, базу 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.

Восстановление LDAP

На новом сервере заходим в каталог с дистрибутивом, который использовался для установки 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:: {SSHA}3rs/fqNZpKaWytqaQVE8AKltriyd1BsW
...
dn: cn=vmailadmin,dc=iredmail,dc=org
userPassword:: {SSHA}20vytDcG0NsSE8twwI/ldWW1+YCIi+xW
...

Останавливаем службу для 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:

systemctl stop slapd

Теперь восстанавливаем данные:

slapadd -f /etc/openldap/slapd.conf -l /tmp/2019-02-09-03-00-01.ldif

Запускаем ldap и проверяем, что он запустился:

systemctl start slapd

systemctl status slapd

Восстановление конфигов

Желательно, восстановить настройки системы, так как некоторые из них критичные для работы почты. Если мы меняли конфигурацию, то нужно восстановить следующие файлы:

  1. /var/www/roundcubemail/config/config.inc.php
    где путь /var/www может быть другим. Конфиг для roundcube.
  2. /etc/postfix/mysql*.cf
    настройки postfix.
  3. Содержимое /etc/dovecot/conf.d, файлы /etc/dovecot/dovecot-mysql.conf и /etc/dovecot/dovecot.conf.
    настройки dovecot.
  4. Содержимое /var/lib/dkim
    сертификаты для подписи DKIM.

 

# Серверы # Почта
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет