Package: dovecot-core Version: 1:2.1.7-7 Severity: normal Dear Maintainer,
The lazy_expunge plugin is broken when deleting mail from Maildir subfolders. See discussion here: http://www.dovecot.org/list/dovecot/2012-September/068519.html Fixed in upstream dovecot 2.1.11 (although not listed in ChangeLog). Attached patch applies cleanly to Debian dovecot 1:2.1.7-7 package and solves the issue. Thanks! -- Package-specific info: dovecot configuration --------------------- # 2.1.7: /etc/dovecot/dovecot.conf # OS: Linux 3.2.0-4-amd64 x86_64 Debian 7.0 auth_mechanisms = plain login first_valid_gid = 100 first_valid_uid = 1000 last_valid_gid = 100 last_valid_uid = 1999 mail_location = maildir:~/Maildir 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 expunged { list = no location = maildir:~/Maildir/expunged prefix = .EXPUNGED/ separator = / } 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 Spam { special_use = \Junk } mailbox Trash { special_use = \Trash } prefix = separator = / } passdb { args = /etc/dovecot/dovecot-ldap.conf.ext driver = ldap } plugin { antispam_backend = pipe antispam_pipe_program = /etc/dovecot/sa-learn antispam_pipe_program_notspam_arg = --ham antispam_pipe_program_spam_arg = --spam antispam_spam_pattern_ignorecase = Spam antispam_trash_pattern_ignorecase = Trash;Deleted * lazy_expunge = .EXPUNGED/ sieve = ~/Maildir/sieve sieve_default = /etc/dovecot/default.sieve sieve_dir = ~/Maildir/sieve.d } protocols = " imap sieve" service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0660 user = postfix } } service imap { vsz_limit = 1 G } service managesieve-login { inet_listener sieve { port = 4190 } inet_listener sieve_deprecated { port = 2000 } } ssl = required ssl_cert = </etc/ssl/certs/unzane/mail.crt ssl_key = </etc/ssl/private/unzane/mail.key userdb { args = /etc/dovecot/dovecot-ldap.conf.ext driver = ldap } protocol lda { mail_plugins = " sieve" } protocol imap { mail_plugins = " antispam lazy_expunge" } -- System Information: Debian Release: 7.0 APT prefers stable APT policy: (500, 'stable') Architecture: amd64 (x86_64) Kernel: Linux 3.2.0-4-amd64 (SMP w/4 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to en_US.UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages dovecot-core depends on: ii adduser 3.113+nmu3 ii libbz2-1.0 1.0.6-4 ii libc6 2.13-38 ii libpam-runtime 1.1.3-7.1 ii libpam0g 1.1.3-7.1 ii libssl1.0.0 1.0.1e-2 ii openssl 1.0.1e-2 ii ucf 3.0025+nmu3 ii zlib1g 1:1.2.7.dfsg-13 dovecot-core recommends no packages. Versions of packages dovecot-core suggests: pn dovecot-gssapi <none> ii dovecot-imapd 1:2.1.7-7 ii dovecot-ldap 1:2.1.7-7 pn dovecot-lmtpd <none> ii dovecot-managesieved 1:2.1.7-7 pn dovecot-mysql <none> pn dovecot-pgsql <none> pn dovecot-pop3d <none> ii dovecot-sieve 1:2.1.7-7 pn dovecot-solr <none> pn dovecot-sqlite <none> ii ntp 1:4.2.6.p5+dfsg-2 Versions of packages dovecot-core is related to: ii dovecot-core [dovecot-common] 1:2.1.7-7 pn dovecot-dbg <none> pn dovecot-dev <none> pn dovecot-gssapi <none> ii dovecot-imapd 1:2.1.7-7 ii dovecot-ldap 1:2.1.7-7 pn dovecot-lmtpd <none> ii dovecot-managesieved 1:2.1.7-7 pn dovecot-mysql <none> pn dovecot-pgsql <none> pn dovecot-pop3d <none> ii dovecot-sieve 1:2.1.7-7 pn dovecot-sqlite <none> -- no debconf information -- Gerald Turner Email: gtur...@unzane.com JID: gtur...@unzane.com GPG: 0xFA8CD6D5 21D9 B2E8 7FE7 F19E 5F7D 4D0C 3FA0 810F FA8C D6D5
diff -r ba770cba5598 -r 4e431b202cfd src/plugins/lazy-expunge/lazy-expunge-plugin.c --- a/src/plugins/lazy-expunge/lazy-expunge-plugin.c Sun Feb 12 18:55:28 2012 +0200 +++ b/src/plugins/lazy-expunge/lazy-expunge-plugin.c Wed Sep 26 21:12:37 2012 +0300 @@ -70,11 +70,11 @@ const char *name; char src_sep, dest_sep; - /* get the storage name, so it doesn't have namespace prefix */ + /* use the (canonical / unaliased) storage name */ name = src_box->name; - /* replace hierarchy separators with destination separator */ + /* replace hierarchy separators with destination virtual separator */ src_sep = mailbox_list_get_hierarchy_sep(src_box->list); - dest_sep = mailbox_list_get_hierarchy_sep(list); + dest_sep = mail_namespace_get_sep(list->ns); if (src_sep != dest_sep) { string_t *str = t_str_new(128); unsigned int i; @@ -87,7 +87,7 @@ } name = str_c(str); } - /* add expunge namespace prefix */ + /* add expunge namespace prefix. the name is now a proper vname */ name = t_strconcat(list->ns->prefix, name, NULL); box = mailbox_alloc(list, name, MAILBOX_FLAG_NO_INDEX_FILES);
pgpBJl9Mt4aZB.pgp
Description: PGP signature