NetBSD-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Looking for guidance on filesystem tuning



At Fri, 20 Nov 2009 13:10:15 -0500, Dave B <spam%y2009.dberg.net@localhost> 
wrote:
Subject: Re: Looking for guidance on filesystem tuning
> 
> On Fri, Nov 20, 2009 at 11:54:50AM -0500, Greg A. Woods wrote:
> ...
> > I'd say just use Cyrus IMAPd, and in addition I'd say avoid Dovecot, and
> > avoid Courier-imap, and especially avoid imap-uw.  I say this as a
> ...
> 
>   What about dbmail with dbmail-imapd?

Hmmm...  I've never heard of it until now.

In general it does worry me a lot though when anyone combines the
acronym "db" with the word "mail" as I fear the worst and suspect
they're trying to use a general-purpose relational database as their
hammer to solve all problems.  Even worse is when the excuse for using
an RDB for e-mail storage is that it offers SQL to the user.

Indeed I now see from the pgksrc description of mail/dbmail that this is
_exactly_ the kind of abuse I was worried about.

Seriously, Cyrus IMAPd has been fairly carefully designed so as to use
the most optimum data structures possible for each given task inside the
mail storage system thus optimizing the overall application, and indeed
at the source code level it is modular and easily accepts new or better
data storage mechanisms for each of its various "database" requirements.

It really saddens me that so-called "database" people (such as whomever
wrote DBMail and its description for pkgsrc) don't seem to realise (or
at least admit) that filesystems _are_ databases, and filesystems are
carefully optimised to manage and control chunks of variable sized data,
something like exactly what mail messages are.  A major part of an
e-mail storage system does not require anything like what a general
purpose relational database system is designed to offer, especially not
one which uses SQL as its interface language.  What is best done in an
e-mail storage system by indexing structures more sophisticated than the
filesystem offers is already handled well by appropriate optimized
indexing tools provided inside Cyrus IMAPd.

As for scalability, well sure, I've seen truly gargantuan RDB
installations of various kinds.  DBMail's web page claims that they
_think_ it can handle millions of users.  Well, no need to think about
it with Cyrus IMAPd, which has been proven to work well with millions of
users in current configurations.  Informal reports on various forums
suggest DBMail requires as much as an order of magnitude more hardware
capacity and speed than an equivalent load in Cyrus IMAPd.

The one basic benchmark I've seen which included DBmail does not include
Cyrus IMAPd, though extrapolation from the other results suggests that
Cyrus IMAPd would be several times faster than DBMail at fetching
metadata, and probably equally fast at fetching messages, and perhaps
orders of magnitude faster at accepting new messages from LMTP in a
clustered configuration.

From a security perspective there are some similarities between Cyrus
IMAPd and DBMail, but with the use of SQL as part of a network service
offering in the latter, well, I can't even begin to imagine how many
more possibilities for problems this might present.

Also on the security front I'd really like to see what benefits could
come from rewriting something like Cyrus IMAPd in Google's Go(lang).
I.e. keep the same basic design, and hopefully as much backwards
compatibility as possible, at least with cvt_cyrusdb still in the
picture.  I'm really very ready to give up on C for many/most purposes.

-- 
                                                Greg A. Woods
                                                Planix, Inc.

<woods%planix.com@localhost>       +1 416 218 0099        http://www.planix.com/

Attachment: pgp9QazaxtWef.pgp
Description: PGP signature



Home | Main Index | Thread Index | Old Index