>From dovecot director point of view it does not make any difference if your >imap clusters have only one server each. mail_hosts takes IP addresses, DNS >names whatever, and you can assign tag per host if you want.
And yes, if you have only one server for a tag, then your clients are denied access. Aki > On 31/08/2021 12:28 Steven Varco <dovecot....@bbs.varco.ch> wrote: > > > Hi Aki > > Thanks for pointing out the tag feature which sound really interesting in > the first place. > > However, if I understand the documentation correctly: > > With tags you can use a single director ring to serve multiple backend > > clusters. Each backend cluster is assigned a tag name, which can be > > anything > > you want. By default everything has an empty tag. A passdb lookup can > > return "director_tag" field containing the wanted tag name. If there aren't > > any > > backend servers with the wanted tag, it's treated the same as if there > > aren't any backend servers available (= wait for 30 secs for a backend and > > then return temporary failure). > > As of my understanding, this only helps if there are multiple IMAP _clusters_ > in the doveadm ring. > In my case I have only one cluster (with two IMAP _servers_) and would want > to go to a specific server, failing over to another if that is unavailable. > Now if I have the following scenario: > > # Director Server > (DEV) root@lb01 [~] # doveadm director status > mail server ip tag vhosts state state changed users > mx01.example.com mx01 100 up - 0 > mx02.example.com mx02 100 up - 1 > > # IMAP Server > (DEV) root@mx01 [~] # doveadm user 't...@example.com' > field value > uid 1025 > gid 12 > home /srv/mail/example.com/test > mail maildir:~/Maildir > maildir example.com/test/ > mail_home /srv/mail/example.com/test > quota_rule *:storage=20480 > sieve_dir /srv/mail/example.com/test/sieve > director_tag mx01 > > Than user 't...@example.com‘ would go to the backend host mx01.example.com, > BUT, if mx01.example.com goes down, it would probably fail, because user > 't...@example.com‘ wants tag „mx01“, which is now down and the only server > with that tag? > > > By the way, I did a quick live test and it does not even seem to work, when > both hosts are up, failing with the log entry on the dovecot server: > Aug 31 11:11:11 lb01 dovecot: director: Error: director: User > t...@example.com host lookup failed: Timeout because no hosts - queued for 30 > secs (Ring synced for 385 secs, hash=1561836376) > > Do see what I’m missing out here? > Using dovecot 2.2.36 (1f10bfa63) on both the directror and IMAP backend. > > thanks, > Steven > > -- > https://steven.varco.ch/ > > > Am 30.08.2021 um 19:20 schrieb Aki Tuomi <aki.tu...@open-xchange.com>: > > > > > >> On 30/08/2021 19:09 Steven Varco <dovecot....@bbs.varco.ch> wrote: > >> > >> > >> Hi All > >> > >> I have a dovecot cluster with directror and two IMAP Servers behind. > >> > >> Since they are in geographical different locations I would like to have > >> users to go to a specific IMAP backend server (if both are up) and only > >> switch to the other if one goes down (failover). > >> > >> As to my current knowledge the PassDB extra field „host=„ is not suitable > >> in this case as it would never route the client to a different backend, > >> even if the „user specific backend“ would be down. > >> > >> Is their a way in dovecot to achive this? As far as I searched the > >> documentation I could not find any information on this so far. > >> > >> If not, it may also help if I could get certain users to „initially" go to > >> a specific backend (since director usually routes a client/user to the > >> same backend server it initially connects) and therefore it would be > >> interesting to know how dovecot director chooses wether a user goes to > >> server1 or server2? > >> And if a client already gets to server2, how to bring it „back“ to server1? > >> > >> thanks in advance, > >> Steven > >> > >> -- > >> https://steven.varco.ch/ > >> https://www.tech-island.com/ > > > > > > Hi! > > > > Use dovecot director tag feature. You can match users with tag= to a > > specific backend@tag. > > > > Aki