← RFC Reference

RFC 5321 – Protocole simple de transfert de courrier

Norme Actuelle SMTP fondamental et format de message Obsoletes RFC 2821 Published March 2026
ELI5: SMTP est le service postal d'Internet. Lorsque vous envoyez un e-mail, votre serveur de messagerie ouvre une conversation avec le serveur de messagerie du destinataire, se présente, indique qui envoie la lettre et à qui elle va, puis remet la lettre. Le serveur récepteur l'accepte, dit « réessayez plus tard » ou la refuse catégoriquement. Chaque e-mail que vous avez jamais envoyé a voyagé sur SMTP.

Pourquoi cette RFC existe

SMTP est le protocole le plus ancien et le plus fondamental alimentant le courrier électronique. Son origine remonte à la RFC 821, publiée en 1982 par Jon Postel. La RFC 5321, publiée en 2008, est la spécification définitive actuelle. Elle a consolidé des décennies d'extensions, de clarifications et d'expérience opérationnelle dans un seul document faisant autorité.

L'évolution clé de la RFC 821 à la 5321 comprend : la formalisation d'ESMTP (Extended SMTP), la clarification du comportement de relais par rapport à l'envoi, des exigences plus strictes concernant les recherches MX DNS, des règles mises à jour pour les littéraux d'adresses et IPv6, et des exigences pour la gestion des retours. Cette RFC est la base sur laquelle toutes les autres RFC de courrier électronique s'appuient.

Comment cela fonctionne

Une transaction SMTP est une conversation structurée entre deux serveurs sur une connexion TCP (traditionnellement le port 25). Le protocole est basé sur du texte et orienté ligne — chaque commande et réponse est un ASCII lisible.

Le modèle SMTP

SMTP définit trois rôles :

Le client se connecte, s'identifie avec EHLO, spécifie l'expéditeur de l'enveloppe (MAIL FROM), un ou plusieurs destinataires (RCPT TO), puis transmet les données du message (DATA). Le serveur répond à chaque commande par un code d'état à trois chiffres.

Les commandes SMTP

Commande Objectif
EHLO Identifier le client et demander les fonctionnalités étendues. Remplace l'ancien HELO.
MAIL FROM:<addr> Spécifier l'expéditeur de l'enveloppe (chemin de retour pour les retours).
RCPT TO:<addr> Spécifier un destinataire. Émis une fois par destinataire.
DATA Commencer la transmission du contenu du message. Se termine par un seul . sur une ligne.
RSET Abandonner la transaction actuelle et réinitialiser l'état.
VRFY Vérifier qu'un utilisateur existe (rarement supporté en raison des abus).
EXPN Développer une liste de diffusion (rarement supportée).
NOOP Aucune opération ; maintenir la connexion active.
QUIT Fermer la connexion.

Codes de réponse

Chaque réponse du serveur commence par un code à trois chiffres. Le premier chiffre indique au client ce qui s'est passé :

Le deuxième chiffre affine la catégorie : x0x = syntaxe, x1x = information, x2x = connexion, x5x = système de messagerie. La RFC 3463 étend davantage ces codes avec des codes d'état améliorés comme 5.1.1 (mauvaise boîte aux lettres de destination).

Détails techniques clés

Enveloppe par rapport aux en-têtes

Une distinction critique dans SMTP est celle entre l'enveloppe et les en-têtes du message. L'enveloppe (MAIL FROM et RCPT TO) contrôle l'acheminement — elle indique aux serveurs où livrer le message. Les en-têtes du message (From:, To:, Subject:) font partie du corps du message transmis pendant DATA et sont ce que le destinataire voit. Ceux-ci peuvent différer, et ils le font légitimement dans des cas comme les listes de diffusion, BCC et la redirection.

Processus de recherche MX

Quand un client doit livrer à user@example.com, il interroge le DNS pour les enregistrements MX de example.com. Le processus défini par la RFC 5321 :

  1. Rechercher les enregistrements MX du domaine. Trier par préférence (numéro inférieur = priorité supérieure).
  2. S'il n'existe pas d'enregistrements MX, revenir à un enregistrement A ou AAAA du domaine lui-même.
  3. Si un enregistrement MX pointe vers . (un « MX nul » selon la RFC 7505), le domaine n'accepte pas de courrier.
  4. Essayer chaque hôte MX dans l'ordre de priorité. Si un serveur retourne une erreur 4xx, essayer l'hôte suivant.

Longueur de ligne et transparence des données

SMTP exige que les lignes du message ne dépassent pas 998 caractères (excluant CRLF), avec une limite recommandée de 78 caractères. Le marqueur de fin de données est une ligne contenant uniquement un point (.). Si une ligne du corps du message commence par un point, le client doit « doubler le point » en ajoutant un point supplémentaire, et le serveur doit le supprimer.

Délais d'expiration

La RFC 5321 spécifie les délais d'expiration minimums que les clients DOIVENT respecter :

Ces délais généreux existent parce que les serveurs de réception peuvent effectuer des vérifications coûteuses (filtrage des spam, analyse antivirus) avant de répondre au point final.

Exemple SMTP

Une transaction SMTP complète livrant un message :

# Le client se connecte au port 25 du serveur MX du destinataire S: 220 mx.example.com ESMTP ready C: EHLO sender.example.net S: 250-mx.example.com Hello sender.example.net S: 250-SIZE 52428800 S: 250-8BITMIME S: 250-STARTTLS S: 250-ENHANCEDSTATUSCODES S: 250 PIPELINING # Expéditeur de l'enveloppe (chemin de retour pour les retours) C: MAIL FROM:<alice@sender.example.net> S: 250 2.1.0 OK # Destinataire de l'enveloppe C: RCPT TO:<bob@example.com> S: 250 2.1.5 OK # Commencer la transmission des données du message C: DATA S: 354 Start mail input; end with <CRLF>.<CRLF> C: From: Alice <alice@sender.example.net> C: To: Bob <bob@example.com> C: Subject: Meeting tomorrow C: Date: Wed, 11 Mar 2026 10:00:00 -0500 C: Message-ID: <abc123@sender.example.net> C: C: Hi Bob, are we still on for tomorrow? C: . S: 250 2.0.0 OK, message accepted for delivery C: QUIT S: 221 2.0.0 mx.example.com closing connection

Erreurs courantes

Impact sur la délivrabilité

La conformité à la RFC 5321 affecte directement si votre courrier électronique atteint la boîte de réception :

Related RFCs