← RFC Reference

RFC 3464 : Format de notification d'état de livraison

Norme actuelle Statut de livraison et gestion des rebonds Obsoletes RFC 1894 Published March 2026
ELI5: Quand un colis ne peut pas être livré, le coursier vous remet un formulaire expliquant ce qui s'est passé. RFC 3464 définit le formulaire standardisé que les serveurs de messagerie remplissent quand un message rebondit, est retardé ou est livré avec succès — structuré pour que les logiciels puissent le lire automatiquement.

Pourquoi cela existe

Avant la normalisation du formatage DSN, chaque serveur de messagerie générait des messages de rebond dans son propre format de texte libre. L'analyse de ces « messages de rebond » nécessitait des heuristiques fragiles — des expressions régulières qui s'arrêtaient dès qu'un serveur changeait sa formulation. RFC 3464 définit un type de contenu MIME lisible par machine (message/delivery-status) qui rend le traitement automatisé des rebonds fiable.

Cette RFC fonctionne conjointement avec RFC 3461 (qui définit comment demander des DSN au niveau SMTP) et RFC 3462 (qui définit le conteneur multipart/report qui enveloppe le DSN).

Comment cela fonctionne

Un message DSN est un message MIME multipart/report avec report-type=delivery-status. Il contient jusqu'à trois parties MIME :

  1. Explication lisible par l'homme (text/plain) — texte libre pour les humains.
  2. Statut lisible par machine (message/delivery-status) — les données structurées définies par cette RFC.
  3. Message d'origine (message/rfc822 ou text/rfc822-headers) — le message complet d'origine ou seulement ses en-têtes, selon le paramètre RET de RFC 3461.

Le corps delivery-status

La partie message/delivery-status contient des groupes de champs semblables à des en-têtes séparés par des lignes vierges :

; Champs par message (un groupe)
Reporting-MTA: dns; mail.example.org
Original-Envelope-Id: msg-20260311-0042
Arrival-Date: Wed, 11 Mar 2026 10:30:00 -0500

; Champs par destinataire (un groupe par destinataire)
Original-Recipient: rfc822;bob@example.org
Final-Recipient: rfc822;bob@example.org
Action: failed
Status: 5.1.1
Diagnostic-Code: smtp; 550 5.1.1 User unknown
Last-Attempt-Date: Wed, 11 Mar 2026 10:30:05 -0500

Détails techniques clés

Champs par message

Champ Requis Description
Reporting-MTA Oui Le MTA qui a généré ce DSN, en tant que nom d'hôte DNS
Original-Envelope-Id Non L'ENVID de la transaction SMTP d'origine (RFC 3461)
DSN-Gateway Non Présent lorsque le DSN a été traduit depuis un système de messagerie étranger
Received-From-MTA Non Le MTA qui a remis le message au Reporting-MTA
Arrival-Date Non Quand le message d'origine est arrivé au Reporting-MTA

Champs par destinataire

Champ Requis Description
Final-Recipient Oui L'adresse destinataire à laquelle le MTA a réellement tenté la livraison
Original-Recipient Non La valeur ORCPT de la session SMTP — l'adresse utilisée par l'expéditeur
Action Oui Une de : failed, delayed, delivered, relayed, expanded
Status Oui Code de statut amélioré selon RFC 3463 (par exemple, 5.1.1)
Diagnostic-Code Non La chaîne d'erreur réelle du serveur distant, préfixée par un type (généralement smtp)
Remote-MTA Non Le MTA qui a renvoyé l'erreur
Last-Attempt-Date Non Quand la dernière tentative de livraison a été faite
Will-Retry-Until Non Pour les actions delayed, quand le MTA abandonnera

Valeurs d'action

Action Signification
failed Échec permanent — le message ne sera pas livré (rebond définitif)
delayed Échec temporaire — réessai en cours (rebond temporaire)
delivered Livré avec succès à la boîte aux lettres du destinataire
relayed Transmis à un environnement qui peut ne pas générer d'autres DSN
expanded Livré à une liste de diffusion ou alias qui s'est étendu à plusieurs destinataires

Exemple complet de message DSN

From: mailer-daemon@mail.example.org
To: alice@sender.example.com
Subject: Delivery Status Notification (Failure)
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
    boundary="DSN-BOUNDARY-001"

--DSN-BOUNDARY-001
Content-Type: text/plain

Your message to bob@example.org could not be delivered.
The recipient's mailbox does not exist.

--DSN-BOUNDARY-001
Content-Type: message/delivery-status

Reporting-MTA: dns; mail.example.org
Original-Envelope-Id: msg-20260311-0042
Arrival-Date: Wed, 11 Mar 2026 10:30:00 -0500

Final-Recipient: rfc822;bob@example.org
Action: failed
Status: 5.1.1
Diagnostic-Code: smtp; 550 5.1.1 User unknown

--DSN-BOUNDARY-001
Content-Type: text/rfc822-headers

From: alice@sender.example.com
To: bob@example.org
Subject: Meeting tomorrow
Message-ID: <abc123@sender.example.com>

--DSN-BOUNDARY-001--

Erreurs courantes

Impact sur la délivrabilité

Related RFCs