Patrick Westenberg
2013-Nov-09 20:11 UTC
[Dovecot] Dovecot replication not redirecting if server is down
Hi everyone,
I'm running a test environment with a proxy in front of working
replication between two backends but redirecting in case of a
backend failure is not working.
Nov 09 21:03:59 imap-login: Error: proxy(mail at example.net):
connect(10.5.29.211, 143) failed: Connection refused (after 0 secs,
local=10.5.29.201:38333)
I appreciate any advice.
Regards
Patrick
Proxy:
# 2.2.7: /usr/local/etc/dovecot/dovecot.conf
# OS: Linux 3.2.0-4-amd64 x86_64 Debian 7.2
auth_debug = yes
auth_mechanisms = plain login
auth_verbose = yes
default_process_limit = 150
director_mail_servers = 10.5.29.211 10.5.29.212
director_servers = 10.5.29.201
director_user_expire = 5 mins
disable_plaintext_auth = no
lmtp_proxy = yes
log_path = /var/log/dovecot.log
mail_plugins = notify replication
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 ihave
passdb {
args = proxy=y nopassword=y
driver = static
}
protocols = imap pop3 lmtp sieve
service aggregator {
fifo_listener replication-notify-fifo {
user = vmail
}
unix_listener replication-notify {
user = vmail
}
}
service auth {
unix_listener auth-userdb {
user = dovecot
}
}
service director {
fifo_listener login/proxy-notify {
mode = 0666
}
inet_listener {
address = 10.5.29.201
port = 9090
}
unix_listener director-userdb {
mode = 0600
}
unix_listener login/director {
mode = 0666
}
}
service imap-login {
executable = imap-login director
}
service lmtp {
inet_listener lmtp {
address = 10.5.29.201
port = 24
}
}
service managesieve-login {
executable = managesieve-login director
inet_listener sieve {
port = 4190
}
}
service pop3-login {
executable = pop3-login director
}
service replicator {
unix_listener replicator-doveadm {
mode = 0600
}
}
ssl = no
protocol lmtp {
auth_socket_path = director-userdb
}
Backend 1:
# 2.2.7: /usr/local/etc/dovecot/dovecot.conf
# OS: Linux 3.2.0-4-amd64 x86_64 Debian 7.2
auth_debug = yes
auth_mechanisms = plain login
auth_verbose = yes
disable_plaintext_auth = no
dotlock_use_excl = no
doveadm_password = secret
doveadm_port = 12345
dsync_remote_cmd = ssh -l%{login} %{host} doveadm dsync-server -u%u
hostname = mb01.example.net
listen = 10.5.29.211
log_path = /var/log/dovecot.log
mail_debug = yes
mail_fsync = always
mail_gid = vmail
mail_home = /var/mail/%d/%n
mail_location = maildir:~/Maildir
mail_plugins = quota notify replication
mail_uid = 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 ihave
mmap_disable = yes
namespace inbox {
inbox = yes
location mailbox Drafts {
auto = subscribe
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox Spamverdacht {
auto = subscribe
}
mailbox Trash {
auto = subscribe
special_use = \Trash
}
prefix = INBOX.
separator = .
type = private
}
passdb {
args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
plugin {
mail_replica = tcp:10.5.29.212
quota = dict:User quota::file:%h/Maildir/dovecot-quota
quota_rule2 = INBOX.Trash:ignore
quota_warning = storage=90%% quota-warning 90 %u
quota_warning2 = storage=75%% quota-warning 75 %u
sieve = ~/.dovecot.sieve
sieve_after = /usr/local/etc/dovecot/sieve/sieve_after.sieve
sieve_default = /usr/local/etc/dovecot/sieve/default.sieve
sieve_dir = ~/sieve
}
postmaster_address = postmaster at example.net
protocols = imap pop3 lmtp sieve
service aggregator {
fifo_listener replication-notify-fifo {
user = vmail
}
unix_listener replication-notify {
user = vmail
}
}
service auth {
unix_listener auth-userdb {
mode = 0666
user = vmail
}
}
service doveadm {
inet_listener {
port = 12345
}
}
service lmtp {
inet_listener lmtp {
address = 10.5.29.211
port = 24
}
}
service managesieve-login {
inet_listener sieve {
port = 4190
}
}
service quota-warning {
executable = script /usr/local/etc/dovecot/quota_warning.sh
unix_listener quota-warning {
user = vmail
}
user = root
}
service replicator {
process_min_avail = 1
unix_listener replicator-doveadm {
mode = 0600
}
}
ssl = no
submission_host = mf01.example.net
userdb {
args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
protocol lmtp {
mail_plugins = quota notify replication sieve
}
protocol imap {
mail_max_userip_connections = 30
mail_plugins = quota notify replication imap_quota
}
Backend 2:
# 2.2.7: /usr/local/etc/dovecot/dovecot.conf
# OS: Linux 3.2.0-4-amd64 x86_64 Debian 7.2
auth_debug = yes
auth_mechanisms = plain login
auth_verbose = yes
disable_plaintext_auth = no
dotlock_use_excl = no
doveadm_password = secret
doveadm_port = 12345
dsync_remote_cmd = ssh -l%{login} %{host} doveadm dsync-server -u%u
hostname = mb02.example.net
listen = 10.5.29.212
log_path = /var/log/dovecot.log
mail_debug = yes
mail_fsync = always
mail_gid = vmail
mail_home = /var/mail/%d/%n
mail_location = maildir:~/Maildir
mail_plugins = quota notify replication
mail_uid = 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 ihave
mmap_disable = yes
namespace inbox {
inbox = yes
location mailbox Drafts {
auto = subscribe
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox Spamverdacht {
auto = subscribe
}
mailbox Trash {
auto = subscribe
special_use = \Trash
}
prefix = INBOX.
separator = .
type = private
}
passdb {
args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
plugin {
mail_replica = tcp:10.5.29.211
quota = dict:User quota::file:%h/Maildir/dovecot-quota
quota_rule2 = INBOX.Trash:ignore
quota_warning = storage=90%% quota-warning 90 %u
quota_warning2 = storage=75%% quota-warning 75 %u
sieve = ~/.dovecot.sieve
sieve_after = /usr/local/etc/dovecot/sieve/sieve_after.sieve
sieve_default = /usr/local/etc/dovecot/sieve/default.sieve
sieve_dir = ~/sieve
}
postmaster_address = postmaster at example.net
protocols = imap pop3 lmtp sieve
service aggregator {
fifo_listener replication-notify-fifo {
user = vmail
}
unix_listener replication-notify {
user = vmail
}
}
service auth {
unix_listener auth-userdb {
mode = 0666
user = vmail
}
}
service doveadm {
inet_listener {
port = 12345
}
}
service lmtp {
inet_listener lmtp {
address = 10.5.29.212
port = 24
}
}
service managesieve-login {
inet_listener sieve {
port = 4190
}
}
service quota-warning {
executable = script /usr/local/etc/dovecot/quota_warning.sh
unix_listener quota-warning {
user = vmail
}
user = root
}
service replicator {
process_min_avail = 1
unix_listener replicator-doveadm {
mode = 0600
user = vmail
}
}
ssl = no
submission_host = mf01.example.net
userdb {
args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
protocol lmtp {
mail_plugins = quota notify replication sieve
}
protocol imap {
mail_max_userip_connections = 30
mail_plugins = quota notify replication imap_quota
}
Daniel Parthey
2013-Nov-10 03:42 UTC
[Dovecot] Dovecot replication not redirecting if server is down
Hi Patrick the director does not check backends for availability. If one backend goes up or down, you need to instruct the director to add/remove this backend from its pool. You might be looking for a script named "poolmon" which does exactly this. Regards Daniel