Simon Fraser
2013-Jul-26 10:28 UTC
[Dovecot] Expunged message reappeared, giving a new UID
I am running dovecot 2.2.2 with tcp based replication, and experiencing some duplicated emails. `doveconf -n` output is below. I have narrowed it down to the following scenario: An email arrives, and is successfully replicated to both nodes. It is in INBOX/new/ at this point on both servers. Connect with a mail client, and delete the message - without delayed expunge. So, for example, mutt (press 'd' then '$' to sync the mailbox), or Evolution set to immediately delete. The following log entry appears on the server the client is connected to: Jul 26 10:40:55 intmail3a dovecot: imap(srf): Warning: /mail/spool/s/srf/mail/INBOX/dovecot-uidlist: Duplicate file entry at line 5: 1374831638.M830754P11591.intmail3a,S=1289,W=1321 (uid 733481 -> 733482) - retrying by re-reading from beginning Jul 26 10:40:55 intmail3a dovecot: imap(srf): Warning: Maildir /mail/spool/s/srf/mail/INBOX: Expunged message reappeared, giving a new UID (old uid=733481, file=1374831638.M830754P11591.intmail3a,S=1289,W=1321) The email reappears in the mailbox, although this time it is in INBOX/new on one node and INBOX/cur on the other. As best I can tell it's always in 'new' on the server the client was connected to and in 'cur' on the other. If any other mailbox operation occurs before the delete (Marking the message in question as 'read', receiving a new message into the mailbox in a different lmtp session, marking as read or deleting & expunging some other message) then this prevents the duplication from happening. What can I do to prevent this happening? Is there a synchronisation interval I can adjust, perhaps? Although the message does get synchronised initially. Thanks in advance, Simon. # 2.2.2: /mail/etc/dovecot/dovecot.conf # OS: Linux 3.5.0-23-generic x86_64 Ubuntu 12.04.2 LTS disable_plaintext_auth = no doveadm_password = secret first_valid_uid = 100 lda_mailbox_autocreate = yes mail_gid = dovecot mail_home = /mail/spool/%1n/%n mail_location = maildir:~/mail:INBOX=~/mail/INBOX mail_plugins = notify replication mail_uid = dovecot 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 ihave 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 { special_use = \Trash } prefix separator = . } passdb { args = /mail/etc/dovecot/dovecot-ldap.conf.ext driver = ldap } plugin { mail_replica = tcps:intmail3b:12345 sieve_dir = ~/sieve } protocols = imap lmtp sieve service aggregator { fifo_listener replication-notify-fifo { mode = 0600 user = dovecot } unix_listener replication-notify { mode = 0600 user = dovecot } } service config { unix_listener config { user = dovecot } } service doveadm { inet_listener { port = 12345 ssl = yes } user = dovecot } service replicator { process_min_avail = 1 } ssl_cert = </mail/etc/certs/mail-cert.pem ssl_client_ca_dir = /etc/ssl/certs ssl_key = </mail/etc/certs/mail-key.pem userdb { args = /mail/etc/dovecot/dovecot-ldap.userdb.conf.ext driver = ldap } protocol lmtp { mail_plugins = notify replication sieve } protocol lda { mail_plugins = notify replication sieve } protocol imap { mail_max_userip_connections = 30 } -- The Wellcome Trust Sanger Institute is operated by Genome Research Limited, a charity registered in England with number 1021457 and a company registered in England with number 2742969, whose registered office is 215 Euston Road, London, NW1 2BE.
Simon Fraser
2013-Jul-26 15:41 UTC
[Dovecot] Expunged message reappeared, giving a new UID
I've just converted the mailboxes to mdbox, so mail_location now looks like this: mail_location = mdbox:~/mail The log entry about messages reappearing no longer happens, but the symptoms are the same - if I delete a message, it instantly reappears. Simon. On Fri, 2013-07-26 at 11:28 +0100, Simon Fraser wrote:> I am running dovecot 2.2.2 with tcp based replication, and experiencing > some duplicated emails. `doveconf -n` output is below. > > I have narrowed it down to the following scenario: > > An email arrives, and is successfully replicated to both nodes. It is in > INBOX/new/ at this point on both servers. > > Connect with a mail client, and delete the message - without delayed > expunge. So, for example, mutt (press 'd' then '$' to sync the mailbox), > or Evolution set to immediately delete. > > The following log entry appears on the server the client is connected > to: > > Jul 26 10:40:55 intmail3a dovecot: imap(srf): > Warning: /mail/spool/s/srf/mail/INBOX/dovecot-uidlist: Duplicate file > entry at line 5: 1374831638.M830754P11591.intmail3a,S=1289,W=1321 (uid > 733481 -> 733482) - retrying by re-reading from beginning > Jul 26 10:40:55 intmail3a dovecot: imap(srf): Warning: > Maildir /mail/spool/s/srf/mail/INBOX: Expunged message reappeared, > giving a new UID (old uid=733481, > file=1374831638.M830754P11591.intmail3a,S=1289,W=1321) > > The email reappears in the mailbox, although this time it is in > INBOX/new on one node and INBOX/cur on the other. As best I can tell > it's always in 'new' on the server the client was connected to and in > 'cur' on the other. > > If any other mailbox operation occurs before the delete (Marking the > message in question as 'read', receiving a new message into the mailbox > in a different lmtp session, marking as read or deleting & expunging > some other message) then this prevents the duplication from happening. > > What can I do to prevent this happening? Is there a synchronisation > interval I can adjust, perhaps? Although the message does get > synchronised initially. > > Thanks in advance, > Simon. > > > # 2.2.2: /mail/etc/dovecot/dovecot.conf > # OS: Linux 3.5.0-23-generic x86_64 Ubuntu 12.04.2 LTS > disable_plaintext_auth = no > doveadm_password = secret > first_valid_uid = 100 > lda_mailbox_autocreate = yes > mail_gid = dovecot > mail_home = /mail/spool/%1n/%n > mail_location = maildir:~/mail:INBOX=~/mail/INBOX > mail_plugins = notify replication > mail_uid = dovecot > 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 ihave > 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 { > special_use = \Trash > } > prefix > separator = . > } > passdb { > args = /mail/etc/dovecot/dovecot-ldap.conf.ext > driver = ldap > } > plugin { > mail_replica = tcps:intmail3b:12345 > sieve_dir = ~/sieve > } > protocols = imap lmtp sieve > service aggregator { > fifo_listener replication-notify-fifo { > mode = 0600 > user = dovecot > } > unix_listener replication-notify { > mode = 0600 > user = dovecot > } > } > service config { > unix_listener config { > user = dovecot > } > } > service doveadm { > inet_listener { > port = 12345 > ssl = yes > } > user = dovecot > } > service replicator { > process_min_avail = 1 > } > ssl_cert = </mail/etc/certs/mail-cert.pem > ssl_client_ca_dir = /etc/ssl/certs > ssl_key = </mail/etc/certs/mail-key.pem > userdb { > args = /mail/etc/dovecot/dovecot-ldap.userdb.conf.ext > driver = ldap > } > protocol lmtp { > mail_plugins = notify replication sieve > } > protocol lda { > mail_plugins = notify replication sieve > } > protocol imap { > mail_max_userip_connections = 30 > } > > > > >-- The Wellcome Trust Sanger Institute is operated by Genome Research Limited, a charity registered in England with number 1021457 and a company registered in England with number 2742969, whose registered office is 215 Euston Road, London, NW1 2BE.
Daniel Parthey
2013-Jul-26 18:26 UTC
[Dovecot] Expunged message reappeared, giving a new UID
Hi Simon, Version 2.2.2 is not current any more. I would try to update to the latest stable version 2.2.4 first, since some dsync bugs have been fixed between 2.2.2 and 2.2.4: http://www.dovecot.org/doc/NEWS-2.2 Regards Daniel
Timo Sirainen
2013-Aug-01 12:09 UTC
[Dovecot] Expunged message reappeared, giving a new UID
On Fri, 2013-07-26 at 11:28 +0100, Simon Fraser wrote:> I am running dovecot 2.2.2 with tcp based replication, and experiencing > some duplicated emails. `doveconf -n` output is below.Are both of the servers using the same mailbox format?> I have narrowed it down to the following scenario: > > An email arrives, and is successfully replicated to both nodes. It is in > INBOX/new/ at this point on both servers. > > Connect with a mail client, and delete the message - without delayed > expunge. So, for example, mutt (press 'd' then '$' to sync the mailbox), > or Evolution set to immediately delete.Can you reproduce this by disabling automatic replication (e.g. just remove replicator from mail_plugins) and running dsync manually? So basically delete the message, then run: doveadm sync -r rawlog -u user at domain -d If that reproduces it, send the rawlog to me.> The following log entry appears on the server the client is connected > to: > > Jul 26 10:40:55 intmail3a dovecot: imap(srf): > Warning: /mail/spool/s/srf/mail/INBOX/dovecot-uidlist: Duplicate file > entry at line 5: 1374831638.M830754P11591.intmail3a,S=1289,W=1321 (uid > 733481 -> 733482) - retrying by re-reading from beginning > Jul 26 10:40:55 intmail3a dovecot: imap(srf): Warning: > Maildir /mail/spool/s/srf/mail/INBOX: Expunged message reappeared, > giving a new UID (old uid=733481, > file=1374831638.M830754P11591.intmail3a,S=1289,W=1321)This seems to be a bug of its own regardless of what happens with replication.