Hello,

I have Dovecot configured for multiple domains (usernames are u...@domain.tld) 
and I wanted to enable shared mailboxes. 

But there is some problem - if I share a folder, other user can't see it.

In the log I foud:

>  Apr 22 19:21:02 veverka dovecot: imap(u...@veverka.tld): Error: Couldn't 
> create namespace 'shared.' for user petr: userdb didn't return a home 
> directory, but location used it (%h): 
> maildir:%h/Maildir:INDEX=~/Maildir/shared/%%u
>  Apr 22 19:21:02 veverka dovecot: imap(u...@veverka.tld): Error: Couldn't 
> create namespace 'shared.' for user emclient@veverka: userdb didn't return a 
> home directory, but location used it (%h): 
> maildir:%h/Maildir:INDEX=~/Maildir/shared/%%u

Which is weird because the user name is "petr.surname" not only "petr" and the 
domain is "veverka.tld" not only "veverka".

So I turned on SQL logging on my PostgreSQL and saw that Dovecot executes these 
queries:

>  2014-04-22 19:21:02 CEST LOG:  statement: SELECT * FROM dovecot_uzivatel 
> WHERE login = 'petr' AND domena = ''
>  2014-04-22 19:21:02 CEST LOG:  statement: SELECT * FROM dovecot_uzivatel 
> WHERE login = 'emclient' AND domena = 'veverka'

The first username was "petr.surn...@veverka.tld" and the second one was 
"emcli...@veverka.tld" so it seems that it was truncated right after first "." 
dot and I afraid that this is a bug.
Then it is obvious that Dovecot can't find the home directory and complains in 
log (as mentioned above).

I found workaround – I had "." configured as namespace separator so I 
reconfigured it to "/" slash and now mailbox sharing works!
But I think that it should work also with "." dot separator and the values 
should not be truncated in SQL queries.
I tried also using '%u' in my SQL and its value was also truncated.

Values in "dovecot-acl" a "shared-mailboxes" files seem to be ok.

BTW: I have also another server with only one domain and simple user names (no 
dots) and there the mailbox sharing works –  but now it seems that it works 
only accidentally. This might lead to hardly debuggable problems if someone has 
usernames with and without dots – mailbox sharing will work for some users but 
for some not.

My old configuration:

> password_query = SELECT * FROM dovecot_heslo WHERE login = '%n' AND domena = 
> '%d'
> user_query = SELECT * FROM dovecot_uzivatel WHERE login = '%n' AND domena = 
> '%d'
> iterate_query = SELECT login AS username, domena AS domain FROM 
> dovecot_uzivatel

>  namespace {
>    type = shared
>    separator = .
>    prefix = shared.%%u.
>    location = maildir:%h/Maildir:INDEX=~/Maildir/shared/%%u
>    subscriptions = yes
>    list = children
>  }

Had to be reconfigured to:

>    separator = /
>    prefix = shared/%%u/

Used version:

> # dovecot --version
> 2.1.7
> # uname -a
> Linux veverka 3.11.0-19-generic #33-Ubuntu SMP Tue Mar 11 18:48:34 UTC 2014 
> x86_64 x86_64 x86_64 GNU/Linux

Regards,
Franta

P.S. If you have similar problem and have to switch from "." to "/" separators, 
don't forget to update your Sieve scripts (with fileinto). And sometimes also 
reconfiguration of the client is needed (e.g. NGImap4ConnectionStringSeparator 
in SOGo; and Kontact/KMail stopped working and I had to recreate the account in 
this client).

Reply via email to