On 05/13/2012 11:40 PM, Alexander 'Leo' Bergolth
wrote:> Since upgrading to 2.1.6, setting namespaces via environment variables
> using a imap-postlogin-script *sometimes* doesn't work.
>
> Sometimes, the prefix of a namespace isn't set correctly, but is set to
> an empty string, which leads to the following error:
> namespace configuration error: Duplicate namespace prefix: ""
>
> However, the environment is set correctly, the error seems to occur when
> parsing the environment.
>
> See the attached log:
> The postlogin-script sets the environment variables attached as
> dovecot-postlogin-environment.txt. (dumped from postlogin script via env)
>
> However, the variable "NAMESPACE/S-GSD/PREFIX=Shared/GSD/" gets
parsed
> as: plugin/namespace/s-gsd/prefix=Shared/GSD/
>
> See the error message:
> Unknown userdb setting: plugin/namespace/s-gsd/prefix=Shared/GSD/
The prefix "plugin/" is added in mail-storage-service.c:set_line():
-------------------- 8< --------------------
if (!settings_parse_is_valid_key(set_parser, key)) {
/* assume it's a plugin setting */
key = t_strconcat("plugin/", key, NULL);
-------------------- 8< --------------------
Looks like dovecot doesn't think that s-gsd isn't a valid namespace...
Maybe the order of parsing the userdb settings is not well defined?
I think it should parse the list of allowed namespaces first
(namespace=s-gsd s-kit s-rufhilfe s-sef s-homepage) and the namespace specific
settings after that.
However, the debug output shows a different order:
-------------------- 8< --------------------
May 13 23:00:22 samba dovecot: imap: Debug: Unknown userdb setting:
plugin/namespace/s-gsd/prefix=Shared/GSD/
May 13 23:00:22 samba dovecot: imap: Debug: Unknown userdb setting:
plugin/namespace/s-rufhilfe/location=maildir:/var/spool/mail/Shared/Rufhilfe:INDEX=~/Maildir/index/Shared/Rufhilfe
May 13 23:00:22 samba dovecot: imap: Debug: Added userdb setting:
namespace=s-gsd s-kit s-rufhilfe s-sef s-homepage
May 13 23:00:22 samba dovecot: imap: Debug: Added userdb setting:
namespace/s-rufhilfe/separator=/
-------------------- 8< --------------------
The first two namespace settings are rejected because the allowed namespaces are
not configured yet.
The third line configures the namespaces and subsequent namespace-settings are
working fine.
Does that sound reasonable?
Any hints on how to change the order of userdb settings?
Thanks,
--leo
--
e-mail ::: Leo.Bergolth (at) wu.ac.at
fax ::: +43-1-31336-906050
location ::: IT-Services | Vienna University of Economics | Austria