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:
- qmail-local does rename tmp/file -> new/file
- Dovecot notices new/file and renames it to cur/file:2, immediately
- 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.