I am working on an add-on for TB that uses DSN messages in order to
display the status of the sent messages in the sent-box.
The requirements are defined in https://bugzilla.mozilla.org/show_bug.cgi?id=367268
There is a problem relating the returning DSN messages with the
original sent messages because TB is not providing an important
information for that.
Explanation:
RFC3463 (http://www.rfc-editor.org/rfc/rfc3464.txt) defines the
message format for Delivery Status Notifications (DSN). As you can see
in "2.2.1 The Original-Envelope-Id field", which I quoted below, the
field Original-Envelope-Id of the DSN message mirrors the EnvelopId
given in the "MAIL FROM:" command of the ESMTP dialogue to give the
MUA means to associate the DSN with the sent message.
The problem is that TB seems to not memorize this EnvelopeId and thus
it can't be used to do the association stuff.
In nsSmtpProtocol.cpp (method SendHeloResponse) the method
msg_generate_message_id(..) is used to create the EnvelopeId but it is
not stored anywhere.
See: http://mxr.mozilla.org/comm-central/source/mailnews/compose/src/nsSmtpProtocol.cpp#643
I think that this should be extended to handle the EnvelopeId like the
MessageId and make it available in TB at some place.
Concerning the later use of the EnvelopeID it should be taken into
consideration that this value should be searchable in a fast way
across folders.
I am interested in your opinion and on the way how to proceed with
this and how this can be implemented.
Thanks, Tom
From: http://www.rfc-editor.org/rfc/rfc3464.txt
2.2.1 The Original-Envelope-Id field
The optional Original-Envelope-Id field contains an "envelope
identifier" that uniquely identifies the transaction during which the
message was submitted, and was either (a) specified by the sender and
supplied to the sender's MTA, or (b) generated by the sender's MTA
and made available to the sender when the message was submitted. Its
purpose is to allow the sender (or her user agent) to associate the
returned DSN with the specific transaction in which the message was
sent.
If such an envelope identifier was present in the envelope that
accompanied the message when it arrived at the Reporting MTA, it
SHOULD be supplied in the Original-Envelope-Id field of any DSNs
issued as a result of an attempt to deliver the message. Except when
a DSN is issued by the sender's MTA, an MTA MUST NOT supply this
field unless there is an envelope-identifier field in the envelope
that accompanied this message on its arrival at the Reporting MTA.
The Original-Envelope-Id field is defined as follows:
original-envelope-id-field =
"Original-Envelope-Id" ":" envelope-id
envelope-id = *text
There may be at most one Original-Envelope-Id field per DSN.
The envelope-id is CASE-SENSITIVE. The DSN MUST preserve the
original case and spelling of the envelope-id.
NOTE: The Original-Envelope-Id is NOT the same as the
Message-Id from the message header. The Message-Id identifies
the content of the message, while the Original-Envelope-Id
identifies the transaction in which the message is sent.
Does anyone have an idea how to proceed with this?
This issue is further discussed here: https://bugzilla.mozilla.org/show_bug.cgi?id=367268