4 242
modifications
(82 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 16 : | Ligne 16 : | ||
Puis configurez correctement l'hostname de votre serveur dans <code>/etc/hosts</code> | Puis configurez correctement l'hostname de votre serveur dans <code>/etc/hosts</code> | ||
<pre> | <pre> | ||
185.112.24.150 | 185.112.24.150 srvmail.domain.tld srvmail | ||
2001:21c1:3:123d::150 | 2001:21c1:3:123d::150 srvmail.domain.tld srvmail | ||
</pre> | </pre> | ||
Ligne 27 : | Ligne 27 : | ||
=Installation= | =Installation= | ||
Téléchargez la dernière version de Zimbra 8 pour ubuntu sur https://www.zimbra.com/downloads/zimbra-collaboration-open-source/ | Téléchargez la dernière version de Zimbra 8 pour ubuntu. | ||
Vous pouvez trouver les liens de téléchargement sur : | |||
* Un site avec un formulaire débile à remplir à chaque fois : https://www.zimbra.com/downloads/zimbra-collaboration-open-source/ | |||
* Un site sans formulaire débile à remplir : https://zimbra.org/download/zimbra-collaboration | |||
Extrayez l'archive et lancez l'installeur : | Extrayez l'archive et lancez l'installeur : | ||
Ligne 43 : | Ligne 47 : | ||
Une fois l'installation terminée, la console d'administration est accessible en HTTPs sur le port 7071 | Une fois l'installation terminée, la console d'administration est accessible en HTTPs sur le port 7071 | ||
=Certificat SSL via une CA= | |||
Les fichiers nécessaires au déploiement du certificat ssl dans zimbra sont les suivants : | |||
* <code>root_ca.pem</code> : le certificat root | |||
* <code>int_ca.pem</code> : le certificat de l'autorité intermédiaire ayant déployé le certificat zimbra | |||
* <code>zimbra.pem</code> : le certificat zimbra généré par la CA intermédiaire | |||
* <code>zimbra.key</code> : la clé privé zimbra généré par la CA intermédiaire | |||
Nous allons maintenant déployer le certificat ssl dans zimbra.<br /> | |||
Pour commencer, créez le fichier <code>ca_chain.pem</code> contenant la chaine de certification complète : | |||
<pre> | |||
cat root_ca.pem int_ca.pem > ca_chain.pem | |||
</pre> | |||
Déplacez la clé privée : | |||
<pre> | |||
mv zimbra.key /opt/zimbra/ssl/zimbra/commercial/commercial.key | |||
</pre> | |||
Vous pouvez vérifier que vos certificats sont valides avec <code>zmcertmgr</code> via l'utilisateur zimbra (<code>su - zimbra</code>) : | |||
<pre> | |||
/opt/zimbra/bin/zmcertmgr verifycrt comm /opt/zimbra/ssl/zimbra/commercial/commercial.key zimbra.pem ca_chain.pem | |||
</pre> | |||
Puis déployez le certificat dans zimbra avec <code>zmcertmgr</code> : | |||
<pre> | |||
/opt/zimbra/bin/zmcertmgr deploycrt comm zimbra.pem ca_chain.pem | |||
</pre> | |||
Enfin, ajoutez manuellement les certificats dans la base de donnée de java (le password est <code>changeit</code> par défaut) : | |||
<pre>keytool -keystore /opt/zimbra/common/lib/jvm/java/lib/security/cacerts -import -alias rootca -file /path/to/root_ca.pem</pre> | |||
Cette dernière étape est nécessaire pour que les outils d'administration java de zimbra acceptent d'interagir avec votre serveur | |||
Enfin, redémarrez zimbra : | |||
<pre>/etc/init.d/zimbra restart</pre> | |||
=Certificat SSL avec LetsEncrypt= | |||
==Initialisation== | |||
Le client <code>certbot</code> de LetsEncrypt fourni son propre dépôt pour ubuntu. Nous allons l'utiliser pour installer le client : | |||
<pre> | |||
apt-get install software-properties-common | |||
add-apt-repository ppa:certbot/certbot | |||
apt-get update | |||
apt-get install certbot | |||
</pre> | |||
A titre personnel je préfère gérer le renouvellement avec mon propre script dont j'ai désactivé le renouvellement automatique de certbot : | |||
<pre> | |||
systemctl disable certbot.timer | |||
rm -f /etc/cron.d/certbot | |||
</pre> | |||
==Certificat pour le domaine principal== | |||
Commencez par arrêter zimbra. Cela est nécessaire car le client <code>certbot</code> doit pouvoir accéder aux ports 80 et 443 afin de valider que vous possédez bien les domaines pour lesquels vous allez demander un certificat : | |||
<pre>/etc/init.d/zimbra stop</pre> | |||
TODO | |||
==Certificat SNI== | |||
===Génération du certificat=== | |||
Afin de ne pas avoir à couper zimbra pendant la génération du certificat, on va jouer un peu avec iptables.<br> | |||
On autorise le port <code>8181</code> puis on redirige le port <code>80</code> vers le port <code>8181</code> : | |||
<pre> | |||
iptables -t filter -I INPUT -i eth0 -p tcp --dport 8181 -j ACCEPT | |||
ip6tables -t filter -I INPUT -i eth0 -p tcp --dport 8181 -j ACCEPT | |||
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8181 | |||
ip6tables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8181 | |||
</pre> | |||
Lancez le client en mode <code>standalone</code> et en spécifiant les domaines/sous-domaines devant figurer dans le certificat avec un ou plusieurs argument <code>-d</code>, et en spécifiant le port <code>8181</code> pour la validation des domaines : | |||
<pre>certbot certonly --preferred-challenges http --http-01-port 8181 --standalone -d mail.domain.tld -d imap.domain.tld -d pop.domain.tld -d smtp.domain.tld</pre> | |||
Vous pouvez ensuite enlever les règles iptables : | |||
<pre> | |||
iptables -t nat -D PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8181 | |||
ip6tables -t nat -D PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8181 | |||
iptables -t filter -D INPUT -i eth0 -p tcp --dport 8181 -j ACCEPT | |||
ip6tables -t filter -D INPUT -i eth0 -p tcp --dport 8181 -j ACCEPT | |||
</pre> | |||
===Configuration de Zimbra=== | |||
Nous allons définir http://mail.domain.tld comme l'url servant pour les mails du domaine <code>domain.tld</code> | |||
<pre>zmprov md domain.tld zimbraVirtualHostName mail.domain.tld</pre> | |||
zimbra doit pouvoir résoudre mail.domain.tld vers les IP utilisées par le serveur zimbra. | |||
Activez le reverse proxy : | |||
<pre>zmprov mcf zimbraReverseProxySNIEnabled TRUE</pre> | |||
===Mise en forme des certificats=== | |||
<pre> | |||
mkdir /opt/zimbra/ssl/letsencrypt/ | |||
mkdir /opt/zimbra/ssl/letsencrypt/mail.domain.tld | |||
cp /etc/letsencrypt/live/mail.domain.tld/* /opt/zimbra/ssl/letsencrypt/mail.domain.tld/ | |||
chown -R zimbra:zimbra /opt/zimbra/ssl/letsencrypt/mail.domain.tld/ | |||
chmod -R o-rwx /opt/zimbra/ssl/letsencrypt/mail.domain.tld/ | |||
</pre> | |||
Pour zimbra, il faut ajouter le certificat de la root dans le fichier chaine utilisé. Vous pouvez trouver ce certificat ici : https://webtest.identrust.com/certificates/trustid/root-download-x3.html <br> | |||
Puis l'ajouter a la fin de la chaine de certification : | |||
<pre>cat /opt/zimbra/ssl/letsencrypt/mail.domain.tld/chain.pem EMPLACEMENT_du_fichier_contenant_la_root.pem > /opt/zimbra/ssl/letsencrypt/mail.domain.tld/chain+root.pem</pre> | |||
Puis testez le certificat : | |||
<pre> | |||
su - zimbra | |||
/opt/zimbra/bin/zmcertmgr verifycrt comm /opt/zimbra/ssl/letsencrypt/mail.domain.tld/privkey.pem /opt/zimbra/ssl/letsencrypt/mail.domain.tld/cert.pem /opt/zimbra/ssl/letsencrypt/mail.domain.tld/chain+root.pem | |||
exit | |||
</pre> | |||
Si tout va bien, créez un fichier bundle contenant votre certificat et la chaîne de certification : | |||
<pre> | |||
cat /opt/zimbra/ssl/letsencrypt/mail.domain.tld/cert.pem /opt/zimbra/ssl/letsencrypt/mail.domain.tld/chain+root.pem > /opt/zimbra/ssl/letsencrypt/mail.domain.tld/zimbra.bundle | |||
chown zimbra:zimbra /opt/zimbra/ssl/letsencrypt/mail.domain.tld/zimbra.bundle | |||
chmod o-rwx /opt/zimbra/ssl/letsencrypt/mail.domain.tld/zimbra.bundle | |||
</pre> | |||
===Déploiement dans zimbra=== | |||
Installez le certificat dans l'infrastructure zimbra : | |||
<pre> | |||
su - zimbra | |||
/opt/zimbra/libexec/zmdomaincertmgr savecrt domain.tld /opt/zimbra/ssl/letsencrypt/mail.domain.tld/zimbra.bundle /opt/zimbra/ssl/letsencrypt/mail.domain.tld/privkey.pem | |||
exit | |||
</pre> | |||
Déployez le certificat dans zimbra : | |||
<pre> | |||
su - zimbra | |||
/opt/zimbra/libexec/zmdomaincertmgr deploycrts | |||
exit | |||
</pre> | |||
Et relancez la brique proxy de zimbra | |||
<pre> | |||
su - zimbra | |||
zmproxyctl restart | |||
exit | |||
</pre> | |||
===Bugs=== | |||
* Les certificats SNI ne sont pas utilisés pour IMAPs, POPs et SMTPs : [https://bugzilla.zimbra.com/show_bug.cgi?id=103362 Bug 103362] et [https://bugzilla.zimbra.com/show_bug.cgi?id=107293 Bug 107293] | |||
* Si vous avez configuré zimbra SNI en mode ipv4 + ipv6, vous allez probablement rencontrer [https://bugzilla.zimbra.com/show_bug.cgi?id=108293 le bug 108293] et le proxy ne démarrera pas | |||
====Résolution : bug 108293==== | |||
Dans les fichiers web.http.template.patch web.http.default.template.patch mail.imap.template.patch mail.imap.default.template.patch mail.pop3.template.patch mail.pop3.default.template.patch : | |||
* A la directive <code>${core.ipboth.enabled}listen</code> : enlever l'argument ipv6only=off | |||
<br> | |||
Dans les fichiers web.https.template.patch web.https.default.template.patch mail.imaps.template.patch mail.imaps.default.template.patch mail.pop3s.template.patch mail.pop3s.default.template.patch : | |||
* Supprimer les directives suivantes (selon le fichier) : | |||
** <code>${core.ipboth.enabled}listen ${vip}${web.https.port} ipv6only=off ssl http2;</code> | |||
** <code>[::]:${web.https.port} ipv6only=off ssl http2;</code> | |||
* Ajoutez en remplacement les deux directives suivantes (les deux a chaque fois) : | |||
** <code>${core.ipboth.enabled}listen [::]:${web.https.port} ssl http2;</code> | |||
** <code>${core.ipboth.enabled}listen 0.0.0.0:${web.https.port} ssl http2;</code> | |||
<br> | |||
Il faut ensuite relancer zmmtactl qui met à jour les fichiers de configuration via ces templates. | |||
=Wildcard / plus addressing= | =Wildcard / plus addressing= | ||
Ligne 49 : | Ligne 221 : | ||
su - zimbra | su - zimbra | ||
zmprov mcf zimbraMtaRecipientDelimiter + | zmprov mcf zimbraMtaRecipientDelimiter + | ||
zmmtactl restart | |||
</pre> | </pre> | ||
Pour vérifier : | |||
<pre>postconf recipient_delimiter</pre> | |||
http://wiki.zimbra.com/wiki/Plus_Addressing | http://wiki.zimbra.com/wiki/Plus_Addressing | ||
=Ajout de décodeurs pour amavis= | |||
Amavis a besoin de quelques programmes extérieurs afin d'extraire certains type de fichier et les analyser : | |||
<pre>aptitude install rar lzop binutils lrzip arj arc cabextract zoo p7zip-full ripole</pre> | |||
=Configuration de spamassassin= | |||
Par défaut, Zimbra initialise la valeur <code>trusted_networks</code> de spamassassin au contenu de la valeur <code>zimbraMtaMyNetworks</code> de la configuration de Zimbra. La valeur <code>internal_networks</code> de spamassassin n'est pas utilisé. | |||
De manière globale retenez la chose suivante : | |||
* tous les serveurs MX de vos domaines et tous les relais smtp interne doivent être listés dans <code>internal_networks</code> '''et''' <code>trusted_networks</code> | |||
* les serveurs sûre (dont vous êtes certain qu'ils ne sont pas l'origine de spam) mais n'étant pas MX ou relay smtp interne de vos domaines doivent être listés uniquement dans <code>trusted_networks</code> | |||
Il faut donc, a minima, ajouter vos serveurs MX à la directive <code>zimbraMtaMyNetworks</code><br> | |||
Commencez par obtenir la liste des serveurs actuellement configuré : | |||
<pre> | |||
su - zimbra | |||
zmprov gs `zmhostname` zimbraMtaMyNetworks | |||
</pre> | |||
Copiez-collez cette liste et ajoutez y les adresses IPs de vos MX secondaires avec <code>zmprov gs</code> : | |||
<pre> | |||
su - zimbra | |||
zmprov ms `zmhostname` zimbraMtaMyNetworks "Liste_des_serveurs_séparé_par_des_espaces" | |||
</pre> | |||
==Ajout de internal_networks== | |||
Vous pouvez éventuellement modifier Zimbra afin qu'il ajoute la directive manquante <code>internal_networks</code> à spamassassin. Pour cela, ouvrez le fichier <code>/opt/zimbra/conf/salocal.cf.in</code>, repérez la ligne <code>%%uncomment VAR:zimbraMtaMyNetworks%%trusted_networks %%zimbraMtaMyNetworks%%</code> et ajoutez juste après : | |||
<pre> | |||
%%uncomment VAR:zimbraMtaMyNetworks%%internal_networks %%zimbraMtaMyNetworks%% | |||
</pre> | |||
Puis relancez : | |||
<pre> | |||
su - zimbra | |||
zmmtactl restart && zmamavisdctl restart | |||
</pre> | |||
Vous pourrez voir votre directive apparaitre dans <code>/opt/zimbra/data/spamassassin/localrules/salocal.cf</code> | |||
Notez que cette modification ne survivra pas à une mise à jour de zimbra | |||
==Mises à jour automatiques== | |||
<pre>$ zmlocalconfig antispam_enable_rule_updates | |||
antispam_enable_rule_updates = false | |||
$ zmlocalconfig antispam_enable_restarts | |||
antispam_enable_restarts = false | |||
</pre> | |||
On va activer la mise à jour automatique, et spécifier a zimbra de relancer l'antispam après une mise à jour : | |||
<pre> | |||
$ zmlocalconfig -e antispam_enable_rule_updates=true | |||
$ zmlocalconfig -e antispam_enable_restarts=true | |||
</pre> | |||
Si vous constatez que le traitement de certains mails est très long, essayez de passer <code>zmlocalconfig -e antispam_enable_rule_compilation=true</code> | |||
<pre> | |||
$ zmamavisdctl restart | |||
$ zmmtactl restart | |||
</pre> | |||
==Ajout de règles personnalisées== | |||
Vous pouvez créer le fichier <code>/opt/zimbra/data/spamassassin/localrules/zzsauser.cf</code> et le faire appartenir à l'utilisateur zimbra et au groupe zimbra. | |||
Pour tester vos règles, avec l'utilisateur zimbra : <code>spamassassin -D < /tmp/test.spammail > /dev/null 2> /tmp/test.output</code> | |||
==Razor et Pyzor== | |||
https://wiki.zimbra.com/wiki/Anti-spam_Strategies <br> | |||
https://www.missioncriticalemail.com/2019/03/21/zimbra-anti-spam-best-practices-2019/ | |||
==zmtrainsa== | |||
=Durée de conservation des statistiques= | |||
<pre>su - zimbra | |||
zmlocalconfig -e zmstat_max_retention=365 | |||
/opt/zimbra/libexec/zmstat-cleanup | |||
</pre> | |||
=Configuration de la destination des mails tagués comme SPAM= | |||
Dans la console d'administration, allez dans <code>configurer</code> puis <code>paramètres globaux</code> et enfin <code>AS/AV</code>. Les deux éléments intéressants sont <code>Pourcentage de spam supprimés</code> et <code>Pourcentage de tags</code> | |||
Ces variables sont configurés par défaut à 75% et 33%, ce qui signifie que qu'un message : | |||
* Ayant un score de spam entre 33 et 75% finira dans la boite <code>spam</code> des utilisateurs. | |||
* Ayant un score de spam supérieur à 75% sera refusé (discarded), ne seront donc PAS remis à l’utilisateur, mais seront cependant copié à l'administrateur du serveur Zimbra. | |||
* Ayant un score de spam inférieur à 33% sera remis à l'utilisateur dans sa boite de réception. | |||
Ces pourcentages sont relatifs au score de spam défini par spamassassin : | |||
* 100% correspond à un score spamassassin de 20 points | |||
* 75% à un score de 15 points | |||
* 33% à un score de 6.6 points | |||
Vous pouvez augmenter la valeur de <code>Pourcentage de spam supprimés</code> jusqu'à 100% pour diminuer le nombre de message refusé pour cause de spam (ils seront alors délivrés dans la boite <code>spam</code> des utilisateurs). <br> | |||
Si vous jugez que trop de spam finissent dans la boite de réception de votre utilisateur, abaissez <code>Pourcentage de tags</code> de quelques pourcents. | |||
<br>Je vous conseil par ailleurs de décocher la case <code>Bloquer les fichiers attachés qui sont des archives cryptées</code><br> | |||
Notez que les mails contenant un virus sont automatiquement refusés, transférés dans une boite de quarantaine, et les utilisateurs sont notifiés qu'ils ont reçu un mail contenant un virus. | |||
<br> | |||
Note : ces valeurs peuvent se modifier en ligne de commande avec <code>zmprov mcf zimbraSpamKillPercent x</code> et <code>zmprov mcf zimbraSpamTagPercent y</code> | |||
<br>Une autre manière, '''non recommandée''', de forcer les spams à aller dans la boite des utilisateurs est de modifier la valeur <code>zimbraAmavisFinalSpamDestiny</code> de <code>D_DISCARD</code> à <code>D_PASS</code> | |||
<pre> | |||
zmprov ms `zmhostname` zimbraAmavisFinalSpamDestiny D_PASS | |||
</pre> | |||
Cela va modifier le <code>final_spam_destiny</code> de <code>/opt/zimbra/conf/amavisd.conf</code> lui même basé sur le fichier <code>.in</code> correspondant. | |||
Après toute modification, relancez amavisd: | |||
<pre>su - zimbra ; zmamavisdctl restart</pre> | |||
=Zimbra derrière un firewall= | |||
http://wiki.zimbra.com/wiki/Firewall_Configuration <br> | |||
https://wiki.zimbra.com/wiki/Ports | |||
=Signatures antivirus supplémentaires= | |||
[[Ajouter des signatures ClamAV dans zimbra 8.8]] | |||
=Loguer l'ip du client et pas l'ip du proxy dans mailbox.log= | |||
Depuis zimbra 8.8, l'ensemble des protocoles zimbra (smtp* imap* pop*) passent par un proxy nginx | |||
<pre>zmprov gcf zimbraMailTrustedIP</pre> | |||
<pre>zmprov mcf +zimbraMailTrustedIP {IP1-du-proxy} +zimbraMailTrustedIP {IP2-du-proxy}</pre> | |||
Globalement : ::1 et 127.0.0.1 + les IPs public de votre zimbra | |||
=Fichiers de log= | |||
* /opt/zimbra/log/audit.log | |||
* /opt/zimbra/log/mailbox.log | |||
* /var/log/auth.log | |||
* /var/log/zimbra.log | |||
* /var/log/mail.log | |||
=Modification en ligne de commande= | =Modification en ligne de commande= | ||
Ligne 58 : | Ligne 368 : | ||
<pre> su - zimbra</pre> | <pre> su - zimbra</pre> | ||
Puis utiliser zmprov. Par exemple, pour récupérer | Puis utiliser zmprov. Par exemple, pour récupérer une des ligne de configuration du serveur, utilisez getserver : | ||
<pre>zmprov getserver `zmhostname` VALEUR</pre> | <pre>zmprov getserver `zmhostname` VALEUR</pre> | ||
Pour modifier les informations du serveur: utilisez modifyserver (ou ms) | Pour modifier les informations du serveur: utilisez modifyserver (ou ms) | ||
==Éléments d'intérêt== | |||
* <code>zmprov gs `zmhostname` zimbraMtaMyNetworks</code> : a modifier si vous ajoutez/supprimez des IPs à votre serveur mail ou des MXs secondaires | |||
==Liste des commandes== | |||
* Configuration globale | |||
** getAllConfig | |||
** getConfig {attribut} | |||
** modifyConfig {attribut valeur} | |||
* Configuration du serveur | |||
** getAllServers | |||
** getServer {server} | |||
** modifyServer {server} [attribut valeur] | |||
* Configuration des domaines | |||
** getAllDomains | |||
** getDomain {domain|id} | |||
** modifyDomain {domain|id} [attribut valeur] | |||
* Configurations des comptes | |||
** getAllAccounts | |||
** getAccount {compte} | |||
** modifyAccount {compte} [attribut valeur] | |||
* Pour une liste complète : [https://wiki.zimbra.com/wiki/Zmprov] | |||
== | =Mise a jour= | ||
=Mise | ==Mise à jour de sécurité== | ||
Depuis Zimbra 8.8.9, les patchs de sécurité sont directement déployés via un dépot <code>apt</code> donc un simple <code>aptitude upgrade</code> téléchargera et installera la mise à jour. S'il faut relancer un service, vous en serez informé lors de l'installation. | |||
==Mise à jour de zimbra== | |||
télécharger le .tgz, l'extraire, puis lancer le <code>./install.sh</code> | télécharger le .tgz, l'extraire, puis lancer le <code>./install.sh</code> | ||
=Admin= | |||
==Admin: accéder à un mail contenant un virus== | |||
Loguer vous sur la console d'administration. Sélectionnez le compte mail utilisé par zimbra pour centraliser les virus (choisi ou défini automatiquement lors de l'installation). Clique droit > view mails.<br> | |||
Vous pouvez aussi chercher le compte en tapant "virus" dans la barre de recherche.<br> | |||
https://wiki.zimbra.com/wiki/Restore-Quarantined-Emails | |||
=Migration= | |||
L'API REST étant bugué, il est recommandé de ne pas utiliser cette API et tous les outils s'y référant ([http://bugzilla.zimbra.com/show_bug.cgi?id=101760 Bug 101760]) | |||
Le meilleur moyen de migrer les mails de zimbra est actuellement l'usage de l'outil <code>imapsync</code> | |||
==Synchronisation des mails avec imapsync== | |||
<pre> | |||
imapsync --host1 serveur_source.domain.tld --tls1 --user1 vous@domain.tld --password1 pass_sur_serveur_source \ | |||
--host2 serveur_destination.domain.tld --tls2 --user2 vous@domain.tld --password2 pass_sur_serveur_destination | |||
</pre> | |||
==Réutiliser les mots-de-passe d'une ancienne installation zimbra== | |||
Pour récupérer le password (en fait la somme sha512 du password) d'un utilisateur : | |||
<pre>zmprov -l ga user@domain.com | grep userPassword</pre> | |||
Ensuite, vous pouvez définir ce même password sur votre nouvelle installation zimbra : | |||
<pre>zmprov ma user@domain.com userPassword '{SSHA512}2UIGhfdzdh546hZmphT1hT7...'</pre> | |||
=Problème de redirection sur le port 8443 au lieu de 443= | |||
https://wiki.zimbra.com/wiki/Steps_to_fix_port_redirection_problem_with_password_change_request_on_webclient | |||
=Changement de version d'ubuntu ou changement de serveur / VM= | |||
https://wiki.zimbra.com/wiki/How_to_move_ZCS_to_another_server | |||
for 8.8.15 / 16.04 to 18.04 : | |||
* https://forums.zimbra.org/viewtopic.php?t=67390#p294645 (best prefered, use this one) | |||
* https://wiki.zimbra.com/wiki/Ubuntu_Upgrades#Upgrade_Ubuntu_16.x_to_Ubuntu_18.x_and_update_ZCS_8.8.15_.26_above (for record) |