acceptutils (unreleased) Offer SMTP AUTH without patch conflicts and with new user-controlled features.
destdir Build as non-root, without hardcoded IDs, to a staging area.
mess822-qmailqueue Apply Bruce Guenter’s QMAILQUEUE patch to mess822.
pymsgauth-filter Filter submitted messages through Charles Cazabon’s pymsgauth using qmail-qfilter.
qbiffutmpx Detect <utmpx.h> in case the OS no longer provides <utmp.h>.
qmail-qfilter-grandparent Correlate qmail-qfilter(1) filters with qmail-smtpd or ofmipd sessions.
queue-repair-symlink3 Let Charles Cazabon’s queue-repair operate safely when /var/qmail/queue is a symlink.
remote Wrap qmail-remote with another program (inspired by QMAILQUEUE).
rfilter (vaporware) Filter outbound messages — like qmail-qfilter but for qmail-remote.
rcptcheck Apply Jay Soffian’s RCPTCHECK patch atop netqmail 1.06 with the TLS + SMTP AUTH combo patch.
rejectutils Reject messages at SMTP according to multiple criteria without patch conflicts.
ucspi-tcp-destdir Install ucspi-tcp to a staging area.


I almost always install qmail from pkgsrc, because it’s packaged according to my taste and offers useful build-time options. A few of the qmail-related pkgsrc packages I’m responsible for:

  • ?daemontools and ?daemontools-run
  • ?djbdns and ?djbdns-run
  • ?qmail and qmail-run

(Here’s the complete list of packages I maintain.)

More information

qmail is a toolkit of Unixy programs that can be composed to provide email services. I use it to run my own mail server, and have for a very long time. Sometimes I write about it.

The last version by qmail’s author was in 1998, the last community-based netqmail update was in 2007, and while a few folks maintain their own individual forks, there’s no longer an agreed “upstream”. Unmaintained though it is, I continue to find that

  1. qmail has remarkable design integrity, and
  2. This confers practical benefits.

I don’t want to maintain a fork, and I find it useful to pretend qmail is still maintained. When I can’t solve a problem without writing code, I try to write code that preserves or extends qmail’s integrity, code that maintainers (if they existed) might accept.

My patches target vanilla netqmail, aiming to be minimal, purpose-specific, and conflict-avoidant. Ideally qmail already provides a seam where small, self-contained code can hitch a ride at runtime; if not, I add one, then program to that interface.

With periodic small doses of careful incremental effort, I expect qmail’s utility to remain high for me indefinitely. If any of my efforts are also useful to you, so much the better.