I think EMClient IMAP list handling is incorrect. I’ve done an extensive amount of testing and it would be gruelling to post all of the test results proving this point.
However, let’s make it simple, first:
In another post (https://forum.emclient.com/emclient/topics/activedirectory-gpo-redirected-folders-database-corruptio…), EMC reported that it uses the “%” wildcard instead of a “*” . The result is that no public or shared folders are displayed in EMC. Why?
1 list * %
* LIST (\HasChildren) “.” INBOX
* LIST (\HasNoChildren) “.” INBOX.Contacts
* LIST (\HasNoChildren) “.” INBOX.Drafts
* LIST (\HasNoChildren) “.” INBOX.Junk
* LIST (\HasNoChildren) “.” INBOX.Notes
* LIST (\HasNoChildren) “.” INBOX.Outbox
* LIST (\HasNoChildren) “.” INBOX.Sent
* LIST (\HasNoChildren) “.” INBOX.Spam
* LIST (\HasNoChildren) “.” INBOX.Trash
* LIST (\HasNoChildren) “.” INBOX.adsfasdfasdf
* LIST (\HasNoChildren) “.” INBOX.documents
* LIST (\HasNoChildren) “.” INBOX.frank
* LIST (\HasNoChildren) “.” INBOX.hold
* LIST (\Noselect \HasChildren) “.” news
* LIST (\HasNoChildren) “.” news.general
* LIST (\Noselect \HasChildren) “.” shared
* LIST (\HasNoChildren) “.” shared.keepers
* LIST (\Noselect \HasChildren) “.” user
* LIST (\HasChildren) “.” user.adifferentuser
* LIST (\HasNoChildren) “.” user.adifferentuser.Drafts
* LIST (\HasNoChildren) “.” user.adifferentuser.Junk
* LIST (\HasNoChildren) “.” user.adifferentuser.Notes
* LIST (\HasNoChildren) “.” user.adifferentuser.Outbox
* LIST (\HasNoChildren) “.” user.adifferentuser.Sent
* LIST (\HasNoChildren) “.” user.adifferentuser.Trash
* LIST (\HasChildren) “.” user.sysadmin
* LIST (\HasNoChildren) “.” user.sysadmin.Drafts
* LIST (\HasNoChildren) “.” user.sysadmin.GLBA
* LIST (\HasNoChildren) “.” user.sysadmin.Junk
* LIST (\HasNoChildren) “.” user.sysadmin.Outbox
* LIST (\HasNoChildren) “.” user.sysadmin.Sent
* LIST (\HasNoChildren) “.” user.sysadmin.TLS
* LIST (\HasNoChildren) “.” user.sysadmin.Trash
* LIST (\HasNoChildren) “.” user.wishmaster
1 OK Completed (0.001 secs 45 calls)
AND…
1 list % %
* LIST (\HasChildren) “.” INBOX
* LIST (\Noselect \HasChildren) “.” news
* LIST (\Noselect \HasChildren) “.” shared
* LIST (\Noselect \HasChildren) “.” user
1 OK Completed (0.001 secs 38 calls)
* BAD Invalid tag
1 list INBOX% %
* LIST (\HasChildren) “.” INBOX
1 OK Completed (0.000 secs 17 calls)
* BAD Invalid tag
* BAD Invalid tag
1 list INBOX% *
* LIST (\HasChildren) “.” INBOX
* LIST (\HasNoChildren) “.” INBOX.Contacts
* LIST (\HasNoChildren) “.” INBOX.Drafts
* LIST (\HasNoChildren) “.” INBOX.Junk
* LIST (\HasNoChildren) “.” INBOX.Notes
* LIST (\HasNoChildren) “.” INBOX.Outbox
* LIST (\HasNoChildren) “.” INBOX.PCI
* LIST (\HasNoChildren) “.” INBOX.PII
* LIST (\HasNoChildren) “.” INBOX.Sent
* LIST (\HasNoChildren) “.” INBOX.Spam
* LIST (\HasNoChildren) “.” INBOX.Trash
* LIST (\HasNoChildren) “.” INBOX.adsfasdfasdf
* LIST (\HasNoChildren) “.” INBOX.documents
* LIST (\HasNoChildren) “.” INBOX.hold
1 OK Completed (0.001 secs 18 calls)
1 namespace
* NAMESPACE ((“INBOX.” “.”)) ((“user.” “.”)) (("" “.”))
1 OK Completed
(FYI,… when using altnamespace… the NAMESPACE command results come out as ("" “”.") (“user.” “.”)(“shared.” “.”) — because >>> I <<
RFC3501 calls “NAMESPACE” command a *** “HINT” ***. (It’s NOT determinant; see the docs. In fact, IMAP was designed for UNLIMITED namespaces – just like usenet/nntp.)
<u>5.1.1</u> Mailbox Hierarchy Naming
If it is desired to export hierarchical mailbox names, mailbox names
MUST be **left-to-right hierarchical using a single character to
separate levels of hierarchy**. The same hierarchy separator character
is used for all levels of hierarchy within a single name.
<u>5.1.2</u> Mailbox Namespace Naming Convention
By convention, the first hierarchical element of any mailbox name
**which begins with "#" identifies the "namespace"** of the remainder of the name. This makes it possible to disambiguate between different types of mailbox stores, each of which have their own namespaces. For example, implementations which offer access to USENET newsgroups MAY use the "#news" namespace to partition the USENET newsgroup namespace from that of other mailboxes. Thus, the comp.mail.misc newsgroup would have a mailbox name of "#news.comp.mail.misc", and the name "comp.mail.misc" can refer to a different object (e.g., a user's private mailbox). 6.3.8. LIST Command Arguments: reference name mailbox name with possible wildcards Responses: untagged responses: LIST Result: OK - list completed NO - list failure: can't list that reference or name BAD - command unknown or arguments invalid
The LIST command returns a subset of names from the complete set of all names available to the client. Zero or more untagged LIST replies are returned, containing the name attributes, hierarchy delimiter, and name; see the description of the LIST reply for more detail. ... The character "\*" is a wildcard, and matches zero or more characters at this position. The character "%" is similar to "\*", but it does not match a hierarchy delimiter. If the "%" wildcard is the last character of a mailbox name argument, matching levels of hierarchy are also returned. If these levels of hierarchy are not also selectable mailboxes, they are returned with the \Noselect mailbox name attribute (see the description of the LIST response for more details).
Why does EMC filter out all the results???
The SERVER (by the sysadmin) makes the decision to hide or not to hide – not the client. (ON THE OTHER HAND, if I use “altnamespace: 1” in Cyrus, EMC *does* display all the folders – except “shared.keepers.” EMC implementation is WRONG.)
Outlook does it correctly. Outlook Express, correct. Windows Live Mail, correct. Gnome Evolution, correct. KDE Kontact, correct. Mozilla Thunderbird, correct. Half a dozen others with ‘no name’ clients… correct.
EMC – wrong. (This is the REAL cause of the problem of missing user-shared folders and public folders mentioned in the other post. EMC appears to be stripping the first portion of the hierarchy – out of its own volition. Why? I think I know why. EMC should leave the hierarchy described BY THE SERVER, alone. )
THIS IS A SERIOUS IMPLEMENTATION ISSUE.
“Back to the old drawing board,” as they say.