[Linux-cluster] High availability mail server

Gordan Bobic gordan at bobich.net
Tue Oct 27 01:00:36 UTC 2009


On 27/10/2009 00:25, Rick Stevens wrote:
> Ray Burkholder wrote:
>>> High avail. Mail? That's what MX records are for. Performance, would
>>> be a side effect of multiple MXs. Having it "clustered" wouldn't make
>>> mail deliver any quicker. Why make something so simple into something
>>> complex?
>>>
>>
>> Mail delivery and MX records are easy. But once mail is received, you
>> have
>> to get it to user's mail boxes, and users have to gain access to the
>> repository. The repository should be 'highly available' in some fashion:
>> partitioned storage units, redundant storage, replicated storage, backup
>> storage, or whatever. I believe that is the hard bit: making the
>> repository 'highly available'.
>>
>> How do people do it?
>
> It rather depends on which services you're going to offer. An NFS
> volume as a mailstore will work, but doesn't play nicely with multiple
> POP3 servers accessing it, and it's slow. Lots of POP servers rewrite
> the entire mailbox when a user logs in (copy it to a working file, futz
> with that, then rewrite the original when they log out). With IMAP it's
> OK but still not ideal.

POP3 can be Maildir backed, just like IMAP, so the performance would be 
similar. Ironically, if you're using mbox format rather than maildir, 
the performance may well be better on GFS with concurrent access due to 
fewer files, up to the point where the bandwidth becomes dominant to 
latency in the performance equation.

> The primary problem is the lack of file locking. GFS can address this,
> but only if the servers recognize locks on the file system (many POP
> servers have to be recompiled to use this, qpopper being one).

Mail servers like Dovecot (both POP3 and IMAP) use Maildir, and this was 
originally specifically designed to play nice with NFS and locking.

> If the only locking they do is purely in-kernel and won't deal with a
> lock manager or filesystem-level locks, then multiple machines will
> collide on the mailstore and there really isn't any way around it.

Maildir uses flock which plays nice with NFS provided you have locking 
enabled.

> My recommendation...get and install Cyrus IMAP and POP services, use
> GFS and a good lock manager (e.g. DLM). That should work.

You don't get a choice of lock manager on GFS any more. DLM has been the 
only production option for a long time. The problem is that heavy use 
(lots of concurrent users) with Maildir on GFS will perform rather 
poorly unless you logically partition your users in some way (e.g. have 
a custom proxy in front of it that does load balancing between server 
nodes based on the hash of the username). This would ensure that the 
locks can be sanely cached on the server nodes rather than be bounced 
around all the time.

Gordan




More information about the Linux-cluster mailing list