Marc Herbrechter
2008-Oct-27 19:12 UTC
[Dovecot] Empty/corrupt mail leads to duplicate delivery
Hi, when the attached mail was stored in a maildir, fetching mail via POP3 lead to multiple delivery of mails in that maildir to the client (Outlook). I replaced the domain with dots. This is the dovecot configuration: --snip-- protocols = imap imaps pop3 pop3s listen = * disable_plaintext_auth = no ssl_cert_file = /etc/ssl/dovecot/server.pem ssl_key_file = /etc/ssl/dovecot/server.key mail_location = maildir:~/.maildir protocol pop3 { pop3_uidl_format = %08Xu%08Xv } auth default { mechanisms = plain passdb pam { args = "*" } userdb passwd { } user = root socket listen { client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } } --snip-- Version: dovecot-1.1.4-r1 (Gentoo) Gentoo applies the attached "expire" patch. I tried to reproduce the behavior, but when I send an empty mail via telnet, nothing happens. The box is running Amavis, don't know if that helps. -- Mit freundlichen Gr??en, with kind regards, Marc Herbrechter <mh at zebroc.de> -------------- next part -------------- # HG changeset patch # User Timo Sirainen <tss at iki.fi> # Date 1223320000 -10800 # Node ID 96dfe8fb57b8e061b4339cbf3d50fc8067dc50ec # Parent 9f95b3c28cc392b6c9534a69e6a2aa75ea54f5eb Expire plugin was crashing because of previous change. --- a/src/plugins/expire/expire-plugin.c Mon Oct 06 19:24:03 2008 +0300 +++ b/src/plugins/expire/expire-plugin.c Mon Oct 06 22:06:40 2008 +0300 @@ -99,6 +99,7 @@ expire_mailbox_transaction_commit(struct { struct expire_mailbox *xpr_box = EXPIRE_CONTEXT(t->box); struct expire_transaction_context *xt = EXPIRE_CONTEXT(t); + struct mailbox *box = t->box; time_t new_stamp; bool update_dict = FALSE; int ret; @@ -117,13 +118,14 @@ expire_mailbox_transaction_commit(struct i_free(xt); return -1; } + /* transaction is freed now */ + t = NULL; if (xt->first_expunged || xt->saves) T_BEGIN { const char *key, *value; key = t_strconcat(DICT_PATH_SHARED, expire.username, "/", - t->box->storage->ns->prefix, - t->box->name, NULL); + box->storage->ns->prefix, box->name, NULL); if (!xt->first_expunged && xt->saves) { /* saved new mails. dict needs to be updated only if this is the first mail in the database */ -------------- next part -------------- Return-Path: <htefunny at dionis.r35.nalog.ru> X-Original-To: wolf at ................de Delivered-To: wolf at ................de Received: from localhost (localhost [127.0.0.1]) by mail.................de (Postfix) with ESMTP id 07E27B8047D for <wolf at ................de>; Mon, 27 Oct 2008 14:08:41 +0100 (CET) Message-Id: <20081027130845.07E27B8047D at mail.................de> Date: Mon, 27 Oct 2008 14:08:41 +0100 (CET) From: htefunny at dionis.r35.nalog.ru To: undisclosed-recipients:; Content-Length: 0 Lines: 0
Timo Sirainen
2008-Oct-29 15:16 UTC
[Dovecot] Empty/corrupt mail leads to duplicate delivery
On Mon, 2008-10-27 at 20:12 +0100, Marc Herbrechter wrote:> Hi, > > when the attached mail was stored in a maildir, fetching mail via POP3 > lead to multiple delivery of mails in that maildir to the client > (Outlook). I replaced the domain with dots.Sounds like an Outlook bug. The only thing Dovecot could do wrong is to provide duplicate UIDL for the messages. You could verify this yourself by giving UIDL command and seeing if there are duplicates. But I highly doubt that, because you're using:> pop3_uidl_format = %08Xu%08XvWhich means your UIDL is based on message UID and UIDVALIDITY. Neither depend on message contents. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 197 bytes Desc: This is a digitally signed message part URL: <http://dovecot.org/pipermail/dovecot/attachments/20081029/c703b22c/attachment-0002.bin>