Bogus DNSSEC but no errors in dnsviz

Luckily the ALG 7 support commit fixed it already but theres a general issue with multi RRSIGS when one is invalid. Depending on the order its loaded it might return the wrong thing. Trying to get it merged but mailbox.org is fixed with the changes you pulled already i was just looking at a stale attempt.

I wrote to the hickory developers and they’re underfunded so it might take a while until the release a new version with all those fixes

Is merged, so hopefully obscure errors with unsupported algos (dual signing) or key rollover will be less likely in the future.

Stalwart 0.16.21 will include it

I still an issue:

2026-09-09T08:39:30Z INFO IP address lookup failed (delivery.ip-lookup-failed) queueId = 328546478953863168, queueName = "remote", from = "REDACTED", to = ["[email protected]"], size = 1706, total = 1, domain = "pensionboslucht.nl", hostname = "pensionboslucht-nl.mail.protection.outlook.com", details = "Temporary Failure for pensionboslucht-nl.mail.protection.outlook.com: Connection failed: lookup error: DNS resolution error: DNS error: DNSSEC validation failed", elapsed = 311ms

2026-09-09T08:35:19Z INFO IP address lookup failed (delivery.ip-lookup-failed) queueId = 328150846885875712, queueName = "default", from = "[email protected]", to = ["[email protected]"], size = 2825, total = 1, domain = "watchdog.kevlarr.io", hostname = "alt2.aspmx.l.google.com", details = "Temporary Failure for alt2.aspmx.l.google.com: Connection failed: lookup error: DNS resolution error: DNS error: DNSSEC validation failed", elapsed = 301ms

Are these related or is this a new issue?

New issue, fixed in hickory 0.26.3.

I still see this issue and I have to keep is disabled with 0.26.3.

Please track these two hickory bugs:

I have the same issue (I believe): [email protected] (failed to lookup ‘sprk.gov.lv’: DNS resolution error: DNS error: DNSSEC validation failed)

sprk.gov.lv is not DNSSec signed according to https://dnssec.health/.

now I wonder how I can pull in the upgrades of hickory. apt update/apt upgrade seems not enough

sprk.gov.lv isn’t signed, but the chain above it is: .lv is signed and proves that gov.lv has no DS using an NSEC3 opt-out record. Hickory currently rejects that particular kind of proof as Bogus, which is hickory-dns#3985, the second issue linked above and still open. The other one, #3974, has been fixed upstream but isn’t in a hickory release yet.

Hickory is compiled into the Stalwart binary, so apt has nothing to update; the fix will come with a Stalwart release once hickory ships it. Until then, on 0.16.24 or later you can turn DANE off for that one domain: create an MtaTlsStrategy named no-dane with dane set to disable, and add this rule ahead of the others in the tls expression on MtaOutboundStrategy:

{"if": "rcpt_domain == 'sprk.gov.lv'", "then": "'no-dane'"}

With DANE off for that domain the MX and address lookups skip DNSSEC validation, and every other destination keeps it.

Hi everyone,

This is an update on the DNSSEC and DANE delivery failures reported across several threads here. They come from bugs in hickory, the DNS library Stalwart uses to validate DNSSEC, and each one now has a fix submitted upstream:

  • Google Workspace MX hosts (aspmx.l.google.com and the altN hosts) failing with “exceeded max validation depth”: hickory#3974, fixed in #3976 and #4007. Both are merged but not yet in a hickory release.
  • Domains delegated two or more labels below an NSEC3 opt-out zone, such as port.venice.it and the comune.*.fr.it municipality domains: hickory#3985, fix in #4001.
  • Unsigned zones without an NS record at their apex, for example akokan.pl: hickory#4027, fix in #4028.
  • Microsoft 365 hosts (*.mail.protection.outlook.com) failing when the upstream resolver answers SERVFAIL for them, which Google Public DNS and many local resolvers do: hickory#4063, fix in #4064.
  • Truncated UDP responses never retried over TCP when several name servers are queried at the same time: hickory#3963, fix in #4062.
  • Valid answers rejected because the response also carries an unrelated NSEC record, plus some correctly signed wildcard answers rejected: hickory#4047, fix in #4055.
  • Validating queries sent without the CD bit, which makes a validating upstream resolver answer SERVFAIL: hickory#3966, fix in #4014 and #4036.

DANE delivery has been broken for some of you for weeks now, and the hickory maintainers seem to be busy at the moment, so most of these PRs are still waiting for review. We have forked hickory at stalwartlabs/hickory-dns with all of the fixes above applied, and Stalwart will build against that fork until hickory publishes a release that contains all of them. We ran the patched resolver against every domain reported in these threads, with Cloudflare, Google and Quad9 as upstream resolvers, and they all validate correctly now.

v0.16.26 ships with the patched resolver and will be out today or tomorrow. After upgrading you can remove any TLS strategy you added to turn DANE off for specific domains. If a domain still fails after the upgrade, post it in this thread together with the DNS resolver you use and we’ll look into it.