Re: [exim] Exim multi-server architecture with NAS

Top Page
Delete this message
Reply to this message
Author: Phil Pennock
Date:  
To: Robert Blayzor
CC: exim-users
Subject: Re: [exim] Exim multi-server architecture with NAS
On 2020-03-10 at 17:11 -0400, Robert Blayzor via Exim-users wrote:
> Would this be a valid design and what are the caveats? What would a
> better design option be?


Caveat: the guarantee of SMTP is that you have responsibility once you
accept the message, so think carefully about the resiliency of the spool
directory for the servers in front of the NAS, and how you'd recover if
a machine or VM dies.

> One caveat I have run into is that we will have multiple NAS appliances
> holding mailboxes across multiple domains. This raises the issue of the
> Exim router looking at the mailbox user and knowing which NAS/LMTP
> server to deliver the mail to. This may be something as simple as
> putting a value along with the user in the database....
>
> Wondering what other may have done with similar deployments...


If you're avoiding a dependency on the NAS to avoid a single-point of
failure, think about the datastore for the lookups. Resilient RDBMS is
one approach, but building a directory of CDB files and distributing
them might be another approach. One thing I've done in the past is to
have a symlink for the current CDB dir pointing to the current
generation, then for updates copy the current generation, rsync the
updates, then once the rsync is done update the symlink atomically.

Figure out if the NASes should be able to forward to each other if
there's a move or somesuch. But then be careful that a failure of one
server doesn't take them all down.

There are front-end application-layer proxies for IMAP/POP3 which let
you assemble a bunch of mailstores on separate servers into one unified
namespace, so that you can present `imap.example.org` for the entire
domain. Or, you might just tell the customer which server is theirs,
but still think about keeping those names virtual, so that you can move
servers without needing customers/clients to all update.

-Phil