director_username_hash = %d and doveadm director map

Ralf Becker rb at egroupware.org
Mon Nov 30 15:47:23 EET 2020


Am 29.11.20 um 22:09 schrieb Aki Tuomi:
> Did you try `doveadm director flush`?


Yes, thought together with (different) tags it gives this wired behavior.

I use doveadm director flush all the time to get connections to the 
other backend of one pair.

Ralf

>> On 29/11/2020 17:10 Ralf Becker <rb at egroupware.org> wrote:
>>
>>   
>> To answer my question I was able to identify the director code on Github
>> and the hashes are the first 4 byte of the binary md5 written as a 32
>> bit integer.
>>
>> With that I was able to write a script that runs doveadm director map,
>> queries all domains from our internal management, calculates the hashes
>> and displays a joined list:
>>
>> doveadm-director map | grep rbz
>> rbz-xxxxxxxxx.de                             3766880388 10.44.88.5
>> nfs      2020-11-29 15:06:53
>> rbz-yyyyyyyyyyyy.de                          3088689059 10.44.88.1
>> extern   2020-11-29 15:07:11
>>
>> When I move a domain between backends / tags, I see for some time the
>> moved domain is listed for both tags, thought doveadm who on the
>> backends show users are only connected to the new backend. No idea why
>> that ist. Trying doveadm director move does NOT change that situation.
>>
>> I currently disable the domain in our dict used for userdb and passdb,
>> clear the auth cache of all directors and flush them, before (final)
>> rsync of the mailboxes of the domain to the new backend. When our dicts
>> answer again with the new director tag, connections are going to the
>> correct backend-pair. But it takes some hours for the old mapping to
>> disappear.
>>
>> Is that the expected behavior?
>> Is doveadm director move supposted to work with director_username_hash = %d?
>>
>> Ralf
>>
>>
>> Am 23.11.20 um 15:15 schrieb Ralf Becker:
>>> Our directors hash by domain (director_username_hash = %d), as some of
>>> our users share folders with other users of the same domain.
>>>
>>> We now started using director tags to map domains to their backends.
>>>
>>> Unfortunately doveadm director map seems no to work with
>>> director_username_hash = %d
>>>
>>> user    hash    mail server ip expire time
>>> <unknown> 432784257 10.44.88.1   2020-11-23 13:10:55
>>> <unknown> 4244233328 10.44.88.1   2020-11-23 13:13:55
>>> <unknown> 1913982503 10.44.88.1   2020-11-23 13:15:40
>>>
>>> How can I check to which backend / IP a domain is maped, aka how is
>>> that hash calculated?
>>>
>>> doveadm director move seems also not to do anything meaningful for %d,
>>> or at least I have not found out how to use it to move a domain to a
>>> different backend.
>>>
>>> Hoping for some insight :)
>>>
>>> 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



More information about the dovecot mailing list