Zimbra dans une MV

L'installation dans une Machine virtuelle (ici KVM) n'est pas une opération horriblement complexe, voir les articles sur KVM
Note août 2016 : un changement de machine physique a été réalisé simplement à l'aide de ce brave "dd" en copiant la partition de la machine d'origine vers une partition de même taille sur le nouveau serveur (core I5 série 5 au lieu d'un core i3 série 4). Le redémarrage a été instantané !

Note août 2021 : Encore un changement de machine physique, toujours avec "dd" suivi d'une ré-installation sur un Ubuntu un peu plus "à jour" 20.04 LTS sur un AMD Ryzen 5 3600 (32 Go de RAM) avec Debian 11.2 et reprise des données des comptes. 

Zimbra ne distribue plus de versions "Debianisées" et dans ce domaine se limite à Ubuntu, j'ai donc choisi une Ubuntu 14.04 LTS qui devrait me permettre quelques années de tranquillité. 
La Machine Virtuelle est créée sur un environnement Debian 8 soigneusement maintenu à jour (aujourd'hui en 8.5) et qui dispose de : 
CPU : Core I3 4130 à 3.4 Ghz (Core I5 à 3.4Ghz) 
RAM : 16Go 
Disques : deux disques d'environ 2To montés en RAID logiciel (miroir).

La machine virtuelle crée pour l'occasion dispose de : 
Une partition LVM de 68Go formatée comme suit : 
Périphérique Amorçage  Début         Fin      Blocs    Id. Système 
/dev/vda1   *   133218304   134215679      498688   83  Linux 
/dev/vda2                   2048   117186559    58592256   83  Linux 
/dev/vda3       117186560   127672319     5242880   83  Linux 
/dev/vda4       127672320   133218303     2772992   82  partition d'échange Linux / Solaris

La partition "/dev/vda3" est gardée "en réserve" et n'est pas utilisée. 
Au niveau "machine"  1 CPU et 2560 Mo de mémoire. 
L'installation de Ubuntu 14.04 n'est pas détaillée ici, on n'installe que le minimum pour un serveur, tout le reste "vient" avec Zimbra. J'ai choisi la version 8.6, dernière version existante lors de l'installation.

J'ai créé "à la main" le user "zimbra" avec un répertoire home au "standard Zimbra" fixé à "/opt/zimbra" : 
chown root:zimbra /opt/zimbra 
chmod 775 /opt/zimbra

Cette installation est identique à celle réalisée directement sur un serveur sans KVM. 
Pré-requis : 
apt-get install pax sysstat sqlite3 unzip libperl5.18

Après décompression de l'archive du jour : 
"https://files.zimbra.com/downloads/8.6.0_GA/zcs-8.6.0_GA_1153.UBUNTU14_…
dans un répertoire tranquille on entre dans le vif du sujet. 
On se connecte en "root" dans le répertoire et on lance "install.sh" (Le listing est assez long mais comporte des éléments intéressants qui peuvent servir de référence) :

Operations logged to /tmp/install.log.26898 
Checking for existing installation... 
    zimbra-ldap...NOT FOUND 
    zimbra-logger...NOT FOUND 
    zimbra-mta...NOT FOUND 
    zimbra-dnscache...NOT FOUND 
    zimbra-snmp...NOT FOUND 
    zimbra-store...NOT FOUND 
    zimbra-apache...NOT FOUND 
    zimbra-spell...NOT FOUND 
    zimbra-convertd...NOT FOUND 
    zimbra-memcached...NOT FOUND 
    zimbra-proxy...NOT FOUND 
    zimbra-archiving...NOT FOUND 
    zimbra-core...NOT FOUND

PLEASE READ THIS AGREEMENT CAREFULLY BEFORE USING THE SOFTWARE. 
ZIMBRA, INC. ("ZIMBRA") 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 the Zimbra Collaboration Suite: 
  http://www.zimbra.com/license/zimbra-public-eula-2-5.html

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

On réponds bien sûr "Yes" (en français dans le texte) !

Checking for prerequisites... 
     FOUND: NPTL 
     FOUND: netcat-openbsd-1.105-7ubuntu1 
     FOUND: sudo-1.8.9p5-1ubuntu1.1 
     FOUND: libidn11-1.28-1ubuntu2 
     FOUND: libpcre3-1:8.31-2ubuntu2 
     FOUND: libgmp10-2:5.1.3+dfsg-1ubuntu1 
     FOUND: libexpat1-2.1.0-4ubuntu1 
     FOUND: libstdc++6-4.8.2-19ubuntu1 
     FOUND: libperl5.18-5.18.2-2ubuntu1 
     FOUND: libaio1-0.3.109-4 
     FOUND: resolvconf-1.69ubuntu1.1 
     FOUND: unzip-6.0-9ubuntu1.3

Checking for suggested prerequisites... 
     FOUND: pax 
     FOUND: perl-5.18.2 
     FOUND: sysstat 
     FOUND: sqlite3 
Prerequisite check complete.

Checking for installable packages

Found zimbra-core 
Found zimbra-ldap 
Found zimbra-logger 
Found zimbra-mta 
Found zimbra-dnscache 
Found zimbra-snmp 
Found zimbra-store 
Found zimbra-apache 
Found zimbra-spell 
Found zimbra-memcached 
Found zimbra-proxy 
Select the packages to install 
Install zimbra-ldap [Y] Y 
Install zimbra-logger [Y] Y 
Install zimbra-mta [Y] Y 
Install zimbra-dnscache [Y] N       (Bind9 est déjà installé) 
Install zimbra-snmp [Y] Y 
Install zimbra-store [Y] Y 
Install zimbra-apache [Y] Y 
Install zimbra-spell [Y] Y 
Install zimbra-memcached [Y] N       (pas un "gros" site mail) 
Install zimbra-proxy [Y] N           (VM isolée ) 
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-snmp 
    zimbra-store 
    zimbra-apache 
    zimbra-spell

The system will be modified.  Continue? [N]  Y 
On réponds bien sûr "Yes" 
    zimbra-core......zimbra-core_8.6.0.GA.1153.UBUNTU14.64_amd64.deb...done 
    zimbra-ldap......zimbra-ldap_8.6.0.GA.1153.UBUNTU14.64_amd64.deb...done 
    zimbra-logger......zimbra-logger_8.6.0.GA.1153.UBUNTU14.64_amd64.deb...done 
    zimbra-mta......zimbra-mta_8.6.0.GA.1153.UBUNTU14.64_amd64.deb...done 
    zimbra-snmp......zimbra-snmp_8.6.0.GA.1153.UBUNTU14.64_amd64.deb...done 
    zimbra-store......zimbra-store_8.6.0.GA.1153.UBUNTU14.64_amd64.deb...done 
    zimbra-apache......zimbra-apache_8.6.0.GA.1153.UBUNTU14.64_amd64.deb...done 
    zimbra-spell......zimbra-spell_8.6.0.GA.1153.UBUNTU14.64_amd64.deb...done 
Operations logged to /tmp/zmsetup06102015-144332.log 
Installing LDAP configuration database...done. 
Setting defaults...

DNS ERROR resolving MX for mon-serveur.xxxx 
It is suggested that the domain name have an MX record configured in DNS 
Change domain name? [Yes]   
C'est une machine provisoire, ici je réponds "No" pour ne pas contrarier la machine de production.

Checking for port conflicts 
Main menu 
   1) Common Configuration:                                                  
   2) zimbra-ldap:                             Enabled                      
   3) zimbra-logger:                           Enabled                      
   4) zimbra-mta:                              Enabled                      
   5) zimbra-snmp:                             Enabled                        
   6) zimbra-store:                            Enabled                               +Create Admin User:                    yes                                   
+Admin user to create:                 admin@mon-serveur.xxxx           
******* +Admin Password                        UNSET                                 +Anti-virus quarantine user:           virus-quarantine.gw4z3h_p@mon-serveur.xxxx 
        +Enable automated spam training:       yes                                   +Spam training user:                   spam.mfa5p1m9eb@mon-serveur.xxxx 
        +Non-spam(Ham) training user:          ham.j7vinxgs@mon-serveur.xxxx    
        +SMTP host:                            mon-serveur.xxxx                 
        +Web server HTTP port:                 80                                   +Web server HTTPS port:         443                                  
+Web server mode:          https                                
+IMAP server port:         143                                  
+IMAP server SSL port:     993                                  
+POP server port:          110                                  
+POP server SSL port:      995                                  
+Use spell check server:   yes                                  
+Spell server URL:                     http://mon-serveur.xxxx:7780/aspell.php 
+Configure for use with mail proxy:    FALSE                                
+Configure for use with web proxy:     FALSE                                
+Enable version update checks:         TRUE                                 
+Enable version update notifications:  TRUE                                  
+Version update notification email:    admin@mon-serveur.xxxx           
+Version update source email:          admin@mon-serveur.xxxx           
+Install mailstore (service webapp):   yes                                  
+Install UI (zimbra,zimbraAdmin webapps): yes                           

  7) zimbra-spell:                            Enabled                        
  8) Default Class of Service Configuration:                                  
  s) Save config to file                                                   
  x) Expand menu                                                              
  q) Quit                          

La seule chose importante qui reste à faire est de fixer un mot de passe administrateur et de changer le nom du compte d'administration.

*** CONFIGURATION COMPLETE - press 'a' to apply 
Select from menu, or press 'a' to apply config (? - help) a 
Save configuration data to a file? [Yes] Yes 
Save config in file: [/opt/zimbra/config.2021] 
The system will be modified - continue? [No] 
On n'est pas ici pour annuller --> "Yes" 
Operations logged to /tmp/zmsetup06102015-144332.log 
Setting local config values...done. 
Initializing core config...Setting up CA...done. 
Deploying CA to /opt/zimbra/conf/ca ...done. 
Creating SSL zimbra-store certificate...done. 
Creating new zimbra-ldap SSL certificate...done. 
Creating new zimbra-mta SSL certificate... 
Installing mailboxd SSL certificates...done. 
Installing MTA SSL certificates...done. 
Installing LDAP SSL certificate...done. 
Initializing ldap... 
Setting replication password...done. 
Setting Postfix password...done. 
Setting amavis password...done. 
Setting nginx password...done. 
Setting BES searcher  password...done. 
Creating server entry for mon-serveur.xxxx... 
Setting replication password...done. 
Setting Postfix password...done. 
Setting amavis password...done. 
Setting nginx password...done. 
Setting BES searcher  password...done. 
Creating server entry for mon-serveur.xxxx... 
Creating server entry for mon-serveur.xxxx...done. 
Setting Zimbra IP Mode...done. 
Saving CA in ldap ...done. 
Saving SSL Certificate in ldap ...done. 
Setting spell check URL...done. 
Setting service ports on mon-serveur.xxxx...done. 
Setting zimbraFeatureTasksEnabled=TRUE...done. 
Setting zimbraFeatureBriefcasesEnabled=TRUE...done. 
Setting TimeZone Preference...done. 
Initializing mta config...done. 
Setting services on mon-serveur.xxxx...done. 
Adding mon-serveur.xxxx to zimbraMailHostPool in default COS...done. 
Creating domain mon-serveur.xxxx...done. 
Setting default domain name...done. 
Creating domain mon-serveur.xxxx...already exists. 
Creating admin account mon_admin@mon-serveur.xxxx...done
Creating root alias...done. 
Creating postmaster alias...done. 
Creating user spam.mfa5p1m9eb@mon-serveur.xxxx...done 
Creating user ham.j7vinxgs@mon-serveur.xxxx...done
Creating user virus-quarantine.gw4z3h_p@mon-serveur.xxxx...done
Setting spam training and Anti-virus quarantine accounts...done. 
Initializing store sql database... 
Setting zimbraSmtpHostname for mon-serveur.xxxx...done. 
Configuring SNMP...done. 
Setting up syslog.conf...done. 
Starting servers...done. 
Installing common zimlets... 
    com_zimbra_mailarchive...done. 
    com_zimbra_adminversioncheck...done. 
    com_zimbra_attachmail...done. 
    com_zimbra_webex...done. 
    com_zimbra_srchhighlighter...done. 
    com_zimbra_phone...done. 
    com_zimbra_bulkprovision...done. 
    com_zimbra_clientuploader...done. 
    com_zimbra_ymemoticons...done. 
    com_zimbra_attachcontacts...done. 
    com_zimbra_url...done. 
    com_zimbra_date...done. 
    com_zimbra_proxy_config...done. 
    com_zimbra_viewmail...done 
    com_zimbra_email...done. 
    com_zimbra_tooltip...done. 
    com_zimbra_cert_manager...done. 
Finished installing common zimlets. 
Restarting mailboxd...done. 
Creating galsync account for default domain... 
You have the option of notifying Zimbra of your installation. 
This helps us to track the uptake of the Zimbra Collaboration Server. 
The only information that will be transmitted is: 
    The VERSION of zcs installed (8.6.0_GA_1153_UBUNTU14_64) 
    The ADMIN EMAIL ADDRESS created (le_bel_admin@mon-serveur.xxxx)

Notify Zimbra of your installation? [Yes] 
Ici je réponds "No" car ce n'est qu'une installation de test. 
Notification skipped 
Setting up zimbra crontab...done. 
Moving /tmp/zmsetup06102015-144332.log to /opt/zimbra/log 
Configuration complete - press return to exit

Maintenant installer le patch fourni "https://files.zimbra.com/downloads/8.6.0_GA/zcs-patch-8.6.0_GA_1169.tgz". 
On le décompresse dans un coin tranquille et on entre dans le répertoire (en "root" bien sûr) où on découvre le fichier "installPatch.sh" que l'on s'empresse de lancer : et il liste plein de choses ... et se termine rapidement. 
Maintenant limiter la taille de la base "ldap" pour ne pas avoir de surprise lors de copies (rappel, ce serveur ne traite pas des millions de messages et la taille de 80Gb (sparse file heureusement)est un peu élevée). 
Cette commande se lance sous le user "zimbra" : 
La taille "standard" est de 80GB ici 1GB suffira 
zmlocalconfig -e ldap_db_maxsize=1073741824 
Cela permet de copier l'ensemble du répertoire sans trop de problèmes pour sauvegarde. 
Il faut sinon passer par "mdb_copy" ou "zmslapcat", solutions recommandées par Zimbra.

Il est ensuite de bon ton de redémarrer la machine pour vérifier que tout se passe correctement. 
Ca reboote en douceur, on peut alors commencer à paramétrer notre serveur de mails.

Pour le paramétrage j'ai repris celui de la machine existante, recréé les users "à la main", heureusement la famille ne comporte pas des dizaines de personnes) et exporté puis ré-importé le contenu de tous les users (un par un en version "open") à l'aide de la fonction dédiée que l'on trouve dans l'interface WEB : "Préférences/Importer,exporter". Le seul inconvénient est la nécessité de fonctionner compte par compte pour la version Opensource.

Après avoir :

Note : en juin 2016 après plus de 6 mois cela fonctionne très bien. 
Re note : en novembre 2016, après le changement de serveur physique, upgrade système et recopie du disque de la machine virtuelle cela fonctionne toujours très bien. 
Note : Juillet 2017 les machines virtuelles sont installées sur de bons gros SSD de 512GO, et, là aussi recopie du disque de la machine virtuelle. Fonctionnement impeccable et, bien sûr, plus rapide.