Happy 2019! Another three months, another stable branch for pkgsrc, the practical cross-platform Unix package manager. I’ve shipped quite a few improvements for qmail users in our 2018Q4 release. In three sentences:

  1. qmail-run gains TLS, SPF, IPv6, SMTP recipient checks, and many other sensible defaults.
  2. Most qmail-related packages — including the new ones used by qmail-run — are available on most pkgsrc platforms.
  3. rc.d-boot starts rc.conf-enabled pkgsrc services at boot time on many platforms.

In one:

It’s probably easy for you to run qmail now.

On this basis, at my DevOpsDays NYC talk in a few weeks, I’ll be recommending that everyone try it.

Try it

Here’s a demo on CentOS 7, using binary packages:

The main command I ran:

$ sudo env PKG_RCD_SCRIPTS=yes pkgin -y install qmail-run rc.d-boot

Here’s another demo on Debian 9, building from source packages:

The commands I ran:

$ cd ...pkgsrc/mail/qmail-run && make PKG_RCD_SCRIPTS=yes install
$ cd ../../pkgtools/rc.d-boot && make PKG_RCD_SCRIPTS=yes install

These improvements were made possible by acceptutils, my redesigned TLS and SMTP AUTH implementation that obviates the need for several large and conflicting patches. Further improvements are expected.

Here’s the full changelog for qmail as packaged in pkgsrc-2018Q4.


  • From mail/mess822:
    • The SMTP AUTH patch.
  • From mail/qmail:
    • The SMTP AUTH patch.
    • The qmail-smtpd half of the TLS patch.
    • The RCPTCHECK patch.
  • From mail/qmail-run:
    • Dependency on spamdyke.
    • Dependency on stunnel.
  • From sysutils/checkpassword and sysutils/checkpassword-pam:
    • The setuid bit.


  • mail/qmail:
  • mail/qmail-rejectutils:
    • To let qmail-rcptcheck run under qmail-spp, so that other RCPTCHECK programs can continue to run unmodified.
    • To deprecate qmail-qfilter-ofmipd-queue and qmail-qfilter-smtpd-queue in favor of qmail-qfilter-queue.
  • mail/qmail-run’s defaults:
    • To sslserver (from tcpserver).
    • To listen on IPv6 when available.
    • To auto-enable TLS for message submission, incoming SMTP, and POP3 (as well as remote delivery) when certs are in place.
    • To tag log entries with nbqmail/send, nbqmail/smtpd, etc. (inspired by Postfix).
    • To find tcprules in control/tcprules/* (and auto-migrate from /etc/qmail/tcp.*).
    • To rebuild outdated tcprules CDBs on startup.
    • To delay the SMTP greeting by 2 seconds (a simple anti-spam measure).
    • To check the zen.spamhaus.org RBL.
    • To check recipients using qmail’s delivery logic before accepting mail.
    • To record a Received-SPF: header.
    • To skip greylisting (if any) when SPF returns “pass”.
    • To record a Received: header with TLS protocol and ciphers.
    • To let users configure their own ofmipd address-rewriting rules.


  • mail/greylisting-spp:
    • For greylisting.
  • mail/qmail-spp-spf:
    • For SPF checks.
  • pkgtools/rc.d-boot:
    • For starting pkgsrc-provided services at boot on a variety of systems.
  • To devel/syncdir:
  • To mail/qmail:
    • The qmail-spp patch, for flexibly modifying SMTP behavior at runtime.
  • To mail/qmail-rejectutils:
    • Manual pages.
  • To mail/qmail-run:
    • greylisting-spp-wrapper, for whitelisting recipient addresses or whole domains, and optionally omitting IP address from greylisting’s tuples.
  • To mail/qmail and mail/qmail-run:
    • Cleaner uninstall, so people can feel comfortable trying qmail.