[Dovecot] Issues with VANISHED CHANGEDSINCE

Michael M Slusarz slusarz at curecanti.org
Mon Nov 5 21:43:11 EET 2012


Quoting Michael J Rubinsky <mrubinsk at horde.org>:

>>>> 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.
>>>
>>> FYI, I see this about once every two weeks, sometimes more  
>>> frequently. Is there anything we can do to reduce the chance of  
>>> this happening?
>>
>> How do you see it? Does it break something? Why?
>>
>> You can change it only by increasing the dovecot.index.log sizes,  
>> which requires changing the code.
>
> It breaks ActiveSync synchronization of mailboxes. When this  
> happens, the sync state of the mailbox needs to be reset, which  
> causes the entire mailbox to be resynchronized to the mobile device.  
> This can lead to a not-insignificant amount of wasted bandwidth and  
> battery power for the device. There have been times when this has  
> happened multiple times in a single day.
>
> Not resetting the state leads to multiple issues on the device due  
> to sending it thousands of deletion commands for messages it knows  
> nothing about.

My argument is much simpler: it is blatantly breaking the RFC.  From  
RFC 5162 [3.2]:

    The VANISHED UID FETCH modifier instructs the server to report those
    messages from the UID set parameter that have been expunged and whose
    associated mod-sequence is larger than the specified mod-sequence.
    **That is, the client requests to be informed of messages from the
    specified set that were expunged since the specified  
mod-sequence.** (emphasis added)

If you are including UIDs in the FETCH return that have NOT been  
expunged since the given mod-sequence, that directly contradicts this  
language.  The clear intent of VANISHED UID FETCH is to provide the  
list of messages that existed in the mailbox at mod-sequence and no  
longer exist in the mailbox as of the current HIGHESTMODSEQ.

As Mike R. has demonstrated, it is plausible that an MUA can only  
provide the MODSEQ of its cache state and has no knowledge of the UIDs  
it has actually cached.  So having to parse through a (potentially)  
giant list of UIDs can be a performance killer (imagine the wasted  
bandwidth of having to upload a million UIDs to a phone every time you  
sync).

michael




More information about the dovecot mailing list