Résumé technique

Les mails sont des fichiers textes relayés de serveur en serveur, comportant (entre autres) un corps, une adresse d’expéditeur, et une adresse de destinataire. Les serveurs chargés de relayer ou transmettre des mails sont des MTA (Mail Transfer Agent). Le protocole que les MTA utilisent pour communiquer entre eux est SMTP. Ce protocole présente cependant des limites, notamment en terme d’authentification de l’entité émettrice (qui a réellement envoyé ce mail?). Les solutions à ce problème sont principalement apportées par l’enregistrement de champs spécifiques dans le DNS :

  • un champ SPF permet au propriétaire d’un nom de domaine de spécifier les serveurs autorisés à émettre les mails dont l’adresse de l’expéditeur appartient à ce nom de domaine. Il revient donc à ces serveurs de vérifier que seuls des personnes ou des services légitimes envoient volontairement des mails, pour éviter le spam.
  • un champ DKIM permet de vérifier l’intégrité d’un mail par un mécanisme de chiffrement asymétrique.
  • un champ DMARC permet de spécifier la procédure à adopter en cas d’échec aux tests précédents. Au choix, il est possible d’envoyer un rapport au propriétaire du nom de domaine, d’accepter ou refuser l’envoi du mail, etc.

Le propriétaire d’un nom de domaine peut, via des champs MX dans le DNS, désigner des serveurs chargés de recevoir les mails dont l’adresse du destinataire appartient à ce nom de domaine. Ces serveurs de bout de chaîne connaissent leur propre domaine et, au lieu de transmettre le mail à un autre serveur, vont l’enregistrer dans une boîte aux lettres (BAL). Il existe des serveurs spécialisés dans l’archivage de mails, ce sont les MDA (Mail Delivery Agent). Ces serveurs permettent à des utilisateurs authentifiés de consulter leur boîte aux lettres via les protocoles IMAP ou POP.

Chez Picasoft, nous utilisons Postfix et Dovecot, respectivement en tant que MTA et MDA. Les schémas suivant illustrent le parcours d’un mail entrant et sortant de Picasoft :

Réception d'un mail:

 Mail entrant chez Picasoft

Envoi d'un mail

 Mail sortant de Picasoft

Réseau

Le MDA et le MTA sont dans deux conteneurs1) séparés. Ils communiquent entre eux par TCP/IP, via un docker network qui leur est dédié. Ils utilisent le protocole LMTP (SMTP local). C’est une version modifiée de SMTP, optimisée pour la livraison de mail entre serveurs de confiance sur le même réseau, un peu moins polie 2) mais plus efficace.

Ils peuvent exposer certains ports: le 25 pour le SMTP et le 143 pour l’IMAP notamment.

Ils sont aussi clients d'un serveur LDAP, un annuaire qui leur fournit la liste des utilisateurs et permet de les authentifier par mot de passe.

Stockage

Dovecot a besoin de stocker les mails qu’il reçoit; il utilise pour cela une structure de système de fichiers appelée Maildir. Il en existe d’autres. Les fichiers Maildir sont écrits sur un docker volume, ce qui signifie que les boîtes survivent à un kill de conteneur.


2)
En effet, les serveurs SMTP ont tendance à respecter beaucoup d’usages a priori inutiles pour la transmission proprement dite du mail: ils se disent bonjour, ils déclinent leur identité, la version de leur logiciel, etc. Ces protocoles visent à reconnaître et éliminer les crawlers qui scannent bêtement la toile et ne respectent pas ces bonnes manières. En LMTP, on ne s’encombre pas de politesse car les deux serveurs se font plus “confiance”: ils sont censés être sur un réseau local.
  • technique/adminsys/mail/archi/presentation.txt
  • de qduchemi