Re: [Patch] fix broken decryption of s/mime messages loaded from imap



Hello all,

I am retired and use Balsa for my private email communication as well as for my part-time job. For the part-time job I have to retrieve GnuPG/MIME encrypted mail from an IMAP account. These mails I can't decrypt because Balsa reports always 'Balsa decryption failed: GPME: decryption failed: Decryption failed'. In order to check this I sent an encrypted email to myself and retrieved it from the IMAP account - decryption failed. Could it be that this is the same failure Albrecht reported? If yes, please Albrecht could you build a new Balsa package for me from git?

Many thanks.

Best regards,

John Jack Doe

On 09 Feb 2019 12:54:42, Albrecht Dreß wrote:
Am 08.02.19 18:52 schrieb(en) Albrecht Dreß:
After digging through the code, I /think/ the problem is in libbalsa_mailbox_imap_fetch_structure() which loads only text/* and short messages completely (to be honest, I don't understand why multipart/* is working, though…). At least, the attached trivial patch, just loading single-part S/MIME messages just as text/*, solves the issue for me.

Thinking again about this issue, I guess this approach is not completely correct. If all multipart/* messages are handled at some other place (are they?), shouldn't *all* other top-level content types be loaded here? The vast majority will (explicitly or implicitly) be text/*, and application/pkcs7-mime is already somewhat special. But a message containing only a, say image/* or application/pdf as the only payload is absolutely legal (although I saw the latter with malspam attacks only…).

Thus, the more appropriate approach would be

--8<--------------------------------------------------------------------------------------
diff --git a/libbalsa/mailbox_imap.c b/libbalsa/mailbox_imap.c
index d85e377c1..2ba010b43 100644
--- a/libbalsa/mailbox_imap.c
+++ b/libbalsa/mailbox_imap.c
@@ -2247,7 +2247,7 @@ libbalsa_mailbox_imap_fetch_structure(LibBalsaMailbox *mailbox,
        LIBBALSA_MESSAGE_GET_LENGTH(message)<8192 ||
        (message->headers &&
         (!message->headers->content_type ||
- g_mime_content_type_is_type(message->headers->content_type, "text", "*"))) ){ + !g_mime_content_type_is_type(message->headers->content_type, "multipart", "*")))) { /* we could optimize this part a little bit: we do not need to
          * keep reopening the stream. */
         GMimeStream *stream =
--8<--------------------------------------------------------------------------------------

wouldn't it?

Cheers,
Albrecht.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]