[Dovecot] Dovecot replication not redirecting if server is down

Patrick Westenberg pw at wk-serv.de
Sat Nov 9 22:11:33 EET 2013


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
}


More information about the dovecot mailing list