director & backend on same server with director_proxy_maybe
lucas.raynaud at ircf.fr
lucas.raynaud at ircf.fr
Fri May 21 12:21:14 EEST 2021
Hello,
I've 2 mail servers, as test server, with dovecot as backend and setup
pop3 and imap connections and NFS. For prevent issues with simultaneous
connections I want to setup up Director on the same VM and on the same
instance as the backend Dovecot.
I found in the documentation that this configuration is broken, but can
work with development, and after research on the internet and on the
questions encountered previously as on :
https://dovecot.org/pipermail/dovecot/2015-July/101483.html
https://dovecot.org/pipermail/dovecot/2011-September/130939.html
https://dovecot.org/pipermail/dovecot/2012-June/136535.html
I find it quite unclear if this is really possible with
director_proxy_maybe, which according to the changelog, allows this
setup to work.
Today I've reached this level with those errors:
IPs :
mail4 : XX.XX.111.8
mail3 : XX.XX.51.247
doveadm director ring status
director ip port type last failed status // on mail3
XX.XX.51.247 9090 self never synced
XX.XX.111.8 9090 l+r never synced
doveadm director status lucas.raynaud at ircf.fr
Current: 5.196.111.8 (expires 2021-05-21 10:48:51)
Hashed: 5.196.111.8
Initial config:
login with lucas.raynaud at ircf.fr on mail4
mail log on mail4
May 21 10:51:52 mail4 dovecot: auth-worker(12917): Debug:
sql(lucas.raynaud at ircf.fr,XX.XX.111.8,<4h3SK9PCYsIFxG8I>): query: SELECT
password, 'y' as proxy_maybe, 'y' as director_proxy_maybe FROM mail_user
WHERE (login = 'lucas.raynaud at ircf.fr' OR email =
'lucas.raynaud at ircf.fr') AND disableimap = 'n' AND server_id = '8'
May 21 10:51:52 mail4 dovecot: auth: Debug: client passdb out:
OK#0111#011user=lucas.raynaud at ircf.fr#011director_proxy_maybe=y#011lip=XX.XX.111.8#011lport=143#011proxy#011pass=x9Im.bprP!CWzbgQ
May 21 10:51:52 mail4 dovecot: imap-login: Debug: Ignoring unknown
passdb extra field: director_proxy_maybe
May 21 10:51:52 mail4 dovecot: imap-login: Debug: Ignoring unknown
passdb extra field: lip
May 21 10:51:52 mail4 dovecot: imap-login: Debug: Ignoring unknown
passdb extra field: lport
May 21 10:51:52 mail4 dovecot: imap-login: Error: proxy: host not given:
user=<lucas.raynaud at ircf.fr>, method=PLAIN, rip=XX.XX.111.8,
lip=XX.XX.111.8, secured, session=<4h3SK9PCYsIFxG8I>
May 21 10:51:52 mail4 dovecot: imap-login: Disconnected (internal
failure, 1 successful auths): user=<lucas.raynaud at ircf.fr>,
method=PLAIN, rip=XX.XX.111.8, lip=XX.XX.111.8, secured,
session=<4h3SK9PCYsIFxG8I>
no log on mail3
login with lucas.raynaud at ircf.fr on mail3
mail log on mail3
May 21 10:55:07 mail3 dovecot: auth-worker(19907): Debug:
sql(lucas.raynaud at ircf.fr,XX.XX.51.247,<Hh5yN9PCRtAFxDP3>): query:
SELECT password, 'y' as proxy_maybe, 'y' as director_proxy_maybe FROM
mail_user WHERE (login = 'lucas.raynaud at ircf.fr' OR email =
'lucas.raynaud at ircf.fr') AND disableimap = 'n' AND server_id = '8'
May 21 10:55:07 mail3 dovecot: auth: Debug: client passdb out:
OK#0111#011user=lucas.raynaud at ircf.fr#011director_proxy_maybe=y#011lip=XX.XX.51.247#011lport=143#011proxy#011pass=x9Im.bprP!CWzbgQ
May 21 10:55:07 mail3 dovecot: imap-login: Debug: Ignoring unknown
passdb extra field: director_proxy_maybe
May 21 10:55:07 mail3 dovecot: imap-login: Debug: Ignoring unknown
passdb extra field: lip
May 21 10:55:07 mail3 dovecot: imap-login: Debug: Ignoring unknown
passdb extra field: lport
May 21 10:55:07 mail3 dovecot: imap-login: proxy(lucas.raynaud at ircf.fr):
Login failed to XX.XX.111.8:143: [UNAVAILABLE] Account is temporarily
unavailable.: user=<lucas.raynaud at ircf.fr>, method=PLAIN,
rip=XX.XX.51.247, lip=XX.XX.51.247, secured, session=<Hh5yN9PCRtAFxDP3>
May 21 10:55:07 mail3 dovecot: imap-login: Disconnected (proxy dest auth
failed): user=<lucas.raynaud at ircf.fr>, method=PLAIN, rip=XX.XX.51.247,
lip=XX.XX.51.247, secured, session=<Hh5yN9PCRtAFxDP3>
mail log on mail4
May 21 10:55:07 mail4 dovecot: auth-worker(13096): Debug:
sql(lucas.raynaud at ircf.fr,XX.XX.51.247,<rI10N9PCyKsFxDP3>): query:
SELECT password, 'y' as proxy_maybe, 'y' as director_proxy_maybe FROM
mail_user WHERE (login = 'lucas.raynaud at ircf.fr' OR email =
'lucas.raynaud at ircf.fr') AND disableimap = 'n' AND server_id = '8'
May 21 10:55:07 mail4 dovecot: auth: Debug: client passdb out:
OK#0111#011user=lucas.raynaud at ircf.fr#011director_proxy_maybe=y#011lip=XX.XX.111.8#011lport=143#011proxy#011pass=x9Im.bprP!CWzbgQ
May 21 10:55:07 mail4 dovecot: imap-login: Debug: Ignoring unknown
passdb extra field: director_proxy_maybe
May 21 10:55:07 mail4 dovecot: imap-login: Debug: Ignoring unknown
passdb extra field: lip
May 21 10:55:07 mail4 dovecot: imap-login: Debug: Ignoring unknown
passdb extra field: lport
May 21 10:55:07 mail4 dovecot: imap-login: Error: proxy: host not given:
user=<lucas.raynaud at ircf.fr>, method=PLAIN, rip=XX.XX.51.247,
lip=XX.XX.111.8, session=<rI10N9PCyKsFxDP3>
May 21 10:55:07 mail4 dovecot: imap-login: Disconnected (internal
failure, 1 successful auths): user=<lucas.raynaud at ircf.fr>,
method=PLAIN, rip=XX.XX.51.247, lip=XX.XX.111.8, session=<rI10N9PCyKsFxDP3>
sql query :
password_query = SELECT password, 'y' as proxy_maybe, 'y' as
director_proxy_maybe FROM mail_user WHERE (login = '%u' OR email = '%u')
AND disable%Ls = 'n' AND server_id = '8'
It seems that Director is working but not adding the "host" extra field
when it should, also it's strange that the director_proxy_maybe is unknown.
Is it really possible to configure director on same instance as backend?
Is director_proxy_maybe working? Also do you have answers about my problems?
Thanks for advance.
Lucas
############
mail3's and mail4's configs are the same.
dovecot -n
# 2.2.27 (): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.16 ()
# OS: Linux 4.9.0-14-amd64 x86_64 Debian 9.13
auth_debug = yes
auth_debug_passwords = yes
auth_mechanisms = plain login
auth_proxy_self = XX.XX.111.8
auth_verbose = yes
dict {
quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
}
director_mail_servers = XX.XX.111.8 XX.XX.51.247
director_servers = XX.XX.111.8 XX.XX.51.247
director_user_expire = 5 mins
disable_plaintext_auth = no
doveadm_port = 24245
mail_location = mbox:~/mail:INBOX=/var/mail/%u
mail_plugins = " quota"
mail_privileged_group = vmail
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope
encoded-character vacation subaddress comparator-i;ascii-numeric
relational regex imap4flags copy include variables body enotify
environment mailbox date index ihave duplicate mime foreverypart extracttext
namespace inbox {
inbox = yes
location =
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
prefix =
}
passdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
plugin {
quota = dict:user::file:/var/vmail/%d/%n/.quotausage
quota_warning = storage=90%% quota-warning 90 %u
sieve = /var/vmail/%d/%n/.sieve
sieve_after = /etc/dovecot/sieve/after.d
sieve_before = /var/vmail/%d/%n/sieve
sieve_dir = /var/vmail/%d/%n/sieve/
sieve_global_dir = /etc/dovecot/sieve
}
pop3_reuse_xuidl = yes
pop3_save_uidl = yes
pop3_uidl_format = UID%u-%v
protocols = " imap sieve pop3"
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
}
unix_listener auth-userdb {
group = vmail
mode = 0600
user = vmail
}
}
service director {
fifo_listener login/proxy-notify {
mode = 0666
user = $default_login_user
}
inet_listener {
port = 9090
}
unix_listener director-userdb {
mode = 0600
}
unix_listener login/director {
mode = 0666
}
}
service doveadm {
inet_listener {
port = 24245
}
}
service imap-login {
executable = imap-login director
inet_listener imap {
port = 143
}
}
service ipc {
unix_listener ipc {
user = dovecot
}
}
service pop3-login {
executable = pop3-login director
inet_listener pop3 {
port = 110
}
}
service quota-warning {
executable = script /usr/local/bin/mail-scripts/quota-warning.sh
unix_listener quota-warning {
group = vmail
mode = 0660
user = vmail
}
user = vmail
}
ssl_cert = </opt/ssl/ircf.crt
ssl_key = # hidden, use -P to show it
userdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
protocol lmtp {
auth_socket_path = director-userdb
}
protocol doveadm {
auth_socket_path = director-userdb
}
protocol lda {
mail_plugins = " quota sieve quota"
}
protocol imap {
auth_socket_path = director-userdb
mail_max_userip_connections = 16
mail_plugins = " quota quota imap_quota"
}
protocol pop3 {
auth_socket_path = director-userdb
mail_max_userip_connections = 16
mail_plugins = " quota quota"
}
local 10.10.10.0/24 {
doveadm_password = # hidden, use -P to show it
}
More information about the dovecot
mailing list