I’m interested to know how OpenSMTPd compares to qmail. @tedu?
Well for starters, qmail hasn’t been updated since 1998. There are a ton of add-on patches that add modern features to it, but they weren’t written by djb and might have questionable security. But if nothing else, OpenSMTPD has a “normal” configuration mechanism that is much more reasonable than qmail’s.
I was able to figure out how to use smtpd? I tried qmail about ten years (I assume nothing has changed since) and couldn’t get all the parts working together. I was able to get opensmtpd running even on linux in a matter of minutes. The hardest part was finding a secret ubuntu decoder ring to figure out what package contained the dependencies I needed. Actively maintained and improved. It’s not done yet, but supports new fangled features like TLS without patching.
OpenSMTPD has a similar architecture to qmail, but that’s true of postfix too. I’ve previously used postfix. Also a configuration nightmare. That’s actually what led me to using smtpd on Linux. I was switching servers and couldn’t cope with the prospect of trying to replicate my postfix config on the new server.
I find Postfix’s configuration pretty easy to work with, though I’ve been doing it for many years. It does have lots of knobs but that’s bound to happen when the software has lots of features.
I’ll happily use OpenSMTPD on my servers where it’s just replacing sendmail: as a way for cron to e-mail things to me. But for actual mail servers or where I need to do anything complex like rewriting, piping to user programs (such as Lobsters' mail-to-web poster or Pushover’s email-to-API script), or virtual mail setups, I’ll probably just continue to install Postfix.
Regardless of possible features, I find the imperative style config much easier vs declarative style. No idea if I’m using those terms correctly. What I mean is smtpd.conf contains lines like “accept from here relay via there” that say exactly what’s happening. postfix instead sets a ton of variables like smtp_accept_from_hosts and smtp_make_the_relay_go_there, but the verbs are implicit.
As soon as you get even mildly complicated, like permitting passwordless relay from localhost but require auth from remote, postfix requires about a dozen variables to describe that. smtpd.conf is two lines.
I think pf’s greatest contribution is a uniform config file syntax that works for a lot of things other than pf.conf, leading to a consistent feel.
I think different styles work for different types of software. pf works with many rules that have similar syntax, but Postfix just has lots of individual knobs that adjust global settings because you typically don’t have different configurations for different interfaces or domains. pf also has global “set” commands that don’t make sense as rules like “set limit states 20000” which is basically what most of Postfix’s configuration options are. Postfix has tons of things like this (in the output of postconf):
unknown_hostname_reject_code = 450
unknown_local_recipient_reject_code = 550
unknown_relay_recipient_reject_code = 550
unknown_virtual_alias_reject_code = 550
unknown_virtual_mailbox_reject_code = 550
unverified_recipient_defer_code = 450
I would wager if the default Postfix configuration file were trimmed down to just a bare-bones block that had only the things most people needed to adjust, it would seem a lot simpler.
There are folks who have run smtpd on production instances for more than a year. Its proven to be useful for the folks who have used it. I cannot compare it to qmail since it’s been ages since I used it, but if you have a specific question it might be better to ask it.
I didn’t have a more specific question.
I was curious about “Why not postfix” and got a pretty good answer here: http://www.reddit.com/r/BSD/comments/2097kb/openbsd_switches_to_opensmtpd_by_default/cg1h4rj
Basically - due to the IBM Public License