CentOS: Zimbra — переносим почтовые ящики с сервера на сервер

Сегодня один из клиентов поставил задачу перенести почту со старого сервера Zimbra, на новый, с чистой установкой. Со старого сервера требовалось вытащить только адреса почтовых ящиков и непосредственно письма этих ящиков. Zimbra мне понравилась, при моём первом рассмотрении, и я стал изучать его плотнее, по этому решить задачу было в общем то не сложно.

Для этого нам понадобится утилита rsync, так что если у вас её ещё нет — стоит установить.
Первым делом останавливаем наш старый почтовый сервер

zimbra # zmcontrol stop

проверяем что сервер действительно остановлен и делаем резервную копию директории /opt/zimbra

korp # rsync -avHK /opt/zimbra /opt/zimbra.bak

Теперь нам необходимо перенести zimbra.bak на новый сервер, тут можно использовать sftp или scp, что вам больше нравится. Есть одно важное замечание — «hostname» и «zmhostname» на старом и новом серверах должны совпадать. Так же проверяем что почтовый сервер остановлен и удаляем директорию /opt/zimbra

korp # rm -rf /opt/zimbra (осторожнее с пробелами!!!)

Теперь при помощи rsync мы восстановим директорию из нашего бекапа

korp # rsync -avHK /opt/zimbra.bak /opt/zimbra

всё, можно запускать сервер, должно всё корректно работать. К сожалению у меня небыло возможности проверить что будет если версии серверов будут отличаться, возможно тут появятся проблемы, тогда придётся всё делать в ручную.
При помощи комманды

zimbra # zmprov gqu mail | awk '{print $1}' > /tmp/mailbox.txt

выгрузим список всех e-mail адресов в файл, затем при помощи простого скрипта, что бы не бекапить каждый ящик в ручную, заархивируем все ящики

#!/bin/bash
filename='mailbox.txt'
filelines=`cat $filename`

for line in $filelines ; do
    /opt/zimbra/bin/zmmailbox -z -m $line getRestURL "//?fmt=tgz" > /tmp/$line.tgz
done

потом опять-таки при помощи sftp или scp перенесём все получившиеся tgz архивы и текстовый файл с ящиками на новый сервер, и при помощи ещё одного скрипта создадим ящики с дефолтным паролем (Pa$$w0rd, после чего мы ставим флаг что пользователь должен сменить пароль после первого входа в систему) и развернём в созданные ящики сами сообщения

#!/bin/bash
filename='mailbox.txt'
filelines=`cat $filename`

for line in $filelines ; do
    /opt/zimbra/bin/zmprov ca $line Pa$$w0rd zimbraPasswordMustChange TRUE
    /opt/zimbra/bin/zmmailbox -z -m $line postRestURL "//?fmt=tgz&resolve=reset" /tmp/$line.tgz
done

Надеюсь эта небольшая инструкция вам пригодится.

 

2 ответа к «CentOS: Zimbra — переносим почтовые ящики с сервера на сервер»

Добавить комментарий