james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Joe Cheng" <jmch...@alum.mit.edu>
Subject RE: IMAP Development Pointers
Date Thu, 04 Sep 2003 23:22:18 GMT
For what it's worth, I had more or less completed a mailstore for my own
IMAP server after I decided not to work directly on James.

Here are some performance stats:
http://www.joecheng.com/blog/entries/Mailstoreperformancetests.html

In my mailstore implementation, each folder is a directory and the raw
RFC822 of each message is stored as its own file.  There is also a
metadata repository per folder; this is managed using Prevayler.  My
rationale here was that most operations that involve many messages only
involve the metadata, so by keeping that stuff small and together you
can avoid thrashing when, for example, you want to get all the unread
UIDs in a folder with 100,000 e-mails (takes 40ms with my
implementation, on my laptop, with 1 concurrent user).

The metadata doesn't help when doing the only other operation that
potentially goes across all files: doing a search.  But if you're using
Lucene or something similar, then it basically doesn't matter.  Also, I
was surprised to discover that none of the "mainstream" Windows e-mail
clients out there even use server-side searching (I believe I tested
Outlook Express, Outlook, Mozilla... it was a while ago though).  I
think the most common client that does is Mutt (or Pine?  I forget).

E-mail me if you want my source, or if I can otherwise be of assistance.

-jmc


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


Mime
View raw message