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.