logo rss

Comment migrer Zimbra 8.8.15 de CentOS 6 vers Ubuntu 20.04 LTS

Zimbra logo

J’utilisais un serveur Zimbra Collaboration Open Source sur un système CentOS 6 vieillissant qu’il me fallait mettre à jour.

Étant donné que CentOS est arrivé en fin de vie fin , j’ai dû migrer vers une autre distribution GNU/Linux.

En raison des alternatives supportées limitées, j’ai choisi de migrer vers Ubuntu Server 20.04 LTS, désormais officiellement prise en charge par Zimbra Collaboration Open Source Edition 8.8.15.

Pré-requis système et liste de vérification de la configuration

⚠️ Important : Pour garantir une migration réussie, les deux serveurs doivent exécuter exactement la même version de Zimbra. ⚠️

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

Préparer le serveur source (CentOS 6)

Logo CentOS

Sur l’ancien serveur, nous allons arrêter les services Zimbra et transférer les fichiers nécessaires vers le nouveau serveur.

Une fois tout copié, le serveur CentOS pourra être éteint en toute sécurité.

Copier les fichiers vers le nouveau serveur

  • (Optionnel) Nettoyer les anciens journaux zmstat situés dans /opt/zimbra/zmstat pour accélérer le transfert :
zimbra@zcs:~$ /opt/zimbra/libexec/zmstat-cleanup --keep 30
  • Arrêter les services zimbra :
root@host:~# su - zimbra
zimbra@zcs:~$ zmcontrol stop
  • Copier le répertoire principal /opt/zimbra vers le serveur de destination :
root@host:~# rsync -e ssh -axvzKHS /opt/zimbra [adresse-IP-nouveau-serveur]:/opt/ZIMBRA_TMP

Remarque : Comme rsync ne peut pas facilement écrire en tant que root sur un système Ubuntu via SSH, il est souvent plus simple d’initier le transfert depuis le nouveau serveur. (Plus de détails ici).

Exporter les bases de données LDAP

  • Exporter la base de données LDAP 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 des journaux d'accès (optionnel – elle était vide dans mon cas) :
zimbra@zcs:~$ /opt/zimbra/libexec/zmslapcat -a /tmp/LDAP
  • Copier tous les fichiers LDAP exportés vers le serveur de destination :
root@host:~# rsync -e ssh -axvzKHS /tmp/LDAP [adresse-IP-nouveau-serveur]:/opt/

Récupérer les mots de passe Zimbra (Optionnel)

Cette étape est optionnelle, mais vous pouvez souhaiter récupérer les mots de passe des services Zimbra existants à des fins de référence ou de sauvegarde.

  • Extraire les mots de passe directement depuis le fichier de configuration /opt/zimbra/conf/localconfig.xml. Par exemple :
 <key name="zimbra_ldap_password">
    <value>TXrP9mSTd</value>
  </key>
  • Ou utiliser la commande zmlocalconfig pour récupérer plusieurs mots de passe en une seule fois :
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 source

  • Tout d’abord, vérifier le nom d’hôte actuel (il doit correspondre à la configuration d’origine) :
root@host:~# hostname
zcs.shebangthedolphins.net
  • Ensuite, éteindre le serveur source :
root@host:~# poweroff

Configurer le serveur de destination (Ubuntu 20.04 LTS)

Logo Ubuntu

On suppose qu’une installation propre de Ubuntu Server 20.04 LTS est déjà en place.

Pour obtenir les droits administrateur (root), vous pouvez utiliser la commande suivante :

Configurer le réseau

  • Modifier le fichier de configuration Netplan situé à /etc/netplan/00-installer-config.yaml et attribuer la même adresse IP que celle utilisée par 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
  • Appliquer la nouvelle configuration avec Netplan ou redémarrer le système :
root@host:~# netplan apply
  • Définir le nom d’hôte pour qu’il corresponde à celui de l’ancien serveur :
root@host:~# hostnamectl set-hostname zcs.shebangthedolphins.net

Configurer /etc/hosts

Modifier le fichier /etc/hosts pour s’assurer que le nom d’hôte et l’adresse IP locale correspondent à ceux de l’ancien serveur :

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

Par défaut, systemd-resolved écoute sur le port UDP 53, ce qui entre en conflit avec le serveur DNS interne unbound de Zimbra. Pour éviter cela, désactivez DNSStubListener en modifiant le fichier suivant :

  • Modifier /etc/systemd/resolved.conf et définir DNSStubListener=no :
[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 et supprimer le fichier /etc/resolv.conf généré automatiquement :
root@host:~# systemctl stop systemd-resolved
root@host:~# rm /etc/resolv.conf
  • Redémarrer le serveur :
root@host:~# reboot
  • Après le redémarrage, créer un nouveau fichier /etc/resolv.conf avec le contenu suivant :
root@host:~# echo "nameserver 192.168.1.254
search shebangthedolphins.net" > /etc/resolv.conf
  • Vérifier que la résolution DNS fonctionne correctement :
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échargez la version appropriée de Zimbra Collaboration Open Source Edition pour Ubuntu 20.04, puis extrayez l’archive :
root@host:~# tar xzvf zcs-8.8.15_BETA_4155.UBUNTU20_64.20210924020007.tgz
  • Accédez au répertoire extrait et lancez l’installateur en mode software-only à l’aide de l’option -s :
root@host:~# cd zcs-8.8.15_BETA_4155.UBUNTU20_64.20210924020007 && ./install.sh -s

Pendant le processus d’installation, il vous sera demandé d’accepter le contrat de licence.

[…]
----------------------------------------------------------------------
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

Et choisissez les composants Zimbra à installer. Assurez-vous de sélectionner les mêmes paquets que ceux installés sur l’ancien serveur.

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, supprimez le répertoire temporaire d’installation pour nettoyer le système :
root@host:~# rm -rf /opt/zimbra/
  • Déplacez ensuite le répertoire zimbra copié depuis le serveur source à son emplacement définitif :
root@host:~# mv /opt/ZIMBRA_TMP/zimbra /opt/

Importer les bases de données LDAP

Préparation à l’importation

  • Renommer le répertoire mdb existant pour en faire une sauvegarde :
root@host:~# cd /opt/zimbra/data/ldap; mv mdb /tmp/mdb.old
  • Créer une nouvelle structure de répertoire mdb :
root@host:~# mkdir -p mdb/db
  • Faire de même pour la base de données config :
root@host:~# cd /opt/zimbra/data/ldap; mv config /tmp/config.old
root@host:~# mkdir config
  • Si votre configuration utilise une base accesslog, en faire une sauvegarde et recréer sa structure :
root@host:~# cd /opt/zimbra/data/ldap; mv accesslog /tmp/accesslog.old
root@host:~# mkdir -p accesslog/db
  • Enfin, corriger les permissions de la nouvelle structure des répertoires LDAP :
root@host:~# /opt/zimbra/libexec/zmfixperms -e -v

Importer les données LDAP

  • S’assurer que le répertoire de sauvegarde LDAP importé appartient à l’utilisateur zimbra :
root@host:~# chown -R zimbra:zimbra /opt/LDAP
  • Passer à l’utilisateur zimbra :
root@host:~# su - zimbra
  • Importer la base de données de configuration avec l’option -c :
zimbra@zcs:~$ /opt/zimbra/libexec/zmslapadd -c /opt/LDAP/ldap-config.bak
  • Importer la base de données LDAP principale :
zimbra@zcs:~$ /opt/zimbra/libexec/zmslapadd /opt/LDAP/ldap.bak
  • Le cas échéant, importer la base de données accesslog :
zimbra@zcs:~$ /opt/zimbra/libexec/zmslapadd -a /opt/LDAP/ldap-accesslog.bak

Mettre à niveau zimbra

  • Si ce n’est pas déjà fait, créer le fichier zimbra-stats.log et lui attribuer les bonnes permissions :
root@host:~# touch /var/log/zimbra-stats.log
root@host:~# chown zimbra:zimbra /var/log/zimbra-stats.log
  • Ajouter les règles nécessaires dans le fichier sudoers pour permettre à l’utilisateur zimbra d’exécuter certaines commandes sans mot de passe :
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 l’installation en mode software-only pour finaliser la configuration et lancer le processus de mise à niveau :
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
  • Une fois la mise à niveau terminée, passez à l’utilisateur zimbra :
root@host:~# su - zimbra
  • Démarrez les services Zimbra :
zimbra@zcs:~$ zmcontrol start

Et voilà — la migration est maintenant terminée !

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

Optionnel : Désactiver les alertes d’espace disque pour les périphériques loop

Si vous recevez des alertes de surveillance de l’espace disque liées aux périphériques de type loop, vous pouvez les exclure du système de supervision de Zimbra :

zimbra@zcs:~$ zmlocalconfig -e zmstat_df_excludes='/dev/loop0:/dev/loop1:/dev/loop2:/dev/loop3:/dev/loop4:/dev/loop5:/dev/loop6'

Puis redémarrez à nouveau les services Zimbra :

zimbra@zcs:~$ zmcontrol start

Références