Dovecot Subfolder Always Uses dot separator with mdbox

Steven Smith steve.t.smith at gmail.com
Sat May 22 20:36:54 EEST 2021


I’m trying to configure dovecot to use mailbox subfolders that look like both foo/bar on the IMAP client and the filesystem.

But the subfolders created all look like foo.bar, not foo/bar with a proper nesting structure.

This also happens when the folder ‘bar’ is moved into the folder ‘foo’—A new folder `foo.bar’ is created.

I believe that i’m following the configuration rules at https://wiki.dovecot.org/MailboxFormat/Maildir#Maildir_and_filesystems and https://wiki.dovecot.org/MailLocation/Maildir. This issue happens whether I set separator to its default, ‘.’, or ‘/’:

> mail_location = mdbox:/private/var/mail/tld.hostname.mail/%Ln/mdbox:LAYOUT=fs
> namespace inbox {
>>  separator = /
>> }


The IMAP client is macOS Mail.app version 14.0.

I’d greatly appreciate any help or pointers to fix this configuration issue.


dovecot -n
> # 2.3.13 (): /opt/local/etc/dovecot/dovecot.conf
> # Pigeonhole version 0.5.13 ()
> # OS: Darwin 20.4.0 x86_64  apfs
> # Hostname: mail.hostname.tld
> aps_topic = com.apple.mail.XServer.ffffffff-ffff-fff-ffffffffff
> auth_cache_size = 10 M
> auth_gssapi_hostname = $ALL
> auth_krb5_keytab = /opt/local/etc/dovecot/imap.keytab
> auth_mechanisms = plain gssapi
> auth_realms =mail.hostname.tld
> auth_socket_path = /opt/local/var/run/dovecot/auth-userdb
> auth_username_format = %Ln
> debug_log_path = /opt/local/var/log/mail/mail-debug.log
> disable_plaintext_auth = no
> first_valid_gid = 6
> first_valid_uid = 6
> imap_id_log = *
> imap_id_send = "name" * "version" *
> imap_idle_notify_interval = 29 mins
> imap_urlauth_submit_user = submit
> info_log_path = /opt/local/var/log/mail/mail-info.log
> last_valid_gid = 100
> lda_mailbox_autocreate = yes
> log_path = /opt/local/var/log/mail/mail-err.log
> login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c
> mail_access_groups = mail
> mail_attachment_dir = /private/var/mail/tld.hostname.mail/attachments
> mail_attachment_fs = sis posix:mode=0666
> mail_gid = mail
> mail_home = /private/var/mail/tld.hostname.mail
> mail_location = mdbox:/private/var/mail/tld.hostname.mail/%Ln/mdbox:LAYOUT=fs
> mail_log_prefix = "%s(pid %p user %u): "
> mail_plugins = quota zlib acl fts fts_solr fts_lucene
> mail_privileged_group = mail
> mail_uid = _dovecot
> managesieve_notify_capability = mailto
> managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext imapsieve vnd.dovecot.imapsieve
> mdbox_rotate_size = 200 M
> namespace inbox {
>  inbox = yes
>  location = 
>  mailbox Archive {
>    auto = subscribe
>    special_use = \Archive
>  }
>  mailbox Drafts {
>    auto = subscribe
>    special_use = \Drafts
>  }
>  mailbox Junk {
>    auto = create
>    special_use = \Junk
>  }
>  mailbox Notspam_train {
>    auto = create
>    special_use = \Junk
>  }
>  mailbox Sent {
>    auto = subscribe
>    special_use = \Sent
>  }
>  mailbox "Sent Messages" {
>    special_use = \Sent
>  }
>  mailbox Spam_train {
>    auto = create
>    special_use = \Junk
>  }
>  mailbox Trash {
>    auto = create
>    special_use = \Trash
>  }
>  prefix = 
>  separator = /
> }
> passdb {
>  driver = pam
>  name = pam
> }
> plugin {
>  fts = solr
>  fts_autoindex = yes
>  fts_autoindex_exclude = \Junk
>  fts_solr = url=http://127.0.0.1:8983/solr/dovecot/
>  imapsieve_mailbox1_before = file:/opt/local/etc/dovecot/sieve/report-spam.sieve
>  imapsieve_mailbox1_causes = COPY APPEND
>  imapsieve_mailbox1_name = Spam_train
>  imapsieve_mailbox2_before = file:/opt/local/etc/dovecot/sieve/report-ham.sieve
>  imapsieve_mailbox2_causes = COPY APPEND
>  imapsieve_mailbox2_name = Notspam_train
>  mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename
>  mail_log_fields = uid box msgid from subject size flags
>  quota_grace = 10%%
>  quota_rule = *:storage=16G
>  quota_rule2 = Trash:storage=+256M
>  quota_warning = storage=100%% quota-exceeded %u
>  quota_warning2 = storage=80%% quota-warning %u
>  recipient_delimiter = +
>  sieve = /private/var/mail/tld.hostname.mail/rules/%Ln/dovecot.sieve
>  sieve_after = /opt/local/etc/dovecot/sieve-after.d
>  sieve_before = /opt/local/etc/dovecot/sieve-before.d
>  sieve_dir = /private/var/mail/tld.hostname.mail/rules/%Ln/%u
>  sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment
>  sieve_pipe_bin_dir = /opt/local/etc/dovecot/sieve
>  sieve_plugins = sieve_imapsieve sieve_extprograms
>  sieve_quota_max_storage = 50M
> }
> postmaster_address = postmaster at hostname.tld
> protocols = imap lmtp sieve
> quota_full_tempfail = yes
> sendmail_path = /opt/local/sbin/sendmail
> service auth-worker {
>  group = mail
>  user = root
> }
> service auth {
>  extra_groups = _keytabusers
>  idle_kill = 15 mins
>  unix_listener /opt/local/var/spool/postfix/private/auth {
>    group = mail
>    mode = 0660
>    user = _postfix
>  }
> }
> service dns-client {
>  unix_listener dns-client {
>    mode = 0600
>  }
> }
> service imap-login {
>  inet_listener imap {
>    address = 127.0.0.1, ::1
>    port = 143
>  }
>  inet_listener imaps {
>    port = 993
>    ssl = yes
>  }
>  process_min_avail = 6
>  service_count = 0
>  vsz_limit = 2 G
> }
> service imap {
>  process_limit = 200
>  process_min_avail = 6
> }
> service lmtp {
>  unix_listener /opt/local/var/spool/postfix/private/dovecot-lmtp {
>    group = mail
>    mode = 0660
>    user = _postfix
>  }
> }
> ssl = required
> ssl_ca = </opt/local/etc/certificates/cert.chain.pem
> ssl_cert = </opt/local/etc/certificates/cert.cert.pem
> ssl_cipher_list = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
> ssl_dh = # hidden, use -P to show it
> ssl_key = # hidden, use -P to show it
> ssl_min_protocol = TLSv1.2
> ssl_prefer_server_ciphers = yes
> userdb {
>  driver = passwd
>  name = passwd
> }
> verbose_proctitle = yes
> protocol lda {
>  mail_fsync = optimized
>  mail_plugins = quota zlib acl fts fts_solr fts_lucene sieve push_notify
> }
> protocol imap {
>  mail_max_userip_connections = 50
>  mail_plugins = quota zlib acl fts fts_solr fts_lucene imap_acl imap_quota imap_zlib imap_sieve
> }
> protocol lmtp {
>  mail_fsync = optimized
>  mail_plugins = quota zlib acl fts fts_solr fts_lucene sieve
> }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3898 bytes
Desc: not available
URL: <https://dovecot.org/pipermail/dovecot/attachments/20210522/80b9f197/attachment-0001.p7s>


More information about the dovecot mailing list