Re: [Dovecot] ENVELOPE mishandling of Subject lines with quote(s)?

2012-02-06 Thread Michael M Slusarz

Quoting Dinh Le d...@flic.net:



* 89 FETCH (ENVELOPE (29 Oct 2008 15:44:03 -0500 {65}
2nd Edition of Brennesholtz/Stupp Projection Displays Available
 ((Insight Media NIL administrator insightmedia.info))  
((Insight Media NIL administrator insightmedia.info))  
((Insight Media NIL administrator insightmedia.info)) ((NIL  
NIL dinh flic.net)) NIL NIL NIL  
20081029154358.0c359ae169595...@insightmedia.info))


[snip]


Notice that message 89's Subject line

Subject: 2nd Edition of Brennesholtz/Stupp Projection Displays Available

has quotes and this dovecot's ENVELOPE response failed to get parsed by
a popular Perl module (Mail::IMAPClient::BodyStructure::Envelope).   
I have a hunch that this is dovecot's fault but I could be wrong.   
How should dovecot (or any imap server) deal with Subject lines with  
quotes inside ENVELOPE?


The subject, because it contains quotes, can't be expressed in a  
quoted string so it is instead sent in a literal string.  In a literal  
string, the data is exactly what appears in the original message.  No  
post-processing mechanism should be stripping quotes or anything from  
this data - it is already in its canonical state.


Dovecot is 100% correct in its return.

michael



Re: [Dovecot] ENVELOPE mishandling of Subject lines with quote(s)?

2012-02-06 Thread Timo Sirainen
On 6.2.2012, at 22.45, Michael M Slusarz wrote:

 The subject, because it contains quotes, can't be expressed in a quoted 
 string so it is instead sent in a literal string.

Small correction: Quotes can be escaped in a quoted-string, but Dovecot just 
doesn't want to do it. Many other servers behave this way as well.

 In a literal string, the data is exactly what appears in the original 
 message.  No post-processing mechanism should be stripping quotes or anything 
 from this data - it is already in its canonical state.
 
 Dovecot is 100% correct in its return.

Yes. Looks like Perl's IMAP client hasn't been built properly to expect 
literals in places where they are allowed. My guess is that this is only one of 
the 100 other places where a literal is allowed by RFC but not by Perl..

Maybe I should add some evil setting to Dovecot where it would use literals 
everywhere it can, or perhaps randomly send atoms/strings/literals. :)



Re: [Dovecot] ENVELOPE mishandling of Subject lines with quote(s)?

2012-02-06 Thread Timo Sirainen
On 6.2.2012, at 22.55, Timo Sirainen wrote:

 Maybe I should add some evil setting to Dovecot where it would use literals 
 everywhere it can, or perhaps randomly send atoms/strings/literals. :)

BTW. If anyone wants to try, the attached patch makes Dovecot return (almost) 
all possible fields as literals. You'll need to delete dovecot.index.cache 
files to get the full effect.



break-imap-clients.diff
Description: Binary data


Re: [Dovecot] ENVELOPE mishandling of Subject lines with quote(s)?

2012-02-06 Thread Dinh Le



On Mon, 6 Feb 2012, Timo Sirainen wrote:


On 6.2.2012, at 22.45, Michael M Slusarz wrote:


The subject, because it contains quotes, can't be expressed in a quoted string 
so it is instead sent in a literal string.


Small correction: Quotes can be escaped in a quoted-string, but Dovecot just 
doesn't want to do it. Many other servers behave this way as well.


In a literal string, the data is exactly what appears in the original message.  
No post-processing mechanism should be stripping quotes or anything from this 
data - it is already in its canonical state.

Dovecot is 100% correct in its return.


Yes. Looks like Perl's IMAP client hasn't been built properly to expect 
literals in places where they are allowed. My guess is that this is only one of 
the 100 other places where a literal is allowed by RFC but not by Perl..

Maybe I should add some evil setting to Dovecot where it would use literals 
everywhere it can, or perhaps randomly send atoms/strings/literals. :)



Thanks, I will try to come up


Re: [Dovecot] ENVELOPE mishandling of Subject lines with quote(s)?

2012-02-06 Thread Dinh Le

On Mon, 6 Feb 2012, Timo Sirainen wrote:


On 6.2.2012, at 22.45, Michael M Slusarz wrote:


The subject, because it contains quotes, can't be expressed in a quoted string 
so it is instead sent in a literal string.


Small correction: Quotes can be escaped in a quoted-string, but Dovecot just 
doesn't want to do it. Many other servers behave this way as well.


In a literal string, the data is exactly what appears in the original message.  
No post-processing mechanism should be stripping quotes or anything from this 
data - it is already in its canonical state.

Dovecot is 100% correct in its return.


Yes. Looks like Perl's IMAP client hasn't been built properly to expect 
literals in places where they are allowed. My guess is that this is only one of 
the 100 other places where a literal is allowed by RFC but not by Perl..

Maybe I should add some evil setting to Dovecot where it would use literals 
everywhere it can, or perhaps randomly send atoms/strings/literals. :)



Oops, my happy Alpine ^X finger accidently sent the previous reply.  I 
meant to say thanks and will try to come up with a fix to this literal 
string problem for the Perl IMAPClient module.


Don't want Timo's evil config setting to wreak havocs :-).


Re: [Dovecot] ENVELOPE mishandling of Subject lines with quote(s)?

2012-02-06 Thread Bill Cole

On 6 Feb 2012, at 16:34, Dinh Le wrote:


On Mon, 6 Feb 2012, Timo Sirainen wrote:


On 6.2.2012, at 22.45, Michael M Slusarz wrote:

The subject, because it contains quotes, can't be expressed in a 
quoted string so it is instead sent in a literal string.


Small correction: Quotes can be escaped in a quoted-string, but 
Dovecot just doesn't want to do it. Many other servers behave this 
way as well.


In a literal string, the data is exactly what appears in the 
original message.  No post-processing mechanism should be stripping 
quotes or anything from this data - it is already in its canonical 
state.


Dovecot is 100% correct in its return.


Yes. Looks like Perl's IMAP client hasn't been built properly to 
expect literals in places where they are allowed. My guess is that 
this is only one of the 100 other places where a literal is allowed 
by RFC but not by Perl..


Maybe I should add some evil setting to Dovecot where it would use 
literals everywhere it can, or perhaps randomly send 
atoms/strings/literals. :)




Oops, my happy Alpine ^X finger accidently sent the previous reply.  I 
meant to say thanks and will try to come up with a fix to this literal 
string problem for the Perl IMAPClient module.


Don't want Timo's evil config setting to wreak havocs :-).



The best solution for you may be to to update the version of 
Mail::IMAPClient you are using. There were fixes for its handling of 
literals claimed in the CHANGES file of v3.26  (2011-01-31). I don't 
know if that will fix this particular problem, but if you are running an 
older version then it would be worth trying the current version.


Re: [Dovecot] ENVELOPE mishandling of Subject lines with quote(s)?

2012-02-06 Thread Michael M Slusarz

Quoting Timo Sirainen t...@iki.fi:


On 6.2.2012, at 22.55, Timo Sirainen wrote:

Maybe I should add some evil setting to Dovecot where it would use  
literals everywhere it can, or perhaps randomly send  
atoms/strings/literals. :)


BTW. If anyone wants to try, the attached patch makes Dovecot return  
(almost) all possible fields as literals. You'll need to delete  
dovecot.index.cache files to get the full effect.


Very useful.  Turns out the only thing I wasn't handling correctly was  
the MIME types/subtypes in BODYSTRUCTURE.


This is a great tool for debugging client code.  Not sure the  
difficulty to add as a config (or even a hidden config).  Being able  
to easily turn on/off would increase my usage of the tool.


michael