ian+dovecot@comtek.co.uk
2011-Jan-03 15:48 UTC
[Dovecot] Sharing user folders doesn't work when users have periods in names.
I am using period as an IMAP separator with Maildir directories and I cannot share folders where the user has a period in their name. Suppose I log in as 'some.user' and do: SETACL INBOX mailtest at example.co.uk +lrwstipekxacd /var/mail/virtual/users/some.user/Maildir/dovecot-acl is created, with appropriate contents and shared-mailboxes.db gains an entry for 'shared/shared-boxes/user/mailtest at example.co.uk/some.user at example.co.uk'. mailtest is simply unable to see a new folder. As mailtest 'a LIST "" "Users.*" ' is empty. If I do ' a MYRIGHTS Users.some.user.INBOX ' I get 'NO [NONEXISTENT] Mailbox doesn't exist: Users.some.user.INBOX' and, oddly, a new maildir appears: '* LIST (\Noselect \HasChildren) "." "Users.some" ' -- it also creates an empty folder structure with a single file /var/mail/virtual/users/some/Maildir/dovecot-acl-list too! Is there a workaround that does not involve rebuilding every user's Maildir with backslash as a separator? Thanks, Ian
Timo Sirainen
2011-Jan-04 09:30 UTC
[Dovecot] Sharing user folders doesn't work when users have periods in names.
On Mon, 2011-01-03 at 15:48 +0000, ian+dovecot at comtek.co.uk wrote:> As mailtest 'a LIST "" "Users.*" ' is empty. If I do ' a MYRIGHTS > Users.some.user.INBOX ' I get 'NO [NONEXISTENT] Mailbox doesn't exist: > Users.some.user.INBOX' and, oddly, a new maildir appears: '* LIST > (\Noselect \HasChildren) "." "Users.some" ' -- it also creates an empty > folder structure with a single file > /var/mail/virtual/users/some/Maildir/dovecot-acl-list too! > > Is there a workaround that does not involve rebuilding every user's > Maildir with backslash as a separator?You don't need to rebuild anything on Dovecot's side to change separator. Just change it. Clients may become confused about that though. The only other possibility would be to change '.' in usernames to something else. Maybe auth_username_translation could help there. In any case having '.' both in usernames and as hierarchy separator just isn't going to work. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: This is a digitally signed message part URL: <http://dovecot.org/pipermail/dovecot/attachments/20110104/bd0389b0/attachment-0002.bin>
ian+dovecot@comtek.co.uk
2011-Jan-04 19:54 UTC
[Dovecot] IMAP separator migration (was: Sharing user folders doesn't work when users have periods in names. )
On 04/01/2011 09:30, Timo Sirainen wrote:> On Mon, 2011-01-03 at 15:48 +0000, ian+dovecot at comtek.co.uk wrote: >> As mailtest 'a LIST "" "Users.*" ' is empty. If I do ' a MYRIGHTS >> Users.some.user.INBOX ' I get 'NO [NONEXISTENT] Mailbox doesn't exist: >> Users.some.user.INBOX' and, oddly, a new maildir appears: '* LIST >> (\Noselect \HasChildren) "." "Users.some" ' -- it also creates an empty >> folder structure with a single file >> /var/mail/virtual/users/some/Maildir/dovecot-acl-list too! >> >> Is there a workaround that does not involve rebuilding every user's >> Maildir with backslash as a separator? > You don't need to rebuild anything on Dovecot's side to change > separator. Just change it. Clients may become confused about that > though. > > The only other possibility would be to change '.' in usernames to > something else. Maybe auth_username_translation could help there. > > In any case having '.' both in usernames and as hierarchy separator just > isn't going to work.Ah, I understand, thanks. Has anybody got any tips on migrating IMAP separators? Ideally I'd be able to migrate users incrementally. Is there a way to specify the separator per-user? I can't see a way to do it with a postlogin script or userdb. http://wiki2.dovecot.org/UserDatabase/ExtraFields shows a namespace setting, but it seems that the namespace is in version 1.2 format and my namespaces look like: namespace { type = private separator = . prefix inbox = yes } namespace { type = shared separator = . prefix = Users.%%n. location = maildir:/var/mail/virtual/users/%%n/Maildir/:INDEX=~/shared/%%u subscriptions = no list = children } namespace { type = public separator = . prefix = Shared. location = maildir:/var/mail/virtual/public:INDEX=~/public subscriptions = no } Thanks, Ian -- ======================================================================Ian Crowther Tel: +44 845 4501626 Unit 108, 10th Avenue, IT Dept, Comtek Fax: +44 845 4501627 Zone 3, Deeside Industrial Network Systems UK Ltd Park, CH5 2UA, Flintshire =======================================================================