On 5.11.2012, at 18.13, Michael J Rubinsky wrote:
I've been seeing the following wonky behavior with Dovecot. Currently this is with Dovecot 2.0.19, but I was also seeing it in earlier versions as well, including versions from the 1.x series. Some background, this is from Horde's ActiveSync library, when it is trying to determine what UIDs have recently been expunged. I can guarantee that when this command was sent, there was only one or two emails that were removed since the provided MODSEQ value. .. <quote> There's definitely something wonky going on in the code. There's a certain tipping point of modseqs where the values become incorrect.
I don't think they become incorrect, just that there are more of them than really necessary? Yes, there's a tipping point. It's when the modseq no longer exists in the dovecot.index.log* files, which get rotated once in a while. This shouldn't happen very often.
For a mailbox with HIGHESTMODSEQ of 54004, I see this:
a uid fetch 1:* UID (VANISHED CHANGEDSINCE 53881)
- VANISHED (EARLIER) 1:37308,37310:40788,40791:41032,41034:41083 a OK Fetch completed. b uid fetch 1:* UID (VANISHED CHANGEDSINCE 53882)
- VANISHED (EARLIER) 41029:41030,41047:41083 b OK Fetch completed. </quote>
So in b) case Dovecot read the dovecot.index.log and returned the expunges found from there. In a) case it didn't know what was expunged since the modseq, so it returned UIDs of all the expunged mails.