[Dovecot] INBOX.INBOX.Sent causes problems in 2.0

Christoph Bußenius
Fri, 12 Oct 2012 14:10:28 -0000

Hi,

we have our namespace rooted at "INBOX.".  Sometimes, users have
folders
like "INBOX.INBOX.Sent" or "INBOX.INBOX.INBOX.Sent".  I do
not know why
these folders are created; I suspect it is due to buggy MUAs.

If a mailbox like INBOX.INBOX.Sent exists, then in some cases Dovecot
counts all messages in INBOX twice.

This behavior can be demonstrated as follows:

1) Create a folder named "INBOX.INBOX.Sent" (using the IMAP CREATE
command)
2) Save a message to "INBOX" (in my example the message is 7 MB)
3) dovecot-quota contains:

priv/quota/storage
7129025
priv/quota/messages
1

4) doveadm quota recalc -u user1
5) Now dovecot-quota contains

priv/quota/storage
14258050
priv/quota/messages
2

I.e. the user will experience that his quota fills up very fast.

"doveadm -f flow fetch -u user1 'mailbox guid' ALL" prints:

mailbox=INBOX guid=040ce73645177850497d000040c59ffc
mailbox=INBOX guid=040ce73645177850497d000040c59ffc

However,
"doveadm -f flow fetch -u user1 'mailbox guid' mailbox INBOX"
prints the
message only once:

mailbox=INBOX guid=040ce73645177850497d000040c59ffc


How can we prevent this kind of confusion?  What I'd like most is
prevent the creation of these weird folders.  Most MUAs have problems
listing them properly, especially if both "INBOX.Sent" and
"INBOX.INBOX.Sent" exist.

Dovecot 2.1 does not seem to count anything twice.

Cheers,
Christoph


Config:

# 2.0.21: /usr/local/dovecot/etc/dovecot/dovecot.conf
doveconf: Warning: service auth { client_limit=4096 } is lower than
required under max. load (6224)
# OS: Linux 2.6.32-42-server x86_64 Ubuntu 10.04.4 LTS
disable_plaintext_auth = no
mail_gid = vmail
mail_location = mdbox:~/mail
mail_plugins = quota
mail_uid = vmail
namespace default {
   inbox = yes
   location    prefix = INBOX.
   separator = .
   type = private
}
passdb {
   args = scheme=CRYPT username_format=%u
/usr/local/dovecot/etc/dovecot/users
   driver = passwd-file
}
plugin {
   quota = dict:ROOT::file:%h/dovecot-quota
   quota_rule = *:storage=5G
}
protocols = imap pop3
service auth {
   unix_listener auth-userdb {
     group = vmail
     mode = 0660
   }
}
service imap {
   process_limit = 5000
}
ssl_cert = </etc/ssl/certs/dovecot.pem
ssl_key = </etc/ssl/private/dovecot.pem
userdb {
   args = /usr/local/dovecot/etc/dovecot/users
   driver = passwd-file
}
protocol imap {
   imap_client_workarounds = tb-extra-mailbox-sep
   mail_max_userip_connections = 20
   mail_plugins = quota imap_quota
}

And the contents of the "users" file:

user1:{plain}secret:::user1:/mail/users/user1::

--
Christoph Bu?enius
Rechnerbetriebsgruppe der Fakult?ten Informatik und Mathematik
Technische Universit?t M?nchen
+49 89-289-18519 <> Raum 00.05.040 <> Boltzmannstr. 3 <>
Garching