ASIS - asynchronous streaming IMAP synchronizer
======================================================================

=> What is this all about ?

It is about operating IMAP mailboxes in IMAP offline mode. This is the 
most sophisticated mode of the three IMAP operation modes. It allows you
to have cached copies of your IMAP mailboxes on one or more disconnected
machines.
  An example case: You are travelling with a notebook and only have 
temporary internet connection (e.g. once a day, ...).

=> So why don't just use fetchmail / scp / rsync ?

Fetchmail gets the messages from the server, which is one direction. What
happens after I read the emails on my notebook? The status change (message
unred -> read) does not get propagated to the server, and thus not to 
the email reader where I ususally read my email. So after I return home, 
all messages which I have already read, are marked as unread. Very 
unsatisfactory.

=> I've heared about isync, isn't it doing exactly the same ?

Partly true. Isync was used as the basis for asis, both in ideas and source.
Isync does exactly the same job, although it's way slower. Why ?
  Isync works synchronously, i.e. the chronolgical order is something like:

- send get request mail 1
- receive mail 1
- send get request mail 2 
- receive mail 2

Which is quite unsatisfactory if you receive a lot of emails (let's say 
multiple houndret's a day because you're a linux hacker) over a very low
latency link (let's say you are in south america and the server is in 
europe). You have at least one round-trip per email you receive. That's
in my case at least 800ms per email, although the bandwidth available 
is around 50kbyte/sec, no more than 5% of this bandwidth is used :(

asis on the other hand is streaming the get requests for all mails as fast
as possible, thus the server is able to stream the requested emails without
any additional latency involved. In other words: Speed of synchronization is no
longer dependent on latency, but only bandwidth bound.

=> Acknowledgements

I'd like to thank Michael Elkins, the author of isync. Using parts of his
source saved me quite some time. Additional thanks to the IETF people who
invented IMAP, it's just great ;)

- Harald Welte <laforge@gnumonks.org>
