Zimbra / Supprimer un store d'une infrastructure Zimbra

|

La méthode la plus souple pour mettre à jour une infra Zimbra consiste généralement à installer de nouveaux stores sous la nouvelle version, et à migrer progressivement les boîtes mail vers ces nouveau stores. Dans mon cas d’usage, cette méthode à permis de migrer un peu plus de 12000 comptes de stores en version 8.6.0 GA vers la version 8.7.11 GA, en période de production, sans qu’aucun utilisateur ne s’en rende compte.

Comment procéder une fois que les stores d’origine sont vides ?

Dans cet exemple, nous allons supprimer un store nommé zstoreX, sur le domaine domaine.tld.

Préalable

  • S’assurer que le store n’est pas dans le “pool de serveurs” d’une des COS existantes.
  • Vérifier qu’il n’y a plus aucun compte sur le store via une recherche : ‘‘(zimbraMailHost=zstoreX.domaine.tld)’’
  • Vérifier qu’il n’y a plus de sauvegardes utiles sur le store concerné (on a donc laissé le store vide actif le temps que toutes les sessions de sauvegarde en rétention soient vides).

Suppression des références à zstoreX

On va vérifier, sur chaque serveur de l’infra, s’il y a des reférences à zstoreX dans les configurations locales :

Config locale

zmlocalconfig | grep zstoreX

Config serveur

zmprov gs $(zmhostname) | grep zstoreX

On regarde ensuite dans la configuration du domaine :

Config domaine

zmprov gd domaine.tld | grep zstoreX

Ensuite on regarde dans la config globale :

zmprov gacf | grep zstoreX

On découvre normalement que les attributs concernés sont :

  • zimbraReverseProxyAvailableLookupTargets
  • zimbraReverseProxyUpstreamLoginServers

Celà va evidemment varier selon l’infra.

Notons que zmprov gs remonte les attributs serveurs et ceux hérité de la config globale, mais on va quand meme s’assurer de supprimer une éventuelle config locale de ces attributs, sur toutes les machines de l’infra :

zmprov ms `zmhostname` -zimbraReverseProxyAvailableLookupTargets zstoreX.domaine.tld
zmprov ms `zmhostname` -zimbraReverseProxyUpstreamLoginServers zstoreX.domaine.tld

Ensuite on modifie la config globale, uniquement sur un serveur :

zmprov mcf -zimbraReverseProxyUpstreamLoginServers zstoreX.domaine.tld
zmprov mcf -zimbraReverseProxyAvailableLookupTargets zstoreX.domaine.tld

La modif est visible immédiatement sur le serveur où la commande a été lancée. On vérifie qu’il n’y a plus rien :

zmprov gacf | grep zstoreX; zmprov gs $(zmhostname) | grep zstoreX

Pour les autres, on doit d’abord flusher le cache de la config (la doc recommande de la faire serveur par serveur, successivement) :

zmprov flushCache config; zmprov gacf | grep zstoreX; zmprov gs $(zmhostname) | grep zstoreX

Désactivation des services du store à supprimer

Sur zstoreX, récupérer la liste des services activés :

zmprov gs `zmhostname` zimbraServiceEnabled

et les désactiver (adapter cette liste au retour de la commande précédente) :

zmprov ms `zmhostname` -zimbraServiceEnabled service
zmprov ms `zmhostname` -zimbraServiceEnabled zimbra
zmprov ms `zmhostname` -zimbraServiceEnabled zimbraAdmin
zmprov ms `zmhostname` -zimbraServiceEnabled zimlet
zmprov ms `zmhostname` -zimbraServiceEnabled mailbox
zmprov ms `zmhostname` -zimbraServiceEnabled convertd
zmprov ms `zmhostname` -zimbraServiceEnabled stats
zmprov ms `zmhostname` -zimbraServiceEnabled spell

Suppression du store

A lancer sur un serveur de l’infra :

zmprov deleteServer zstoreX.domaine.tld

La commande retournera une erreur si le store n’est pas totalement vide.

Il devrait avoir disparu de tous les stores/serveurs quand on effectue un :

zmprov getAllServers

Mise à jour des clés ssh

Sur tous les serveurs restants, lancer :

zmupdateauthkeys