On Sun, Feb 21, 2016 at 04:20:07AM +0200, Timo Sirainen wrote:
How about:
passdb { driver = passwd-file args = username_format=%l /etc/dovecot/passwd.domains result_success = continue }
passdb { .. the real passdb for authentication .. }
Where /etc/dovecot/passwd.domains contains:
10.0.0.100:::::domain=foo.org 10.0.0.101:::::domain=bar.org
So the first passdb lookup would set the domain based on IP and then continue for the actual authentication. Or if you don't want it to override an explicit user@domain authentication, this should also work:
10.0.0.100:::::domain:protected=foo.org 10.0.0.101:::::domain:protected=bar.org
Not tested, but should work I think. At least with new enough Dovecot versions.
Sounds promising, thanks for the idea. My current problem is that passwd.domains "authentication" now fails because user1's password doesn't match the "empty field" corresponding to
10.0.0.100:::::domain=foo.org
I get: auth: Info: passwd-file(user1,<remote-ip>,<session>): unknown user auth: Info: passwd-file(user1,<remote-ip>,<session>): Password mismatch
Hmm, "result_failure = continue" doesn't seem to help, either...
Thanks, --Gabriel