Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 19 additions & 18 deletions src/mimefactory.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2237,12 +2237,14 @@ impl MimeFactory {
);

// second body part: machine-readable, always REQUIRED by RFC 6522
//
// We do not include the Final-Recipient field.
// According to <https://datatracker.ietf.org/doc/html/rfc8098#section-3.2.4>
// it MUST be present and be the address on which original message was received,
// but practically it is not going to be used.
let message_text2 = format!(
"Original-Recipient: rfc822;{}\r\n\
Final-Recipient: rfc822;{}\r\n\
Original-Message-ID: <{}>\r\n\
"Original-Message-ID: <{rfc724_mid}>\r\n\
Disposition: manual-action/MDN-sent-automatically; displayed\r\n",
self.from_addr, self.from_addr, rfc724_mid
);

let extension_fields = if additional_msg_ids.is_empty() {
Expand Down Expand Up @@ -2514,25 +2516,24 @@ pub(crate) async fn render_symm_encrypted_securejoin_message(
/// a `multipart/report` is trashed as an MDN even where unencrypted mail is accepted,
/// while a plain text body would end up in a contact request.
/// The report deliberately names no original message, see [`crate::keyupdate`].
fn keyupdate_body(from_addr: &str) -> MimePart<'static> {
fn keyupdate_body() -> MimePart<'static> {
// Human-readable first part as RFC 6522 requires, untranslated like in `render_mdn`.
let text_part = MimePart::new(
"text/plain",
"This message updates the sender's encryption key and relay list.",
);
let mut message = MimePart::new(
"multipart/report; report-type=disposition-notification",
vec![text_part],
);
message.add_part(MimePart::new(
// We do not include the Final-Recipient field.
// Technically it is required for MDNs, but keyupdates
// are sent not in response to any message,
// so we don't have the address on which we received the message either.
let machine_part = MimePart::new(
"message/disposition-notification",
format!(
"Original-Recipient: rfc822;{from_addr}\r\n\
Final-Recipient: rfc822;{from_addr}\r\n\
Disposition: automatic-action/MDN-sent-automatically; processed\r\n"
),
));
message
"Disposition: automatic-action/MDN-sent-automatically; processed\r\n",
);
MimePart::new(
"multipart/report; report-type=disposition-notification",
vec![text_part, machine_part],
)
}

/// Renders a keyupdate message informing the owners of `recipient_keys`
Expand All @@ -2547,7 +2548,7 @@ pub(crate) async fn render_keyupdate_message(
"Sending keyupdate message to {} recipients.",
recipient_keys.len()
);
let message = keyupdate_body(&context.get_primary_self_addr().await?);
let message = keyupdate_body();

let headers = non_chat_headers(context, "Keyupdate").await?;
let message = add_headers_to_encrypted_part(message, headers);
Expand Down
2 changes: 0 additions & 2 deletions src/mimefactory/mimefactory_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -269,8 +269,6 @@ async fn test_subject_mdn() {
--SNIPP\r\n\
Content-Type: message/disposition-notification\r\n\
\r\n\
Reporting-UA: Delta Chat 1.28.0\r\n\
Original-Recipient: rfc822;bob@example.com\r\n\
Final-Recipient: rfc822;bob@example.com\r\n\
Original-Message-ID: <2893@example.com>\r\n\
Disposition: manual-action/MDN-sent-automatically; displayed\r\n\
Expand Down
9 changes: 0 additions & 9 deletions src/mimeparser/mimeparser_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -570,8 +570,6 @@ This is no guarantee the content was read.\n\
--kJBbU58X1xeWNHgBtTbMk80M5qnV4N\n\
Content-Type: message/disposition-notification\n\
\n\
Reporting-UA: Delta Chat 1.0.0-beta.22\n\
Original-Recipient: rfc822;bob@example.org\n\
Final-Recipient: rfc822;bob@example.org\n\
Original-Message-ID: <foo@example.org>\n\
Disposition: manual-action/MDN-sent-automatically; displayed\n\
Expand Down Expand Up @@ -626,8 +624,6 @@ This is no guarantee the content was read.\n\
--kJBbU58X1xeWNHgBtTbMk80M5qnV4N\n\
Content-Type: message/disposition-notification\n\
\n\
Reporting-UA: Delta Chat 1.0.0-beta.22\n\
Original-Recipient: rfc822;bob@example.org\n\
Final-Recipient: rfc822;bob@example.org\n\
Original-Message-ID: <bar@example.org>\n\
Disposition: manual-action/MDN-sent-automatically; displayed\n\
Expand All @@ -650,8 +646,6 @@ This is no guarantee the content was read.\n\
--zuOJlsTfZAukyawEPVdIgqWjaM9w2W\n\
Content-Type: message/disposition-notification\n\
\n\
Reporting-UA: Delta Chat 1.0.0-beta.22\n\
Original-Recipient: rfc822;bob@example.org\n\
Final-Recipient: rfc822;bob@example.org\n\
Original-Message-ID: <baz@example.org>\n\
Disposition: manual-action/MDN-sent-automatically; displayed\n\
Expand Down Expand Up @@ -697,8 +691,6 @@ This is no guarantee the content was read.\n\
--kJBbU58X1xeWNHgBtTbMk80M5qnV4N\n\
Content-Type: message/disposition-notification\n\
\n\
Reporting-UA: Delta Chat 1.0.0-beta.22\n\
Original-Recipient: rfc822;bob@example.org\n\
Final-Recipient: rfc822;bob@example.org\n\
Original-Message-ID: <foo@example.org>\n\
Disposition: manual-action/MDN-sent-automatically; displayed\n\
Expand Down Expand Up @@ -1574,7 +1566,6 @@ async fn test_ignore_read_receipt_to_self() -> Result<()> {
--SNIPP\r\n\
Content-Type: message/disposition-notification\r\n\
\r\n\
Original-Recipient: rfc822;bob@example.com\r\n\
Final-Recipient: rfc822;bob@example.com\r\n\
Original-Message-ID: <first@example.com>\r\n\
Disposition: manual-action/MDN-sent-automatically; displayed\r\n\
Expand Down
2 changes: 0 additions & 2 deletions src/receive_imf/receive_imf_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -251,8 +251,6 @@ async fn test_mdn_and_alias() -> Result<()> {
--SNIPP\n\
Content-Type: message/disposition-notification\n\
\n\
Reporting-UA: Delta Chat 1.28.0\n\
Original-Recipient: rfc822;bob@example.com\n\
Final-Recipient: rfc822;bob@example.com\n\
Original-Message-ID: <{msg_id}>\n\
Disposition: manual-action/MDN-sent-automatically; displayed\n\
Expand Down
1 change: 0 additions & 1 deletion test-data/message/mdn_without_message_reference.eml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ Read receipts do not guarantee sth. was read.
--SNIPP
Content-Type: message/disposition-notification

Original-Recipient: rfc822;bob@example.net
Final-Recipient: rfc822;bob@example.net
Disposition: automatic-action/MDN-sent-automatically; processed

Expand Down