Our old mail system's configuration
Before I can talk about more interesting mailer things, I have to explain how our old mail system was configured.
Our old mail system makes perfect sense once you realize that it was
more or less designed around the idea that nothing should ever have
to be done over NFS. In order to manage this, each different sort of
processing had to be done on the machine that held the relevant files;
/var/mail were done on the postbox machine, which had
/var/mail on local disks, and mail for real users was handled on the
user's fileserver, because only that machine could even check for a
.forward (much less expand it) without NFS being involved.
So the mail flow for incoming mail went like this:
- mail came in to the central mail machine, which expanded aliases and
local mailing lists (using data files that it held on its local
disk). The central mail machine was the MX target for our domains.
- mail for users was then sent to the user's fileserver. If the user
.forwardit was expanded; otherwise the fileserver sent it to the postbox machine (and sent a copy to the 'oldmail' machine, which kept a read-only copy of the past 14 days or so of email for each user).
Users were encouraged to have procmail and so on deliver their mail not by directly writing it to
/var/mail(which would have involved NFS) but by forwarding it to the postbox machine.
- finally, the postbox and oldmail machines actually delivered the mail to the appropriate mailspool.
Mail routing was done by rewriting the destination addresses. Partly as a result, the postbox and oldmail machines only did their delivery for addresses in magic forms; if you sent other mail to them, they passed it back to the central mail machine.
(The fileservers passed email for the outside world back to the central machine instead of trying to deliver it directly. This had both good and bad effects.)
One consequence of this design is that all of the machines involved had
to NFS export things to our login and compute servers, because they
all had local storage. The postbox machine had to export
the oldmail machine had to export
/var/oldmail, and the central mail
machine had to export the data area for local mailing lists so people
could change them.
(Conveniently, the postbox machine was also the IMAP/POP server, so that bit didn't have to worry about mailbox locking over NFS.)
There was a separate mail submission machine for outgoing user email, whether from our servers or from user PCs. It forwarded mail for local destinations to the central mail machine and otherwise sent the mail directly to the outside world.