RFC 3464 : Format de notification d'état de livraison
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 :
-
Explication lisible par l'homme (
text/plain) — texte libre pour les humains. -
Statut lisible par machine (
message/delivery-status) — les données structurées définies par cette RFC. -
Message d'origine (
message/rfc822outext/rfc822-headers) — le message complet d'origine ou seulement ses en-têtes, selon le paramètreRETde 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
-
Analyser uniquement la partie lisible par l'homme. La section
text/plainest pour les humains. Les systèmes automatisés doivent analyser la partiemessage/delivery-status, qui a une structure stable et définie. -
Ignorer la classe de code de statut. Le premier chiffre est critique :
2.x.x= succès,4.x.x= échec temporaire (réessayer plus tard),5.x.x= échec permanent (arrêter les tentatives). Traiter tous les rebonds de la même manière endommage votre réputation. -
Ne pas correspondre à Original-Envelope-Id. Si vous définissez
ENVIDdans RFC 3461, utilisezOriginal-Envelope-Idpour corréler les DSN avec des envois spécifiques. Compter uniquement surFinal-Recipientéchoue quand des alias ou des redirections sont impliqués. -
Confondre Final-Recipient avec Original-Recipient. Après une redirection,
Final-Recipientpeut être une adresse complètement différente. Vérifiez toujoursOriginal-Recipientquand disponible. -
Traiter
relayedcommedelivered. Une actionrelayedsignifie que le message a quitté l'environnement DSN. Vous ne recevrez peut-être jamais un statut final.
Impact sur la délivrabilité
-
Classification automatisée des rebonds. Le champ
Statusest mappé aux codes de statut améliorés RFC 3463. Le code5.1.1(utilisateur inconnu) signifie supprimer l'adresse ;4.2.2(boîte aux lettres pleine) signifie réessayer plus tard. La classification correcte est la base de l'hygiène de liste. -
Corrélation de boucle de retours.
Original-Envelope-Idvous permet de lier les rebonds à des campagnes, des appels API ou des transactions spécifiques — essentiel pour le débogage et l'analyse. -
Gestion des rebonds définitifs et temporaires. Traitez
Action: failedavec un statut 5.x.x comme permanent — supprimez l'adresse. TraitezAction: delayedavec 4.x.x comme transitoire — réessayez avec backoff mais supprimez après des défaillances répétées. - Protection de la réputation. Traiter les DSN rapidement et supprimer les adresses invalides prévient les tentatives répétées sur des boîtes aux lettres mortes, que les fournisseurs de boîtes aux lettres suivent comme un signal de réputation négatif.