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 :
- Stoppé l'ancien système
- Modifié le DNS
- Installé quelques règles "iptables" sur la machine physique pour rediriger les entrées vers la bonne adresse, télécharger le script "iptables" utilisé.
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.