Repository navigation
Releases
v3.4.0
#28 adds DkimByteSigner for signing finalized MIME bytes without Angus or JVM-global cryptographic-provider registration, including DNS key checks. Both signing entry points share one DKIM engine, with the original message bytes retained after the new signature header.
Existing DkimSigner and DkimMessage callers retain their public/protected APIs, Angus inheritance and transitive dependency, subclass hooks, signing defaults, working output, Java 8 support and module name org.simplejavamail.utils.mail.dkim. No caller migration is required; applications using only the new entry point can exclude Angus. See the version-specific usage and compatibility guidance.
v3.3.1
This patch corrects DKIM signing and DNS key handling through the existing API. Applications do not need to change their code or configuration.
- Hash the emitted MIME body octets and count
l=in bytes, preserve original header whitespace under simple canonicalization, and sign only headers included in the output (#14, #15, #16). Transmitted body bytes are preserved. - Repair Ed25519 signing and standard raw DNS public-key decoding while retaining legacy X.509 keys. Malformed or incompatible Ed25519 encodings now fail consistently with
DkimException(#17, #22, #27). - Isolate cryptographic state when multiple messages share a configured signer, and make DKIM protocol tokens independent of the JVM locale (#12, #13).
- Close DNS lookup resources, allow independent lookups to progress, correct cache expiration and reconfiguration races, and accept valid tag whitespace, extension names, and folded keys (#18, #19, #20, #21).
- Encode copied header fields (
z=) with legal DKIM folding instead of MIME quoted-printable soft breaks (#23).
Public and protected APIs, Java 8 compatibility, dependency versions, signing defaults, and the automatic module name org.simplejavamail.utils.mail.dkim remain unchanged. Signatures intentionally change for inputs that previously produced incorrect results. Configure a signer before sharing it; concurrent reconfiguration and concurrent writes of the same message are not supported contracts.
v3.3.0
- Added
DomainKeyUtil.setDnsProviderUrl(...)andgetDnsProviderUrl()so applications can select the JNDI DNS provider used for DKIM domain-key TXT lookups (#3). - Corrected the published JPMS automatic module name to
org.simplejavamail.utils.mail.dkim(#9, PR #5). - Removed JaCoCo probes from packaged classes (#6).
Compatibility: the Java API is additive. JPMS consumers must use the corrected module name; default DNS lookup behavior is unchanged unless a provider URL is configured.
v3.2.2
v3.2.1
Removed the vulnerable net.i2p.crypto:eddsa dependency and moved Ed25519 support to Bouncy Castle's bcpkix-jdk18on, remediating CVE-2020-36843 (#7, PR #8).
Compatibility: the DKIM public API and supported signing behavior remain intact, but the transitive cryptography provider dependency changes.
v3.2.0
v3.1.1
v3.1.0
v3.0.0
Established the Simple Java Mail-maintained DKIM release line at org.simplejavamail:utils-mail-dkim and migrated the library's mail types to Jakarta Mail 2.0 (#10).
Compatibility: this is a major namespace transition. Applications upgrading from the older JavaMail line must use jakarta.mail types and the Simple Java Mail Maven coordinates. Java 8 or newer is required.