Hacker News new | ask | show | jobs
by _nickwhite 1539 days ago
How many greybeards here remember the O'reilly Sendmail bat book[1]? I built an ISP off of deciphering cryptic sendmail.cf parameters from it. This is what the "fix" in Postfix aims to "fix".

(Although the Postfix config files are no walk in the park either.)

[1] https://www.oreilly.com/library/view/sendmail-4th-edition/97...

2 comments

But you don’t need to know cryptic sendmail.cf parameters, you can just use m4 macros which are totally not cryptic at all.
For the benefit of those fortunate enough to have never had to configure that beast, you can find any number of terrifying examples. Here's one: https://tldp.org/LDP/nag2/x14661.html#X-087-2-SENDMAIL.MC.UU...

From that, we see

  LOCAL_NET_CONFIG
  # This rule ensures that all local mail is delivered using the
  # smtp transport, everything else will go via the smart host.
  R$* < @ $* .$m. > $* $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3
  dnl
Clear as day, right?
it's been a few decades that i had to deal with sendmail (i have a vage memory of having read the whole book on it, though i could be wrong because i also remember joking that i was waiting for the movie instead of reading the book)

anyways, after staring at this for a few minutes and without looking up any syntax, a few things became noticeable:

R$* < @ $* .$m. > $* is matching a pattern, with each $* being assigned to $1, $2 and $3 respectively.

$m must contain the local domain. so effectively this pattern matches any mail addressed to a host with the local domain.

$#smtp if that pattern matches, use smtp,

$@ $2.$m. by connecting to $2.$m. (which means, just use the host that was specified in the original mail)

$: $1 < @ $2.$m. > $3 (not sure what this part does. my guess is: rewrite the email address as specified here, that is in this case don't rewrite it at all.)

it's terse, but regular expressions are worse than this particular example.

now i need to go look up the syntax to see how much i actually got right.

for example i have no idea what the $3 parameter is for. i am guessing $1 is the part before the @ in an email. $3 could be the From address or have something to do with alternate addressing schemes

There were lots of people who could read this for a living. I was more or less able to at one point. Wow, I'm glad that I don't have to anymore, though, in much the same way I'm glad I never had to learn TECO.
TECO isn't actually that bad, and I'd argue that it's roughly on the level of vi in complexity. I learned it just for fun, and found it more powerful than vi. I was using videoteco when I learned it, and I recommend it to anyone that also wants to play around with this.

I definitely would never want to go back to configuring sendmail though. Unlike TECO it doesn't provide anything compared to a modern mail product.

You can now. That was not always the cas e, and that is one of many reasons I used postfix instead of sendmail back in the day.
Poe's Law in full effect.
You made an ISP, this guy made Turtle Race[1]. What was that about Postfix being complex? ;)

1. https://www.linusakesson.net/programming/sendmail/index.php