New user-controlled features

Sender address rewriting

Since authenticated submission runs as you, messages you submit can be modified before they’re sent, according to your settings.

For example, since checkpassword sets $HOME, each user can have their own CDB of address-rewriting rules for ofmipd. Here’s an ofmipd-with-user-cdb wrapper:



if [ -f "${user_cdb}" ]; then
    exec @PREFIX@/bin/ofmipd "${user_cdb}" "$@"
    exec @PREFIX@/bin/ofmipd "$@"

This is the exact same functionality long provided by ofmipd to sysadmins, now extended to every user.

Stateful filtering

Since authenticated submission and local delivery both run as you, messages you receive can be influenced by messages you’ve sent.

For example, you can post to DJB’s mailing lists from any AUTH-capable mail client without ever seeing a qsecretary challenge again. pymsgauth-filter inserts a unique token into the headers and records it in $HOME, where pymsgauth-confirm can match the token in qsecretary‘s auto-response and safely auto-autorespond. Details:

  1. Apply the QMAILQUEUE patch (available here for ofmipd, included with notqmail and netqmail for qmail-smtpd).
  2. Install qmail-qfilter.
  3. Install rejectutils.
  4. Install pymsgauth with the pymsgauth-filter patch.
  5. Configure $HOME/.pymsgauth/pymsgauthrc and the relevant .qmail file.
  6. Add pymsgauth-filter to control/ofmipfilters.
  7. Set QMAILQUEUE="qmail-qfilter-queue", QMAILQUEUEFILTERS="control/ofmipfilters", and PYMSGAUTH_TOLERATE_UNCONFIGURED=1 in your service’s environment.

This is the exact same functionality long provided by pymsgauth-mail to Mail User Agents running directly on qmail servers, now extended to today’s wider variety of devices and MUAs.