replication issues between to nodes

Remko Lodder remko at FreeBSD.org
Sat Mar 18 16:22:41 EET 2017


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 at 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 at 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 at 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 at 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”
}



-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: Message signed with OpenPGP
URL: <http://dovecot.org/pipermail/dovecot/attachments/20170318/e5597d71/attachment.sig>


More information about the dovecot mailing list