[Dovecot] CATENATE allows zero parts

Mike Abbott michael.abbott at apple.com
Mon Apr 29 21:37:23 EEST 2013


I'm pleased to see that dovecot-2.2 includes support for RFCs 4467 and 4469 (URLAUTH and CATENATE).  I have begun testing these features (in dovecot-2.2.1) and comparing their functionality against Apple's implementation.  So far I have discovered a few inconsistencies.  I will report each of these, and any more that I may find, in separate threads.

The first issue is that using CATENATE with no message parts works but, IMO, shouldn't:
a2 append inbox catenate ()
a2 OK [APPENDUID 1366726248 9] Append completed.

For comparison this is how Apple's enhanced dovecot in OS X Server handles this request:
a2 append inbox catenate ()
a2 BAD Invalid arguments.

According to RFC 4469 section 3 CATENATE requires "one or more message parts."  This is formalized in section 5:
   append-data =/ "CATENATE" SP "(" cat-part *(SP cat-part) ")"
and in RFC 3501 section 9 which states that "[ABNF] rules MUST be followed strictly."

I believe that permitting zero cat-parts is contrary to the RFC, although I can understand permitting it under the general doctrine of "servers should be liberal in what they accept, and clients strict in what they send."

Is accepting zero cat-parts an intentional exception to the RFC or an oversight?


More information about the dovecot mailing list