4 242
modifications
(47 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= | =Certificat SSL avec LetsEncrypt= | ||
Ligne 54 : | Ligne 94 : | ||
apt-get update | apt-get update | ||
apt-get install certbot | 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> | </pre> | ||
Ligne 61 : | Ligne 107 : | ||
<pre>/etc/init.d/zimbra stop</pre> | <pre>/etc/init.d/zimbra stop</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> : | TODO | ||
<pre>certbot certonly --standalone -d | |||
==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 116 : | Ligne 268 : | ||
Notez que cette modification ne survivra pas à une mise à jour de zimbra | 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== | ==Ajout de règles personnalisées== | ||
Vous pouvez créer le fichier <code>/opt/zimbra/data/spamassassin/localrules/ | 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= | =Configuration de la destination des mails tagués comme SPAM= | ||
Ligne 142 : | Ligne 328 : | ||
<br> | <br> | ||
<br>Une autre manière 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> | 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> | <pre> | ||
zmprov ms `zmhostname` zimbraAmavisFinalSpamDestiny D_PASS | zmprov ms `zmhostname` zimbraAmavisFinalSpamDestiny D_PASS | ||
</pre> | </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. | 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. | ||
Ligne 161 : | Ligne 346 : | ||
=Signatures antivirus supplémentaires= | =Signatures antivirus supplémentaires= | ||
[[Ajouter des signatures ClamAV dans zimbra 8.8]] | [[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= | ||
Il faut vous loguer en tant que l'utilisateur zimbra : | |||
<pre> su - zimbra</pre> | |||
Puis utiliser zmprov. Par exemple, pour récupérer une des ligne de configuration du serveur, utilisez getserver : | |||
<pre>zmprov getserver `zmhostname` VALEUR</pre> | |||
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 | * Configuration globale | ||
** getAllConfig | ** getAllConfig | ||
Ligne 184 : | Ligne 397 : | ||
** modifyAccount {compte} [attribut valeur] | ** modifyAccount {compte} [attribut valeur] | ||
* Pour une liste complète : | * Pour une liste complète : [https://wiki.zimbra.com/wiki/Zmprov] | ||
=Mise a jour= | =Mise a jour= | ||
Ligne 212 : | Ligne 414 : | ||
Vous pouvez aussi chercher le compte en tapant "virus" dans la barre de recherche.<br> | Vous pouvez aussi chercher le compte en tapant "virus" dans la barre de recherche.<br> | ||
https://wiki.zimbra.com/wiki/Restore-Quarantined-Emails | 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) |