[Dovecot] needing UNSELECT to notice new mail?

Timo Sirainen tss at iki.fi
Thu May 24 16:18:43 EEST 2007


On Thu, 2007-05-24 at 16:08 +0300, Timo Sirainen wrote:
> On Thu, 2007-05-24 at 16:03 +0300, Timo Sirainen wrote:
> > > Or should dovecot be not relying on cached state and revalidate the
> > > mailbox on STATUS, even if it is already SELECTED?
> > 
> > Dovecot checks if new/ or cur/ directory's mtime changed. If neither
> > did, it trusts its cached state (basically, there's another
> > dirty-recheck-rule).
> 
> Ah, right. I tested it immediately after replying and looks like STATUS
> for a selected mailbox is a bit special. It doesn't synchronize the
> mailbox before or after the lookup. I'm not sure if there's a reason for
> this, but this most likely won't get fixed for v1.0.x.

Sorry for the mail flood :) So the above means that Dovecot replies with
STATUS the current known mailbox state. So for example "NOOP + STATUS"
will reply the latest changes, but simply doing STATUS won't change
anything. I'm not sure what your original example about EXPUNGE + STATUS
meant, because that should have shown the current state after the
EXPUNGE.

And then some choice quotes from RFC 3501:

      It does not change the currently selected mailbox, nor does it
      affect the state of any messages in the queried mailbox (in
      particular, STATUS MUST NOT cause messages to lose the \Recent
      flag).

This is probably why Dovecot doesn't synchronize the mailbox.
Synchronizing it would lose the \Recent flags. Although this probably
wasn't intentional when writing the above, I think it would still be
wrong for server to do that. It's a pretty clear MUST NOT there.

           Note: The STATUS command is intended to access the
           status of mailboxes other than the currently selected
           mailbox.  Because the STATUS command can cause the
           mailbox to be opened internally, and because this
           information is available by other means on the selected
           mailbox, the STATUS command SHOULD NOT be used on the
           currently selected mailbox.

Right. What I said. You don't need it.

           The STATUS command MUST NOT be used as a "check for new
           messages in the selected mailbox" operation (refer to
           sections 7, 7.3.1, and 7.3.2 for more information about
           the proper method for new message checking).

So gnus is breaking a "MUST NOT" from the RFC.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://dovecot.org/pipermail/dovecot/attachments/20070524/9df4ffcb/attachment.bin 


More information about the dovecot mailing list