Бывают ситуации, когда необходимо сменить имя хоста на сервере Zimbra, допустим, вы сменили доменное имя с oldname.com на newname.net и, таким образом, вам необходимо перенастроить Zimbra на использование нового имени, в целом это не сложная процедура для которой имеются стандартные средства, но как всегда есть несколько тонкостей. Начать можно с того, что Zimbra практически везде использует FQDN, даже при обращении к внутренним сервисам вроде Aspell. Так что, в случае если Zimbra не может корректно разрешить указанное в настройках доменное имя, то и работать будет некорректно. Вернемся к смене имени хоста, начиная с 6-й версии Zimbra имеется специальная утилита ZmSetServerName, в wiki Zimbra процесс ее использования описан достаточно подробно, но именно в процессе использования этой утилиты могут возникнуть проблемы.
- Остановите все процессы Zimbra и выполните резервное копирование /opt/zimbra и всех связанных (в смысле с использованием символических ссылок) каталогов. Подробнее о создании резервной копии в Zimbra wiki раздел:Backup And Restore. Для выполнения этих процедур запуститите следующие команды от имени суперпользователя:
- Остановка процессов Zimbra
su - zimbra -c "zmcontrol stop"
- Убедимся что все процессы завершились, вывод следующей команды должен быть пустым.
ps aux | grep [z]imbra
- Выполним копирование.
cp -rp /opt/zimbra /opt/zimbra-backup/ # или rsync -a /opt/zimbra /opt/zimbra-backup/
- Остановка процессов Zimbra
- Вы должны добавить запись с новым именем в DNS прежде чем запускать
zmservername
, если вы еще этого не сделали — сделайте это сейчас.
Внимание: если текущий сервер является зеркалом «продакшн» сервера, прервите связь между тестовым и основным сервером, что бы выполнение команды не затронуло основной сервер.
И главное с чем могут возникнуть проблемы, убедитесь что в вашем файлеhosts
нет записей вида127.0.1.1 mail.hostname.tld mail
потому как в процессе реконфигурации запускается процесс LDAP который привязывается только в публичному IP, а все обращения в процессе реконфигурации идут только по имени, и если у вас имеется привязка FQDN имени к loopback адресу — вы получите ошибку на подобии этой:
Starting ldap…done. Unable to contact ldap://mail.oldhost.tld:389: Connection refused Unable to contact ldap://mail.oldhost.tld:389: Connection refused
Таким образом ваш файл
hosts
до реконфигурации должен выглядеть примерно так:127.0.0.1 localhost 111.222.333.444 mail.oldhost.tld mail 111.222.333.444 mail.newhost.tld
- Если вы уже получили вышеприведенную ошибку
- остановите сервисы Zimbra
su - zimbra -c "zmcontrol stop"
- «добейте» оставшиеся процессы
ps aux | grep [z]imbra | awk '{print $2}' | xargs kill -9
- удалите папку с конфигами
rm -rf /opt/zimbra/conf/
- скопируйте папку с конфигами из резервной копии
cp -rp /opt/zimbra-backup/conf/ /opt/zimbra/
- запустите Zimbra
su - zimbra -c "zmcontrol start"
- выполните шаги из предыдущего пункта, и переходите к смене имени хоста
- остановите сервисы Zimbra
- Наконец, для смены имени выполните следующие команды:
su - zimbra -c "/opt/zimbra/libexec/zmsetservername -n %newservername%"
- Настройте ОС на использование нового имени хоста. Очень важно сделать это после 3-го шага.
- Перезагрузитесь. Хотя на самом деле это не обязательно, обычно достаточно просто запустить Zimbra командой
su - zimbra -c "zmcontrol start"
- Внимание: если вы используете многосерверную конфигурацию, убедитесь что все отсылки к старому имени были заменены на новое имя на всех серверах, после этого перезапустите сервисы на всех серверах.
- Используйте
zmlocalconfig
иzmprov
чтоб вручную проверить основные настройки, настройки сервера, пользователей и т.д. на предмет «следов» старого имени.zmprov gacf | grep oldhostname zmprov gs `zmhostname` | grep oldhostname zmlocalconfig | grep oldhostname
- Удалите записи со старым именем из DNS.
Так может выглядеть ваш файлhosts
после реконфигурации:127.0.0.1 localhost 111.222.333.444 mail.newhost.tld mail
После изменения имени могут возникнуть ошибки связанные с сертификатами. Скорее всего, вам надо установить новые сертификаты, содержащие новое имя сервера. Более подробную информацию по работе с сертификатами можно получить в официальной вики Administration Console and CLI Certificate Tools. Информацию по решению проблем связанных с сертификатами можно поискать в разделе Category:Troubleshooting Certificates.
NB после установки сертификатов через web интерфейс вам может понадобиться установить новый CA, иначе вы будете получать ошибки при работе, к примеру, с командой zmprov
сделать это можно выполнив от пользователя root команду:
/opt/zimbra/bin/zmcertmgr deployca
Если вы сменили имя Zimbra сервера, то весьма вероятно вам надо сменить имя почтового домена, сделать это несложно с помощью команды
zmprov -l rd [olddomain.com] [newdomain.com]
подробнее Renaming a Domain
Материалы:
Спасибо, очень помогло!
Не работает. После
su - zimbra -c "/opt/zimbra/libexec/zmsetservername -n %newservername%"
он пытается стартануть ldap на старом имени сервера.