I recently upgraded the cyrus-imapd service on a heavily used internal IMAP server from version 2.4.17 (specifically, version cyrus-imapd-2.4.17-15.el7.ppc64le via standard RHEL7 package management) to version 3.0.7 (version cyrus-imapd-3.0.7-24.el8.ppc64le via standard RHEL8 package management). After the upgrade (and a full "reconstruct -r -G -V max" for all mailboxes) my users are unable to synchronize any mailboxes other than "INBOX" using tools such as mbsync or mutt, and the Settings -> Folders facility of Roundcube will only show the "INBOX" and no other folders.
I have found that when connecting to the imaps service on port 993 using the openssl client and using raw IMAP commands to interact with the service as follows:
I have found that when connecting to the imaps service on port 993 using the openssl client and using raw IMAP commands to interact with the service as follows:
openssl s_client -connect imap-host.example.domain.com:993 -crlf -quiet
then logging in and issuing a simple LIST command (as described by the IMAP RFC), the output only shows the INBOX and claims that is "HasNoChildren":
. list "" * * LIST (\HasNoChildren) "." INBOX . OK Completed (0.000 secs 1 calls)
whereas the old IMAP server running version 2.4.17 gives output that seems to reflect why they are now complaining:
. list "" * * LIST (\HasChildren) "." INBOX * LIST (\HasNoChildren) "." Drafts * LIST (\HasChildren) "." "Junk Mail" * LIST (\HasNoChildren) "." "Junk Mail.Learn as HAM" * LIST (\HasNoChildren) "." "Junk Mail.Learn as SPAM" * LIST (\HasNoChildren) "." Sent * LIST (\HasNoChildren) "." Trash . OK Completed (0.000 secs 8 calls)
Why does the new version assign the "HasNoChildren" attribute while the old version shows "HasChildren", and how do I fix this?
Yes, I have installed the latest stable version (cyrus-imapd-3.8.3) on a test server (which is quite painful since I have to build it and there are no SystemD init scripts; we much prefer to use standard operating system packages) and verified that there is no change in behavior.