Changes for version 0.12 - 2026-10-04

  • undo() rebuilt a base64 or quoted-printable body encoded twice: Recipes work on wire lines, so the rebuilt body is already in its transfer encoding, and Email::MIME->body_set encoded it again. Every such message a list re-encoded (footer appended, body re-wrapped) failed "m=1 does not match content" and the milter refused to sign it -- 17 of 88 charset-corpus samples through Mailman, while the Python undo rebuilt them byte for byte. The body is now set as raw octets. (t/undo-encoded-body.t)
  • DKIM2_DATE is 2026-10-04: the Message-Instance headers this library emits changed shape in 0.11 ("b" literals, integer copy ranges), and the X-DKIM2-Info date stamp follows emitted-header changes.

Documentation

Standalone DKIM2 milter for Postfix

Modules

DKIM2 signing and verification for email
Canonicalization, hashing, folding and key handling for DKIM2
DKIM2-signed Delivery Status Notifications
Streaming message parser base for Signer and Verifier
Compute, verify and undo Message-Instance headers
Keep message snapshots keyed by Message-Instance
verify-and-reflect DKIM2 demonstration logic for dkim2.com
One DKIM2-Signature header, parsed or under construction
Sign a message with a DKIM2-Signature header
Bcc-safe recipient grouping before DKIM2 signing
The tag=value list a DKIM2 header is made of
structured per-level DKIM2 and Message-Instance report
Verify the DKIM2-Signature chain on a message
Handler class for DKIM2 signing
Handler class for DKIM2 signature verification