The future of our homedir-based mail server system design
In a comment on my entry on our self-serve system for autoreplies, I was asked a very good question:
Do you think it will ever be possible for you to move to a non-homedir-based mail server at all?
My answer is that I no longer think it would be a good thing for us to move to a non-homedir-based mail system.
Most mail systems segregate all mail storage and mail processing
away from regular user files. As the commentator is noting, our
mail system doesn't work this way and instead does things like allow
users to have
.forward files in their home directories. Sometimes
this causes us difficulties, and so the question here is a sensible
one. In the past I would have told you that we would eventually
have to move to an IMAP-only environment where mail handling and
storage was completely segregated from user home directories. Today
I've changed my mind; I now think that we should not move mail out
of people's home directories. In fact I would like more of their
mail to live under their home directories; in an IMAP-only environment,
I would like to put people's INBOXes somewhere in there too, instead
of in the shared
/var/mail filesystem that we have today.
The reasons for this ultimately come down to that eternal issue of storage allocation, plus the fact that any number of our users have quite a lot of email (gigabytes and gigabytes of it). No matter what you do about email, it has to live somewhere, and someone has to pay for the storage space, the backups, and so on. In our environment, how we allocate storage in general is that people get however much disk space they're willing to pay for. There's various obvious good reasons to stick with this for mail storage space, and once we're doing that there are good reasons to stick with our standard model of providing disk space when providing mail folder space, including that we already have an entire collection of systems for managing it, backing it up, and so on. Since we use ZFS pools, in theory this mail storage space doesn't have to go in people's home directories; we could make separate 'mail storage' filesystems for every person and every group. In practice, we already have home directory filesystems.
It's possible that IMAP-only mail storage in some dedicated format would be more efficient and faster than what we currently have (most people keep their mail in mbox format files). In practice we don't have a mail environment that is that demanding (and since we're moving an an all-SSD setup for all storage, our IO rates are about to get much better anyway).
As far as things like
.forwards go, my view is that this is a
pragmatic tradeoff. Supporting .forwards ties our hands to some
degree, but it also means that we don't have to build and commit
to a user accessible server side mail filtering system, with all
of the many questions it would raise. As with mail folder storage,
using people's home directories and all of the regular Unix
infrastructure is the easiest and most obvious approach.
PS: Our Unix-focused approach is not one I would necessarily recommend for other environments. It works here for various reasons, including that we already have general Unix login servers for people to use and that we don't have that many users.