On 14.3.2012, at 18.45, Michescu Andrei wrote:
Nope dsync was not running during the email delivery on that account. I've simulated in a controlled environment.
How? You mean simply deliver mail to server A and to server B and run dsync and it duplicates it? I can't reproduce it that way, only if I run dsync during a flood of new mails.
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...
For IMAP it's not much of a problem, because user typically still uses only one client actively, so clients aren't uploading mails to multiple servers at the same time.
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 messages have GUIDs that stay the same always, but IMAP UIDs are required to be ascending from client's point of view, and several clients rely on that, so when UID conflict happens the only safe thing to do is to assign new UIDs for all of the conflicting mails.