Hello,
Nope dsync was not running during the email delivery on that account. I've simulated in a controlled environment.
Servers are having different priorities, but this was a basic scenario to test the master-master synchronization.
Think that for incoming SMTP I can even restrict which server is the master (forcing all other to redeliver to this one). BUT, for a distributed IMAP cluster there is no way to restrict users to perform changes on only one server. This would defeat the model and the purpose of a distributed cluster...
One idea might be to have the IDs dependent on server where they appear first time so that they keep the ID once they get replicated. Here there are many options:
- the DB model = each server has a set of ids that can give (either ranges, either increment with step different then 1)
- the vpopmail/qmail model = append the server name (as you saw in the previous email in the listings the email files contained the hostname mx1.a and mx2.a)
Thank you, Andrei
On Wed, 2012-03-14 at 01:25 -0400, Michescu Andrei wrote:
Now, as long as I touch the mailbox of user1 only on mx1.a doveadm sync keeps them in sync (cron job every 5 minutes).
The problem comes when I start using the master-master model: emails starts getting duplicate with different ids.
I was testing this a bit, and I guess in your tests dsync was running during a mail delivery, which seems to make it duplicate mails sometimes. I'll probably fix this at some point (I've actually been thinking about a larger dsync redesign), but anyway:
Even if dsync worked perfectly and didn't duplicate mails, it's not a great idea to do deliver mails randomly to both servers. Each time dsync notices that both sides have had new mails, it needs to reassign new IMAP UIDs for the messages, which means that IMAP clients may need to redownload the mails. Better to give one MX a higher priority so mails typically are delivered through it.
!DSPAM:4f60a6b137151972926802!