{"id":116,"date":"2010-09-15T17:51:57","date_gmt":"2010-09-15T15:51:57","guid":{"rendered":"http:\/\/mmed.roulleau.net\/?p=116"},"modified":"2010-09-15T17:51:57","modified_gmt":"2010-09-15T15:51:57","slug":"un-serveur-mail-zimbra-familial","status":"publish","type":"post","link":"https:\/\/mmed.roulleau.net\/?p=116","title":{"rendered":"Un serveur mail Zimbra familial"},"content":{"rendered":"<p>Zimbra, le groupware open-source, est un outil de messagerie extr\u00eamement puissant, principalement destin\u00e9 aux entreprises ou aux grosses associations.<br \/>\nEn connaissant cette orientation, lorsqu&rsquo;on d\u00e9cide de s&rsquo;installer son propre serveur de mail personnel , Zimbra n&rsquo;est \u00e9videmment pas le premier nom qui vient \u00e0 l&rsquo;esprit. On pense plus naturellement \u00e0 quelque chose comme <a href=\"http:\/\/roundcube.net\/\">Roundcube<\/a>, en conjonction avec divers backend comme le v\u00e9n\u00e9rable <a href=\"http:\/\/www.postfix.org\/\">Postfix<\/a> et le sympathique <a href=\"http:\/\/www.dovecot.org\/\">Dovecot<\/a>, ce qui semble bien plus simple et plus adapt\u00e9 \u00e0 un usage familial.<\/p>\n<p>Et pourtant, apr\u00e8s quelque essais, je pense maintenant que Zimbra a parfaitement sa place dans le cercle priv\u00e9.\u00a0 Ce n&rsquo;est pas parce qu&rsquo;on est un particulier qu&rsquo;on n&rsquo;a pas l&rsquo;usage d&rsquo;outils avanc\u00e9s de partage de documents, de messagerie instantan\u00e9, ou de synchronisation avec des clients mobiles. De m\u00eame, pourquoi ne pas b\u00e9n\u00e9ficier du support de qualit\u00e9 offert par une soci\u00e9t\u00e9 aux reins solides (d&rsquo;autant plus apr\u00e8s son rachat par Yahoo puis VMware), avec tout ce que cela implique en termes de mises \u00e0 jours, de suivi, et de p\u00e9rennit\u00e9.<\/p>\n<p>Et contrairement aux id\u00e9es re\u00e7ues, il est parfois plus simple d&rsquo;installer un \u00e9norme logiciel (que certains qualifieraient \u00e0 tort d&rsquo;usine \u00e0 gaz), que de se battre \u00e0 int\u00e9grer diff\u00e9rents petits composants les uns avec les autres. Bien s\u00fbr le cot\u00e9 formateur d&rsquo;une telle installation composite est tr\u00e8s appr\u00e9ciable. Mais pour ma part j&rsquo;ai d\u00e9j\u00e0 donn\u00e9 (venu, vu, appris, et pass\u00e9 \u00e0 la dimension sup\u00e9rieure), et j&rsquo;appr\u00e9cie dor\u00e9navant de ne lancer qu&rsquo;un seul script pour installer la derni\u00e8re version de mon MTA, de <a href=\"http:\/\/www.amavis.org\/\">Amavis<\/a>, de l&rsquo;indispensable <a href=\"http:\/\/spamassassin.apache.org\/\">SpamAssassin<\/a>, du serveur IMAP s\u00e9curis\u00e9, tout en r\u00e9cup\u00e9rant plein de nouveaut\u00e9s pour la tr\u00e8s pratique interface web (et je passe d&rsquo;autres composants tout aussi indispensable).<\/p>\n<p>Voil\u00e0, c&rsquo;est pour toutes ces raisons que j&rsquo;ai install\u00e9 un serveur Zimbra pour mon usage personnel (et familial in extensio, ce serait dommage de garder un tel outil pour soi). Cela n&rsquo;est pas all\u00e9 sans quelque gymnastique, bien entendu&#8230; Et voil\u00e0 pourquoi vous lisez cet article : profitez de mes quelques notes, qui je l&rsquo;esp\u00e8re serviront \u00e0 d&rsquo;autres dans l&rsquo;\u00e9tablissement de leur propre serveur de mail personnel.<\/p>\n<h1>Zimbra \u00e0 travers un Apache d\u00e9j\u00e0 existant<\/h1>\n<p>Zimbra vient avec son propre serveur HTTP.<br \/>\nCependant, il est fr\u00e9quent pour un serveur personnel, d&rsquo;avoir d\u00e9j\u00e0 un LAMP ou autre, qui h\u00e9berge divers sites ou service. Il est donc plus pratique de garder son propre Apache sur le port standard 80, et de mettre Zimbra sur un autre port (c&rsquo;est faisable depuis l&rsquo;interface d&rsquo;administration qui elle est accessible sur le port 7071 en HTTPS. Dans cet exemple j&rsquo;ai 82 en HTTP et 445 en HTTPS)<br \/>\nTout d&rsquo;abord, chercher sur internet selon votre distribution, il vous faut installer et activer mod_proxy.<br \/>\nEnsuite je pars du principe que vous utiliser les VirtualHost, tant ceux ci sont pratiques.<\/p>\n<pre>&lt;VirtualHost *:80&gt;<\/pre>\n<pre>\u00a0\u00a0\u00a0 ServerName &lt;nom_hote_virtuel&gt;\n\u00a0\u00a0\u00a0 ServerAlias &lt;autrenom&gt;<\/pre>\n<pre>\u00a0\u00a0\u00a0 # Tr\u00e8s important pour ne pas transformer votre serveur en open proxy !\n\u00a0\u00a0\u00a0 ProxyRequests Off\n\u00a0\u00a0\u00a0 # Le proxypass permet de transf\u00e9rer la requ\u00eate \u00e0 un autre serveur\n\u00a0\u00a0\u00a0 ProxyPass \/ http:\/\/&lt;hote_reel_serveur_zimbra&gt;:82\/\n\u00a0\u00a0\u00a0 # Le proxypassreverse permet de r\u00e9\u00e9crire les pages html afin\n\u00a0 \u00a0 #de faire pointer les liens \u00e0 vers l'h\u00f4te virtuel et non\n\u00a0 \u00a0 # pas vers le nom d'h\u00f4te \/ port r\u00e9el.\n\u00a0\u00a0\u00a0 ProxyPassReverse \/ http:\/\/&lt;hote_reel_serveur_zimbra&gt;:82\/<\/pre>\n<pre>\u00a0\u00a0\u00a0 &lt;Location \"\/\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Order deny,allow\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Allow from all\n\u00a0\u00a0\u00a0 &lt;\/Location&gt;<\/pre>\n<pre>&lt;\/VirtualHost&gt;<\/pre>\n<pre>&lt;IfModule mod_ssl.c&gt;<\/pre>\n<pre>&lt;VirtualHost *:443&gt;<\/pre>\n<pre>\u00a0\u00a0\u00a0 DocumentRoot \"\/var\/www\/\"\n\u00a0\u00a0\u00a0 ServerName &lt;server&gt;\n\u00a0\u00a0\u00a0 ServerAlias &lt;autrenom&gt;<\/pre>\n<pre>\u00a0\u00a0\u00a0 # n'oubliez pas de configurer vous m\u00eame selon l'emplacement de vos certificats\n\u00a0\u00a0\u00a0 SSLEngine on\n\u00a0\u00a0\u00a0 SSLCertificateFile &lt;chemin&gt;\/server.crt\n\u00a0\u00a0\u00a0 SSLCertificateKeyFile &lt;chemin&gt;\/server.key<\/pre>\n<pre>\u00a0\u00a0\u00a0 ProxyRequests Off\n\u00a0\u00a0\u00a0 SSLProxyEngine on\n\u00a0\u00a0\u00a0 ProxyPass \/ https:\/\/&lt;hote_reel_serveur_zimbra&gt;:445\/\n\u00a0\u00a0\u00a0 ProxyPassReverse \/ https:\/\/&lt;hote_reel_serveur_zimbra&gt;:445\/<\/pre>\n<pre>\u00a0\u00a0\u00a0 &lt;Location \"\/\"&gt;<\/pre>\n<pre>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Order Deny,Allow\n\u00a0 \u00a0\u00a0 \u00a0\u00a0 Allow from all\n\u00a0 \u00a0\u00a0 \u00a0\u00a0 BrowserMatch \"MSIE [17-9]\" ssl-unclean-shutdown<\/pre>\n<pre>\u00a0\u00a0\u00a0 &lt;\/Location&gt;<\/pre>\n<pre>&lt;\/VirtualHost&gt;<\/pre>\n<pre>&lt;\/IfModule&gt;<\/pre>\n<h1>G\u00e9rer le spam<\/h1>\n<p>Une de mes premi\u00e8res actions a \u00e9t\u00e9 d&#8217;emp\u00eacher la suppression du spam. Bien que SpamAssassin soit tr\u00e8s efficace, il faut peupler sa base heuristique avant qu&rsquo;il ne soit capable de trier le bon grain de l&rsquo;ivraie. En attendant, il est donc sage de r\u00e9duire \u00e0 z\u00e9ro le nombre de spam supprim\u00e9, en permettant tout de m\u00eame le d\u00e9placement dans le dossier spam de votre boite mail en\u00a0 cas de doute.<br \/>\nCeci se fait depuis l&rsquo;interface d&rsquo;administration (param\u00e8tres globaux, onglet AS\/AV)<\/p>\n<p>Un petit bonus : si le nom de domaine que vous utilisez n&rsquo;est pas le m\u00eame que le nom d&rsquo;h\u00f4te de la machine, alors il est possible que vos comptes spams ne soient plus vraiment coh\u00e9rents avec votre installation. Pour d\u00e9finir de nouveaux comptes spam, vous pouvez passer ces commandes avec l&rsquo;utilisateur zimbra :<\/p>\n<pre>zmprov mcf zimbraSpamIsSpamAccount &lt;adressemailspam&gt;@domain.com\nzmprov mcf zimbraSpamIsNotSpamAccount &lt;adresseemailPASspam&gt;@domain.com<\/pre>\n<p>Si vous \u00eates vicieux, laissez trainer l&rsquo;adresse de spam partout sur Internet. Vous aurez un magnifique pot \u00e0 miel pour peupler votre base de donn\u00e9es \u00e0 peu de frais.<\/p>\n<h1>Optimiser les ressources consomm\u00e9es par Zimbra<\/h1>\n<p>Zimbra est tr\u00e8s demandeur de ressources, aussi bien CPU que m\u00e9moire. En cause : les tr\u00e8s nombreux processus d&rsquo;arri\u00e8re plan comme par exemple l&rsquo;indexation, ou encore pour \u00ab\u00a0troller\u00a0\u00bb un peu, le choix du Java. Si votre Zimbra n&rsquo;est pas tr\u00e8s sollicit\u00e9, alors autant limiter ses ressources d\u00e8s le d\u00e9part afin qu&rsquo;il n&#8217;empi\u00e8te pas sur d&rsquo;autres services temps r\u00e9el de votre machine (serveur vocal, etc.)<\/p>\n<p>On commence par un renice r\u00e9gulier des processus de zimbra dans la crontab. Ceci est n\u00e9cessaire car les processus disparaissent et sont relanc\u00e9s tr\u00e8s fr\u00e9quemment :<\/p>\n<pre>*\/5 * * * * renice 19 -u zimbra &gt; \/dev\/null<\/pre>\n<p>Pour limiter le nombre de thread disponibles pour les clients, utilisez ces commandes :<\/p>\n<pre>zmprov ms this.server.name zimbraHttpNumThreads 50\nzmprov ms this.server.name zimbraPop3NumThreads 5\nzmprov ms this.server.name zimbraImapNumThreads 10<\/pre>\n<p>Pour info, vous pouvez utiliser \u00ab\u00a0<em>zmprov gs\u00a0\u00bb<\/em> pour r\u00e9cup\u00e9rer les valeurs actuelles, ce qui vous permettra de vous rendre compte qu&rsquo;elles sont r\u00e9ellement trop \u00e9lev\u00e9es pour une utilisation personnelle.<\/p>\n<p>Passons \u00e0 la m\u00e9moire. Lancez cette commande :<\/p>\n<pre>zmlocalconfig mailboxd_java_heap_memory_percent<\/pre>\n<p>Vous voyez en lisant le r\u00e9sultat que Zimbra consomme de la m\u00e9moire en fonction du total disponible sur votre machine. Plus vous en avez, plus Zimbra va en prendre. C&rsquo;est pratique, mais ces valeurs sont encore une fois trop importantes pour un faible nombre d&rsquo;utilisateurs. Pourquoi ne pas les modifier \u00e0 la baisse? :<\/p>\n<pre>zmlocalconfig -e mailboxd_java_heap_memory_percent=25\n# Le serveur embarqu\u00e9 mysql fonctionne\n# sur le m\u00eame principe : sabrons le lui aussi !\nzmlocalconfig -e mysql_memory_percent=20<\/pre>\n<p>Si vous avez comme moi install\u00e9 le package Debian sur Ubuntu , car la version finale pour votre distribution pr\u00e9f\u00e9r\u00e9e tardait trop \u00e0 venir, vous avez peut \u00eatre un bug qui conduit \u00e0 une indisponibilit\u00e9 de l&rsquo;application au bout de quelques heures. Dans ce cas voici un moyen d&rsquo;\u00e9liminer ce bug en g\u00e9rant les ressources manuellement :<\/p>\n<pre>zmlocalconfig -e ldap_read_timeout=0\nzmlocalconfig -e ldap_connect_timeout=0<\/pre>\n<p>Ensuite \u00e9ditez <em>\/opt\/zimbra\/jetty\/etc\/jetty-setuid.xml<\/em> et mettez la limite de filedescriptor a 524288.<br \/>\nEditez \/etc\/security\/limits.conf\u00a0 et ajoutez ceci :<\/p>\n<pre>root soft nofile 524288\nroot hard nofile 524288<\/pre>\n<h1>Emp\u00eacher l&rsquo;open relay SMTP mais permettre les envois locaux<\/h1>\n<p>Un vrai danger pour votre machine ! Si celle ci est configur\u00e9e en open relay, alors toutes machines connect\u00e9es \u00e0 internet peut se servir de votre serveur pour envoyer des spams.\u00a0 Les cons\u00e9quences sont dramatiques, avec en t\u00eate une surconsommation de ressources, et un rapide r\u00e9f\u00e9rencement sur les listes RBL, ce qui conduira votre serveur \u00e0 \u00eatre blacklist\u00e9 par tous les grands services mail destinataires.<br \/>\nPar d\u00e9faut Zimbra est configur\u00e9 de fa\u00e7on \u00e0 emp\u00eacher l&rsquo;open relay. Cependant cela peut \u00eatre trop restrictif, et vous pouvez avoir besoin de permettre \u00e0 des services de votre machine d&rsquo;envoyer des mails par eux m\u00eames. Pour cela mettez en liste blanche les adresses locales :<\/p>\n<pre>mprov modifyServer zimbra.example.com zimbraMtaMyNetworks '127.0.0.0\/8 XXX.XX.X.X\/32'<\/pre>\n<h1>Activer le pooling automatique des adresses externes<\/h1>\n<p>Afin de d&rsquo;optimiser l&rsquo;utilisation de votre nouveau serveur, vous allez certainement configurer une r\u00e9cup\u00e9ration automatique des mails sur votre ancienne adresse. Heureusement, la quasi totalit\u00e9 des fournisseurs permet d&rsquo;utiliser le protocole POP, ce qui nous permet facilement d&rsquo;atteindre cet objectif.<br \/>\nPar d\u00e9faut, pour \u00e9conomiser des ressources dans les environnements avec beaucoup d&rsquo;utilisateurs, cette r\u00e9cup\u00e9ration de mail externe ne se fait que sur demande de l&rsquo;utilisateur. Dans le cas d&rsquo;un serveur familial, le surco\u00fbt engendr\u00e9 par un pooling automatique est minime compar\u00e9 aux avantages ergonomiques. Tout d&rsquo;abord :<\/p>\n<pre>zmprov mc default zimbraDataSourcePop3PollingInterval 10m<\/pre>\n<p>Si \u00e7a ne suffit pas (notamment pour les comptes externes d\u00e9j\u00e0 cr\u00e9\u00e9s qui risquent de ne pas prendre en compte la modification), effectuez la configuration au niveau de l&rsquo;utilisateur :<\/p>\n<pre>zmprov ma user@domain.com zimbraDataSourcePollingInterval 5m<\/pre>\n<p>Ou enfin pour \u00eatre bien sur, faites le au niveau du compte externe :<\/p>\n<pre>zmprov mds user@domain.com [external IMAP\/POP account data source name] zimbraDataSourcePollingInterval 15m<\/pre>\n<p>Pour r\u00e9cup\u00e9rer les noms des comptes externes, utilisez cette commande :<\/p>\n<pre>zmprov gds user@domain.com<\/pre>\n<p>Pour tout annuler, remettez \u00e0 z\u00e9ro les valeurs.<\/p>\n<h1>Conclusion<\/h1>\n<p>Je vais faire court : Si vous avez d&rsquo;autres astuces, direction les commentaires !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Zimbra, le groupware open-source, est un outil de messagerie extr\u00eamement puissant, principalement destin\u00e9 aux entreprises ou aux grosses associations. En connaissant cette orientation, lorsqu&rsquo;on d\u00e9cide de s&rsquo;installer son propre serveur de mail personnel , Zimbra n&rsquo;est \u00e9videmment pas le premier nom qui vient \u00e0 l&rsquo;esprit. On pense plus naturellement \u00e0 quelque chose comme Roundcube, en [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[9],"tags":[56],"_links":{"self":[{"href":"https:\/\/mmed.roulleau.net\/index.php?rest_route=\/wp\/v2\/posts\/116"}],"collection":[{"href":"https:\/\/mmed.roulleau.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mmed.roulleau.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mmed.roulleau.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mmed.roulleau.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=116"}],"version-history":[{"count":0,"href":"https:\/\/mmed.roulleau.net\/index.php?rest_route=\/wp\/v2\/posts\/116\/revisions"}],"wp:attachment":[{"href":"https:\/\/mmed.roulleau.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=116"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mmed.roulleau.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=116"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mmed.roulleau.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}