[Dovecot] Dovecot response to "FETCH" command

Alex Tang altitude at funkware.com
Mon Feb 28 11:00:08 EET 2005


Hi folks.

I just converted my site from UW+mbox to dovecot+maildir (stable-test59, 
2005/02/25).  For the most part, everything is great.  The server seems 
faster and less memory intense than the UW server (this part has made me 
very happy).   And it's definitely more user friendly to me than Courier.

There is one thing however...

A few of my users are using the web based mail reader 
(Squirrelmail-1.2.11) that i provide for them. 

Once i converted to dovecot, the squirrelmail users were reporting that 
when viewing the folder list page, 2 things were happening:

    * The date for all of the messages was being displayed as "Sun 4:00 pm"
    * all messages were shown as being "new".  they never would be
      transferred into the "Seen" state.

After doing some IMAP protocol sniffing, i found this difference in the 
way that the UW server and the dovecot server handles the "FETCH" command...

Squirrelmail issues a FETCH command to get message header information 
like this (lines broken with backslashes for readability):

A009 FETCH 1:1 (FLAGS RFC822.SIZE INTERNALDATE BODY.PEEK \
    [HEADER.FIELDS (Date To From Cc Subject X-Priority \
    Content-Type)])

The UW server returns:

* 1 FETCH (FLAGS () RFC822.SIZE 710 \
    INTERNALDATE "27-Feb-2005 23:50:42 -0800" \
    BODY[HEADER.FIELDS ("DATE" "TO" "FROM" "CC" "SUBJECT" \
    "X-PRIORITY" "CONTENT-TYPE")] {153}
Date: Sun, 27 Feb 2005 23:50:42 -0800
From: root <root at scorchedearth.us.proofpoint.com>
To: altitude at scorchedearth.us.proofpoint.com
Subject: asdf
  

When the same FETCH response is returned by dovecot, the response looks 
like this:

FLAGS () RFC822.SIZE 3358 INTERNALDATE "27-Feb-2005 07:55:27 -0800")
* 1 FETCH (BODY[HEADER.FIELDS (DATE TO FROM CC SUBJECT X-PRIORITY CONTENT-TYPE)] {205}
Date: Mon, 28 Feb 2005 00:04:22 +0800
From: xxx xxx <xxx at xxx.com>
To: dovecot at dovecot.org
Content-Type: text/plain; charset=UTF-8; format=flowed
Subject: [Dovecot] "not listening" notification
  

I noticed that in the UW response, the "* 1 FETCH ..." is the first 
line, and contains all of the data except for the message header info. 

However, in the dovecot response, the data is split into 2 lines, and 
the first line is not the "* 1 FETCH" line. 

In reading through the squirrelmail source, squirrelmail is not 
recognizing this as a valid response, and thus the date, size, and flags 
are not being properly set in the internal squirrelmail message 
objects.  This explains why both the date as well as the "seen" status 
of the message is never properly set.

OK, after all this blabbing on...here's my question.

Is the data being sent back by dovecot a valid response?

My knowledge of the IMAP protocol is weak to say the least.  I tried 
reading the IMAP RFC (3501), in particular section 6.4.5 which defines 
the FETCH command), and the RFC seems to specify that the response 
should have the "* # FETCH" lines come first.  However, the RFC seems 
vague, and i didn't wade through any of the other RFCs out there.

I figure it is legal, since the two other clients i've used seem to 
understand it just fine (thunderbird/mozilla, mutt).

However, could this be the reason why mozilla/thunderbird sometimes gets 
the message size wrong (and hence why the "tb-negative-fetch" workaround 
is needed).

For now, i'll bang on squirrelmail to support the response sent by 
dovecot. 

Thanks.

...alex...





More information about the dovecot mailing list