The Cyrus IMAP server
The Cyrus IMAP server was
developed by Carnegie Mellon University as a replacement for their Andrew
Message System. Cyrus has a number of interesting properties as an IMAP
server:
One message per file
- Minimal overhead removing messages from anywhere in folder.
- Supports single instance store layered on top of a normal filesystem.
Index and Cache files.
- No expensive stat() operations required when opening mailfolder (other
file per message stores can work around this one by building
information into filenames).
- Don't have to open() every message for threading or searching
- Can return BODYSTRUCTURE and individual MIME attachments without having to
parse message
Safe concurrent access:
- Allows simultaneous access by same user at different locations
- Each user has their own independent record of messages seen in a folder.
- Full ACL system: Much finer grained than Unix permissions.
Local Customisation to Cyrus
We have made a number of modifications to Cyrus to meet local needs. These
modifications full into four broad categories:
The patches are available here.
We also wrote a small, stateless,
IMAP and POP proxy server. This was principally because the Murder
software was still rather immature when we started this project in 2002 :
it seems to have stabilised quite nicely in the intervening time. The
Murder has the substantial advantage that it provides transparent support
for shared mailfolders.
David Carter
<dpc22@cam.ac.uk>