Shared Mailboxes with Multiple Domains

Daniel Miller dmiller at amfes.com
Thu Feb 13 04:16:05 EET 2020


Trying to track down a problem I've been dealing with for a while. 
Everything else works fine - the problem is with shared mailboxes.

My present, and desired, prefix for the shared namespace is:
   prefix = INBOX/shared/%%d/%%n/

Some mail clients, particularly Thunderbird and Android's AquaMail, have 
no problem with this. But other (presumably broken) clients don't show 
the shared mailboxes. This includes EM Client and Webmail Lite. 
Actually, Webmail Lite lists the mailboxes in the subscription window, 
but then the "live" folder list shows "shared" and "shared/domain" but 
none of the shared mailboxes below the domain.

Changing to:
   prefix = INBOX/shared/%%u/

Works across all clients - but I'd rather have the domain separation. 
Testing with telnet ". LIST '' '*'" yields the full list with either config.

The files /var/mail/%d/shared-mailboxes contain entries like:
   shared/shared-boxes/group/allshared/user at domain.com
   1


Below is "doveconf -n" output.

# 2.3.9.3 (9f41b88fa): /usr/local/etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.9 (db4e9a2f)
# OS: Linux 5.3.0-28-generic x86_64 Ubuntu 18.04.4 LTS
# Hostname: bubba.amfes.lan
auth_cache_size = 4 k
auth_master_user_separator = *
auth_mechanisms = plain login
auth_policy_hash_nonce = # hidden, use -P to show it
auth_policy_hash_truncate = 8
auth_policy_server_api_header = Authorization: Basic 
d2ZvcmNlOnVsdHJhLXNlY3JldC1zZWN1cmUtc2FmZQ
default_login_user = nobody
default_vsz_limit = 2 G
disable_plaintext_auth = no
imap_client_workarounds = tb-extra-mailbox-sep
imap_idle_notify_interval = 29 mins
listen = *
login_trusted_networks = 192.168.0.0/24
mail_attachment_hash = %{sha512}
mail_plugins = fts fts_solr acl zlib virtual
mail_prefetch_count = 10
mail_shared_explicit_inbox = yes
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
mdbox_rotate_size = 20 M
namespace archives {
   list = children
   location = mdbox:/var/mail/%d/%n/Archives/mdbox
   mailbox Unsorted {
     auto = no
     special_use = \Archive
   }
   prefix = INBOX/Archives/
   separator = /
   subscriptions = no
   type = private
}
namespace inbox {
   hidden = no
   inbox = yes
   list = yes
   location =
   mailbox "Deleted Messages" {
     auto = no
     autoexpunge = 30 days
     special_use = \Trash
   }
   mailbox Drafts {
     auto = subscribe
     special_use = \Drafts
   }
   mailbox Sent {
     auto = subscribe
     special_use = \Sent
   }
   mailbox "Sent Items" {
     auto = no
     special_use = \Sent
   }
   mailbox "Sent Messages" {
     auto = no
     special_use = \Sent
   }
   mailbox Trash {
     auto = subscribe
     autoexpunge = 30 days
     special_use = \Trash
   }
   prefix = INBOX/
   separator = /
   subscriptions = no
   type = private
}
namespace lists {
   list = children
   location = mdbox:/var/mail/%d/%n/Lists/mdbox
   prefix = INBOX/Lists/
   separator = /
   subscriptions = no
   type = private
}
namespace subscriptions {
   hidden = yes
   list = no
   location =
   prefix =
   subscriptions = yes
}
namespace usershares {
   list = children
   location = sdbox:/var/mail/%%d/%%n/sdbox:NO-NOSELECT
   prefix = INBOX/shared/%%d/%%n/
   separator = /
   subscriptions = no
   type = shared
}
namespace virtual {
   list = children
   location = virtual:/var/mail/%d/%n/virtual
   mailbox Flagged {
     comment = All my flagged messages
     special_use = \Flagged
   }
   prefix = INBOX/virtual/
   separator = /
   subscriptions = no
}
passdb {
   args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
   driver = sql
}
plugin {
   acl = vfile
   acl_shared_dict = file:/var/mail/%d/shared-mailboxes
   fts = solr
   fts_autoindex = yes
   fts_autoindex_exclude = \Trash
   fts_autoindex_exclude2 = \Junk
   fts_autoindex_exclude3 = \Spam
   fts_enforced = no
   fts_index_timeout = 20s
   fts_solr = url=http://127.0.0.1:8983/solr/dovecot/
   mailbox_alias_new = Sent Messages
   mailbox_alias_new2 = Sent Items
   mailbox_alias_new3 = Deleted Messages
   mailbox_alias_old = Sent
   mailbox_alias_old2 = Sent
   mailbox_alias_old3 = Trash
   sieve = file:~/sieve;active=~/.dovecot.sieve
}
protocols = imap lmtp sieve
service auth {
   unix_listener /var/spool/postfix/private/auth {
     group = postfix
     mode = 0660
     user = postfix
   }
   unix_listener auth-userdb {
     group = mail
     mode = 0600
     user = vmail
   }
}
service dict {
   unix_listener dict {
     group = mail
     mode = 0660
     user = vmail
   }
}
service imap-login {
   process_min_avail = 10
   service_count = 1
}
service imap-postlogin {
   executable = script-login /usr/local/etc/dovecot/post-login.sh
   user = $default_internal_user
}
service imap {
   executable = imap imap-postlogin
   vsz_limit = 4 G
}
service indexer-worker {
   process_limit = 3
}
service lmtp {
   process_min_avail = 5
   unix_listener /var/spool/postfix/private/dovecot-lmtp {
     group = mail
     mode = 0666
     user = vmail
   }
}
service managesieve-login {
   inet_listener sieve {
     port = 4190
   }
   inet_listener sieve_deprecated {
     port = 2000
   }
   process_min_avail = 0
   service_count = 1
}
ssl_cert = </etc/ssl/letsencrypt/live/mail.amfes.com/fullchain.pem
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
userdb {
   driver = prefetch
}
userdb {
   args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
   driver = sql
}
verbose_proctitle = yes
protocol lmtp {
   mail_plugins = fts fts_solr acl zlib virtual sieve
   postmaster_address = postmaster at amfes.com
}
protocol lda {
   mail_plugins = fts fts_solr acl zlib virtual sieve
}
protocol imap {
   mail_max_userip_connections = 50
   mail_plugins = fts fts_solr acl zlib virtual imap_acl imap_zlib 
mailbox_alias
}


-- 
Daniel



More information about the dovecot mailing list