Confusion about mailbox_list_layout=fs
Roland Hieber via dovecot <[email protected]> Wed, 22 Jul 2026 14:55:39 +0200
| Newsgroups | gmane.mail.imap.dovecot |
|---|---|
| Message-ID | <1784722927-cff07a3d58dbfb5e671abd08@pty> |
--qnvhfei3phzu5qpg Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit Hi, I am trying to understand how 'mailbox_list_layout = fs' is working when I have 'mail_driver = Maildir' (on Dovecot 2.4.1-4 from Debian trixie). If I look at 'doveconf -a', I see that 'mailbox_list_layout = fs' is already the default, however, the Maildirs from my freshly created test user are still created on disk in the format .INBOX.subfolder instead of INBOX/subfolder, which is in conflict with what the documentation says at <https://doc.dovecot.org/2.4.3/core/config/mailbox_formats/maildir.html#directory-layout>. However, if I set 'mailbox_list_layout = fs' *explicitely* in the global part of /etc/dovecot/conf.d/10-mail.conf, then delete all files and folders in the mail home of my test user, reload dovecot, send a test mail, and create a new subfolder for my test user in Thunderbird, the new subfolder gets created on disk as INBOX/subfolder, just like I expect. The behaviour is consistently reproducable in both directions: I also get maildirs with dots again after I delete mailbox_list_layout from 10-mail.conf, reload dovecot, and clear the mail home of my test user. What is going on here� I don't see any change in 'doveconf -a' between these two use cases (the output is literally identical, and it's both showing 'mailbox_list_layout = fs'), and obviously it's missing from 'doveconf -n' because it's the default. I also found out that it is possible to override this setting per user by using the 'userdb_mailbox_list_layout' option in the extra fields of the userdb, but I'm not setting any extra fields there for my test user. Output of 'doveconf -n' (redacted where necessary) is attached. Regards, - Roland -- Roland Hieber, Pengutronix e.K. | [email protected] | Steuerwalder Str. 21 | https://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | --qnvhfei3phzu5qpg Content-Type: text/plain; charset=utf-8 Content-Disposition: attachment; filename=doveconf-n # 2.4.1-4 (7d8c0e5759): /etc/dovecot/dovecot.conf # Pigeonhole version 2.4.1-4 (0a86619f) # OS: Linux 6.12.73+deb13-amd64 x86_64 Debian 13.6 # Hostname: [redacted] # 4 default setting changes since version 2.4.0 dovecot_config_version = 2.4.0 auth_mechanisms = plain login auth_username_format = %{user|lower} auth_verbose = yes doveadm_password = # hidden, use -P to show it dovecot_storage_version = 2.4.0 fts_autoindex = yes fts_autoindex_max_recent_msgs = 999 fts_search_add_missing = yes lmtp_save_to_detail_mailbox = yes lmtp_user_concurrency_limit = 200 mail_driver = maildir mail_home = /srv/mail/%{user} mail_inbox_path = INBOX mail_path = %{home}/mail mail_privileged_group = mail namespace_separator = / protocols { imap = yes lmtp = yes sieve = yes } sieve_extensions { fileinto = yes reject = yes envelope = yes encoded-character = yes vacation = yes subaddress = yes comparator-i;ascii-numeric = yes relational = yes regex = yes imap4flags = yes copy = yes include = yes body = yes variables = yes enotify = yes environment = yes mailbox = yes date = yes index = yes ihave = yes duplicate = yes mime = yes foreverypart = yes extracttext = yes vnd.dovecot.debug = yes vnd.dovecot.pipe = yes editheader = yes } sieve_pipe_bin_dir = /usr/lib/dovecot/sieve-pipe sieve_pipe_socket_dir = sieve-pipe sieve_plugins { sieve_extprograms = yes } sieve_trace_debug = yes sieve_trace_level = matching ssl = required verbose_proctitle = yes passdb passwd-file { auth_username_format = %{user} default_password_scheme = crypt passwd_file_path = /etc/dovecot/users } userdb passwd-file { auth_username_format = %{user} passwd_file_path = /etc/dovecot/users } namespace inbox { hidden = no inbox = yes list = yes separator = / mailbox Drafts { auto = subscribe special_use = "\\Drafts" } mailbox Junk { auto = subscribe special_use = "\\Junk" } mailbox Trash { auto = subscribe special_use = "\\Trash" } mailbox Sent { auto = subscribe special_use = "\\Sent" } } service imap-login { inet_listener imap { } inet_listener imaps { } } service pop3-login { } service submission-login { } service lmtp { vsz_limit = 400M unix_listener lmtp { mode = 0660 } } service imap { } service pop3 { } service submission { } service auth { unix_listener auth-userdb { } } service auth-worker { } service dict { unix_listener dict { } } ssl_server { cert_file = /var/lib/dehydrated/certs/local/fullchain.pem key_file = /var/lib/dehydrated/certs/local/privkey.pem } protocol lmtp { mail_plugins { sieve = yes } } service managesieve-login { inet_listener sieve { port = 4190 } } service managesieve { } service stats { inet_listener http { port = 9243 listen = 127.0.0.1 ::1 } } metric auth_success { filter = (event=auth_request_finished AND success=yes) } sieve_script personal { active_path = ~/.dovecot.sieve driver = file path = ~/sieve } sieve_script default { driver = file name = default path = /etc/dovecot/sieve/default/default.sieve type = default } --qnvhfei3phzu5qpg Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ dovecot mailing list -- [email protected] To unsubscribe send an email to [email protected] --qnvhfei3phzu5qpg--