My usual mail-management scheme is to rsync my inbox, or at least the
tail end of it, onto my laptop. But rsync doesn't run over
store-and-forward.
...
There's an additional problem that both the sender and the receiver
have to read the entire file before any of it gets transferred, which
is a problem when I'm being charged by the minute in a cafenet.
Rsync sounds heavy: aren't mailboxes append-only? When does the head
of a mailbox change? Why not sequence your inbox as a TCP-style
stream?
To request new mail, send the length of your laptop's mailbox. The
mail cache then replies with the chunk that lies between
(len(mailboxtail) + offset(mailboxtail)) and your request. Same logic
for your mirror, only because the mirror has a full copy, its offset is
always 0. (so if your request is too stale for the cache, it can tell
you to retry with the full mirror)
That, like TCP, runs just fine over store-and-forward.
(how easy is it to generate HTTP Content-Encoded Range Requests from
python?)
-Dave
control over the data I'm rsyncing; with a naive implementation of the
above algorithm, they could send me a chunk of data with the same CRC
as some later email they expect I will get, in order to prevent me
from getting the later email.
This scheme has a similar problem, in that Mallet could send a bogus
update. A slight modification would be to request a sequence starting
a few (from a suitable unbounded random distribution?) pages before the
end of your current mailbox, and signalling an error if the overlaps
ever failed to match.