1. You recommend using a digest of the message to generate the message ID. Did you consider mandating that scheme or going farther and using a Merkle tree for the mailbox representation? It seems like this would allow for generating single requests that can fetch all new items.
2. Why SHA-1?
Edit: Also, thanks for keeping Fastmail running. As a customer of about ten years it's much appreciated.
No mandated format for message-ID. If you are proxying an existing store with a stable message-ID, you can just use that. My partially written gmail proxy uses the MSGID from Gmail, for example.
SHA1 was a good balance between speed and unforgability at the time. There's still no known collision, and I'm working on putting a piece of randomness into the LMTP headers that are added to every message on delivery into Cyrus to make it even safer.
1. You recommend using a digest of the message to generate the message ID. Did you consider mandating that scheme or going farther and using a Merkle tree for the mailbox representation? It seems like this would allow for generating single requests that can fetch all new items.
2. Why SHA-1?
Edit: Also, thanks for keeping Fastmail running. As a customer of about ten years it's much appreciated.