multiple shared/mail format namespaces

Michal Soltys soltys at ziu.info
Mon Jan 2 15:58:11 UTC 2017


Hi,

Are configurations (with separate formats per namespace) - such as ...

namespace {
   type = shared
   list = children
   inbox = no
   separator = /
   subscriptions = no
   prefix = shared1/%%n/
   location = maildir:/var/mail1/%%n/
}

namespace {
   type = shared
   list = children
   inbox = no
   separator = /
   subscriptions = no
   prefix = shared2/%%n/
   location = mdbox:/var/mail2/%%n/
}

With separate userdbs serving part of the users with maildirs in /var/mail1/ 
and the other part with mdboxes in /var/mail2

... valid in dovecot ?

To be more precise:

1) Is current version dovecot expected to work with configuration as above ? 
E.g. if some user's mail location returned from userdb doesn't match 
location/format from one of the above namespaces - would it be ignored for it 
? A very old version of dovecot I could check quickly (2.1.7) was segfaulting 
(imap processes) all the time with this kind of config. While I'll be 
upgrading it and the whole system to modern versions, I'm wondering if this 
kind of thing is formally allowed at all.

An interesting variation of the above setup I tested - with the second 
namespace "un-variabled" and pointing to single user (with matching 
passwd-file returning that user) managed to work somehow - but the user itself 
was still created on the fly for the 1st namespace - having just a directory 
with empty dovecot-acl-list file. This essentially seemed to have worked like 
a typical public profile (shared acl db didn't seem to be used either)

2) For shared namespace with variables, would overriding shared namespace 
location in userdb query work ? For example if we had single namespace such as 
the first one (maildir) above with explicit share1 name, and then in userdb 
for some users:

userdb_namespace/share1/location=mdbox:/var/mail2/some_user_name

Would that override a shared namespace pattern on per user basis correctly ?

3) Is there perhaps a way to constraint which userdbs are considered per which 
shared namespace ?

4) Not strictly related to the above, but in LDAP part of documentation - 
namely http://wiki2.dovecot.org/AuthDatabase/LDAP/Userdb - why

user_attrs = \
   =home=%{ldap:homeDirectory}, \
   =uid=%{ldap:uidNumber}, \
   =gid=%{ldap:gidNumber}

instead of

user_attrs = \
   homeDirectory=home, \
   uidNumber=uid, \
   gidNumber=gid

Do both are equivalent with differet syntax (opening the way for templates for 
%{} based syntax), or are there some subtle differences between those ? (aside 
later example with 'attr=' instead of just '=').

Would this kind of syntax also be correct for pass_attrs, such as:

pass_attrs = \
	=password=%{ldap:uid}, \
	=userdb_home=%{ldap:homeDirectory}



More information about the dovecot mailing list