Mailsync is a way of synchronizing a collection of mailboxes. The algorithm is a 3-way diff. Two mailboxes are simultaneously compared to a record of the state of both mailboxes at last sync. New messages and message deletions are propagated between the two mailboxes. If you're familiar with CVS, it's the same principle, except there's no opportunity for conflicts.

Mailsync can be used for many things. I wrote it for synchronizing my desktop mail with my laptop. You can also use it if your mail is kept on an IMAP server, but your favorite mail client doesn't totally grok IMAP---for instance, I use VM under Emacs, and VM keeps a copy of my mail in my home directory, and I synchronize that with the IMAP server. You can keep your mail in arbitrarily many places and keep it all consistent.

Mailsync is based on the "c-client" library developed at the University of Washington. C-client was designed for writing IMAP clients, but it also can access local mailbox files in many formats, with a nearly consistent API. Mailsync's mailboxes can be on IMAP servers, on the local filesystem in UNIX, MH, or any other format c-client supports.

What about "detached client" mode in an IMAP client? Mailsync attempts to solve the same problem in a different way. The "detached client" idea assumes that there's a master server and a periodically-connected client. Mailsync does not designate a server or a client. (In fact, it acts sort of like a client that arbitrates between two servers.)

Currently, the concept of message identity is based entirely on the Message-ID field. This may change.


Further documentation

Tim Culver
Tomas Pospisek
Last modified: Fri Oct 18 11:51:00 CET 2002