logo rss

Migrer un serveur Zimbra de CentOS vers Ubuntu

Zimbra logo

J'avais un serveur Zimbra Collaboration Open Source sur une distribution CentOS 6 vieillissante que je souhaitais migrer depuis un moment vers CentOS 7.

Mais vu que CentOS ne sera plus maintenu à la fin 2021, j'ai décidé de voir à migrer sur une autre distribution GNU/Linux.

Comme le choix est plutôt restreint je me suis tourné vers Ubuntu Server. Et vu que la version 20.04 LTS est depuis peu officiellement supportée par Zimbra Collaboration Open Source Edition c'est sur cette dernière que j'ai finalement décidé de migrer.

Configuration

⚠️ Pour que la migration fonctionne, il faut (un peu de chance et) que les versions des Zimbra soient identiques sur les deux serveurs.⚠️

  • Serveur Source :
    • OS : CentOS 6.10
    • Zimbra : Zimbra 8.8.15_GA_3869
  • Serveur de Destination :
    • OS : Ubuntu 20.04.3 LTS
    • Zimbra : Zimbra 8.8.15.BETA.4155

Serveur source (CentOS)

CentOS Logo

Depuis l'ancien serveur nous allons arréter le service zimbra et copier l'intégralité du dossier /opt/zimbra vers le nouveau.

Après cela nous pourrons arréter définitivement ce serveur.

Copier les fichiers vers le nouveau serveur

  • (Optionel) Supprimer les fichiers zmstat prĂ©sents dans /opt/zimbra/zmstat (inutiles dans mon cas) pour amĂ©liorer la vitesse de copie :
zimbra@zcs:~$ /opt/zimbra/libexec/zmstat-cleanup --keep 30
  • ArrĂ©ter les services zimbra :
root@host:~# su - zimbra
zimbra@zcs:~$ zmcontrol stop
  • Copier le dossier zimbra vers notre serveur de destination :
root@host:~# rsync -e ssh -axvzKHS /opt/zimbra [newserver-IP-address]:/opt/ZIMBRA_TMP
Note : comme nous ne pouvons pas utiliser rsync directement avec l'utlisateur root vers Ubuntu (voir ici), il sera plus simple de lancer la commande rsync depuis le nouveau serveur.

Exporter les bases de données LDAP

  • Exporter la base de donnĂ©es principale :
zimbra@zcs:~$ /opt/zimbra/libexec/zmslapcat /tmp/LDAP
  • Exporter la base de donnĂ©es de configuration :
zimbra@zcs:~$ /opt/zimbra/libexec/zmslapcat -c /tmp/LDAP
  • Exporter la base de donnĂ©es accesslog (qui Ă©tait vide dans mon cas) :
zimbra@zcs:~$ /opt/zimbra/libexec/zmslapcat -a /tmp/LDAP
  • Copier les bases de donnĂ©es vers le nouveau serveur :
root@host:~# rsync -e ssh -axvzKHS /tmp/LDAP [newserver-IP-address]:/opt/

Récupérer les mots de passes

Cela ne sera finalement pas utile mais on peut récupérer les anciens mots de passes.

  • Depuis le fichier /opt/zimbra/conf/localconfig.xml, exemple ici avec le mot de passe zimbra_ldap_password :
 <key name="zimbra_ldap_password">
    <value>TXrP9mSTd</value>
  </key>
  • Ou bien avec la commande zmlocalconfig :
zimbra@zcs:~$ zmlocalconfig -s | grep "ldap_amavis_password\|ldap_nginx_password\|ldap_postfix_password\|ldap_replication_password\|ldap_root_password\|zimbra_ldap_password"

Éteindre le serveur

  • On rĂ©cupère le nom du serveur :
root@host:~# hostname
zcs.shebangthedolphins.net
  • Et on Ă©teint le serveur :
root@host:~# poweroff

Serveur de destination (Ubuntu)

Ubuntu Logo

Nous supposons ici qu'un Ubuntu en version serveur a été fraichement installé.

Pour se connecter en tant que root j'ai utilisé la commande sudo su -

Configuration réseau

  • Éditer le fichier /etc/netplan/00-installer-config.yaml et paramĂ©trer l'addresse ip pour qu'elle soit la mĂŞme que sur l'ancien serveur :
# This is the network config written by 'subiquity'
network:
  ethernets:
    ens160:
      addresses:
              - 192.168.1.10/24
      gateway4: 192.168.1.254
      nameservers:
              search: [shebangthedolphins.net]
              addresses: [192.168.1.254]
  version: 2
  • RedĂ©marrer ou utiliser la commande netplan pour appliquer les modifications :
root@host:~# netplan apply
  • ParamĂ©trer le mĂŞme nom d'hĂ´te que l'ancien serveur :
root@host:~# hostnamectl set-hostname zcs.shebangthedolphins.net

Configurer /etc/hosts

127.0.0.1 localhost
192.168.1.10 zcs.shebangthedolphins.net shebangthedolphins.net

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback localhost
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Configurer systemd-resolved

  • Dans sa configuration par dĂ©faut le service systemd-resolved utilise le port udp 53 ce qui provoque un conflit avec le service zimbra interne unbound, nous devons donc modifier le fichier /etc/systemd/resolved.conf pour le dĂ©sactiver :
[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=no-negative
DNSStubListener=no
#ReadEtcHosts=yes
  • ArrĂ©ter le service systemd-resolved :
root@host:~# systemctl stop systemd-resolved
  • Supprimer le fichier auto-gĂ©nĂ©rĂ© /etc/resolv.conf :
root@host:~# rm /etc/resolv.conf
  • RedĂ©marrer le serveur :
root@host:~# reboot
  • CrĂ©er un nouveau fichier /etc/resolv.conf :
root@host:~# echo "nameserver 192.168.1.254
search shebangthedolphins.net" > /etc/resolv.conf
  • Et vĂ©rifier que la rĂ©solution de nom fonctionne :
root@host:~# resolvectl query shebangthedolphins.net
shebangthedolphins.net: 192.168.1.10

-- Information acquired via protocol DNS in 2.4ms.
-- Data is authenticated: yes

Installer Zimbra

  • TĂ©lĂ©charger et installer zimbra (-s : pour installer uniquement les logiciels) :
root@host:~# tar xzvf zcs-8.8.15_BETA_4155.UBUNTU20_64.20210924020007.tgz
root@host:~# cd zcs-8.8.15_BETA_4155.UBUNTU20_64.20210924020007 && ./install.sh -s
[…]
----------------------------------------------------------------------
PLEASE READ THIS AGREEMENT CAREFULLY BEFORE USING THE SOFTWARE.
SYNACOR, INC. ("SYNACOR") WILL ONLY LICENSE THIS SOFTWARE TO YOU IF YOU
FIRST ACCEPT THE TERMS OF THIS AGREEMENT. BY DOWNLOADING OR INSTALLING
THE SOFTWARE, OR USING THE PRODUCT, YOU ARE CONSENTING TO BE BOUND BY
THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS
AGREEMENT, THEN DO NOT DOWNLOAD, INSTALL OR USE THE PRODUCT.

License Terms for this Zimbra Collaboration Suite Software:
https://www.zimbra.com/license/zimbra-public-eula-2-6.html
----------------------------------------------------------------------


Do you agree with the terms of the software license agreement? [N] Y



Use Zimbra's package repository [Y] Y
  • Choisir les mĂŞmes modules que sur l'ancien serveur, pour moi cela ressemblait Ă  ça :
Select the packages to install

Install zimbra-ldap [Y] 

Install zimbra-logger [Y] 

Install zimbra-mta [Y] 

Install zimbra-dnscache [Y] N

Install zimbra-snmp [Y] N

Install zimbra-store [Y] 

Install zimbra-apache [Y] N

Install zimbra-spell [Y] 

Install zimbra-memcached [Y] 

Install zimbra-proxy [Y] 

Install zimbra-drive [Y] N

Install zimbra-imapd (BETA - for evaluation only) [N] 

Install zimbra-chat [Y] N
Checking required space for zimbra-core
Checking space for zimbra-store
Checking required packages for zimbra-store
zimbra-store package check complete.

Installing:
    zimbra-core
    zimbra-ldap
    zimbra-logger
    zimbra-mta
    zimbra-store
    zimbra-apache
    zimbra-spell
    zimbra-memcached
    zimbra-proxy
    zimbra-patch
    zimbra-mta-patch
    zimbra-proxy-patch

The system will be modified.  Continue? [N] Y
  • Une fois l'installation terminĂ©e, supprimer le dossier zimbra :
root@host:~# rm -rf /opt/zimbra/
  • DĂ©placer notre dossier sauvegardĂ© vers /opt/zimbra :
root@host:~# mv /opt/ZIMBRA_TMP/zimbra /opt/

Importer les bases LDAP

Préparer l'import

  • Nettoyer le dossier des bases :
root@host:~# cd /opt/zimbra/data/ldap; mv mdb /tmp/mdb.old
  • CrĂ©er un nouveau dossier mdb :
root@host:~# mkdir -p mdb/db
  • Nettoyer le dossier des bases de config :
root@host:~# cd /opt/zimbra/data/ldap; mv config /tmp/config.old
  • CrĂ©er un nouveau dossier config :
root@host:~# mkdir config
  • Si un dossier accesslog est prĂ©sent (ce qui n'Ă©tait pas mon cas), faire de mĂŞme pour la base accesslog :
root@host:~# cd /opt/zimbra/data/ldap; mv accesslog /tmp/accesslog.old
root@host:~# mkdir -p accesslog/db
  • Enfin, mettre Ă  jour les permissions :
root@host:~# /opt/zimbra/libexec/zmfixperms -e -v

Importer les données LDAP

  • Changer le propriĂ©taire pour que l'utilisateur zimbra puisse accĂ©der aux fichiers :
root@host:~# chown -R zimbra:zimbra /opt/LDAP
  • Se connecter en tant qu'utilisateur zimbra :
root@host:~# su - zimbra
  • Importer la config :
zimbra@zcs:~$ /opt/zimbra/libexec/zmslapadd -c /opt/LDAP/ldap-config.bak
  • Importer la base principale :
zimbra@zcs:~$ /opt/zimbra/libexec/zmslapadd /opt/LDAP/ldap.bak
  • (Si prĂ©sente) Importer la base accesslog :
zimbra@zcs:~$ /opt/zimbra/libexec/zmslapadd -a /opt/LDAP/ldap-accesslog.bak

Mettre Ă  niveau zimbra

  • Si le fichier zimbra-stats.log n'est pas prĂ©sent le crĂ©er :
root@host:~# touch /var/log/zimbra-stats.log
root@host:~# chown zimbra:zimbra /var/log/zimbra-stats.log
  • Ajouter les règles sudoers dans /etc/sudoers :
root@host:~# echo "%zimbra ALL=NOPASSWD:/opt/zimbra/libexec/zmstat-fd *
%zimbra ALL=NOPASSWD:/opt/zimbra/libexec/zmslapd
%zimbra ALL=NOPASSWD:/opt/zimbra/postfix/sbin/postfix, /opt/zimbra/postfix/sbin/postalias, /opt/zimbra/postfix/sbin/qshape.pl, /opt/zimbra/postfix/sbin/postconf,/opt/zimbra/postfix/sbin/postsuper
%zimbra ALL=NOPASSWD:/opt/zimbra/libexec/zmqstat,/opt/zimbra/libexec/zmmtastatus
%zimbra ALL=NOPASSWD:/opt/zimbra/amavisd/sbin/amavis-mc
%zimbra ALL=NOPASSWD:/opt/zimbra/libexec/zmunbound
%zimbra ALL=NOPASSWD:/sbin/resolvconf *
%zimbra ALL=NOPASSWD:/opt/zimbra/libexec/zmmailboxdmgr
%zimbra ALL=NOPASSWD:/opt/zimbra/bin/zmcertmgr
%zimbra ALL=NOPASSWD:/opt/zimbra/bin/zmmailboxdctl
%zimbra ALL=NOPASSWD:/opt/zimbra/bin/zmmailbox
%zimbra ALL=NOPASSWD:/opt/zimbra/bin/zmdnscachectl" >> /etc/sudoers
  • Relancer de nouveau l'installation :
root@host:~# ./install.sh -s
[…]
The Zimbra Collaboration Server appears to already be installed.
It can be upgraded with no effect on existing accounts,
or the current installation can be completely removed prior
to installation for a clean install.

Do you wish to upgrade? [Y]
[…]
The system will be modified.  Continue? [N] Y
  • Se connecter en tant qu'utilisateur zimbra :
root@host:~# su - zimbra
  • DĂ©marrer les services zimbra :
zimbra@zcs:~$ zmcontrol start

Et c'est Ă  peu près tout…

Tom Cruse, dans des hommes d'honneur faisant un salut militaire

Une dernière chose… Juste après la migration j'ai eu des alertes de type Disk Space Monitoring pour les pĂ©riphĂ©riques de type loop, j'ai donc du dĂ©sactiver la vĂ©rification de ces pĂ©riphĂ©riques pour avoir la paix.

  • Ici les commandes que j'ai du entrer :
zimbra@zcs:~$ zmlocalconfig -e zmstat_df_excludes='/dev/loop0:/dev/loop1:/dev/loop2:/dev/loop3:/dev/loop4:/dev/loop5:/dev/loop6'
zimbra@zcs:~$ zmcontrol start

Références

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Contact :

adresse mail de contact