Add requirement for server to be able to generate a list of changes since the last time the client checked. This would support much more efficient use of bandwidth, and hopefully would not require a huge amount of work on the part of the server.

How detailed should the requirement be? Would it be useful to lay out the information to be stored, or should I just specify that servers must be capable (thus encouraging inventiveness among authors)?

Thoughts regarding implementation/specification:

  • Command name: GETLOG timestamp offset

  • Every message state change (attributes, new message, message expunged) will be recorded with a timestamp and change ID in a log file.

  • Every log file entry will have an associated ID token (unique to that log entry) which could be as simple as {timestamp, offset}. Offset could be measured in lines if we're using text files (my preference for now).

  • Should the log files be specific to folders? Or be specific to mail store? I'm leaning toward specific to mail store, with the folder listed in every log entry.

  • Mention recommended default policy of one week worth of changes, but ultimately leave it up to the servers.

  • Clients must be able to deal gracefully with a response indicating the log entry they referenced wasn't found... at that point they have to rebuild their local state.

Thanks to Nicolas Williams for the ideas.