Thanks Mark, that's great info. Much appreciated. I'll give
mix a try on my own email and if all goes well, start converting
others over. We're currently using mail.local so I'm assuming just
switching over to tmail and making the necessary changes in
sendmail.cf is all that we would need to do.
Two more questions - are the creation of the index and status files
in mix a function of the delivery agent (tmail) or a function of the
client agent (imapd/ipop3d)?
Is there a utility or method to rebuild the status and index files if
all that's left is the data files?
Not sure if there would ever be a need to do so, but it would be
more comforting to know that the email itself wouldn't be lost in
the event that the summary/index files somehow become corrupt.
Thanks,
Brian
Mark Crispin wrote:
Since you are using traditional UNIX mailbox format, you can
definitely improve performance by switching to another format.
However, a cautionary note is needed in that you can not use NFS
access with other mailbox formats (as you may have noted from other
threads in this mailing list).
I do NOT recommend use of mh or mx formats. mh is provided only for
legacy users, and it only has the most basic support (no permanent
flags, no sticky UIDs, no keywords, etc.). mx was an experiment which
was abandoned years ago due to disappointing performance results.
Some other formats are also legacy: mmdf, tenex, mtx.
This leaves two formats to consider: mbx and mix.
mbx has been around for 11 years, and has substantial deployment.
Like traditional UNIX format, mbx is a flat file format. Unlike
traditional UNIX format, mbx format allows multiple client sessions to
have the mailbox open read/write. mbx opens require n+1 disk reads,
where n is the number of messages in the mailbox; traditional UNIX
requires that every byte of the file be read. mbx is generally faster
than traditional UNIX in opening a mailbox; how much faster depends
upon the size of the messages in the mailbox (the larger the average
sized message, the faster mbx will be). mbx stores texts in Internet
CRLF form, so it doesn't have to do the newline conversion that
traditional UNIX format is obliged to do.
mix is the newest member of the supported formats in UW imapd
(released just a couple of months ago), and is the result of extended
R&D. mix is a directory-based format, but unlike formats such as mh,
mx, and the maildir format used by qmail (UW imapd does not support
maildir), mix does not require a separate file for each message.
Instead, messages are collected in one or more data files. The
messages are indexed in an index file; mix opens do NOT need to read
any of the message data files. For further reliability, dynamic
message metadata (flags and keywords) are stored in a status file and
not in the index file; thus the index file is only altered when
messages are added or expunged. Last, but not least, mix caches
sort/thread texts so that, once a mailbox has been sorted or threaded,
subsequent sorts/threads even in other sessions are almost instantaneous.
Because mix is not a flat file and messages are split into multiple
data files, mix allows for much smaller incremental backups of the
mail store.
At UW, we currently use mbx in production for our main servers, but
our developers have switched to mix. We'll probably start a
conversion project from mbx to mix on our main servers some time next
year.
The bottom line is that switching to mbx format is the more
conservative and tried-n-true step. It may well buy you enough
breathing room, especially since you say that your big mailbox users
have big attachments as opposed to many messages.
Choosing mix format is the more aggressive and longer-term strategy,
if you can tolerate the risks with being on the bleeding edge. These
risks will certainly become less over time.
-- Mark --
http://panda.com/mrc
Democracy is two wolves and a sheep deciding what to eat for lunch.
Liberty is a well-armed sheep contesting the vote.
_______________________________________________
Imap-uw mailing list
[email protected]
https://mailman1.u.washington.edu/mailman/listinfo/imap-uw