On Mar 24, 2009, at 3:02 AM, Wouter van der Schagt wrote:

Is the problem that mail doesn't actually get deleted when IDLE is used, or that a client being in IDLE is somehow causing qmail-local to give the quota errors incorrectly? I can't see how the latter would be possible, IDLE really has nothing to do with quota..

Just a thought...could it be that IDLE prevents a neccessary file handle
from being released?

There is only one difference between what IDLE does and what a non- IDLEing connection does: If inotify/dnotify/kqueue is enabled, Dovecot notices immediately when a new mail pops up in new/ or cur/ directory and does a resync. Hmm. Actually now I see one possibility if qmail- local was written in a stupid/buggy way:

1. qmail-local does rename tmp/file -> new/file
2. Dovecot notices new/file and renames it to cur/file:2, immediately
3. qmail-local stats new/file to see if rename() succeeded (not necessary), notices it's no longer there and fails with quota failure (..but why quota failure?..)

That's the only explanation I can think of. This could be tested by compiling Dovecot with --with-notify=none configure option, which would cause IDLE to check for new mails only once in a while and make it much less likely to hit the race condition.

Reply via email to