Aller au contenu

Fondamentaux de la messagerie

Architecture d'un système de messagerie

Un système de messagerie repose sur trois composants distincts :

graph LR
    MUA1["MUA<br/>(client)<br/>Expediteur"] -->|SMTP| MTA["MTA<br/>(relais)"]
    MTA -->|SMTP| MDA["MDA<br/>(livraison)"]
    MUA2["MUA<br/>(client)<br/>Destinataire"] -->|IMAP/JMAP| MDA
Composant Rôle Exemples
MUA Mail User Agent — client de messagerie Thunderbird, Apple Mail, webmail
MTA Mail Transfer Agent — relais SMTP Postfix, Stalwart, Maddy
MDA Mail Delivery Agent — livraison locale Dovecot, Stalwart, Sieve

All-in-one vs modulaire

Les solutions modernes comme Stalwart et Maddy combinent MTA et MDA dans un seul processus. L'architecture classique Postfix (MTA) + Dovecot (MDA) separe les deux rôles, offrant plus de flexibilite mais plus de complexité.

Protocoles de messagerie

SMTP — Simple Mail Transfer Protocol

SMTP est le protocole de transport des emails entre serveurs. C'est le seul protocole utilise pour envoyer et relayer les messages.

Aspect Detail
Port 25 (serveur-a-serveur), 587 (soumission client)
Sécurité STARTTLS (port 25/587) ou TLS implicite (port 465)
Authentif. PLAIN, LOGIN (sur canal chiffre), XOAUTH2
Standard RFC 5321 (SMTP), RFC 6409 (soumission)
sequenceDiagram
    participant C as Client MUA
    participant S as Serveur SMTP
    C->>S: EHLO client.example.com
    S->>C: 250 STARTTLS
    C->>S: STARTTLS
    Note over C,S: Negociation TLS
    C->>S: AUTH LOGIN
    C->>S: MAIL FROM:<alice@co.io>
    C->>S: RCPT TO:<bob@dest.io>
    C->>S: DATA (contenu du message)
    C->>S: .
    S->>C: 250 OK

IMAP — Internet Message Access Protocol

IMAP est le protocole de consultation des emails. Les messages restent sur le serveur, le client se synchronise.

Aspect Detail
Port 993 (TLS implicite), 143 (STARTTLS)
Opérations SELECT, FETCH, SEARCH, STORE, COPY, MOVE
Extensions IDLE (push), CONDSTORE, QRESYNC
Standard RFC 9051 (IMAP4rev2)

JMAP — JSON Meta Application Protocol

JMAP est le successeur moderne d'IMAP. Il utilise HTTP/JSON au lieu d'un protocole binaire proprietaire.

Aspect IMAP JMAP
Transport TCP direct, protocole texte HTTP/JSON (REST-like)
Connexion Connexion persistante (IDLE) Push via EventSource/WebSocket
Sync CONDSTORE, QRESYNC (complexe) State strings (simple, stateless)
Batch Une commande à la fois Requêtes batch natives
Firewall Port 993 spécifique Port 443 (HTTPS standard)
Mobile Consommation batterie elevee Optimise pour le mobile
Standard RFC 9051 RFC 8620, RFC 8621

JMAP : le futur de la consultation email

JMAP simplifie considérablement l'implementation des clients email. Il est supporte nativement par Stalwart. Les clients Thunderbird et Apple Mail commencent a le supporter. C'est un critère de choix important pour une solution perenne.

POP3 — Post Office Protocol

POP3 est un protocole de consultation ancien qui telecharge et supprime les emails du serveur. Il est deconseille pour un usage moderne (pas de synchronisation multi-appareils).

Aspect Detail
Port 995 (TLS), 110 (STARTTLS)
Modèle Telecharge et supprime
Usage Legacy, cas spécifiques

DNS pour la messagerie

Le DNS est fondamental pour le routage et la sécurité des emails. Plusieurs types d'enregistrements sont nécessaires.

Enregistrement MX

L'enregistrement MX (Mail eXchanger) indique quel serveur reçoit les emails pour un domaine :

; Zone DNS pour company.io
company.io.    300  IN  MX  10  mail.company.io.
company.io.    300  IN  MX  20  mail-backup.company.io.

mail.company.io.         300  IN  A  203.0.113.10
mail-backup.company.io.  300  IN  A  203.0.113.11

La priorité (10, 20) determine l'ordre de tentative : le serveur de priorité la plus basse est contacte en premier. Le serveur de priorité 20 sert de backup.

Enregistrement SPF

SPF (Sender Policy Framework) declare quelles adresses IP sont autorisees a envoyer des emails pour un domaine :

; Seul le serveur mail.company.io peut envoyer pour company.io
company.io.  300  IN  TXT  "v=spf1 mx a:mail.company.io -all"
Qualificateur Signification
+all Tout le monde peut envoyer (dangereux)
~all Soft fail — marquer comme suspect
-all Hard fail — rejeter
?all Neutre — pas d'avis

Toujours utiliser -all

Un enregistrement SPF avec ~all est insuffisant : les emails forges seront marques comme suspects mais pas rejetes. Utilisez -all pour un rejet strict des expéditeurs non autorises.

Enregistrement DKIM

DKIM (DomainKeys Identified Mail) signe cryptographiquement chaque email sortant. Le serveur destinataire verifie la signature via un enregistrement DNS TXT :

; Cle publique DKIM
default._domainkey.company.io.  300  IN  TXT  (
    "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..."
)

Le serveur d'envoi signe l'email avec la cle privee correspondante. Le récepteur récupère la cle publique via DNS et verifie la signature.

Enregistrement DMARC

DMARC (Domain-based Message Authentication, Reporting & Conformance) définit la politique a appliquer quand SPF et DKIM échouent :

; Politique DMARC : rejeter les emails non authentifies
_dmarc.company.io.  300  IN  TXT  (
    "v=DMARC1; p=reject; rua=mailto:dmarc-reports@company.io; "
    "ruf=mailto:dmarc-forensic@company.io; pct=100"
)
Parametre Valeurs Recommandation
p none, quarantine, reject reject en production
rua Adresse rapports agreges Configurer systematiquement
ruf Adresse rapports forensic Optionnel (volume eleve)
pct 0-100 (% de messages) 100 en regime permanent

Autoconfig et Autodiscover

Pour simplifier la configuration des clients email, deux mécanismes de découverte automatique existent :

; Mozilla Autoconfig (Thunderbird)
autoconfig.company.io.  300  IN  CNAME  mail.company.io.

; Microsoft Autodiscover (Outlook)
_autodiscover._tcp.company.io.  300  IN  SRV  0  0  443  mail.company.io.

Le serveur mail doit exposer un fichier XML de configuration sur ces endpoints :

  • https://autoconfig.company.io/mail/config-v1.1.xml (Mozilla)
  • https://mail.company.io/autodiscover/autodiscover.xml (Microsoft)

Chaîne d'authentification email

Les quatre mécanismes d'authentification s'empilent pour former une chaîne de confiance :

graph TD
    Email["Email entrant"] --> SPF
    SPF["SPF<br/>IP autorisee ?"] -->|pass / fail / softfail| DKIM
    DKIM["DKIM<br/>Signature valide ?"] -->|pass / fail / temperror| DMARC
    DMARC["DMARC<br/>SPF ou DKIM alignes<br/>avec le domaine From: ?"] -->|pass: none / quarantine / reject| ARC
    ARC["ARC<br/>Chaine de relais<br/>intermediaires verifiee ?"] -->|Preserve l authentification<br/>apres forwarding| Done["Resultat"]

ARC — Authenticated Received Chain

ARC résout un problème fondamental : quand un email est relaye (mailing list, redirect), les signatures DKIM et SPF d'origine échouent. ARC cree une chaîne de confiance entre les intermédiaires :

En-tête Rôle
ARC-Seal Scelle les résultats d'authentification
ARC-Message-Signature Signature DKIM du message au point de relais
ARC-Authentication-Results Résultats SPF/DKIM/DMARC au point de relais

Filtrage anti-spam

rspamd

rspamd est le filtre anti-spam moderne de référence. Il utilise une combinaison de techniques :

Technique Description Efficacité
Regles statiques Patterns connus de spam Moyenne
Bayesien Apprentissage statistique Elevee
Fuzzy hashing Detection de messages similaires Elevee
DNS blocklists (DNSBL) Listes noires d'IP connues Elevee
SPF/DKIM/DMARC Vérification d'authentification Elevee
Neural network Classification par réseau de neurones Tres elevee
Rate limiting Limitation du débit par expéditeur Moyenne

SpamAssassin

SpamAssassin est l'alternative historique, écrite en Perl. Moins performant que rspamd mais avec une base de regles tres mature :

Critère rspamd SpamAssassin
Langage C + Lua Perl
Performance Eleve (async, multi-thread) Moyenne (mono-process)
Configuration Web UI + fichiers Fichiers uniquement
Apprentissage Bayesien + neural + fuzzy Bayesien uniquement
Integration Milter, HTTP API, proxy Milter, spamc/spamd
Recommandation Nouveau déploiement Legacy existant

Listes de diffusion

Les listes de diffusion (mailing lists) permettent d'envoyer un email a un groupe d'adresses. Deux modes de fonctionnement :

Mode Description Exemple
Liste Les réponses vont a la liste (discussion) dev@lists.company.io
Announce Seuls les moderateurs peuvent poster announce@lists.company.io
Alias Simple expansion d'adresse, pas de moderation équipe-ops@company.io

Stalwart supporte les listes de diffusion nativement. Pour des besoins avances (archives web, moderation, abonnement), un outil dedie comme Sympa ou GNU Mailman peut etre ajoute.

Integration calendrier (CalDAV)

CalDAV est le protocole standard pour la synchronisation des calendriers, des contacts (CardDAV) et des tâches. Il est complementaire de la messagerie car :

  • Les invitations de calendrier transitent par email (format iCalendar/iMIP)
  • Le serveur de messagerie peut traiter les réponses aux invitations automatiquement
  • Un point d'accès unique (même serveur, même authentification) simplifie l'expérience utilisateur
Composant Protocole Port Standard
Calendrier CalDAV 443 RFC 4791
Contacts CardDAV 443 RFC 6352
Invitations iMIP RFC 6047

Stalwart integre un serveur CalDAV/CardDAV natif, ce qui evite le déploiement d'un serveur de calendrier separe (Radicale, Baical).

Synthese

La messagerie est un ecosysteme complexe qui repose sur de multiples protocoles et standards. La bonne comprehension de la chaîne SMTP→IMAP, des enregistrements DNS et de la chaîne d'authentification SPF→DKIM→DMARC→ARC est un prerequis avant de choisir et déployer une solution. Le chapitre suivant compare les solutions disponibles.