Replication not working - GUIDs conflict - will be merged later

Patrick Westenberg pw at wk-serv.de
Sun Jul 31 12:16:21 UTC 2022


Hi everyone,

I have a weird problem with replication that I'm unable to solve.

A new account is sychronized from an external provider via imapsync.
The mails end up on my backend1. I see that the folder structure is
immediately replicated to backend2.

However, a lot of mails are missing and "doveadm replicator status" also
states that something failed:


                            	priority fast sync full sync success sync
failed
mail at example.com none     00:02:36  00:39:47  -            y

There are no error log entries regarding this user at all.

After some research I tried to start the replication manually with
"doveadm -D backup -u mail at example.com -d tcp:x.y.z.11" and finally
I got an error message:

Jul 31 13:55:37
doveadm(mail at example.com)<11341><rm1YCblt5mJNLAAAJFg/Tg>: Debug: brain
M: Mailbox INBOX: local=e74590221b6ce6620d29000024583f4e/0/1,
remote=20a9ce2b1c6ce662244e0000baba0ddd/0/1: GUIDs conflict - will be
merged later

As a matter of fact, the mails in the inbox are the ones that are
missing on backend2.


I always end up with this error, no matter what I do:
- I completely removed the folder structure on backend2.
- I removed all database entries.
- I removed this user from the replication, ran imapsync again followed
by "doveadm -D backup ..."

I also removed fts-flatcurve to rule this out as a cause of error.

I have no idea what to do. This configuration worked for months.
I got this error with 2.3.17.1 and 2.3.19.1

Any hints would be highly appreciated.


Regards
Patrick





# 2.3.19.1 (9b53102964): /usr/local/etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.19 (4eae2f79)
auth_master_user_separator = *
auth_mechanisms = plain login
doveadm_password = # hidden, use -P to show it
doveadm_port = 12345
listen = x.y.z.12
lmtp_save_to_detail_mailbox = yes
log_debug = category=fts-flatcurve
log_path = /var/log/dovecot.log
mail_debug = yes
mail_home = /srv/mail/%Ld/%Ln
mail_location = maildir:~/Maildir
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 editheader
metric imapc_traffic {
  fields = bytes_in bytes_out
  filter = event=imap_command_finished
  group_by = user
}
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 "Sent Messages" {
    special_use = \Sent
  }
  mailbox Spamverdacht {
    auto = subscribe
    special_use = \Junk
  }
  mailbox Trash {
    auto = subscribe
    special_use = \Trash
  }
  prefix = INBOX/
  separator = /
  type = private
}
passdb {
  args = /usr/local/etc/dovecot/master-user
  driver = passwd-file
  master = yes
  pass = yes
}
passdb {
  args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
plugin {
  mail_replica = tcp:x.y.z.11
  quota = count:User quota
  quota_grace = 25M
  quota_rule2 = INBOX/Trash:storage=+100M
  quota_status_nouser = DUNNO
  quota_status_success = DUNNO
  quota_vsizes = yes
  quota_warning = storage=100%% quota-full %u
  quota_warning2 = storage=95%% quota-warning 95 %u
  quota_warning3 = storage=80%% quota-warning 80 %u
  quota_warning4 = -storage=100%% quota-ok %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
  sieve_extensions = +editheader
}
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 {
    group = vmail
    mode = 0666
    user = vmail
  }
}
service config {
  unix_listener config {
    mode = 0600
    user = vmail
  }
}
service doveadm {
  inet_listener {
    port = 12345
  }
}
service imap-login {
  process_min_avail = 2
  service_count = 0
}
service lmtp {
  executable = lmtp -L
  inet_listener lmtp {
    address = x.y.z.12
    port = 24
  }
  process_min_avail = 20
}
service managesieve-login {
  inet_listener sieve {
    port = 4190
  }
}
service quota-full {
  executable = script /usr/local/etc/dovecot/quota_full.sh
  unix_listener quota-full {
    user = vmail
  }
  user = root
}
service quota-ok {
  executable = script /usr/local/etc/dovecot/quota_ok.sh
  unix_listener quota-ok {
    user = vmail
  }
  user = root
}
service quota-status {
  client_limit = 1
  executable = quota-status -p postfix
  inet_listener {
    port = 12340
  }
}
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 = required
ssl_cert = </etc/ssl/certs/bundle.pem
ssl_client_ca_dir = /etc/ssl/certs
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
userdb {
  driver = prefetch
}
userdb {
  args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
verbose_proctitle = yes
protocol lmtp {
  info_log_path = /var/log/dovecot-lmtp.log
  mail_plugins = quota notify replication sieve
}
protocol imap {
  mail_max_userip_connections = 40
  mail_plugins = quota notify replication imap_quota
}


More information about the dovecot mailing list