Not logged in
Log in now
Create an account
Subscribe to LWN
LWN.net Weekly Edition for May 23, 2013
An "enum" for Python 3
An unexpected perf feature
LWN.net Weekly Edition for May 16, 2013
A look at the PyPy 2.0 release
LCA: Lessons from 30 years of Sendmail
Posted Feb 2, 2011 19:21 UTC (Wed) by copsewood (subscriber, #199)
Posted Feb 2, 2011 19:22 UTC (Wed) by drag (subscriber, #31333)
This didn't help much, unfortunately.
Posted Feb 2, 2011 20:28 UTC (Wed) by rfunk (subscriber, #4054)
I actually understand the .cf language better than the m4 layer on top of it. A big part of the problem is that the standard configurations available to m4 have lagged too far behind common situations, like "send from our domain, with no local mailboxes". Here's part of the file I saved from my last sendmail excursion... note that it still needs a .cf-syntax line.
dnl We want a nullclient configuration,
dnl except that we want /etc/aliases respected.
dnl So we selectively pull from nullclient.m4 and modify.
ifdef(`confFROM_HEADER',, `define(`confFROM_HEADER', `<$g>')')dnl
dnl Apparently the only way to force Sendmail to send outside this machine
dnl if the recipient address has any way to match the local machine.
R$* < @mydomain.com. > $* $#esmtp $@ mail.mydomain.com $: $1<@mydomain.com.>$2
I like that Allman suggested Postfix for new installs, though of course I think he's wrong about his preference for combining so many functions into one binary.
Posted Feb 2, 2011 20:34 UTC (Wed) by rfunk (subscriber, #4054)
Posted Feb 2, 2011 22:20 UTC (Wed) by jeleinweber (subscriber, #8326)
Other than that minor nit, a great summary.
Posted Feb 3, 2011 9:12 UTC (Thu) by ncm (subscriber, #165)
Posted Feb 2, 2011 23:03 UTC (Wed) by rfunk (subscriber, #4054)
The original problem was that sendmail.cf was considered to be too low-level and overly-flexible. It's like an assembly language for address rewriting.
The "solution" was to put a simple macro language on top of it, combined with a set of boilerplate configurations.
The real problem with that solution, other than m4's syntax rivaling sendmail.cf's syntax in ugliness, is that the person trying to avoid the assembly language of sendmail.cf is limited to the few boilerplate configurations that someone else has provided (and if we're lucky, documented). It's like we got something like a macro assembler for address rewriting, when what was needed was something much higher-level.
And that higher level is what we have with pretty much every other major MTA around today. They don't have the total flexibility of sendmail.cf, but they're both more flexible and easier to deal with than sendmail.mc (which is intended to be easier to deal with but less flexible than sendmail.cf).
Posted Feb 3, 2011 1:20 UTC (Thu) by Cyberax (✭ supporter ✭, #52523)
They do. They just use external modules for that, which is a GOOD thing. I have a set of nice Python scripts to process mail from automatic monitoring systems, and they work just fine with Postfix.
Posted Feb 3, 2011 13:12 UTC (Thu) by nix (subscriber, #2304)
Posted Feb 3, 2011 23:35 UTC (Thu) by Cyberax (✭ supporter ✭, #52523)
Posted Feb 3, 2011 23:11 UTC (Thu) by brianomahoney (subscriber, #6206)
Posted Feb 3, 2011 23:41 UTC (Thu) by rfunk (subscriber, #4054)
It's more procedural than declarative, which is why you need a programmer to change it.
There's really no excuse for its alphabet soup of mailer flags.
And yet I'll happily take sendmail.cf over sendmail.mc.
Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds