Richard Pickett wrote:
> I've searched around and haven't come up with anything definative and
> was hoping someone here could just point me in the right direction, I'm
> sure this has come up in the past, but my searches aren't coming up with
> what I'm looking for.
>
> It appears since there are so many accounts it takes the server a long
> time to parse the directory entries to get to the correct account when
> someone is (a) receiving email or (b) reading their email.
This doesn't have to be the case. Rather than storing all your mail in
one folder, use sub folders. A simple example:
Instead of: /var/spool/mail/username
Use: /var/spool/mail/u/username
Ie, keyed on the first letter of the username. That in it's self would
reduce you down to about 1000 accounts per folder (assuming even
usernames), which is usually managable.
> This equals
> more load on the server and over time I'm sure we're going to reach a
> load limit and lose email. We'd like to implement a solution where the
> accounts are split across multiple machines, but how to split (a) the
> incoming email to it's correct backend email server and (b) the
> pop3/webmail requests to the correct backend servers. I know I can do
> (b) webmail by using a reverse proxy, but that still wouldn't handle
> pop3 or the delivery to the correct server (part a).
Create a database of address->server mappings, then use manualroute
routers in exim to deliver to the appropriate server, using the
appropriate db lookup method.
Then use a perdition reverse pop proxy pointing at the same db to decide
which server to route the pop connections to.
Alternatively, have one fat beefy file store, and just nfs mount the
space on each server, and have them access the mail locally.
Mike