Guilhem Moulin
2015-Sep-15  16:08 UTC
2.2.18 Regression: Incorrect STATUS response for virtual mailboxes
As shown below, adding a message to TRASH doesn't increase
virtual/test's MESSAGES count.  However SELECTing virtual/test triggers
the increase; so does running `doveadm mailbox status vsize
virtual/test` in another shell.
  $ mkdir -m0700 ~/mail/virtual/test
  $ echo -e "TRASH\n\tall" > ~/mail/virtual/test/dovecot-virtual
  $ /usr/lib/dovecot/imap
  S: * PREAUTH [CAPABILITY IMAP4rev1 ? ] Logged in as guilhem
  C: a STATUS TRASH (MESSAGES UIDNEXT UNSEEN)
  C: b STATUS virtual/test (MESSAGES UIDNEXT UNSEEN)
  S: * STATUS TRASH (MESSAGES 5599 UIDNEXT 5619 UNSEEN 0)
  S: a OK Status completed (0.001 secs).
  S: * STATUS virtual/test (MESSAGES 5599 UIDNEXT 5600 UNSEEN 0)
  S: b OK Status completed (0.032 secs).
  C: c APPEND TRASH {1+}
  S: x
  S: c OK [APPENDUID 1442277584 5619] Append completed (0.029 secs).
  C: d STATUS TRASH (MESSAGES UIDNEXT UNSEEN)
  C: e STATUS virtual/test (MESSAGES UIDNEXT UNSEEN)
  S: * STATUS TRASH (MESSAGES 5600 UIDNEXT 5620 UNSEEN 1)
  S: d OK Status completed (0.000 secs).
  S: * STATUS virtual/test (MESSAGES 5599 UIDNEXT 5600 UNSEEN 0)
  S: e OK Status completed (0.000 secs).
  # it doesn't help to LOGOUT and issue the STATUS command again.  However,
  # it does to execute `doveadm mailbox status vsize virtual/test` in another
  # shell, or to SELECT virtual/test in the IMAP session.
  C: f STATUS TRASH (MESSAGES UIDNEXT UNSEEN)
  C: g STATUS virtual/test (MESSAGES UIDNEXT UNSEEN)
  S: * STATUS TRASH (MESSAGES 5600 UIDNEXT 5620 UNSEEN 1)
  S: f OK Status completed (0.000 secs).
  S: * STATUS virtual/test (MESSAGES 5600 UIDNEXT 5601 UNSEEN 1)
  S: g OK Status completed (0.000 secs).
Cheers,
-- 
Guilhem.
-------------- next part --------------
# 2.2.18: /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.8 (0c4ae064f307+)
# OS: Linux 4.1.0-2-686-pae i686 Debian stretch/sid 
listen = 127.0.0.1, ::1
mail_location = maildir:~/mail
mail_plugins = virtual
mailbox_list_index = yes
namespace inbox {
  inbox = yes
  location = 
  mailbox DRAFTS {
    auto = create
    special_use = \Drafts
  }
  mailbox SENT {
    auto = subscribe
    special_use = \Sent
  }
  mailbox SPAM {
    auto = create
    special_use = \Junk
  }
  mailbox TRASH {
    auto = create
    special_use = \Trash
  }
  mailbox virtual/all {
    special_use = \All
  }
  mailbox virtual/flagged {
    special_use = \Flagged
  }
  prefix = 
  separator = /
}
namespace virtual {
  hidden = no
  list = no
  location = virtual:~/mail/virtual
  prefix = virtual/
  separator = /
}
passdb {
  driver = pam
}
plugin {
  sieve = file:~/sieve;active=~/.dovecot.sieve
}
protocols = " imap"
service imap-login {
  inet_listener imap {
    port = 0
  }
  inet_listener imaps {
    port = 0
  }
}
ssl = no
userdb {
  driver = passwd
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL:
<http://dovecot.org/pipermail/dovecot/attachments/20150915/f7adb48e/attachment.sig>
Timo Sirainen
2015-Sep-22  10:50 UTC
2.2.18 Regression: Incorrect STATUS response for virtual mailboxes
On 15 Sep 2015, at 19:08, Guilhem Moulin <guilhem at fripost.org> wrote:> > As shown below, adding a message to TRASH doesn't increase > virtual/test's MESSAGES count. However SELECTing virtual/test triggers > the increase; so does running `doveadm mailbox status vsize > virtual/test` in another shell.Fixed: http://hg.dovecot.org/dovecot-2.2/rev/587226389203 A workaround would be to use mailbox_list_index=no
Apparently Analagous Threads
- Race condition in IMAP NOTIFY for events received NOTIFY_DELAY_MSECS apart
- NOTIFY regression: 2.18 no longer notifies of events in INBOX
- RFC 5465 (NOTIFY) violation: missing HIGHESTMODSEQ in initial STATUS responses
- "NOTIFY SET (mailboxes INBOX (...))" crashes the IMAP client
- "NOTIFY SET (mailboxes INBOX (...))" crashes the IMAP client