Hello,
We have 3 nodes running, with a two way replication between 2 of them and a 1 way replication to a DR node running off one. We use mdbox, and directors to split traffic across nodes. There is no shared file system.
Users are experiencing messages reappearing in their INBOX as unread with duplicate GUID and message headers. This occurs generally several days after a message was first received (and often actioned; read, moved, trashed, expunged, also often bulk moved/deleted).
We have attempted to remove replication from the equation by cutting down to one single node with all replication disabled which did not have any impact. We have also started regular cache and mailbox purging. There are no logged events when mail items reappear, and we only observe it based on user report, mailbox inspection (doveadm looking for duplicate GUIDs/unique message headers) or seeing IMAP commands being done against the same message twice (e.g. monday they copy to trash, delete and expunge from inbox, delete and expunge from trash, then the next monday they will have to do the same for the reappearing message).
OS: Centos 7
Dovecot: dovecot -version
Scheduled jobs:
*/15 0 * * 0 doveadm sync -u "*" tcps:<dr node>:12345 > /var/log/dovecot/dr_sync.log 2>&1
1 3 * * * doveadm mailbox cache purge -A INBOX
21 3 * * * doveadm mailbox cache purge -A Trash
0 1 * * 0 /usr/bin/doveadm purge -A >/dev/null 2>&1
Conf: dovecot -n
# 2.3.16 (7e2e900c1a): /etc/dovecot/dovecot.conf
# OS: Linux 3.10.0-1160.53.1.el7.x86_64 x86_64 CentOS Linux release 7.9.2009 (Core)
# Hostname: <primary node>
auth_master_user_separator = *
default_vsz_limit = 1 G
disable_plaintext_auth = no
dotlock_use_excl = no
doveadm_password = # hidden, use -P to show it
listen = *
mail_fsync = always
mail_location = mdbox:~/mail
mail_nfs_index = yes
mail_nfs_storage = yes
mail_plugins = " notify replication"
mmap_disable = yes
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 {
autoexpunge = 30 days
special_use = \Trash
}
prefix =
separator = .
}
passdb {
args = /etc/dovecot/conf.d/passwd.masterusers
driver = passwd-file
master = yes
}
passdb {
args = /etc/dovecot/conf.d/passwd.masterusers
driver = passwd-file
}
plugin {
mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename save flag_change
mail_log_fields = uid box msgid size flags
mail_log_group_events =
mail_replica = tcps:<second node>:12345
}
protocols = imap
service aggregator {
fifo_listener replication-notify-fifo {
mode = 0666
user = vmail
}
unix_listener replication-notify {
mode = 0666
user = vmail
}
}
service doveadm {
inet_listener {
port = 12345
ssl = yes
}
}
service imap-login {
inet_listener imap {
port = 144
}
inet_listener imaps {
port = 994
ssl = yes
}
}
service replicator {
process_min_avail = 1
unix_listener replicator-doveadm {
mode = 0666
}
}
ssl = required
ssl_cert = </etc/pki/dovecot/certs/dovecot-internal.pem
ssl_cipher_list = TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
ssl_client_ca_file = /etc/ssl/certs/ca-bundle.crt
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
ssl_prefer_server_ciphers = yes
userdb {
args = /etc/dovecot/conf.d/dovecot-dict-auth.conf.ext
driver = dict
}
userdb {
args = /etc/dovecot/conf.d/dovecot-ldap.conf.ext
driver = ldap
}
protocol imap {
mail_max_userip_connections = 9999
mail_plugins = " notify replication mail_log notify"
}
Any thoughts would be greatly appreciated.
Thanks in advance,
Andrew