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

DSN

The return values can be:

  • Delivered: The message was successfully delivered

Delivered

  • Failed: The message could not be delivered

Failed

  • 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

Relayed

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

Implementation

Specifications

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

Architecture

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