Wandering Thoughts archives

2009-10-21

Why you should be able to get a list of your local email addresses

There is a decided tendency to create what I will call 'black-box' mailer configurations: you have a single mailer machine, and it is the only thing that knows what is and isn't a valid local email address (and sometimes, what is and isn't a local host or domain name). In such a configuration, the only way you can find out if a local address is good is to feed it to your mailer and see if your mailer rejects it (hopefully at SMTP time).

(It's very easy to create such a system, temptingly easy, even; you just start writing rules for what your mail system should do with addresses, as clever or as odd as you want. And let me tell you, with some mailers you can create pretty crazy things.)

I've come around to feeling that these black-box setups are a mistake, one that will eventually bite you on the rear. The core problem is that you can't reuse the knowledge of what local email addresses are valid, because that knowledge exists only implicitly in the mailer configuration; there is no explicit knowledge of it that other things can use.

As I have found out (almost the hard way), many of the ways that you'll want to expand and scale up your mail setup require such knowledge, in a simple, easily usable form. Want a good backup MX or a redundant MX? You'll need to know this. Want to move inbound email processing onto a separate machine in order to lower the load on your main mailer and do clever anti-spam filtering? You'll need to know this. Want to create a mail gateway for your local users that rejects invalid local usernames at mail submission time? You're getting the idea.

Thus, what you really want is a 'white-box' mailer configuration, one where it's feasible to generate a list of all of your valid local email addresses (and valid local domains). Having such a list is pretty much required to expand beyond a single mailer machine (possibly with some dumb satellites), and sooner or later you're all but certain to want to do this.

(Your actual central mailer configuration doesn't have to be based on the lists that you generate, although my experience is that making it partly so keeps you honest. In theory it's enough that you do generate the lists and you never let your mailer configuration get to a point where they're either inaccurate or incomplete, but remember the aphorism; if you're not using it, it's inaccurate.)

There are probably lots of ways of storing and using this information. I like plain flat text files, because they're easy to handle and pretty much anything that you want to have anything to do with can look things up in flat files. (And if you have such a huge volume of data that it's a problem, you can always convert them to more efficient lookup formats.)

sysadmin/WhiteBoxMailers written at 00:38:37; Add Comment


Page tools: See As Normal.
Search:
Login: Password:
Atom Syndication: Recent Pages, Recent Comments.

This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.