{{indexmenu_n>1}} # Résumé technique ===== Contexte général ===== ==== L'émission ==== 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 [[technique:old:etudes:mail:serveurs_de_mail:mta|MTA]] (//Mail Transfer Agent//). Le protocole que les MTA utilisent pour communiquer entre eux est [[technique:old:etudes:mail:protocoles:smtp|SMTP]]. Ce protocole présente cependant des [[technique:old:etudes:mail:protocoles:smtp:limites|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 [[technique:old:etudes:mail:protocoles:smtp:limites#spf|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 [[technique:old:etudes:mail:protocoles:smtp:limites#dkim|DKIM]] permet de vérifier l'intégrité d'un mail par un mécanisme de chiffrement asymétrique. * un champ [[technique:old:etudes:mail:protocoles:smtp:limites#dmarc|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. ==== La réception ==== 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 [[technique:old:etudes:mail:serveurs_de_mail:mda|MDA]] (//Mail Delivery Agent//). Ces serveurs permettent à des [[technique:old:etudes:mail:users:sasl|utilisateurs authentifiés]] de consulter leur boîte aux lettres via les protocoles [[technique:old:etudes:mail:protocoles:imap|IMAP]] ou [[https://fr.wikipedia.org/wiki/Post_Office_Protocol|POP]]. ===== Mise en place chez Picasoft ===== ==== Les logiciels utilisés et le flux des mails ==== Chez Picasoft, nous utilisons [[http://www.postfix.org|Postfix]] et [[https://dovecot.org|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: == {{ ::illustration_mail_1.png?direct&600 | Mail entrant chez Picasoft}} == Envoi d'un mail == {{ :illustration_mail_2.png?direct&600 | Mail sortant de Picasoft}} ==== L'architecture ==== === Réseau === Le MDA et le MTA sont dans deux conteneurs(([[https://putaindecode.io/fr/articles/docker/]])) séparés. Ils communiquent entre eux par TCP/IP, via un [[technique:adminsys:mail:archi:communication-conteneurs-mta-mda|docker network]] qui leur est dédié. Ils utilisent [[technique:old:etudes:mail:protocoles:lmtp|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 ((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.)) mais plus efficace. Ils peuvent exposer certains ports: le 25 pour le SMTP et le 143 pour l'IMAP notamment. Ils sont aussi [[technique:old:etudes:mail:users:sasl|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 [[technique:old:etudes:mail:users:formatstockage|Maildir]]. Il en existe d'autres. Les [[technique:adminsys:mail:archi:stockage_des_mails|fichiers Maildir sont écrits sur un docker volume]], ce qui signifie que les boîtes survivent à un kill de conteneur.