9 May 2026
A large release covering dead-code removal, documentation rewriting, security hardening, and completing the CMake transition.
Completed the CMake transition. Autotools files are still present in this release but are no longer used; they will be removed in the next release.
Ported all integration tests (Lua-based) to CMake.
miltertest: CMake build and Lua 5.4 compatibility.
Removed dead subsystems: ATPS, flowrate, libar (abandoned since 2012).
Stripped all #ifdef _FFR_RESIGN, _FFR_IDENTITY_HEADER, and _FFR_SENDER_MACRO preprocessor guards, keeping the feature branches throughout.
Removed deprecated functions and obsolete documentation from the OpenDKIM 2.x era.
opendkim-genkey: added Ed25519 key generation.
dkim_privkey_load: infer the signing algorithm from the key type rather than requiring explicit configuration.
TrustedHostsFile is now disabled by default. Administrators who use DNSSEC can re-enable it explicitly.
Hardened snprintf usage across the codebase: added return-value checks, corrected buffer-size arguments, and fixed several unsafe constructions in the daemon, library, and opendkim-genzone.
Fixed five DNSSEC defects identified during a code audit.
Added /etc/opendkim.conf as a Debian conffile so that dpkg does not overwrite local configuration on upgrade.
Rewrote the README for the new fork and the 3.0.0 release.
Rewrote opendkim.conf(5) for opendkim-ng 3.0.0, removing all 2.x-era configuration options that have been dropped.
New plain-text man pages, replacing the Autotools-generated .in variants.
Updated the opendkim-lua(3) man page to reflect the functions that remain after subsystem removal.