« 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
 
(63 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 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 76 : Ligne 228 :


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=
=Configuration de spamassassin=
Ligne 91 : Ligne 247 :
</pre>
</pre>


Copiez-collez cette liste et ajoutez y les adresses IPs de vos MX secondaires <code>zmprov gs</code> :
Copiez-collez cette liste et ajoutez y les adresses IPs de vos MX secondaires avec <code>zmprov gs</code> :
<pre>
<pre>
su - zimbra
su - zimbra
Ligne 112 : 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/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==
 
=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 121 : Ligne 311 :
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>
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 tout message ayant un score de spam entre 33 et 75% finiront dans la boite <code>spam</code> des utilisateurs. Les mails ayant un score de spam supérieur à 75% seront refusés (discarded), ne seront donc PAS remis à l’utilisateur, mais seront cependant copié à l'administrateur du serveur Zimbra. Les mails ayant un score de spam inférieur à 33% seront remis à l'utilisateur sans tag.
Ces variables sont configurés par défaut à 75% et 33%, ce qui signifie que qu'un message :
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 (100% correspond à un score de spam de 20 points).
* 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.
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.


Je vous conseil par ailleurs de décocher la case <code>Bloquer les fichiers attachés qui sont des archives cryptées</code><br>
<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.
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>


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>
<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.


Après toute modification, relancez amavisd:
Après toute modification, relancez amavisd:
<pre>su - zimbra ; zmamavisdctl restart</pre>
<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.
=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


Après toute modification, relancez amavisd:
=Fichiers de log=
<pre>su - zimbra ; zmamavisdctl restart</pre>
* /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 146 : Ligne 368 :
<pre> su - zimbra</pre>
<pre> su - zimbra</pre>


Puis utiliser zmprov. Par exemple, pour récupérer les informations du serveur, utilisez getserver (ou gs) :  
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)
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


=Mise a jour de sécurité de zimbra=
==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 à 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)
4 231

modifications

Menu de navigation