Recette de cuisine : serveur de messagerie collaborative, inter‐opérant et sans extensions

31
28
jan.
2016
Technologie

Liberasys rend public ses recettes de cuisine pour créer un serveur de courriels collaboratif. Postfix, PostfixAdmin, Dovecot, Horde, Apache, PHP, MySQL, ClamAV, rmilter, rspamd. SPF, DKIM, DMARC. Synchronisation des clients sans utilisation de greffons. Inter-opérant, quasi-universel et conforme à l'état de l'art.

Voir le lien pour le contenu et les liens vers les recettes. C'est le résultat de 3 semaines de travail à temps complet. Faire son propre serveur de courriel, avec les fonctionnalités modernes est de plus en plus complexe.

Sommaire

Introduction

Pourquoi ?

Je voulais pour ma société et pour moi‐même un système de courriel qui se rapproche le plus des fonctionnalités que l’on trouve dans les systèmes des grands éditeurs. Et je voulais installer le tout sur un serveur que je maîtrise.

Quand ?

Sur l’année 2015, j'ai fait une étude préliminaire des différentes solutions. Entre août et octobre, j’ai travaillé à intégrer les différentes briques et à documenter. Cela représente trois semaines de travail à temps plein.

Comment ?

Les spécifications étaient :

  • utiliser un maximum de logiciels libres ;
  • utiliser des composants logiciels connus, fiables et maintenus par une société ou une communauté ;
  • gérer les boîtes de courriels virtuels (les utilisateurs n’ont pas de compte sur le système) ;
  • gérer les synchronisations avec les clients lourds et les terminaux mobiles, notamment courriel, agenda et carnet d’adresses ;
  • pouvoir partager des informations entre utilisateurs (exemples : agenda entre un directeur et une assistante de direction, ou partager l’agenda de ma chérie et le mien pour savoir qui va chercher notre enfant à l’école au jour le jour) ;
  • être conforme à l’état de l’art en termes de sécurité et en terme de gestion de réputation d’émetteur de courriels.

Qui ?

Gautier Husson, Liberasys.

Architecture générale

Je me suis rendu compte que l’architecture générale dépendait fortement du « cœur de synchronisation ». Aujourd’hui (de mon point de vue), c’est à ce niveau que se situe la valeur ajoutée d’un système de courriel. C’est ce que tout le monde veut de nos jours : avoir des outils efficaces, simples à prendre en main et permettant de collaborer facilement. Le « cœur de synchronisation » n’est pas toujours une seule brique logicielle, il peut être lié et implémenter l’ensemble des fonctionnalités du système de courriel. Il fallait alors choisir ce « cœur de synchronisation ».

J’ai fureté longtemps. Je connaissais de nom et je me suis renseigné sur : Zimbra, OBM, BlueMind, OpenXchange, Kolab. Je n’étais pas satisfait, car soit le logiciel était codé avec des bases difficiles à maintenir pour moi (ex : programme en Java), soit la licence n’était pas de type logiciel libre, soit le logiciel nécessitait un client spécifique ou des extensions propriétaires sur les clients lourds. Puis j’ai redécouvert Horde.

Horde est un projet qui existe depuis longtemps. Il a connu une baisse de régime dans les années 2008-2012, quelque chose comme ça. En conséquence, il est « tombé dans l’oubli ». Mais, depuis quelques années, la société éditrice a mis les bouchées doubles pour rattraper son retard. Beaucoup d’administrateurs système se souviennent de l’interface très moche et très « vieille école » de Horde. Mais cette dernière a été entièrement revue. Personnellement, je la trouve un peu triste en termes de charte graphique (gris), mais on peut personnaliser tout ça ! Globalement, l’interface utilisateur n’est pas aussi aboutie que d’autres serveurs de courriel. Mais, « ça fait le boulot » et tout le monde n’utilise pas cette interface.

Ce qui m’a vraiment plu avec Horde :

  • code en PHP ;
  • sur leur site on peut voir des informations précises sur les spécifications de synchronisation ;
  • hautement intégrable et paramétrable ;
  • bonne communauté libre ;
  • logiciel libre avec une société éditrice qui fait payer du conseil à l’heure (au cas où l’on a un besoin d’expertise) ;
  • pendant le travail sur le projet, les collaborateurs de Horde ont fait un financement par les masses (crowdfunding), dont le but est d’implémenter la dernière version du protocole ActiveSync. Je n’ai pas retrouvé les éléments, mais ils demandaient quelque chose comme 3 000 US$, ils y sont arrivés en moins de deux semaines. Cela m’a vraiment fait plaisir de voir ça !

Je suis donc parti sur Horde comme « cœur de synchronisation ». Les tâches confiées à Horde dans mon architecture sont les suivantes :

  • webmail (je ne sais pas comment on peut dire en bon français) ;
  • client web pour l’agenda, les contacts, les tâches, les partages de fichiers (je n’intègre pas cette dernière fonctionnalité) ;
  • client web pour les filtres de courriels (SIEVE) ;
  • client web pour la gestion des droits (je partage mes données avec qui et comment) ;
  • synchronisation des courriels, agendas et carnets d’adresses avec CardDAV, CalDAV et ActiveSync, compatible Android, iOS et Outlook.

Il me manquait encore certaines tâches :

  • serveur de courriel (SMTP) ;
  • serveur de boîtes de courriels (IMAP) ;
  • antivirus, anti‐pourriels ;
  • gestion de la réputation (SPF, DKIM, DMARC).

Les choix effectués ont alors été les suivants :

  • SMTP : j’ai travaillé un peu avec Sendmail et EXIM et beaucoup avec Postfix, j’ai donc choisi ce dernier sans me poser de question (je ne vais pas m’étaler sur ce qui m’a poussé à choisir Postfix dans les architectures que j’ai mises en place précédemment) ;
  • IMAP : j’ai travaillé un peu avec Cyrus et beaucoup avec Dovecot, je suis donc resté sur ce dernier. À noter (suite à discussion que j’ai eue avec M. Maudet de Linagora) : Dovecot a été repris par une société et fait des modules payants, on sort donc du cadre purement logiciel libre, d’où le fait que Linagora ait préféré intégrer Cyrus ;
  • antivirus : le premier qui me soit passé sous le coude dans les recettes de cuisine que j’ai trouvées sur Internet : Clamav (en passant, je me suis laissé entendre dire que la qualité de détection de la base antivirus avait bien baissé ces dernières années, en conséquence il faudrait voir à intégrer une meilleure brique logicielle au besoin) ;
  • antispam : j’ai travaillé un petit peu avec SpamAssassin et dspam, j’ai découvert et décortiqué rspamd, ça m’a plu (code, fonctionnalités à venir, paquet Debian…), alors je l’ai intégré : l’avantage est qu’il ne fait pas que de l’analyse bayésienne, mais l’inconvénient est que la base statistique est unique pour tous les comptes de courriel (mais cela va changer dans les prochaines versions) ;
  • pour lier Postfix à Clamav et rspamd, j’ai utilisé le multiplexeur de canal « milter » rmilter, qui, coup de bol, s’occupe également des signatures DKIM.

Les petites choses en plus

Quitte à refaire une architecture complète, j’ai intégré des petits bonus. Tout d’abord, les répertoires virtuels dans Dovecot : cela permet d’avoir les messages importants dans un dossier et les nouveaux messages dans un autre. J’ai essayé de faire un dossier qui présente tous les courriels (entrants et sortants, c’est très pratique pour suivre les échanges), mais ça faisait boucler Icedove. Je n’ai pas investigué ce problème, j’ai donc désactivé ce dossier virtuel.

Ensuite, la liaison Dovecot — Horde via le protocole SIEVE. Elle permet l’édition facile des filtres pour les utilisateurs et permet l’activation d’un message d’absence.

Continuons avec le dossier des pourriels : Dovecot est lié à rspamd : quand un pourriel arrive, il va dans un dossier particulier et est marqué comme lu. Si le courriel en question est déplacé dans un autre dossier, rspamd change sa base statistique pour du ham (non spam).

Enfin, pour la gestion de la réputation, j’ai créé un script qui facilite le travail de l’administrateur système : il crée les clefs asymétriques, donne les paramètres à configurer dans le cadre de cette infrastructure pour implémenter SPF, DKIM et DMARC pour vos noms de domaine (configuration pour rmilter et le serveur DNS).

Conclusion

Voilà un système complet de messagerie moderne basé sur des logiciels libres ou à code source ouvert. Cela intègre pas mal de briques logicielles interdépendantes. L’ensemble fonctionne depuis quelques mois pour ma société et mon cadre familial, et j’en suis très satisfait.

Je voulais libérer les recettes de cuisine, car j’ai moi‐même été inspiré de plusieurs recettes par le passé, pour le cadre professionnel ou personnel. Et, aujourd’hui, c’est compliqué de trouver une recette qui fonctionne « clef en main », à jour et intégrant toutes les briques nécessaires et la gestion de la réputation.

Autant vous le dire tout de suite : non, je ne vais pas faire de support gratuitement ici sur cette solution, désolé. :-( Mais, je suis sûr que d’autres administrateurs système vous aideront en cas de pépin.

Profitez bien et dégooglisez Internet !

  • # rspamd permet (pas très facilement) les statistiques par utilisateurs

    Posté par . Évalué à 1.

    Par contre, depuis la version 1.1, c'est séparé des statistiques par langue. Donc il faut choisir, ou faire deux filtres, comme indiqué dans la documentation

    Sinon, intéressant résumé de configuration :)

    • [^] # Re: rspamd permet (pas très facilement) les statistiques par utilisateurs

      Posté par (page perso) . Évalué à 2.

      Ahhh chouette, merci pour l'info. Et en plus ils font le paquet Debian. A propos je viens de lire sur leur site :
      "Debian official repos
      Rspamd is also available in some versions of Debian and Ubuntu. However, we are looking for an active maintainer for rspamd in these ‘official’ repos, as now rspamd is terribly outdated there."

  • # clamav

    Posté par . Évalué à 3.

    J'ai aussi installé clamav sur quelques serveurs de messageries, mais il ne trouve jamais rien.

    La base est pourtant bien mise à jour quotidiennement; mais je n'ai jamais de rapport de mail bloqué dans les logs (sauf mes tests avec EICAR) et lorsque j'ai le courage de lui faire tester manuellement un fichier manifestement vérole, il ne trouve jamais rien à lui reprocher.
    J'ai déjà soumis des fichiers sur leur interface de signalement, mais ça n'a semble-t'il pas eu le moindre effet.

    Pour l'instant, je l'ai laissé configuré, mais je suis plutôt déçu.

    • [^] # Re: clamav

      Posté par . Évalué à 3.

      De mon côté il ne me signale que des faux positif.
      Je doute de son utilité mais sur Linux en gratuit il n'y a que ça.

    • [^] # Re: clamav

      Posté par . Évalué à 1.

      J'utilise des règles qui bloquent (pour les clients Windows principalement) les fichiers executables, scripts,… y compris dans les fichiers compressés (zip, rar, …).

      Je n'ai pas encore regardé cela en détail mais la prochaine étape serait un filtre qui permet d'enlever les macros des fichiers "Microsoft Office". A priori il existe des techniques (mais serait-ce applicable sous linux)

      Avec ces deux règles on évite déjà pas mal de risques.

    • [^] # Re: clamav

      Posté par . Évalué à 2.

      Pour info, il existe la base de SecuriteInfo qui propose des mises à jour de signature pour pas très cher : https://www.securiteinfo.com/services/improve-detection-rate-of-zero-day-malwares-for-clamav.shtml

      Ça améliore grandement l'efficacité de Clamav. Les signatures sont faites par Arnaud Jacques, "official sigmaker of Clamav from 2005 to 2012."

    • [^] # Re: clamav

      Posté par (page perso) . Évalué à 3.

      Il faut ajouter des signatures externes pour avoir un bon filtrage. Le paquet Debian clamav-unofficial-sigs fournit un script qui télécharge des signatures externes au projet Clamav :

      La description du paquet Debian :

      Description: update script for 3rd-party clamav signatures
      This package provides a script for updating the following sources of
      3rd-party clamav signatures until freshclamav gains support for such
      signatures.
      .
      The SaneSecurity/OITC signatures provide detection of phishing, spear
      phishing, fake lottery, ecard malware, casino, fake jobs, fake loans,
      419s, fake diplomas, porn, emailed malware and other general spam.
      .
      MSRBL signatures provide detection of image spam and general spam.
      .
      SecuriteInfo signatures provide various badware signatures,
      securiteinfo.com honeypot signatures, honeynet.cz signatures
      and French anti-spam signatures
      .
      MalwarePatrol provides detection of mail containing URLs to malware.

  • # Owncloud ?

    Posté par . Évalué à -1.

    Mais pourquoi pas Owncloud ???

    • [^] # Re: Owncloud ?

      Posté par (page perso) . Évalué à 1.

      A ma connaissance ownCloud ne fait pas serveur de courriel ni boite aux lettres.
      ownCloud ne gère pas les invitations de membres externes au système pour les rendez-vous. De plus le protocole ActiveSync n'est pas pris en charge. J'ai testé en 2014 pour agenda et carnet d'adresses et ça a peut être changé depuis. Mais il manquait des fonctionnalités et de l'universalité dans le synchronisation des clients.

  • # merci

    Posté par . Évalué à 0.

    merci pour votre partage ;o)

    • [^] # Re: merci

      Posté par (page perso) . Évalué à 1.

      Eh bien j'ai envie de dire : de rien, pourvu que ça serve :-).
      Et pour ceux qui seraient attirés par SoGo ou autre, vous aurez peut être besoin d'une infra mail en plus (IMAP/gestion des comptes/réputation/SMTP, …), et ces recettes peuvent vous aider aussi.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.