Architecture du transport mail
Un courriel traverse plusieurs entités : le Mail User Agent (MUA) sur le poste client, le Mail Submission Agent (MSA) qui authentifie l’utilisateur (souvent via TLS sur le port 465), le Mail Transfer Agent (MTA) qui utilise SMTP sur le port 25 pour communiquer avec d’autres serveurs, le Mail Delivery Agent (LDA) qui stocke le message dans la boîte IMAP du destinataire, et enfin le MUA du destinataire. Ces rôles peuvent être combinés sur une même machine, mais la séparation logique permet la résilience : si le serveur de destination est indisponible, le MTA conserve le message et réessaie plus tard.
# dig MX maurycyz.com
maurycyz.com. 300 IN MX 1 smallcrow.com.
# dig A smallcrow.com
smallcrow.com. 300 IN A 65.109.172.162Le champ MX indique le serveur de messagerie prioritaire (le chiffre 1 représente la priorité la plus élevée). Cette résolution DNS est la première étape d’une remise SMTP.
Mécanismes de remise et de reprise
Après la résolution, le MTA initie une session SMTP. Le client envoie HELO ou EHLO suivi de son nom d’hôte, puis MAIL FROM et RCPT TO. Une fois les adresses acceptées, la commande DATA ouvre le flux du corps du message, qui se termine par la séquence .. Le serveur répond 250 2.0.0 Ok: queued as … pour confirmer la prise en charge.
telnet> set crlf
open smallcrow.com 25
220 smallcrow.com ESMTP Postfix
HELO nowhere
250 smallcrow.com
MAIL FROM:
250 2.1.0 Ok
RCPT TO:
250 2.1.5 Ok
DATA
354 End data with .
From: me@nowhere
To: blog@maurycyz.com
Hello, world.
.
250 2.0.0 Ok: queued as C870D7CD93
QUIT
221 2.0.0 ByeEn cas d’erreur temporaire (code 4xx), le MTA applique une stratégie d’attente exponentielle : l’exemple fourni indique un premier délai de 5 minutes, puis une augmentation jusqu’à une heure, la tentative se poursuivant pendant cinq jours au total.
Analyse des réponses SMTP et des enjeux de sécurité
Les réponses SMTP sont classées : 2xx = succès, 3xx = continuation, 4xx = erreur temporaire, 5xx = échec définitif. Cette granularité permet au MTA d’ajuster la logique de reprise ou de générer un message d’erreur (bounce). Le bounce utilise un MAIL FROM: vide pour éviter les boucles infinies.
Le protocole ajoute un en‑tête Received à chaque saut, créant une chaîne de traçabilité. Cette traçabilité aide à identifier les sources de spam, mais elle expose également des informations sur l’infrastructure interne.
Le phénomène de « backscatter » apparaît quand un serveur accepte un message dont l’expéditeur est falsifié. Si le destinataire final ne peut pas livrer, le serveur renvoie un rejet à l’expéditeur falsifié, générant du trafic indésirable. Les bonnes pratiques recommandent de ne pas accepter un message avant d’avoir vérifié la possibilité de livraison locale.
Enfin, la soumission client utilise souvent l’authentification AUTH PLAIN encodée en base64, comme illustré : AUTH PLAIN 334 AGh1bnRlcgBodW50ZXIy suivi de 235 2.7.0 Authentication successful. Cette étape garantit que seul un utilisateur légitime peut injecter du courrier via le port 465.