Add Userdb extra field to existing configuration settings, not overriding them

Aki Tuomi aki.tuomi at open-xchange.com
Fri Jan 27 11:28:54 UTC 2023


> On 13/01/2023 19:39 EET Stefano Cecconello <stefano.cecconello at staff.aruba.it> wrote:
> 
> 
> Hi,
> 
> If i understood correctly the extra field feature ( https://doc.dovecot.org/configuration_manual/authentication/user_database_extra_fields/ ), any extra field that is passed from a SQL query will overwrite any existing settings on the dovecot.conf configuration file ( if present ) .
> 
> For example, if i want to enable a plugin ( ex: acl ) on a per user basis, i would add a column\field ( ex: “acl_enabled” = 1 ) into my auth DB , then add into the dovecot password\user queries :
> 
>> IF(acl_enabled = 0, NULL, 'acl imap_acl') AS mail_plugins
>> 
> While having in the dovecot.conf this setting :
>> mail_plugins = quota notify
> 
> protocol imap
> mail_plugins = $mail_plugins imap_quota
> 
>> 
> From my test, this combination will lead to having the logging users with acl_enabled=1, a mail_plugins list of acl and imap_acl only, without the quota and notify plugins .
> If i change the acl_value to 0, the returned mail_plugins list is empty and it will not overrive\overwrite the dovecot.conf mail_plugins configuration .
> 
> If it’s correct, there is a way to merge both settings, like having in the dovecot.conf a minimal\base subset of settings and adding any additional values via SQL queries ?
> 
> Thanks and best regards
> Stefano

You could try:

IF(acl_enabled = 0, NULL, 'acl imap_acl') AS mail_plugins_extra

and in config

mail_plugins = $mail_plugins $mail_plugins_extra 

Aki


More information about the dovecot mailing list