This small perl script queries the SOA on your (tinydns-powered) primary nameserver and compares it with your local data files timestamp. A transfer (e.g. rsync over SSH) is only done if needed, so you can run it every minute out of crontab. Beware that your transfer mechanism must preserve file time, e.g. rsync -t -e ssh primary:/var/tinydns/root/data data.

Download period.patch

This patch to netqmail adds an additional .qmail command for time controlled execution of other commands. With period <from> <to> <cmd> a command cmd gets executed if the current time is between from and to.

Download fastforward-env.patch

This patch adds environment variable evaluation to fastforward. Everything between two dollar signs gets evaluated per delivery. Use a line like @some.domain: $EXT$@another.domain in your aliases file to do wildcard forwarding.

Download tcpserver.patch

Because tcpserver restricts the maximum number of spawned instances (40 by default) it opens a opportunity to DoS a server by constantly opening that much connections. This patch adds two options to tcpserver to limit the number of connections from a single IP (-i num) and a whole Class-C subnet (-n num).

Download badmailfrom.patch

After getting spammed from several similar mail addresses (looking like,, ...) I wrote this patch to Qmail. It modifies qmail-smtpd to accept lines like sender@ in badmailfrom (see qmail-smtpd(8)).

Download rblsmtpd.patch

If you like rblsmtpd from D.J. Bernstein's ucspi-tcp package, you can patch it to "tarpit" RBL-listed hosts. Use the -t option to set the maximum tarpitting time. After closing the connection it writes an additional message like "host tarpitted for 3600 seconds" to your logfile.