How to setup Dovecot director in a NAT-like environment?
Richard Mader
dovecot at mader.dev
Sat Dec 5 14:41:20 EET 2020
How can I setup Dovecot director in a NAT like environment?
My mailservers are running within docker and one of them behind a
router, so the IP that dovecot binds to does not match the IP that other
mailservers have to use to connect to them.
Since when running director the servers connect to each other, I'd guess
I'd have to set the external IP of the servers in the
"director_servers". If I do that I'm unable to start the director nodes
since they cannnot find out which of the addresses is their own.
I had a quick peek at the sourcecode and director detects its own
address by trying to bind to all of the addresses. Since we're behind a
NAT, that will of course fail for its external IP.
When I set the local address or localhost in the "director_servers"
directive, then the director nodes are able to start but they are denied
when connecting to other nodes.
When using the NAT-internal IP I've got the following error:
> Error: Remote director thinks it's someone else (connected to
> <other-directors-external-ip>:9090, remote says it's
> <other-directors-internal-ip>:9090)
When using localhost/127.0.0.1 then I get:
> Info: Connecting to <other-directors-external-ip>:9090 (as 127.0.0.1):
> Alone in director ring - trying to connect to others
> Error: connect(<other-directors-external-ip>:9090) failed: Invalid
> argument
Is it somehow possible to tell director which of the addresses within
"director_servers" is its own address, that it then advertises to other
servers, instead of trying figuring that out itself by trying to bind to
all ip-addresses on startup?
Kafka e.g. has the "advertised.listeners" property to set a custom host
to announce to clients and to other Kafka nodes.
If there is not such a property or any other workaround, I might
consider implementing this into director myself. Although I might need
some help getting started since this is my first time contributing to a
non Scala/Java or Typescript/NodeJS Project.
So far I've discovered that Github seems to be the official repo and is
not just a mirror and I was able to compile it on my machine. Now I've
got questions such as, where can I find the binaries that I've just
compiled and whats the best way to get them running locally and to test
my changes, where are unit tests located, ...?
Best Regards,
Richard
More information about the dovecot
mailing list