You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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 the X-UI-Filterresults header in chunks by repeatedly calling io.Read. The last io.Read() call returns io.ErrUnexpectedEOF (as opposed to io.EOF, which indicates a "regular" file end and which is handled in ReadAll), 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 :) ).
Run go test from within the pkg/message/parser directory
On failure (current behavior), the test TestWalker will fail with the error Received unexpected error: unexpected EOF
On success (fixed behavior), the email will successfully parse and the test TestWalker will fail with an error about the parsed data not matching the previous contents of text_html_octet_attachment.eml
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.
The text was updated successfully, but these errors were encountered:
I think the root cause is likely related to #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.
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.
The text was updated successfully, but these errors were encountered: