« Installation d'un serveur de mail Zimbra 8.x sous ubuntu server 16.04 LTS » : différence entre les versions

Aller à la navigation Aller à la recherche
Aucun résumé des modifications
(45 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          ark.unscdf.org ark
185.112.24.150          srvmail.domain.tld srvmail
2001:21c1:3:123d::150  ark.unscdf.org ark
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 ark.unscdf.org -d mail.unscdf.org -d ark.csnu.org -d mail.csnu.org</pre>
 
==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 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====


=Wildcard / plus addressing=
=Wildcard / plus addressing=
Ligne 116 : Ligne 253 :


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/sauser.cf</code> et le faire appartenir à l'utilisateur zimbra et au groupe zimbra.
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==


=Configuration de la destination des mails tagués comme SPAM=
=Configuration de la destination des mails tagués comme SPAM=
Ligne 142 : Ligne 307 :
<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>
Après toute modification, relancez amavisd:
<pre>su - zimbra ; zmamavisdctl restart</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 162 : Ligne 326 :
[[Ajouter des signatures ClamAV dans zimbra 8.8]]
[[Ajouter des signatures ClamAV dans zimbra 8.8]]


=Modification en ligne de commande=
=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


* Configuration globale
=Fichiers de log=
** getAllConfig (gacf)
* /opt/zimbra/log/audit.log
** getConfig (gcf)
* /opt/zimbra/log/mailbox.log
** modifyConfig (mcf)
* /var/log/auth.log
* /var/log/zimbra.log
* /var/log/mail.log


* Configuration du serveur
=Modification en ligne de commande=
** getAllServers (gas)
** getServer (gs)
** modifyServer (ms)


Il faut vous loguer en tant que l'utilisateur zimbra :
Il faut vous loguer en tant que l'utilisateur zimbra :
Ligne 181 : Ligne 351 :


Pour modifier les informations du serveur: utilisez modifyserver (ou ms)
Pour modifier les informations du serveur: utilisez modifyserver (ou ms)
Pour les valeurs globale, de même avec <code>gacf</code> et <code>mcf</code>


==Éléments d'intérêt==
==É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
* <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 a jour=
Ligne 202 : Ligne 393 :
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)
4 203

modifications

Menu de navigation