So Cyrus currently does this: . list "" "In*" * LIST (\HasChildren) "." InBOX * LIST (\HasChildren \Archive) "." InBOX.Archive * LIST (\HasNoChildren) "." InBOX.Archive.2003 * LIST (\HasNoChildren) "." InBOX.Archive.2004 * LIST (\HasNoChildren) "." InBOX.Archive.2005 [...]
Which I used to think was because the standards required it, because why else would you do something so complex. But I suspect this isn't actually the case. This is the part of RFC3501 that is probably being implemented: Any part of the reference argument that is included in the interpreted form SHOULD prefix the interpreted form. It SHOULD also be in the same form as the reference name argument. This rule permits the client to determine if the returned mailbox name is in the context of the reference argument, or if something about the mailbox argument overrode the reference argument. Without this rule, the client would have to have knowledge of the server's naming semantics including what characters are "breakouts" that override a naming context. However, a little later we get this: The special name INBOX is included in the output from LIST, if INBOX is supported by this server for this user and if the uppercase string "INBOX" matches the interpreted reference and mailbox name arguments with wildcards as described above. The criteria for omitting INBOX is whether SELECT INBOX will return failure; it is not relevant whether the user's real INBOX resides on this or some other server. So I propose the following: In non-alt namespace, we only ever output INBOX in all caps. In alt namespace, we always output 'INBOX' for the Inbox folder. Either way, we match any case query that could match inbox in any case, so this works the same as Gmail: . OK brongondw...@gmail.com authenticated (Success) . list "" "i*" * LIST (\HasNoChildren) "/" "INBOX" Also, no existing behaviour is changed - here's my email in alt namespace right now. . list "" * * LIST (\Noinferiors \HasNoChildren) "." INBOX * LIST (\HasChildren \Archive) "." Archive * LIST (\HasNoChildren) "." Archive.2003 [...] But this crap goes away: . list "" "i*" * LIST (\Noinferiors) "." iNBOX . OK Completed (0.010 secs 3 calls) And that's that :) Consistency. This is one change to my email of many months ago, in which I wanted to do the prettier "Inbox" in alt-namespace. This will be landing in a tree near you shortly. Bron. -- Bron Gondwana br...@fastmail.fm