According to what I read, if a client does a search and then does nothing for 45 minutes, the server CANNOT send any expunge messages because it does not know if the next command MIGHT be a fetch.
Right.
And it's justified, too. Suppose you send an unsolicited
* 1 EXPUNGE
and 0.01 seconds later you receive the command
a FETCH 2 RFC822.TEXT
What should you do? Should you assume that the client had or had not yet received and processed the EXPUNGE? There is no answer, so you have to avoid that situation.
As my server stands ATM I can have four clients connected and they all remain perfectly in sync.
I'll bet that's because they mostly use UID FETCH.
--Arnt
