Closed neobrain closed 3 years ago
Hi, thanks for the detailed report!
I think the root cause is likely related to https://github.com/ProtonMail/proton-bridge/issues/146 due to the extremely long header entry which spans multiple lines. Bumping the go-message dependency to the latest version seems to solve the problem in that case.
I tried parsing your provided example header using go-message dependency version v0.12.1-0.20201221184100-40c3f864532b
and it parses fine without error. If you can confirm that on your side, I think we can close this issue; a new bridge release should be coming out soon with the latest go-message version.
Hi James, thanks so much for the quick reply - happy to confirm I can import the affected messages fine with the 1.5.6 update indeed! 🥳
Importing mails from providers related to United Internet (GMX, web.de, often used in Germany) sometimes fails due to vendor-specific
X-UI-Filterresults
headers that proton-bridge fails to parse.A test case for proton's message parser is provided below ("Steps to Reproduce").
Expected Behavior
proton-bridge should be able to import those messages (stripping the
X-UI-Filterresults
if need be since they contain no information that the user would care about).Current Behavior
If I try to move messages from my GMX mail account to the Proton one in Thunderbird, Thunderbird displays an error saying "The current command did not succeed. The mail server for account ProtonMail responded: failed to create new parser: unexpected EOF".
The error originates in https://github.com/ProtonMail/proton-bridge/blob/master/pkg/message/parser/parser.go#L132 , where
ioutil.ReadAll
parses theX-UI-Filterresults
header in chunks by repeatedly callingio.Read
. The last io.Read() call returns io.ErrUnexpectedEOF (as opposed to io.EOF, which indicates a "regular" file end and which is handled inReadAll
), which is the error printed in Thunderbird.Possible Solution
This might be an upstream bug in https://github.com/emersion/go-message . I'm not sure GMX adheres to the RFC properly, in which case handling these messages might be considered out-of-scope for that project, hence I'm flagging the issue here first.
proton-bridge could workaround this by stripping all line breaks and whitespaces from the header, which seems to be enough to please the message decoder for the example below. Alternatively, I think it's acceptable to just throw away the
X-UI-Filterresults
header as it does not seem to be anything interesting to the user (unless they're planning on reverse-engineering proprietary junk classification encodings :) ).Steps to Reproduce
go test
from within thepkg/message/parser
directoryTestWalker
will fail with the errorReceived unexpected error: unexpected EOF
TestWalker
will fail with an error about the parsed data not matching the previous contents oftext_html_octet_attachment.eml
Version Information
v1.5.4
Context (Environment)
Many of my contacts (as well as e.g. newsletter subscriptions) still contact me at my old e-mail address, and it's not always convenient to point them to my Proton address. Due to this issue, my automatic filters that move the mails to my ProtonMail inbox aren't reliably since some messages fail to move.