deltachat / deltachat-core-rust

Delta Chat Rust Core library, used by Android/iOS/desktop apps, bindings and bots 📧
https://delta.chat/en/contribute
Other
664 stars 85 forks source link

"show full message" shows blank screen for encrypted message sent via Exchange #4557

Closed monperrus closed 1 year ago

monperrus commented 1 year ago
Hocuri commented 1 year ago

Hm, I can't reproduce this bug.

What I tried:

and the message was shown just fine.

monperrus commented 1 year ago

Thanks @Hocuri .

Precision: I sent the long encrypted email with Thunderbird. I'll send it to you if you give me your email and gpg key.

Hocuri commented 1 year ago

hocuri1 ät testrun.org; for the gpg key, it's probably easiest that you send me an email and I send a reply, then you can import the autocrypt key ("OpenPGP" -> "View signer key")

monperrus commented 1 year ago

Making progress. This happens when the message is sent through Microsoft Exchange.

It is known that Exchange can corrupt encrypted messages, as Thunderbird reports: This is an OpenPGP message that was apparently corrupted by MS-Exchange. If the message contents isn't shown as expected, you can try an automatic repair.

Sent you another test message through MS-Exchange.

Hocuri commented 1 year ago

I received the message, and yes, I can confirm that both DC's Full Message View and Thunderbird show a blank screen. Thanks!

Unfortunately, did this automatic repair before saving the original message. Can you post the anonymized source of both a broken and a repaired message? Or alternatively send me another broken message, then I'll anonymize it myself?

monperrus commented 1 year ago

test message sent again :)

Hocuri commented 1 year ago

The (anonymized) diff Thunderbird applied to the email is:

@@ -67,9 +67,6 @@
 X-MS-Has-Attach: yes
 X-MS-TNEF-Correlator:
 x-originating-ip: [*.*.*.*]
-Content-Type: multipart/mixed;
-   boundary="_003_bca8ef5c1509fa5900eff5a95d61f598bc7eade9camelse_"
-MIME-Version: 1.0
 X-Spam-Status: No, score=0.1 required=5.0 tests=BAYES_00,HELO_NO_DOMAIN,M_W_FLAGS,PDS_BAD_THREAD_QP_64,RDNS_NONE shortcircuit=no autolearn=no autolearn_force=no version=3.4.6
 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on smtp-relay-3.sys.se
 X-Last-TLS-Session-Version: TLSv1.3
@@ -104,11 +101,10 @@
    ASN(0.00)[asn:1653, ipnet:130.237.0.0/16, country:EU];
    MIME_TRACE(0.00)[0:+,1:+,2:~,3:~];
    HAS_XOIP(0.00)[]
-
---_003_bca8ef5c1509fa5900eff5a95d61f598bc7eade9camelse_
-Content-Type: text/plain; charset="us-ascii"
-Content-Transfer-Encoding: quoted-printable
-
+Content-Type: multipart/encrypted;
+  protocol="application/pgp-encrypted";
+  boundary="_003_bca8ef5c1509fa5900eff5a95d61f598bc7eade9camelse_"
+X-Enigmail-Info: Fixed broken PGP/MIME message

 --_003_bca8ef5c1509fa5900eff5a95d61f598bc7eade9camelse_
 Content-Type: application/pgp-encrypted; name="ATT00001"

Also, I just transferred the issue from android to core since I thought it must affect all UIs, but Desktop seems to do fine I think? (or maybe DC just downloaded the email after it was downloaded). Still, it might be easier to fix in Core.

Can someone check iOS?

monperrus commented 1 year ago

FTR, more info at https://notmuchmail.org/pipermail/notmuch/2019/028802.html

iequidoo commented 1 year ago

It's a bug, we already have handling of these "mixed up" messages, see src/decrypt.rs:get_mixed_up_mime(). Then dc_get_msg_html() must return the decrypted third message part, i guess it returns smth else.

UPD: Reproduced it with a Rust test.

iequidoo commented 1 year ago

As i see, the problem is somewhat different. If a message is not signed with a known key, the original decrypted message part is not saved to the db (in msgs.mime_headers). See #4645 for the fix

monperrus commented 1 year ago

Thanks for looking into this. --Martin

iequidoo commented 1 year ago

Fixed by #4645 in stable branch. I guess it will be Delta Chat 1.41

monperrus commented 1 year ago

thanks a lot.