PhoenixDKIM

A security-focused DKIM signing and verification milter.


Internationalized email (EAI / RFC 8616)

PhoenixDKIM signs and verifies internationalized mail. Where pre-fork OpenDKIM rejected any non-ASCII byte outright, and where the later OpenDKIM patch simply waved every high byte through, PhoenixDKIM does the correct thing per RFC 8616: it accepts well-formed UTF-8 and resolves U-label domains.

What works

What we improved over OpenDKIM

pre-fork OpenDKIM OpenDKIM PR #404 PhoenixDKIM
UTF-8 in field bodies rejected accepted (any byte ≥ 0x80) accepted, validated as well-formed UTF-8
Malformed UTF-8 (lone/overlong/surrogate/truncated) rejected accepted rejected (DKIM_STAT_SYNTAX)
UTF-8 i= local-part rejected accepted accepted
U-label d= → A-label for DNS not done not done done via libidn2

Building

U-label support is provided by libidn2 and is on by default (-DWITH_IDN=ON). libidn2 is packaged on Linux and the BSDs. To build without it — in which case a signature whose d= is a U-label will fail its key lookup — reconfigure with -DWITH_IDN=OFF.

Notes