Hello! I had working setup, where namespace settings (including prefix) was queried over SQL. Now, after installing new Dovecot to new server (using same configuration), this is not working anymore. Log shows following error: """ Initialization failed: namespace configuration error: list=yes requires prefix=yes to end with separator """ relevant part from dovecot-sql.conf.ext: """ user_query = \ SELECT \ 1002 AS uid \ , 1003 AS gid \ , CONCAT('/www/home/vmail/domains/', SUBSTRING(d.name, 1, 1), '/', d.name, '/', u.username) AS home \ , namespace_prefix AS 'namespace/default/prefix' \ , 'yes' AS 'namespace/default/inbox' \ , '%s' AS 'mail_service' \ FROM vm_domain d \ INNER JOIN vm_user u ON u.vm_domain_id = d.id \ WHERE d.name = '%d' AND u.username = '%n' AND u.active = 1 AND d.active = 1 """ namespace_prefix can be empty or INBOX. doveconf -n output: """ # 2.2.13: /usr/local/etc/dovecot/dovecot.conf # OS: FreeBSD 9.3-RELEASE amd64 auth_debug = yes auth_verbose = yes disable_plaintext_auth = no listen = * mail_debug = yes mail_location = maildir:~/Maildir mmap_disable = yes namespace default { inbox = yes list = yes location prefix separator = . type = private } passdb { args = /usr/local/etc/dovecot/dovecot-sql.conf.ext driver = sql } plugin { mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename flag_change append mail_log_fields = uid box msgid size mail_log_group_events = no } service imap { process_limit = 1480 } ssl_cert = </usr/local/etc/ssl/server.crt ssl_key = </usr/local/etc/ssl/server.key.unsecure userdb { args = /usr/local/etc/dovecot/dovecot-sql.conf.ext driver = sql } verbose_proctitle = yes protocol imap { imap_capability = IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS SPECIAL-USE mail_max_userip_connections = 900 } protocol pop3 { mail_max_userip_connections = 300 } """ Seems like "prefix = " is interpreted as "prefix = yes". How I can solve this?
I tried few different dovecot versions. 2.1.16 is working, 2.2.2 is broken. Because I use FreeBSD, in-between versions aren't available (I can use source of course, but ports tree don't include them). Probably some bigger change from 2.1 to 2.2 is affecting SQL output handling, any fix or workaround? Thanks in advance!> Hello! > > I had working setup, where namespace settings (including prefix) was > queried over SQL. Now, after installing new Dovecot to new server (using > same configuration), this is not working anymore. > > Log shows following error: > > """ > Initialization failed: namespace configuration error: list=yes requires > prefix=yes to end with separator > """ > > relevant part from dovecot-sql.conf.ext: > """ > user_query = \ > SELECT \ > 1002 AS uid \ > , 1003 AS gid \ > , CONCAT('/www/home/vmail/domains/', SUBSTRING(d.name, 1, > 1), '/', d.name, '/', u.username) AS home \ > , namespace_prefix AS 'namespace/default/prefix' \ > , 'yes' AS 'namespace/default/inbox' \ > , '%s' AS 'mail_service' \ > FROM vm_domain d \ > INNER JOIN vm_user u ON u.vm_domain_id = d.id \ > WHERE d.name = '%d' AND u.username = '%n' AND u.active = 1 AND > d.active = 1 > """ > > namespace_prefix can be empty or INBOX. > > doveconf -n output: > """ > # 2.2.13: /usr/local/etc/dovecot/dovecot.conf > # OS: FreeBSD 9.3-RELEASE amd64 > auth_debug = yes > auth_verbose = yes > disable_plaintext_auth = no > listen = * > mail_debug = yes > mail_location = maildir:~/Maildir > mmap_disable = yes > namespace default { > inbox = yes > list = yes > location > prefix > separator = . > type = private > } > passdb { > args = /usr/local/etc/dovecot/dovecot-sql.conf.ext > driver = sql > } > plugin { > mail_log_events = delete undelete expunge copy mailbox_delete > mailbox_rename flag_change append > mail_log_fields = uid box msgid size > mail_log_group_events = no > } > service imap { > process_limit = 1480 > } > ssl_cert = </usr/local/etc/ssl/server.crt > ssl_key = </usr/local/etc/ssl/server.key.unsecure > userdb { > args = /usr/local/etc/dovecot/dovecot-sql.conf.ext > driver = sql > } > verbose_proctitle = yes > protocol imap { > imap_capability = IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE > IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS > THREAD=ORDEREDSUBJECT MULTIAPPEND UNSELECT CHILDREN NAMESPACE UIDPLUS > LIST-EXTENDED I18NLEVEL=1 ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH > LIST-STATUS SPECIAL-USE > mail_max_userip_connections = 900 > } > protocol pop3 { > mail_max_userip_connections = 300 > } > """ > > Seems like "prefix = " is interpreted as "prefix = yes". > > How I can solve this? >
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Thu, 25 Sep 2014, Ain wrote:> I had working setup, where namespace settings (including prefix) was > queried over SQL. Now, after installing new Dovecot to new server (using > same configuration), this is not working anymore. > > Log shows following error: > > """ > Initialization failed: namespace configuration error: list=yes requires > prefix=yes to end with separator > """ > > relevant part from dovecot-sql.conf.ext: > """ > user_query = \ > SELECT \ > 1002 AS uid \ > , 1003 AS gid \ > , CONCAT('/www/home/vmail/domains/', SUBSTRING(d.name, 1, > 1), '/', d.name, '/', u.username) AS home \ > , namespace_prefix AS 'namespace/default/prefix' \ > , 'yes' AS 'namespace/default/inbox' \ > , '%s' AS 'mail_service' \ > FROM vm_domain d \ > INNER JOIN vm_user u ON u.vm_domain_id = d.id \ > WHERE d.name = '%d' AND u.username = '%n' AND u.active = 1 AND > d.active = 1 > """what do you return as namespace_prefix, NULL vs. '' ? Could you try the other value?> namespace default { > inbox = yes > list = yes > prefix > separator = . > type = private > }- -- Steffen Kaiser -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQEVAwUBVCVjsXz1H7kL/d9rAQL9GggAuK7ad919SVY/7YV0EDEtiZW6psgHclqs P/oI5o6ycX2C/MkREo9QeDuo68S12jt7H4fvewJ+MgVkUS7FtO8KUeKj5QD6FzKZ bi5mDwnamO8+4fgmO74iGPv2u1pp2E+SS8wPreiVxyZWU/zcM4BrlMJf0JFVk+f7 f5CGrM91hCjWAFr8WSpYlb1m9gY4RG3crogs9c2kntmDY2kwEHcsDvElwf6rwGHk VW1mjxdLUY3wgXXSr8OBEvmWYBIIpTu8XHf3nOh5STbZXRMkdSRWPkftKTzPTmH4 13/xsKzmG6zWuwYHdROinXfCg/hmFg1l+6zsqU/jMAlDiAV6S3B71A==6ewJ -----END PGP SIGNATURE-----