Hi,
Some time ago I posted the below but never got a reponse that I could work with. So i am retrying now in the hope that there might be a better idea/suggestion on how to approach this.
Situation;
I have two nodes, which should replicate to eachother. My main machine receives most mail and the other one receives mostly system messages and should get replicated. (This used to be delivered on both machines, but given the issues below I had to make sure that the customer email at least arrives on machine A, as detailed below).
When a mail arrives on main machine (A) everything is fine and things are synchronised asap. Customers can see the email directly via webmail/imap.
When a mail arrives on the secondary machine (B) the replication is not issued until machine A starts a sync session. Customers do not see the email on machine A via webmail/imap.
When a mail arrives on A, the synchronisation occurs, and all messages on B, not yet on A, are synchronised as well. Customers can now see the email on machine A as well via webmail/imap. Sadly this can mean that emails that became visible are hours late (read: were delivered hours before, but not visible for the customer).
Both machines are configured through puppet, only individual settings like IP addresses and certificates are different because well, they have to. I included the difference below, and both ‘doveconf -n’s. If someone has a suggestion on seeing why machine B is not issueing (or does not seem to issue) replication, let me know. I verified that I can connect to the remote machines via IPv4 and IPv6 (for doveadm / replication purposes).
Difference between configurations;
--- tmp1.txt 2017-03-18 15:18:41.000000000 +0100
+++ tmp2.txt 2017-03-18 15:18:56.000000000 +0100
@@ -55,7 +55,7 @@
imapsieve_mailbox2_name = *
mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename
mail_log_fields = uid box msgid size
- mail_replica = tcps:mail.jr-hosting.nl:12346
+ mail_replica = tcps:mail2.jr-hosting.nl:12346
sieve = ~/.dovecot.sieve
sieve_dir = ~/sieve
sieve_execute_bin_dir = /usr/local/lib/dovecot/sieve
@@ -105,7 +105,7 @@
}
service lmtp {
inet_listener lmtp {
- address = XXX/X 127.0.0.1 ::1
+ address = YYYY/Y 127.0.0.1 ::1
port = 24
}
unix_listener /var/spool/postfix/private/dovecot-lmtp {
@@ -123,8 +123,8 @@
mode = 0666
}
}
-ssl_ca = </usr/local/etc/letsencrypt/live/mail2.jr-hosting.nl/fullchain.pem
-ssl_cert = </usr/local/etc/letsencrypt/live/mail2.jr-hosting.nl/cert.pem
+ssl_ca = </usr/local/etc/letsencrypt/live/mail.jr-hosting.nl/fullchain.pem
+ssl_cert = </usr/local/etc/letsencrypt/live/mail.jr-hosting.nl/cert.pem
ssl_client_ca_file = /usr/local/certificates/letsencrypt-ca.pem
ssl_key = # hidden, use -P to show it
ssl_protocols = !SSLv2 !SSLv3
Machine A (the best working machine)
# 2.2.28 (bed8434): /usr/local/etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.17 (e179378)
# OS: FreeBSD 11.0-RELEASE-p8 amd64
auth_mechanisms = plain login
disable_plaintext_auth = no
doveadm_password = # hidden, use -P to show it
haproxy_trusted_networks = XXXX/X
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
lmtp_save_to_detail_mailbox = yes
mail_debug = yes
mail_fsync = always
mail_location = mdbox:~/mdbox
mail_plugins = " quota 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 index ihave duplicate mime foreverypart extracttext imapsieve
namespace {
inbox = yes
location =
mailbox Drafts {
auto = subscribe
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Spam {
auto = subscribe
special_use = \Junk
}
mailbox Trash {
auto = subscribe
special_use = \Trash
}
prefix =
separator = .
}
passdb {
driver = pam
}
plugin {
imapsieve_mailbox1_before = file:/usr/local/lib/dovecot/sieve/report-spam.sieve
imapsieve_mailbox1_causes = COPY
imapsieve_mailbox1_name = Spam
imapsieve_mailbox2_before = file:/usr/local/lib/dovecot/sieve/report-ham.sieve
imapsieve_mailbox2_causes = COPY
imapsieve_mailbox2_from = Spam
imapsieve_mailbox2_name = *
mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename
mail_log_fields = uid box msgid size
mail_replica = tcps:mail2.jr-hosting.nl:12346
sieve = ~/.dovecot.sieve
sieve_dir = ~/sieve
sieve_execute_bin_dir = /usr/local/lib/dovecot/sieve
sieve_global_dir = /usr/local/etc/dovecot/sieve/global/
sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.execute
sieve_global_path = /usr/local/etc/dovecot/sieve/default.sieve
sieve_pipe_bin_dir = /usr/local/lib/dovecot/sieve
sieve_plugins = sieve_imapsieve sieve_extprograms
}
postmaster_address = postmaster(a)jr-hosting.nl
protocols = imap pop3 lmtp sieve
replication_dsync_parameters = -d -N -l 60 -U
replication_max_conns = 100
service aggregator {
fifo_listener replication-notify-fifo {
mode = 0666
}
unix_listener replication-notify {
mode = 0666
}
}
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
}
}
service doveadm {
inet_listener {
port = 12346
ssl = yes
}
}
service imap-login {
inet_listener imap_haproxy {
haproxy = yes
port = 10143
}
inet_listener imaps_haproxy {
haproxy = yes
port = 10144
ssl = yes
}
service_count = 1
}
service imap {
process_limit = 1024
}
service lmtp {
inet_listener lmtp {
address = XXXX/X 127.0.0.1 ::1
port = 24
}
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0600
user = postfix
}
}
service pop3 {
process_limit = 1024
}
service replicator {
process_min_avail = 1
unix_listener replicator-doveadm {
mode = 0666
}
}
ssl_ca = </usr/local/etc/letsencrypt/live/mail.jr-hosting.nl/fullchain.pem
ssl_cert = </usr/local/etc/letsencrypt/live/mail.jr-hosting.nl/cert.pem
ssl_client_ca_file = /usr/local/certificates/letsencrypt-ca.pem
ssl_key = # hidden, use -P to show it
ssl_protocols = !SSLv2 !SSLv3
userdb {
driver = passwd
}
verbose_proctitle = yes
protocol lmtp {
auth_username_format = %n
mail_plugins = quota sieve
postmaster_address = postmaster(a)jr-hosting.nl
}
protocol lda {
mail_plugins = " quota notify replication sieve"
}
protocol imap {
mail_max_userip_connections = 50
mail_plugins = " quota notify replication imap_quota imap_sieve”
}
Machine B:
# 2.2.28 (bed8434): /usr/local/etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.17 (e179378)
# OS: FreeBSD 11.0-RELEASE-p8 amd64
auth_mechanisms = plain login
disable_plaintext_auth = no
doveadm_password = # hidden, use -P to show it
haproxy_trusted_networks = XXX/X
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
lmtp_save_to_detail_mailbox = yes
mail_debug = yes
mail_fsync = always
mail_location = mdbox:~/mdbox
mail_plugins = " quota 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 index ihave duplicate mime foreverypart extracttext imapsieve
namespace {
inbox = yes
location =
mailbox Drafts {
auto = subscribe
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Spam {
auto = subscribe
special_use = \Junk
}
mailbox Trash {
auto = subscribe
special_use = \Trash
}
prefix =
separator = .
}
passdb {
driver = pam
}
plugin {
imapsieve_mailbox1_before = file:/usr/local/lib/dovecot/sieve/report-spam.sieve
imapsieve_mailbox1_causes = COPY
imapsieve_mailbox1_name = Spam
imapsieve_mailbox2_before = file:/usr/local/lib/dovecot/sieve/report-ham.sieve
imapsieve_mailbox2_causes = COPY
imapsieve_mailbox2_from = Spam
imapsieve_mailbox2_name = *
mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename
mail_log_fields = uid box msgid size
mail_replica = tcps:mail.jr-hosting.nl:12346
sieve = ~/.dovecot.sieve
sieve_dir = ~/sieve
sieve_execute_bin_dir = /usr/local/lib/dovecot/sieve
sieve_global_dir = /usr/local/etc/dovecot/sieve/global/
sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.execute
sieve_global_path = /usr/local/etc/dovecot/sieve/default.sieve
sieve_pipe_bin_dir = /usr/local/lib/dovecot/sieve
sieve_plugins = sieve_imapsieve sieve_extprograms
}
postmaster_address = postmaster(a)jr-hosting.nl
protocols = imap pop3 lmtp sieve
replication_dsync_parameters = -d -N -l 60 -U
replication_max_conns = 100
service aggregator {
fifo_listener replication-notify-fifo {
mode = 0666
}
unix_listener replication-notify {
mode = 0666
}
}
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
}
}
service doveadm {
inet_listener {
port = 12346
ssl = yes
}
}
service imap-login {
inet_listener imap_haproxy {
haproxy = yes
port = 10143
}
inet_listener imaps_haproxy {
haproxy = yes
port = 10144
ssl = yes
}
service_count = 1
}
service imap {
process_limit = 1024
}
service lmtp {
inet_listener lmtp {
address = XXXX/X 127.0.0.1 ::1
port = 24
}
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0600
user = postfix
}
}
service pop3 {
process_limit = 1024
}
service replicator {
process_min_avail = 1
unix_listener replicator-doveadm {
mode = 0666
}
}
ssl_ca = </usr/local/etc/letsencrypt/live/mail2.jr-hosting.nl/fullchain.pem
ssl_cert = </usr/local/etc/letsencrypt/live/mail2.jr-hosting.nl/cert.pem
ssl_client_ca_file = /usr/local/certificates/letsencrypt-ca.pem
ssl_key = # hidden, use -P to show it
ssl_protocols = !SSLv2 !SSLv3
userdb {
driver = passwd
}
verbose_proctitle = yes
protocol lmtp {
auth_username_format = %n
mail_plugins = quota sieve
postmaster_address = postmaster(a)jr-hosting.nl
}
protocol lda {
mail_plugins = " quota notify replication sieve"
}
protocol imap {
mail_max_userip_connections = 50
mail_plugins = " quota notify replication imap_quota imap_sieve”
}