This is not a list of Courier-IMAP bugs, rather this is a list of bugs in either the IMAP4REV1 RFC, RFC2060, or various IMAP clients. Whether it's the RFC that's broken, or the various IMAP clients, is not always clear.
READ: ATOM: 0000000a READ: ATOM: LIST READ: ATOM: INBOX. READ: ATOM: sent-mail READ: EOL WRITE: * LIST (\HasNoChildren) "." "INBOX.sent-mail"^M 0000000a OK LIST completed^M READ: ATOM: 0000000b READ: ATOM: CREATE READ: ATOM: INBOX.sent-mail READ: EOL WRITE: 0000000b NO Cannot create this folder.^M
Basically Pine is checking if the sent-mail folder exists. It sends the command "(tag) LIST INBOX. sent-mail". Apparently the \HasNoChildren reply causes Pine to toss its cookies, think that the folder does not exist, and attempt to create it, which obviously fails.
Previous versions of Courier-IMAP used the \NoInferiors tag instead of \HasNoChildren. Pine appears to handle that just fine:
READ: ATOM: 0000000b READ: ATOM: LIST READ: ATOM: INBOX. READ: ATOM: sent-mail READ: EOL WRITE: * LIST (\Noinferiors) "." "INBOX.sent-mail"^M 0000000b OK LIST completed^M READ: ATOM: 0000000c READ: ATOM: APPEND READ: ATOM: INBOX.sent-mail WRITE: + OK^M
\NoInferiors is technically a wrong flag to use here, but that's what, apparently is needed to keep Pine happy. Set the IMAP_OBSOLETE_CLIENT flag to get this legacy behavior.
A non-empty reference name argument is the name of a mailbox or a level of mailbox hierarchy, and indicates a context in which the mailbox name is interpreted in an implementation-defined manner.
This is another Pine bug.
Netscape Communicator is ancient history. Upgrade to Mozilla, or Thunderbird.
The IMAP4REV1 RFC is not clear as to what LIST should return for a mailbox that can contain both messages and other mailboxes. The RFC strongly implies that the response should be one LIST reply without \Noinferiors and \Noselect tags.
However, Pine does not appear to gracefully handle that. It does handle the navigation part more or less reasonably. The mailbox name is shown with the hierarchy delimiter inside brackets. Enter opens the contents of the mailbox, the > key displays the subfolder collection.
However, when copying the message there does not appear to be a way to select the folder itself. Only the Enter key responds, which shows the subfolder collection.
Pine behaves better if this situation is handled by returning two replies with the same mailbox name. One reply contains the \Noinferiors tag, the second reply contains the \Noselect tag. Pine will display the folder twice in the folder collections window. The first entry is displayed like any other folder, and pressing Enter selects the folder. The second entry is displayed with the hierarchy separator appended to it, and pressing Enter shows the subfolder collection.
Even when you tell it not to use "subscriptions", Outlook Express still sends spurious Subscribe/Unsubscribe commands, which forced me to implement a stub for those function.
OE also persistent problems updating the number of unread messages in each folder, or visually highlighting new messages in the folder. Perhaps I'm not familiar with OE. It's possible that there might be a bug in Courier-IMAP too, but neither Pine, nor Communicator, exhibit these symptoms.
There have been reports that OE 5.0 does not work at all due to the fact that the silly thing expects to see UID as the first parameter in the response to a FETCH.
No, I am not going to add spaghetti code to push UID to the front of the structured response to a FETCH. Ask Microsoft to actually read the RFCs before implementing them.
StarOffice's IMAP server doesn't have a good grasp on what IMAP responses should be like. For some silly reason, it insists on a period at the end of a freeform message. Nothing even close is required by RFC 2060, and I'm not going to change Courier-IMAP in order to accomodate such silliness. If you need to use StarOffice's IMAP client, try the following patch:
--- imapd.c.orig Fri Jan 7 02:47:27 2000 +++ imapd.c Sun Jan 16 22:31:16 2000 @@ -1131,7 +1131,7 @@ writes(tag); writes(" OK "); writes(cmdbuf); - writes(" completed\r\n"); + writes(" completed.\r\n"); } writeflush(); return (0);
Pine is a trademark of the University Of Washington
Outlook Express is a trademark of the Microsoft Corporation
Staroffice is a trademark of Sun Microsystems