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.