[Dovecot] Expunged message reappeared, giving a new UID

Simon Fraser srf at sanger.ac.uk
Fri Jul 26 13:28:53 EEST 2013


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. 


More information about the dovecot mailing list