MDN: what RFC 8098 actually defines
A standards-first look at Message Disposition Notification: what it confirms about a message, and why most webmail ignores it by default.
A sender sometimes wants more than proof that a mailbox accepted a message. They want confirmation a human actually saw it, or that the recipient's client processed it in some specific way. Delivery and disposition are two different questions, and for years only the first had a standard answer.
"Read receipts" existed in mail clients long before any RFC defined them. Different vendors implemented the idea differently, sometimes triggering the notification silently without the recipient's knowledge. That inconsistency created an interoperability problem, since no two clients agreed on the header or the format, and a privacy problem, since a message could report back on when and whether it was read without the recipient ever choosing that.
What MDN defines
RFC 8098 defines Message Disposition Notification (MDN): the multipart/report subtype message/disposition-notification. It obsoletes RFC 3798, which itself obsoleted the original RFC 2298.
A Disposition-Notification-To header on the original message triggers an MDN. That header names the address that receives a resulting notification, if one is ever generated.
How MDN works
A sender adds a Disposition-Notification-To header to the message, naming an address to receive the notification. From there:
- The message reaches the recipient's mail client.
- If that client supports MDN, and the recipient or a client policy allows it, the client watches for a defined disposition event: the message being displayed, deleted, dispatched, or processed.
- When that event happens, the client generates an MDN report describing it and sends it to the address named in
Disposition-Notification-To.
Every step past the first is optional on the recipient's side. Sending an MDN is always the recipient client's choice. Nothing in RFC 8098 forces a client, or a human, to generate one just because the original message requested it.
Anatomy of an MDN
Two sets of fields matter here: what the original message carries, and what the resulting report carries.
Header fields on the original message:
| Header | What it does |
|---|---|
Disposition-Notification-To | The address requesting a notification, and the trigger a supporting client watches for |
Original-Recipient | The recipient address as originally addressed, before any local rewriting |
Disposition-Notification-Options | Optional parameters for notification-request extensions |
Fields inside the MDN report itself:
| Field | What it does |
|---|---|
Original-Recipient | Copied from the original message when present |
Final-Recipient | The address the message actually reached, in the recipient client's own addressing |
Original-Message-ID | The original message's Message-ID, tying the notification back to it |
Disposition | The outcome: an action-mode, a sending-mode, and a type |
Disposition is the field that actually answers the question. It's composed of three parts: an action-mode (manual-action or automatic-action, whether a human or the client itself triggered the notification), a sending-mode (MDN-sent-manually or MDN-sent-automatically), and a type (displayed, deleted, dispatched, or processed). A full value reads like manual-action/MDN-sent-manually; displayed.
Worked example
An original message requesting a receipt:
From: sender@example.comTo: recipient@example.netSubject: Contract for reviewDisposition-Notification-To: sender@example.com
If the recipient's client supports MDN and the recipient opens the message, the resulting report includes:
Content-Type: message/disposition-notificationOriginal-Recipient: rfc822;recipient@example.netFinal-Recipient: rfc822;recipient@example.netOriginal-Message-ID: <a1b2c3@example.com>Disposition: manual-action/MDN-sent-manually; displayed
Disposition: manual-action/MDN-sent-manually; displayed reports that a human opened the message, and the client sent the notification as a direct, immediate result rather than through an automated background process.
Where MDN falls short
Most modern webmail doesn't generate MDNs by default. Gmail is among them: a message can carry Disposition-Notification-To and Gmail simply won't act on it unless the user manually chooses to send a receipt.
That's not a violation of the standard. RFC 8098 deliberately leaves a recipient's mail client free to ignore the request entirely. An MDN can reveal exactly when and whether a message was read. That's the same privacy and tracking concern that kept receipts inconsistent before the RFC existed, and it's why support stayed uneven afterward too.
An MDN also only confirms disposition after successful delivery. It says nothing about delivery itself, whether the message reached a mailbox at all. That's a separate question, and a separate standard's job.
Check it yourself
Send a message with a Disposition-Notification-To header to a mail client known to support MDN. Thunderbird and Outlook both do. Watch for the receipt prompt the client shows the recipient before it generates and sends the report.
Where it fits
MDN and DSN answer different questions about the same original message. DSN confirms delivery outcome, whether a mailbox accepted the message. MDN confirms disposition, what happened to it after a human's mail client received it. They're two separate notification types, and a message can request either, both, or neither.
An MDN generated automatically, rather than triggered by a manual user action, should itself carry Auto-Submitted: auto-notified, as defined in Auto-Submitted. That keeps an automated notification from looking like a normal reply and triggering a reply loop with another automated system on the other end.
For the wider set of standards MDN sits inside, see the reference hub.
FAQ
Does every mail client support MDN?
No. Support varies widely, and several major webmail providers, Gmail included, don't generate MDNs by default even when a message requests one.
Can a sender force a read receipt?
No. Requesting one via Disposition-Notification-To is only a request. The recipient's mail client, or the recipient themselves, decides whether to honor it.
What's the difference between a DSN and an MDN?
A DSN confirms delivery to a mailbox, generated automatically by an MTA. An MDN confirms disposition, like being displayed, generated only if the recipient's mail client and the recipient allow it.
Why did MDN adoption stay low?
Privacy concerns. An MDN can reveal exactly when and whether a message was read, which is sensitive enough that many mail clients disable the feature by default.
RFC reference
RFCs covered: RFC 8098. Superseded / updated by: None. RFC 8098 itself obsoletes RFC 3798, which obsoleted RFC 2298.