Also, nowadays Lua would be a better way to do custom authentication and we're more careful not to break that.
> On 21. Jun 2022, at 13.47, Timo Sirainen <t...@sirainen.com> wrote: > > Oh, I think your problem is that you've implemented a separate dict-server. > And looks like we forgot to mention in v2.3.17 release notes that the dict > protocol had to be changed due to some improvements. Your dict server should > verify that the VERSION line's major version number is as expected, and error > out if not. That would have made it easier to notice this change. See > https://doc.dovecot.org/developer_manual/design/dict_protocol/ for the new > protocol - the only relevant change I think is that a "<tab><username>" is > appended to each lookup command, and since these are shared/ key lookups it > means there is no username, and you just need to ignore the trailing <tab> at > the end of L-command lines. > >> On 21. Jun 2022, at 0.47, Ralf Becker <r...@egroupware.org> wrote: >> >> Hi Timo, >> >> attached is the log with auth_debug=true from the starting process and >> running "doveadm auth test ralfimapt...@egroupware.org" and one other >> regular passdb lookup. >> >> I replaced passwords and the customer email with XXXXXX. >> >> I also run "doveadm user '*'" to test the iteration, which worked. >> >> Ralf >> >> >> Am 20.06.22 um 13:32 schrieb Ralf Becker: >>> Hi Timo, >>> >>> Am 20.06.22 um 12:17 schrieb Timo Sirainen: >>>> On 20. Jun 2022, at 10.03, Ralf Becker <r...@egroupware.org> wrote: >>>>>> Fixes: Panic: file userdb-blocking.c: line 125 >>>>>> (userdb_blocking_iter_next): assertion failed: (ctx->conn != NULL) >>>>> As the above Panic is fixed I tried again (see my attached mail to the >>>>> 2.3.19 release) and I can confirm to no longer get the Panic, BUT >>>>> authentication is NOT working either :( >>>>> >>>>> Reverting back to a container with Dovecot 2.3.16, get's everything >>>>> working again. >>>>> >>>>> We use a hourly updated local SQLight database and a dict for user- and >>>>> passdb. >>>>> >>>>> Is the usage of multiple backends no longer supported, or did something >>>>> in that regard changed between 2.3.16 and 2.3.19.1? >>>> We have lots of tests using multiple backends for authentication, and lots >>>> of people are using many passdbs/userdbs in production. I was only aware >>>> of iteration being broken with multiple userdbs, since that's not used so >>>> much. And we added a test to verify that multiple userdb iteration is >>>> actually returning results from both userdbs, so that shouldn't be >>>> completely broken either. >>>> >>>> So I'd need more details of what exactly goes wrong and how. Is it the >>>> authentication or the iteration that is now broken? >>> >>> I only seen authentication errors in doveadm log errors and our montioring >>> trying to access the backend with user credentials. >>> >>>> Logs with auth_debug=yes would likely help. >>> >>> I will get you the logs tonight, don't want to switch (one leg of) the >>> production system during daytime. >>> I can then also try eg. doveadm user -A to check the iteration. >>> >>>> Also: >>>> >>>>> Here's the relevant part of my config (full doveadm config -n is >>>>> attached): >>>>> >>>>> userdb { >>>>> args = /etc/dovecot/dovecot-sql.conf >>>>> driver = sql >>>>> } >>>>> userdb { >>>>> args = /etc/dovecot/dovecot-dict-auth.conf >>>>> driver = dict >>>>> } >>>>> passdb { >>>>> args = /etc/dovecot/dovecot-dict-master-auth.conf >>>>> driver = dict >>>>> master = yes >>>>> } >>>>> passdb { >>>>> args = /etc/dovecot/dovecot-dict-auth.conf >>>>> driver = dict >>>>> } >>>> What do these external conf files contain? >>> >>> /etc/dovecot/dovecot-sql.conf: >>> >>> driver = sqlite >>> connect = /etc/dovecot/users.sqlite >>> >>> #password_query = SELECT userid AS username, domain, password \ >>> # FROM users WHERE userid = '%n' AND domain = '%d' >>> #user_query = SELECT home, uid, gid FROM users WHERE userid = '%n' AND >>> domain = '%d' >>> # return no userdb, as db contains only user-names >>> #user_query = SELECT home,NULL AS uid,NULL AS gid FROM users WHERE userid = >>> '%n' AND domain = '%d' >>> user_query = SELECT home,NULL AS uid,NULL AS gid, \ >>> '*:bytes='||(quota*1048576) AS quota_rule, \ >>> userid||'@'||domain AS master_user, \ >>> LOWER(REPLACE(groups||',', ',', '@'||domain||',')) AS acl_groups \ >>> FROM users WHERE userid = '%n' AND domain = '%d' >>> >>> # For using doveadm -A: >>> iterate_query = SELECT userid AS username, domain FROM users >>> >>> /etc/dovecot/dovecot-dict-auth.conf: >>> >>> uri = proxy:/var/run/dovecot_auth_proxy/socket:somewhere >>> #uri = proxy:10.44.99.180:2001:somewhere >>> >>> password_key = passdb/%u/%w >>> user_key = userdb/%u >>> iterate_disable = yes >>> #iterate_disable = no >>> #iterate_prefix = userdb/ >>> default_pass_scheme = md5 >>> >>> /etc/dovecot/dovecot-dict-master-auth.conf: >>> >>> uri = proxy:/var/run/dovecot_auth_proxy/socket:somewhere >>> #uri = proxy:10.44.99.180:2001:somewhere >>> >>> #password_key = master/%{login_domain}/%u/%w >>> password_key = master/%{login_user}/%u/%w >>> iterate_disable = yes >>> default_pass_scheme = md5 >>> >>> Thanks :) >>> >>> Ralf >>> >> >> -- >> Ralf Becker >> EGroupware GmbH [www.egroupware.org] >> Handelsregister HRB Kaiserslautern 3587 >> Geschäftsführer Birgit und Ralf Becker >> Leibnizstr. 17, 67663 Kaiserslautern, Germany >> Telefon +49 631 31657-0 >> <dovecot-auth_debug.log.bz2> >