Hi, I've been trying this for weeks and never managed to get my mail client to see shared folders. Apparently imap_acl works fine as I can see these entries in the dovecot-acl-list files and the correct entries persist in the client. This is my first dovecot setup so I hope I've configured it right. Everything else works beautifully, thanks. # dovecot -n # 2.2.21 (5345f22): /etc/dovecot/dovecot.conf # Pigeonhole version 0.4.11 (6ddf62b87f60+) # OS: Linux 4.3.5-300.fc23.x86_64 x86_64 Fedora release 23 (Twenty Three) auth_mechanisms = plain login auth_socket_path = /var/run/dovecot/auth-userdb imap_client_workarounds = tb-extra-mailbox-sep listen = * log_path = /var/log/dovecot.log mail_access_groups = mail, vmail mail_home = /var/mail/vmail/%d/%n mail_location = maildir:~/mail mail_plugins = virtual, acl 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 mbox_write_locks = fcntl namespace { location = virtual:/var/mail/vhosts/%d/%n/virtual prefix = virtual. separator = . } namespace { list = children location maildir:/var/mail/vhosts/%%d/%%n/mail:INDEX=/var/mail/vhosts/%d/%n/shared/%%u:CONTROL=/var/mail/vhosts/%d/%n/shared/%%u prefix = shared.%%u. separator = . subscriptions = yes type = shared } namespace inbox { inbox = yes location mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } mailbox virtual/All { comment = All my messages special_use = \All } mailbox virtual/Flagged { comment = All my flagged messages special_use = \Flagged } prefix } passdb { args = scheme=PLAIN username_format=%u /etc/dovecot/dovecot-users driver = passwd-file } plugin { acl = vfile acl_shared_dict = file:/var/mail/vhosts/shared-mailboxes.db sieve = ~/.dovecot.sieve sieve_dir = ~/sieve sieve_global_dir = /var/mail/vhosts/sieve-global } protocols = imap lmtp sieve service auth-worker { user = vmail } service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0660 user = postfix } unix_listener auth-userdb { group = vmail mode = 0660 user = vmail } } service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 0 ssl = yes } } service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { group = postfix mode = 0600 user = postfix } } service managesieve-login { inet_listener sieve { port = 4190 } } service pop3-login { inet_listener pop3 { port = 0 } inet_listener pop3s { port = 0 } } ssl = required ssl_cert = </etc/pki/dovecot/certs/dovecot.cert.pem ssl_cipher_list = PROFILE=SYSTEM ssl_key = </etc/pki/dovecot/private/dovecot.key.pem userdb { args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n driver = static } protocol lmtp { mail_plugins = virtual, acl , sieve } protocol lda { mail_plugins = virtual, acl , sieve } protocol imap { mail_plugins = virtual, acl , imap_acl }
Hugh Bragg wrote:> I've been trying this for weeks and never managed to get my mail client > to see shared folders. > Apparently imap_acl works fine as I can see these entries in the > dovecot-acl-list files and the correct entries persist in the client. > This is my first dovecot setup so I hope I've configured it right. > Everything else works beautifully, thanks.Are they shown with telnet? e.g. http://www.anta.net/misc/telnet-troubleshooting/imap.shtml
On 18/02/2016 5:22 AM, Chris wrote:> Hugh Bragg wrote: >> I've been trying this for weeks and never managed to get my mail client >> to see shared folders. >> Apparently imap_acl works fine as I can see these entries in the >> dovecot-acl-list files and the correct entries persist in the client. >> This is my first dovecot setup so I hope I've configured it right. >> Everything else works beautifully, thanks. > Are they shown with telnet? e.g. > > http://www.anta.net/misc/telnet-troubleshooting/imap.shtmlAbsolutely nothing for shared only the usual. Very frustrating.
On 2016-02-17 18:23, Hugh Bragg wrote:> Hi, > > I've been trying this for weeks and never managed to get my mail client > to see shared folders. > Apparently imap_acl works fine as I can see these entries in the > dovecot-acl-list files and the correct entries persist in the client. > This is my first dovecot setup so I hope I've configured it right. > Everything else works beautifully, thanks.What client do you use? Are there folders shared from user1 to user2? what does dovecadm acl get -u <user> -m shared.<user>.mailbox show? doveadm debug -u user2 -m shared.<user1>.mailbox Whats in your logs? Enable debug log and look for errors.> # dovecot -n > # 2.2.21 (5345f22): /etc/dovecot/dovecot.conf > # Pigeonhole version 0.4.11 (6ddf62b87f60+) > # OS: Linux 4.3.5-300.fc23.x86_64 x86_64 Fedora release 23 (Twenty > Three) > auth_mechanisms = plain login > auth_socket_path = /var/run/dovecot/auth-userdb > imap_client_workarounds = tb-extra-mailbox-sep > listen = * > log_path = /var/log/dovecot.log > mail_access_groups = mail, vmail > mail_home = /var/mail/vmail/%d/%n > mail_location = maildir:~/mail > mail_plugins = virtual, acl > 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 > mbox_write_locks = fcntl > namespace { > location = virtual:/var/mail/vhosts/%d/%n/virtual > prefix = virtual. > separator = . > } > namespace { > list = children > location > maildir:/var/mail/vhosts/%%d/%%n/mail:INDEX=/var/mail/vhosts/%d/%n/shared/%%u:CONTROL=/var/mail/vhosts/%d/%n/shared/%%u > prefix = shared.%%u. > separator = . > subscriptions = yes > type = shared > }According to http://wiki2.dovecot.org/SharedMailboxes/Shared the "list = Children" hides the namespace from the imap list command, if there is no folder shared to the user. Try to set list = yes that should show the shared namespace in the imap list. Also scroll down to shared mailbox listing, you should setup a dict so that dovecot knows which folders are shared.> namespace inbox { > inbox = yes > location > mailbox Drafts { > special_use = \Drafts > } > mailbox Junk { > special_use = \Junk > } > mailbox Sent { > special_use = \Sent > } > mailbox "Sent Messages" { > special_use = \Sent > } > mailbox Trash { > special_use = \Trash > } > mailbox virtual/All { > comment = All my messages > special_use = \All > } > mailbox virtual/Flagged { > comment = All my flagged messages > special_use = \Flagged > }I have my virtual mailboxes configuration in the virtual namespace { } section, not in the general inbox namespace.> prefix > } > passdb { > args = scheme=PLAIN username_format=%u /etc/dovecot/dovecot-users > driver = passwd-file > } > plugin { > acl = vfile > acl_shared_dict = file:/var/mail/vhosts/shared-mailboxes.db > sieve = ~/.dovecot.sieve > sieve_dir = ~/sieve > sieve_global_dir = /var/mail/vhosts/sieve-global > } > protocols = imap lmtp sieve > service auth-worker { > user = vmail > } > service auth { > unix_listener /var/spool/postfix/private/auth { > group = postfix > mode = 0660 > user = postfix > } > unix_listener auth-userdb { > group = vmail > mode = 0660 > user = vmail > } > } > service imap-login { > inet_listener imap { > port = 143 > } > inet_listener imaps { > port = 0 > ssl = yes > } > } > service lmtp { > unix_listener /var/spool/postfix/private/dovecot-lmtp { > group = postfix > mode = 0600 > user = postfix > } > } > service managesieve-login { > inet_listener sieve { > port = 4190 > } > } > service pop3-login { > inet_listener pop3 { > port = 0 > } > inet_listener pop3s { > port = 0 > } > } > ssl = required > ssl_cert = </etc/pki/dovecot/certs/dovecot.cert.pem > ssl_cipher_list = PROFILE=SYSTEM > ssl_key = </etc/pki/dovecot/private/dovecot.key.pem > userdb { > args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n > driver = static > } > protocol lmtp { > mail_plugins = virtual, acl , sieve > } > protocol lda { > mail_plugins = virtual, acl , sieve > } > protocol imap { > mail_plugins = virtual, acl , imap_acl > }-- Christian Kivalo
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Thu, 18 Feb 2016, Hugh Bragg wrote:> namespace { > location = virtual:/var/mail/vhosts/%d/%n/virtual > prefix = virtual. > separator = . > } > namespace { > list = children > location > maildir:/var/mail/vhosts/%%d/%%n/mail:INDEX=/var/mail/vhosts/%d/%n/shared/%%u:CONTROL=/var/mail/vhosts/%d/%n/shared/%%u > prefix = shared.%%u. > separator = . > subscriptions = yes > type = shared > }you have two namespaces with the same name, put some string before the {'s.> namespace inbox {like here. == Then check out the advices of Christian & Chris (telnet) as well - -- Steffen Kaiser -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEVAwUBVsV62Xz1H7kL/d9rAQKirwf+IvDtS2sbdJczMdzo3j95SWj/qAk6G+Rg X0vBCYK4z1KKabSLU+eDqS/FfW+pSRqaUlKa/XYdwzGCR1B3s0zFUd1K2Brtagd4 knDSVTCTQz3L4bcxEriZ6N9zvFKWFR5FQzUV5sq7ObhY24cNyUk4kFSU8LGZVjVz pxZ1V+TyjhI76EjxoxTDdTEVHYuGkSFRgomyGYDcQ8scVW22mL5H8RaXvS+TNJac tp04E8ibCn4zzm0ui7RRhFuzfOJ8z2rMFe+7RTTMstkzEAp9CegRgtcA545n3gga X2hR/rFGeNGtAElD6UM3cd2VsuWskbnbK8EF3gZwx4YAHmVGFRguAw==D7Vs -----END PGP SIGNATURE-----
Thanks, this helped. I added namespace virtual and removed the virtual references from inbox namespace and added list = yes so now I can see shared folder in the client. There's still nothing in there though. I followed Christian's advice, debug shows this very strange behaviour. doveadm acl debug -u user1 at domain1.com.au shared.user2 at domain2.com.au doveadm(user1 at domain1.com.au): Error: Mailbox 'com.au' in namespace 'shared.user2 at domain2.' doesn't exist in /var/mail/vhosts/domain2/user2/mail/.com.au There are no errors in the log. This looks like a bug. I was seeing this before I got the shared folder working when I saw dovecot had created these extra folders and added dovecot-acl-list file there. I suppose if I'd used the / separator, this would work fine, but there was nothing about this on the wiki so I didn't expect this. Hugh On 18/02/2016 6:03 PM, Steffen Kaiser wrote:> On Thu, 18 Feb 2016, Hugh Bragg wrote: > > > namespace { > > location = virtual:/var/mail/vhosts/%d/%n/virtual > > prefix = virtual. > > separator = . > > } > > namespace { > > list = children > > location > > > maildir:/var/mail/vhosts/%%d/%%n/mail:INDEX=/var/mail/vhosts/%d/%n/shared/%%u:CONTROL=/var/mail/vhosts/%d/%n/shared/%%u > > prefix = shared.%%u. > > separator = . > > subscriptions = yes > > type = shared > > } > > you have two namespaces with the same name, put some string before the > {'s. > > > namespace inbox { > > like here. > > ==> > Then check out the advices of Christian & Chris (telnet) as well > > -- Steffen Kaiser