DSN Technical Documentation

De Trustedbird Client Wiki
English | Français

> Documentation > Trustedbird > DSN > Technical Documentation

DSN (Delivery Status Notification) is a feature which enables the sender to ask the MTA (Mail Transfer Agent) some notifications according to the status of the transaction. There are four types of DSN that can be emitted by the sender:

  • Success: ask a notification in case of success in delivering
  • Failure: ask a notification in case of failure in delivering
  • Delay: ask a notification in case of failure due to too much delay in delivering
  • Never: ask to be never notified


The return values can be:

  • Delivered: The message was successfully delivered


  • Failed: The message could not be delivered


  • Delayed: The Reporting MTA has so far been unable to deliver or relay the message, but it will continue to attempt to do so
  • Relayed: The message has been relayed


  • Expanded: The message has been successfully delivered and forwarded by the Reporting-MTA (alias)



The reference for the implementation of this functionality is the RFC 3461.


Synthetic presentation of the architecture of the extension

This functionality is integrated to the source code of Thunderbird, without relaying on an extension.

This functionality is going to be integrated with the official source code by Mozilla: https://bugzilla.mozilla.org/show_bug.cgi?id=93085

GUI files

At the GUI level, DSN request is implemented by one flag DSN, encapsulated in a nsIMsgSMIMECompFields object. The whole code handling those flags are contained in the JS built-in library MsgComposeCommands.js.

Then, the object nsIMsgSMIMECompFields is forwarded to the XPCOM layer, that handles the DSN request. The GUI has been updated so that the user can configure and activate the DSN request:

DSN Options1 en.gif

DSN Options2 en.gif

DSN Options3 en.gif

XPCOM files

The addition of DSN features in the SMTP implementation of Thunderbird is implemented by modifying existing XPCOM classes. For additionnal details, please refer to the patch provided to Mozilla : https://bugzilla.mozilla.org/show_bug.cgi?id=93085