# opendkim-ng 3.0.0-beta2 (project renamed to PhoenixDKIM on 21 May 2026)

9 May 2026

A large release covering dead-code removal, documentation rewriting, security hardening, and completing the CMake transition.

## Build system

- 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.

## Dead-code removal

- 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.

## Key management

- `opendkim-genkey`: added Ed25519 key generation.

- `dkim_privkey_load`: infer the signing algorithm from the key type rather than requiring explicit configuration.

## Configuration

- `TrustedHostsFile` is now disabled by default. Administrators who use DNSSEC can re-enable it explicitly.

## Security and correctness

- 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.

## Documentation

- 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.

Back to announcements