Read receipts and delivery status notifications
Read receipts and delivery status notifications for mutt


Posted on 2022-11-02

Sometimes I like to get an explicit acknowledgment that an email has been delivered and read. While this is possible with anti-patterns such as tracking-pixels or similar technologies there are other well-established ways of getting such information in a privacy preserving manner. Lets look at how.

Read receipts

Read receipts was first proposed in RFC 2298, updated by RFC 3798 and finally became an official internet standard in RFC 8098.

The header of interest to us is Disposition-Notification-To. By setting the header most clients will prompt the user if they want to send a read receipt back. For example in thunderbird it looks like this:

Thunderbird read receipt screenshot

In mutt the default shortcut to edit headers is E, we can then add the header:

Disposition-Notification-To: John <john@example.com>

Delivery status notifications

The mechanism to request Delivery status notifications, also called DSN, was first proposed in RFC 1891 and later in RFC 3461. It works by adding an extension to SMTP which means it is not part of the email itself like in the case of read receipts. Instead it is configured by the client MTA (your SMTP client).

In my case I use msmtp(1) so I only need to specify the --dsn-notify flag. Per default this is disabled and which means the mail system decides when to send notifications. In my case I would like to know as much as possible so I specify --dsn-notify failure,delay,success.

To configure msmtp(1) correctly from mutt we can set sendmail:

:set sendmail = '/usr/bin/msmtp --read-envelope-from --dsn-notify failure,delay,success'