feat(resolver): Enable DNSSEC (#94)

From hickory-resolver docs:
> To enable DNSSEC, enable the dnssec-ring feature.

Related: https://github.com/chatmail/relay/issues/877
Related: https://github.com/hickory-dns/hickory-dns/issues/3519
Closes: https://github.com/chatmail/filtermail/issues/93

Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
This commit is contained in:
Jagoda Estera Ślązak
2026-03-24 08:27:48 +01:00
committed by GitHub
parent 7da0c34678
commit fb77c5be81
3 changed files with 64 additions and 2 deletions
+52
View File
@@ -268,6 +268,15 @@ dependencies = [
"zeroize",
]
[[package]]
name = "deranged"
version = "0.5.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
dependencies = [
"powerfmt",
]
[[package]]
name = "digest"
version = "0.10.7"
@@ -582,6 +591,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502"
dependencies = [
"async-trait",
"bitflags",
"cfg-if",
"data-encoding",
"enum-as-inner",
@@ -593,7 +603,9 @@ dependencies = [
"once_cell",
"rand 0.9.2",
"ring",
"rustls-pki-types",
"thiserror",
"time",
"tinyvec",
"tokio",
"tracing",
@@ -919,6 +931,12 @@ dependencies = [
"zeroize",
]
[[package]]
name = "num-conv"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050"
[[package]]
name = "num-integer"
version = "0.1.46"
@@ -1060,6 +1078,12 @@ dependencies = [
"zerovec",
]
[[package]]
name = "powerfmt"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
[[package]]
name = "ppv-lite86"
version = "0.2.21"
@@ -1312,6 +1336,15 @@ dependencies = [
"semver",
]
[[package]]
name = "rustls-pki-types"
version = "1.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd"
dependencies = [
"zeroize",
]
[[package]]
name = "rustversion"
version = "1.0.22"
@@ -1530,6 +1563,25 @@ dependencies = [
"syn",
]
[[package]]
name = "time"
version = "0.3.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c"
dependencies = [
"deranged",
"num-conv",
"powerfmt",
"serde_core",
"time-core",
]
[[package]]
name = "time-core"
version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca"
[[package]]
name = "tinystr"
version = "0.8.2"
+1 -1
View File
@@ -20,7 +20,7 @@ log = "0.4.29"
env_logger = "0.11.9"
governor = "0.10.4"
viadkim = { version = "0.2.0" }
hickory-resolver = "0.25.2"
hickory-resolver = { version = "0.25.2", features = ["dnssec-ring"] }
lru = "0.16.3"
parking_lot = "0.12.5"
+11 -1
View File
@@ -40,7 +40,17 @@ impl CachedResolver {
/// Creates a new [`CachedResolver`].
pub fn new() -> Result<Self, crate::error::Error> {
// Use resolv.conf
let dns_resolver = TokioResolver::builder(TokioConnectionProvider::default())?.build();
let dns_resolver = {
let mut builder = TokioResolver::builder(TokioConnectionProvider::default())?;
// https://github.com/hickory-dns/hickory-dns/issues/3519
builder.options_mut().validate = true;
builder.build()
};
assert!(
dns_resolver.options().validate,
"incorrect resolver config: DNSSEC disabled; exiting"
);
let cache = Arc::new(parking_lot::Mutex::new(LruCache::new(LRU_CACHE_CAPACITY)));