From 186d9feecb233dfdc6f50d94d610c03e8695cdbb Mon Sep 17 00:00:00 2001 From: Maurus Decimus <11444311+mdecimus@users.noreply.github.com> Date: Wed, 1 Jul 2026 16:20:02 +0200 Subject: [PATCH] DKIM2 verification --- Cargo.lock | 17 +- crates/common/src/cache/principals.rs | 28 ++-- crates/common/src/config/inner.rs | 4 +- crates/common/src/config/smtp/auth.rs | 96 +++++++++-- crates/common/src/lib.rs | 4 +- crates/common/src/network/mta.rs | 4 +- crates/http/src/api/diagnose.rs | 14 +- crates/jmap/src/registry/mapping/action.rs | 39 ++++- crates/jmap/src/registry/mapping/dkim.rs | 6 +- crates/registry/src/schema/properties.rs | 2 + crates/registry/src/schema/properties_impl.rs | 8 +- crates/registry/src/schema/structs.rs | 6 + crates/registry/src/schema/structs_impl.rs | 27 ++- crates/registry/src/utils/report.rs | 24 +++ crates/services/src/task_manager/dkim.rs | 55 ++++-- crates/smtp/src/inbound/data.rs | 143 +++++++++++++++- crates/smtp/src/inbound/mod.rs | 41 +---- crates/smtp/src/inbound/spam.rs | 6 +- crates/smtp/src/outbound/delivery.rs | 156 ++++++++++-------- crates/smtp/src/reporting/dmarc.rs | 5 + crates/smtp/src/reporting/send.rs | 2 +- crates/smtp/src/scripts/event_loop.rs | 2 +- crates/spam-filter/src/analysis/dmarc.rs | 14 +- crates/spam-filter/src/lib.rs | 6 +- crates/trc/src/event/conv.rs | 30 ++++ crates/trc/src/event/enums.rs | 10 +- crates/trc/src/event/enums_impl.rs | 48 ++++++ resources/schema/schema.json.gz | Bin 147585 -> 147794 bytes resources/schema/schema.json.sha256 | 2 +- tests/resources/smtp/antispam/combined.test | 10 +- tests/resources/smtp/antispam/dmarc.test | 28 ++-- tests/src/automation/dkim.rs | 7 +- tests/src/smtp/inbound/antispam.rs | 2 + 33 files changed, 640 insertions(+), 206 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 19024475..4b983026 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4393,11 +4393,13 @@ version = "0.11.0" dependencies = [ "aws-lc-rs", "flate2", + "getrandom 0.2.17", + "getrandom 0.4.3", "hashify", "hickory-resolver", "mail-builder", "mail-parser", - "quick-xml 0.40.1", + "quick-xml 0.41.0", "rand 0.8.6", "rkyv", "rsa", @@ -5926,6 +5928,15 @@ dependencies = [ "serde", ] +[[package]] +name = "quick-xml" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1" +dependencies = [ + "memchr", +] + [[package]] name = "quick_cache" version = "0.6.23" @@ -6811,9 +6822,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.14.1" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" +checksum = "764899a24af3980067ee14bc143654f297b22eaebfe3c7b6b211920a5a59b046" dependencies = [ "web-time", "zeroize", diff --git a/crates/common/src/cache/principals.rs b/crates/common/src/cache/principals.rs index 234a2ed5..aa3fd414 100644 --- a/crates/common/src/cache/principals.rs +++ b/crates/common/src/cache/principals.rs @@ -15,7 +15,7 @@ use crate::{ DomainCache, EmailAddress, EmailAddressRef, EmailCache, MailingListCache, PermissionsGroup, RECOVERY_ADMIN_ID, RoleCache, TenantCache, permissions::BuildPermissions, }, - config::smtp::auth::DkimSigner, + config::smtp::auth::DkimSigners, expr::if_block::BootstrapExprExt, network::mta::AddressResolver, storage::{ @@ -839,7 +839,7 @@ impl Server { } } - pub async fn dkim_signers(&self, domain: &str) -> trc::Result>> { + pub async fn dkim_signers(&self, domain: &str) -> trc::Result>> { let Some(domain) = self.domain(domain).await? else { return Ok(None); }; @@ -868,26 +868,24 @@ impl Server { .equal(Property::DomainId, domain.id), ) .await?; - let mut signatures = Vec::with_capacity(ids.len()); + let domain_name = &domain.names[0]; + let mut signers = DkimSigners { + dkim1: Vec::with_capacity(ids.len()), + dkim2: None, + }; for id in ids { if let Some(signature) = self.registry().object::(id).await? && matches!(signature.stage(), DkimRotationStage::Active) + && let Err(err) = signers.insert(domain_name.to_string(), signature).await { - match DkimSigner::new(domain.names[0].to_string(), signature).await { - Ok(signer) => signatures.push(signer), - Err(err) => { - trc::error!( - err.ctx(trc::Key::Id, id.id()).caused_by(trc::location!()) - ); - } - } + trc::error!(err.ctx(trc::Key::Id, id.id()).caused_by(trc::location!())); } } - if !signatures.is_empty() { - let signatures: Arc<[DkimSigner]> = signatures.into(); - let _ = guard.insert(signatures.clone()); - Ok(Some(signatures)) + if !signers.dkim1.is_empty() || signers.dkim2.is_some() { + let signers = Arc::new(signers); + let _ = guard.insert(signers.clone()); + Ok(Some(signers)) } else { Ok(None) } diff --git a/crates/common/src/config/inner.rs b/crates/common/src/config/inner.rs index 86f71391..1fc1e8ab 100644 --- a/crates/common/src/config/inner.rs +++ b/crates/common/src/config/inner.rs @@ -13,7 +13,7 @@ use crate::{ mailstore::spamfilter::SpamClassifier, server::tls::parse_certificates, smtp::{ - auth::DkimSigner, + auth::DkimSigners, resolver::{Policy, Tlsa}, }, }, @@ -164,7 +164,7 @@ impl Caches { ), dkim_signers: Cache::new( cache.dkim_signatures, - (std::mem::size_of::() + 255) as u64, + (std::mem::size_of::() + 255) as u64, ), dns_txt: CacheWithTtl::new(cache.dns_txt, (std::mem::size_of::() + 255) as u64), dns_mx: CacheWithTtl::new(cache.dns_mx, ((std::mem::size_of::() + 255) * 2) as u64), diff --git a/crates/common/src/config/smtp/auth.rs b/crates/common/src/config/smtp/auth.rs index e4f313b1..55805311 100644 --- a/crates/common/src/config/smtp/auth.rs +++ b/crates/common/src/config/smtp/auth.rs @@ -11,15 +11,16 @@ use crate::expr::{ use mail_auth::{ common::crypto::{Ed25519Key, HashAlgorithm, RsaKey, Sha256, SigningKey}, dkim::{Canonicalization, Done}, + dkim2::{Dkim2Signer, Done as Dkim2Done, Flag}, }; use mail_parser::decoders::base64::base64_decode; use registry::{ schema::{ - enums::{self, ExpressionConstant}, + enums::{self, Dkim2Flag, ExpressionConstant}, prelude::ObjectType, structs::{Dkim1Signature, DkimSignature, SenderAuth}, }, - types::ObjectImpl, + types::{ObjectImpl, map::Map}, }; use rustls_pki_types::{PrivateKeyDer, PrivatePkcs1KeyDer, PrivatePkcs8KeyDer, pem::PemObject}; use store::registry::bootstrap::Bootstrap; @@ -71,14 +72,15 @@ pub enum VerifyStrategy { Disable, } -pub enum DkimSigner { +pub enum Dkim1Signer { RsaSha256(mail_auth::dkim::DkimSigner, Done>), Ed25519Sha256(mail_auth::dkim::DkimSigner), } -pub enum ArcSealer { - RsaSha256(mail_auth::arc::ArcSealer, Done>), - Ed25519Sha256(mail_auth::arc::ArcSealer), +#[derive(Default)] +pub struct DkimSigners { + pub dkim1: Vec, + pub dkim2: Option>, } impl MailAuthConfig { @@ -123,8 +125,8 @@ impl MailAuthConfig { } } -impl DkimSigner { - pub async fn new(domain: String, signature: DkimSignature) -> trc::Result { +impl DkimSigners { + pub async fn insert(&mut self, domain: String, signature: DkimSignature) -> trc::Result<()> { let mut errors = vec![]; if !signature.validate(&mut errors) { return Err(trc::DkimEvent::BuildError @@ -156,9 +158,10 @@ impl DkimSigner { .details("Failed to build ED25519 key") })?; - Ok(DkimSigner::Ed25519Sha256(build_dkim1_signer( - domain, signature, key, - ))) + self.dkim1 + .push(Dkim1Signer::Ed25519Sha256(build_dkim1_signer( + domain, signature, key, + ))); } DkimSignature::Dkim1RsaSha256(signature) => { let private_key = signature @@ -168,17 +171,70 @@ impl DkimSigner { .map_err(|err| trc::DkimEvent::BuildError.reason(err))?; let key = rsa_key_parse(private_key.as_bytes())?; - Ok(DkimSigner::RsaSha256(build_dkim1_signer( + self.dkim1.push(Dkim1Signer::RsaSha256(build_dkim1_signer( domain, signature, key, - ))) + ))); } - DkimSignature::Dkim2Ed25519Sha256(_) | DkimSignature::Dkim2RsaSha256(_) => { - todo!() + DkimSignature::Dkim2Ed25519Sha256(signature) => { + let private_key = signature + .private_key + .secret() + .await + .map_err(|err| trc::DkimEvent::BuildError.reason(err))?; + let private_key = simple_pem_parse(&private_key).ok_or_else(|| { + trc::DkimEvent::BuildError + .reason("Failed to parse ED25519 private key PEM") + .details("Invalid PEM format") + })?; + let key = + Ed25519Key::from_pkcs8_maybe_unchecked_der(&private_key).map_err(|err| { + trc::DkimEvent::BuildError + .reason(err) + .details("Failed to build ED25519 key") + })?; + + self.dkim2 = Some(match self.dkim2.take() { + None => Dkim2Signer::from_key(key) + .domain(domain) + .selector(signature.selector) + .flags(map_dkim2_flags(signature.flags)), + Some(signer) => signer + .additional_key(key, signature.selector) + .flags(map_dkim2_flags(signature.flags)), + }); + } + DkimSignature::Dkim2RsaSha256(signature) => { + let private_key = signature + .private_key + .secret() + .await + .map_err(|err| trc::DkimEvent::BuildError.reason(err))?; + let key = rsa_key_parse(private_key.as_bytes())?; + + self.dkim2 = Some(match self.dkim2.take() { + None => Dkim2Signer::from_key(key) + .domain(domain) + .selector(signature.selector) + .flags(map_dkim2_flags(signature.flags)), + Some(signer) => signer + .additional_key(key, signature.selector) + .flags(map_dkim2_flags(signature.flags)), + }); } } + + Ok(()) } } +fn map_dkim2_flags(flags: Map) -> impl Iterator { + flags.into_inner().into_iter().map(|flag| match flag { + Dkim2Flag::Donotmodify => Flag::DoNotModify, + Dkim2Flag::Donotexplode => Flag::DoNotExplode, + Dkim2Flag::Feedback => Flag::Feedback, + }) +} + pub fn rsa_key_parse(private_key: &[u8]) -> trc::Result> { PrivatePkcs1KeyDer::from_pem_slice(private_key) .map(PrivateKeyDer::Pkcs1) @@ -309,8 +365,16 @@ impl VerifyStrategy { } } -impl CacheItemWeight for DkimSigner { +impl CacheItemWeight for Dkim1Signer { fn weight(&self) -> u64 { std::mem::size_of::() as u64 } } + +impl CacheItemWeight for DkimSigners { + fn weight(&self) -> u64 { + (std::mem::size_of::() + + self.dkim1.len() * std::mem::size_of::() + + std::mem::size_of::>()) as u64 + } +} diff --git a/crates/common/src/lib.rs b/crates/common/src/lib.rs index f200e83a..eca290f9 100644 --- a/crates/common/src/lib.rs +++ b/crates/common/src/lib.rs @@ -18,7 +18,7 @@ use crate::{ scripts::Scripting, spamfilter::{IpResolver, SpamClassifier, SpamFilterConfig}, }, - smtp::auth::DkimSigner, + smtp::auth::DkimSigners, }, ipc::TrainTaskController, network::security::BlockedIps, @@ -193,7 +193,7 @@ pub struct Caches { pub tenants: Cache>, pub lists: Cache>, - pub dkim_signers: Cache>, + pub dkim_signers: Cache>, pub dns_txt: CacheWithTtl, Txt>, pub dns_mx: CacheWithTtl, RecordSet>, diff --git a/crates/common/src/network/mta.rs b/crates/common/src/network/mta.rs index 413337eb..7c4ed99e 100644 --- a/crates/common/src/network/mta.rs +++ b/crates/common/src/network/mta.rs @@ -10,7 +10,7 @@ use crate::{ config::{ mailstore::spamfilter::SpamClassifier, smtp::{ - auth::DkimSigner, + auth::DkimSigners, queue::{ ConnectionStrategy, DEFAULT_QUEUE_NAME, MxConfig, QueueExpiry, QueueName, QueueStrategy, RequireOptional, RoutingStrategy, TlsStrategy, VirtualQueue, @@ -188,7 +188,7 @@ impl Server { &self, domain: &str, session_id: u64, - ) -> trc::Result>> { + ) -> trc::Result>> { if let Some(signers) = self.dkim_signers(domain).await? { Ok(Some(signers)) } else { diff --git a/crates/http/src/api/diagnose.rs b/crates/http/src/api/diagnose.rs index 9c11e2e1..43827754 100644 --- a/crates/http/src/api/diagnose.rs +++ b/crates/http/src/api/diagnose.rs @@ -296,7 +296,9 @@ async fn delivery_diagnose( Err(err) => { if matches!( &err, - smtp::outbound::mta_sts::Error::Dns(mail_auth::Error::Dns(mail_auth::DnsError::RecordNotFound(_))) + smtp::outbound::mta_sts::Error::Dns(mail_auth::Error::Dns( + mail_auth::DnsError::RecordNotFound(_) + )) ) { tx.send(DeliveryStage::MtaStsNotFound { elapsed: now.elapsed_ms(), @@ -346,7 +348,10 @@ async fn delivery_diagnose( .await?; } Err(err) => { - if matches!(&err, mail_auth::Error::Dns(mail_auth::DnsError::RecordNotFound(_))) { + if matches!( + &err, + mail_auth::Error::Dns(mail_auth::DnsError::RecordNotFound(_)) + ) { tx.send(DeliveryStage::TlsRptNotFound { elapsed: now.elapsed_ms(), }) @@ -426,7 +431,10 @@ async fn delivery_diagnose( None } Err(err) => { - if matches!(&err, mail_auth::Error::Dns(mail_auth::DnsError::RecordNotFound(_))) { + if matches!( + &err, + mail_auth::Error::Dns(mail_auth::DnsError::RecordNotFound(_)) + ) { tx.send(DeliveryStage::TlsaNotFound { elapsed: now.elapsed_ms(), reason: "No TLSA records found for MX".to_string(), diff --git a/crates/jmap/src/registry/mapping/action.rs b/crates/jmap/src/registry/mapping/action.rs index 8e1fae14..c865a29c 100644 --- a/crates/jmap/src/registry/mapping/action.rs +++ b/crates/jmap/src/registry/mapping/action.rs @@ -14,8 +14,8 @@ use common::{ use jmap_proto::error::set::{SetError, SetErrorType}; use jmap_tools::{JsonPointer, Key}; use mail_auth::{ - AuthenticatedMessage, DkimResult, DmarcResult, dmarc::verify::DmarcParameters, - spf::verify::SpfParameters, + AuthenticatedMessage, Dkim2Result, DkimResult, DmarcResult, dkim2::Envelope as Dkim2Envelope, + dmarc::verify::DmarcParameters, spf::verify::SpfParameters, }; use mail_parser::MessageParser; use registry::{ @@ -158,6 +158,7 @@ pub(crate) async fn action_set( | Property::RemoteIp | Property::EhloDomain | Property::MailFrom + | Property::To ) ) }); @@ -320,6 +321,20 @@ async fn classify_spam(server: &Server, mut request: SpamClassify) -> Option Option Option Property::DisabledPermissions, b"discardAfter" => Property::DiscardAfter, b"disposition" => Property::Disposition, + b"dkim2Pass" => Property::Dkim2Pass, + b"dkim2Result" => Property::Dkim2Result, b"dkimAdspDns" => Property::DkimAdspDns, b"dkimCanonicalizedBody" => Property::DkimCanonicalizedBody, b"dkimCanonicalizedHeader" => Property::DkimCanonicalizedHeader, @@ -1537,6 +1539,8 @@ impl EnumImpl for Property { Property::DisabledPermissions => "disabledPermissions", Property::DiscardAfter => "discardAfter", Property::Disposition => "disposition", + Property::Dkim2Pass => "dkim2Pass", + Property::Dkim2Result => "dkim2Result", Property::DkimAdspDns => "dkimAdspDns", Property::DkimCanonicalizedBody => "dkimCanonicalizedBody", Property::DkimCanonicalizedHeader => "dkimCanonicalizedHeader", @@ -2462,6 +2466,8 @@ impl EnumImpl for Property { 629 => Some(Property::DisabledPermissions), 872 => Some(Property::DiscardAfter), 747 => Some(Property::Disposition), + 917 => Some(Property::Dkim2Pass), + 916 => Some(Property::Dkim2Result), 83 => Some(Property::DkimAdspDns), 84 => Some(Property::DkimCanonicalizedBody), 85 => Some(Property::DkimCanonicalizedHeader), @@ -3173,7 +3179,7 @@ impl EnumImpl for Property { } } - const COUNT: usize = 916; + const COUNT: usize = 918; } impl serde::Serialize for Property { diff --git a/crates/registry/src/schema/structs.rs b/crates/registry/src/schema/structs.rs index 1d796b97..252b9623 100644 --- a/crates/registry/src/schema/structs.rs +++ b/crates/registry/src/schema/structs.rs @@ -1225,6 +1225,8 @@ pub struct DmarcTroubleshoot { pub ehlo_domain: String, #[serde(rename = "mailFrom")] pub mail_from: String, + #[serde(rename = "to")] + pub to: Map, #[serde(rename = "message")] pub message: Option, #[serde(rename = "spfEhloDomain")] @@ -1243,6 +1245,10 @@ pub struct DmarcTroubleshoot { pub dkim_results: List, #[serde(rename = "dkimPass")] pub dkim_pass: bool, + #[serde(rename = "dkim2Result")] + pub dkim2_result: DmarcTroubleshootAuthResult, + #[serde(rename = "dkim2Pass")] + pub dkim2_pass: bool, #[serde(rename = "arcResult")] pub arc_result: DmarcTroubleshootAuthResult, #[serde(rename = "dmarcResult")] diff --git a/crates/registry/src/schema/structs_impl.rs b/crates/registry/src/schema/structs_impl.rs index 42dd04a4..6016f757 100644 --- a/crates/registry/src/schema/structs_impl.rs +++ b/crates/registry/src/schema/structs_impl.rs @@ -9339,6 +9339,12 @@ impl DmarcTroubleshoot { if value.is_empty() { errors.push(ValidationError::required(Property::MailFrom)); } + let value = &self.to; + for value in value.iter() { + if value.is_empty() { + errors.push(ValidationError::required(Property::To)); + } + } if let Some(value) = &self.message { if value.is_empty() { errors.push(ValidationError::required(Property::Message)); @@ -9368,6 +9374,8 @@ impl DmarcTroubleshoot { for value in value.values() { value.validate(errors); } + let value = &self.dkim2_result; + value.validate(errors); let value = &self.arc_result; value.validate(errors); let value = &self.dmarc_result; @@ -9381,6 +9389,7 @@ impl Pickle for DmarcTroubleshoot { self.remote_ip.pickle(out); self.ehlo_domain.pickle(out); self.mail_from.pickle(out); + self.to.pickle(out); self.message.pickle(out); self.spf_ehlo_domain.pickle(out); self.spf_ehlo_result.pickle(out); @@ -9390,6 +9399,8 @@ impl Pickle for DmarcTroubleshoot { self.ip_rev_ptr.pickle(out); self.dkim_results.pickle(out); self.dkim_pass.pickle(out); + self.dkim2_result.pickle(out); + self.dkim2_pass.pickle(out); self.arc_result.pickle(out); self.dmarc_result.pickle(out); self.dmarc_pass.pickle(out); @@ -9402,6 +9413,7 @@ impl Pickle for DmarcTroubleshoot { this.remote_ip = Pickle::unpickle(stream)?; this.ehlo_domain = Pickle::unpickle(stream)?; this.mail_from = Pickle::unpickle(stream)?; + this.to = Pickle::unpickle(stream)?; this.message = Pickle::unpickle(stream)?; this.spf_ehlo_domain = Pickle::unpickle(stream)?; this.spf_ehlo_result = Pickle::unpickle(stream)?; @@ -9411,6 +9423,8 @@ impl Pickle for DmarcTroubleshoot { this.ip_rev_ptr = Pickle::unpickle(stream)?; this.dkim_results = Pickle::unpickle(stream)?; this.dkim_pass = Pickle::unpickle(stream)?; + this.dkim2_result = Pickle::unpickle(stream)?; + this.dkim2_pass = Pickle::unpickle(stream)?; this.arc_result = Pickle::unpickle(stream)?; this.dmarc_result = Pickle::unpickle(stream)?; this.dmarc_pass = Pickle::unpickle(stream)?; @@ -9426,6 +9440,7 @@ impl Default for DmarcTroubleshoot { remote_ip: Default::default(), ehlo_domain: Default::default(), mail_from: Default::default(), + to: Default::default(), message: Default::default(), spf_ehlo_domain: Default::default(), spf_ehlo_result: Default::default(), @@ -9435,6 +9450,8 @@ impl Default for DmarcTroubleshoot { ip_rev_ptr: Default::default(), dkim_results: Default::default(), dkim_pass: false, + dkim2_result: Default::default(), + dkim2_pass: false, arc_result: Default::default(), dmarc_result: Default::default(), dmarc_pass: false, @@ -9446,10 +9463,11 @@ impl Default for DmarcTroubleshoot { impl IntoValue for DmarcTroubleshoot { fn into_value(self) -> JmapValue<'static> { - let mut map = jmap_tools::Map::with_capacity(19); + let mut map = jmap_tools::Map::with_capacity(22); map.insert_unchecked(Property::RemoteIp, self.remote_ip.into_value()); map.insert_unchecked(Property::EhloDomain, self.ehlo_domain.into_value()); map.insert_unchecked(Property::MailFrom, self.mail_from.into_value()); + map.insert_unchecked(Property::To, self.to.into_value()); map.insert_unchecked(Property::Message, self.message.into_value()); map.insert_unchecked(Property::SpfEhloDomain, self.spf_ehlo_domain.into_value()); map.insert_unchecked(Property::SpfEhloResult, self.spf_ehlo_result.into_value()); @@ -9465,6 +9483,8 @@ impl IntoValue for DmarcTroubleshoot { map.insert_unchecked(Property::IpRevPtr, self.ip_rev_ptr.into_value()); map.insert_unchecked(Property::DkimResults, self.dkim_results.into_value()); map.insert_unchecked(Property::DkimPass, self.dkim_pass.into_value()); + map.insert_unchecked(Property::Dkim2Result, self.dkim2_result.into_value()); + map.insert_unchecked(Property::Dkim2Pass, self.dkim2_pass.into_value()); map.insert_unchecked(Property::ArcResult, self.arc_result.into_value()); map.insert_unchecked(Property::DmarcResult, self.dmarc_result.into_value()); map.insert_unchecked(Property::DmarcPass, self.dmarc_pass.into_value()); @@ -9486,6 +9506,9 @@ impl RegistryJsonPropertyPatch for DmarcTroubleshoot { Some(Property::MailFrom) => self .mail_from .patch(pointer.with_validators(&[StringValidator::Email]), value), + Some(Property::To) => self + .to + .patch(pointer.with_validators(&[StringValidator::Email]), value), Some(Property::Message) => self.message.patch(pointer, value), Some(Property::SpfEhloDomain) => self.spf_ehlo_domain.patch(pointer, value), Some(Property::SpfEhloResult) => pointer.assert_server_set(), @@ -9495,6 +9518,8 @@ impl RegistryJsonPropertyPatch for DmarcTroubleshoot { Some(Property::IpRevPtr) => pointer.assert_server_set(), Some(Property::DkimResults) => pointer.assert_server_set(), Some(Property::DkimPass) => pointer.assert_server_set(), + Some(Property::Dkim2Result) => pointer.assert_server_set(), + Some(Property::Dkim2Pass) => pointer.assert_server_set(), Some(Property::ArcResult) => pointer.assert_server_set(), Some(Property::DmarcResult) => pointer.assert_server_set(), Some(Property::DmarcPass) => pointer.assert_server_set(), diff --git a/crates/registry/src/utils/report.rs b/crates/registry/src/utils/report.rs index 87c4de71..0bac6411 100644 --- a/crates/registry/src/utils/report.rs +++ b/crates/registry/src/utils/report.rs @@ -897,6 +897,30 @@ impl From<&mail_auth::DkimResult> for structs::DmarcTroubleshootAuthResult { } } +impl From<&mail_auth::Dkim2Result> for structs::DmarcTroubleshootAuthResult { + fn from(value: &mail_auth::Dkim2Result) -> Self { + match value { + mail_auth::Dkim2Result::Pass => structs::DmarcTroubleshootAuthResult::Pass, + mail_auth::Dkim2Result::Fail(error) => { + structs::DmarcTroubleshootAuthResult::Fail(structs::DmarcTroubleshootDetails { + details: error.to_string().into(), + }) + } + mail_auth::Dkim2Result::PermError(error) => { + structs::DmarcTroubleshootAuthResult::PermError(structs::DmarcTroubleshootDetails { + details: error.to_string().into(), + }) + } + mail_auth::Dkim2Result::TempError(error) => { + structs::DmarcTroubleshootAuthResult::TempError(structs::DmarcTroubleshootDetails { + details: error.to_string().into(), + }) + } + mail_auth::Dkim2Result::None => structs::DmarcTroubleshootAuthResult::None, + } + } +} + impl From<&mail_auth::DmarcResult> for structs::DmarcTroubleshootAuthResult { fn from(value: &mail_auth::DmarcResult) -> Self { match value { diff --git a/crates/services/src/task_manager/dkim.rs b/crates/services/src/task_manager/dkim.rs index d5673d4d..51b6b3c9 100644 --- a/crates/services/src/task_manager/dkim.rs +++ b/crates/services/src/task_manager/dkim.rs @@ -19,8 +19,8 @@ use registry::{ enums::{DkimRotationStage, DkimSignatureType, DnsRecordType}, prelude::{Object, ObjectType, Property}, structs::{ - Dkim1Signature, DkimManagement, DkimSignature, DnsManagement, Domain, SecretText, - SecretTextValue, Task, TaskDomainManagement, TaskStatus, + Dkim1Signature, Dkim2Signature, DkimManagement, DkimSignature, DnsManagement, Domain, + SecretText, SecretTextValue, Task, TaskDomainManagement, TaskStatus, }, }, types::{datetime::UTCDateTime, id::ObjectId}, @@ -148,10 +148,11 @@ async fn dkim_management(server: &Server, task: &TaskDomainManagement) -> trc::R let secret = { if dkim.selector_template.contains("dummy") { match algorithm { - DkimSignatureType::Dkim1Ed25519Sha256 => TEST_ED25519_KEY.to_string(), - DkimSignatureType::Dkim1RsaSha256 => TEST_RSA_KEY.to_string(), - DkimSignatureType::Dkim2Ed25519Sha256 - | DkimSignatureType::Dkim2RsaSha256 => todo!(), + DkimSignatureType::Dkim1Ed25519Sha256 + | DkimSignatureType::Dkim2Ed25519Sha256 => TEST_ED25519_KEY.to_string(), + DkimSignatureType::Dkim1RsaSha256 | DkimSignatureType::Dkim2RsaSha256 => { + TEST_RSA_KEY.to_string() + } } } else { generate_dkim_private_key(algorithm).await.unwrap().unwrap() @@ -177,18 +178,38 @@ async fn dkim_management(server: &Server, task: &TaskDomainManagement) -> trc::R }; // Build key - let signature = Dkim1Signature { - stage: DkimRotationStage::Active, - domain_id: task.domain_id, - member_tenant_id: domain.member_tenant_id, - selector: selector.clone(), - private_key: SecretText::Text(SecretTextValue { secret }), - ..Default::default() - }; + let private_key = SecretText::Text(SecretTextValue { secret }); let mut signature = match algorithm { - DkimSignatureType::Dkim1Ed25519Sha256 => DkimSignature::Dkim1Ed25519Sha256(signature), - DkimSignatureType::Dkim1RsaSha256 => DkimSignature::Dkim1RsaSha256(signature), - DkimSignatureType::Dkim2Ed25519Sha256 | DkimSignatureType::Dkim2RsaSha256 => todo!(), + DkimSignatureType::Dkim1Ed25519Sha256 | DkimSignatureType::Dkim1RsaSha256 => { + let signature = Dkim1Signature { + stage: DkimRotationStage::Active, + domain_id: task.domain_id, + member_tenant_id: domain.member_tenant_id, + selector: selector.clone(), + private_key, + ..Default::default() + }; + if algorithm == DkimSignatureType::Dkim1Ed25519Sha256 { + DkimSignature::Dkim1Ed25519Sha256(signature) + } else { + DkimSignature::Dkim1RsaSha256(signature) + } + } + DkimSignatureType::Dkim2Ed25519Sha256 | DkimSignatureType::Dkim2RsaSha256 => { + let signature = Dkim2Signature { + stage: DkimRotationStage::Active, + domain_id: task.domain_id, + member_tenant_id: domain.member_tenant_id, + selector: selector.clone(), + private_key, + ..Default::default() + }; + if algorithm == DkimSignatureType::Dkim2Ed25519Sha256 { + DkimSignature::Dkim2Ed25519Sha256(signature) + } else { + DkimSignature::Dkim2RsaSha256(signature) + } + } }; // Publish key diff --git a/crates/smtp/src/inbound/data.rs b/crates/smtp/src/inbound/data.rs index 44cfcbf6..ed6b075b 100644 --- a/crates/smtp/src/inbound/data.rs +++ b/crates/smtp/src/inbound/data.rs @@ -29,17 +29,18 @@ use common::{ scripts::ScriptModification, }; use mail_auth::{ - AuthenticatedMessage, AuthenticationResults, DkimResult, DmarcResult, ReceivedSpf, + AuthenticatedMessage, AuthenticationResults, Dkim2Result, DkimResult, DmarcResult, ReceivedSpf, common::{ crypto::Algorithm, headers::{Header, HeaderWriter}, verify::VerifySignature, }, dkim::DkimError, + dkim2::{Dkim2Dsn, Dkim2DsnFailure, Envelope as Dkim2Envelope}, dmarc::{self, verify::DmarcParameters}, }; use mail_builder::headers::{date::Date, message_id::generate_message_id_header}; -use mail_parser::{MessageParser, parsers::fields::thread::thread_name}; +use mail_parser::{MessageParser, MimeHeaders, parsers::fields::thread::thread_name}; use registry::schema::structs::Rate; use sieve::{SpamStatus, runtime::Variable}; use smtp_proto::{ @@ -233,12 +234,99 @@ impl Session { None }; - // Build authentication results header + // Verify DKIM2 let mail_from = self.data.mail_from.as_ref().unwrap(); + let dkim2_output = if (dkim.verify() || dmarc.verify()) + && (!auth_message.dkim2_signatures.is_empty() || auth_message.has_dkim2_errors) + { + // Discard forged DKIM2-signed delivery status notifications + if dkim.verify() + && !auth_message.dkim2_signatures.is_empty() + && let Some(dsn) = + parse_dkim2_dsn(&parsed_message, &auth_message, raw_message.as_slice()) + && let Err(failure) = self + .server + .core + .smtp + .resolvers + .dns + .verify_dkim2_dsn( + self.server.inner.cache.build_auth_parameters(&dsn), + Dkim2Envelope { + mail_from: &mail_from.address, + rcpt_to: self.data.rcpt_to.iter().map(|r| r.address.as_str()), + }, + ) + .await + && matches!( + failure, + Dkim2DsnFailure::DsnChainFailed + | Dkim2DsnFailure::ReturnedChainFailed + | Dkim2DsnFailure::NotAligned + ) + { + trc::event!( + Smtp(SmtpEvent::Dkim2DsnDiscarded), + SpanId = self.data.session_id, + From = mail_from.address.to_string(), + To = self + .data + .rcpt_to + .iter() + .map(|rcpt| trc::Value::from(rcpt.address.to_string())) + .collect::>(), + Reason = failure.to_string(), + ); + + self.data.messages_sent += 1; + return (b"250 2.0.0 Message queued for delivery.\r\n"[..]).into(); + } + + let time = Instant::now(); + let output = self + .server + .core + .smtp + .resolvers + .dns + .verify_dkim2( + self.server.inner.cache.build_auth_parameters(&auth_message), + Dkim2Envelope { + mail_from: &mail_from.address, + rcpt_to: self.data.rcpt_to.iter().map(|r| r.address.as_str()), + }, + ) + .await; + + if !matches!(output.result(), Dkim2Result::None) { + trc::event!( + Smtp(if matches!(output.result(), Dkim2Result::Pass) { + SmtpEvent::Dkim2Pass + } else { + SmtpEvent::Dkim2Fail + }), + SpanId = self.data.session_id, + Result = trc::Error::from(&output), + Elapsed = time.elapsed(), + ); + } + + Some(output) + } else { + None + }; + + // Build authentication results header let mut auth_results = AuthenticationResults::new(&self.hostname); if !dkim_output.is_empty() { auth_results = auth_results.with_dkim_results(&dkim_output, auth_message.from()) } + if let Some(dkim2_output) = &dkim2_output + && (!matches!(dkim2_output.result(), Dkim2Result::None) + || !dkim2_output.chain().is_empty()) + { + auth_results = auth_results.with_dkim2_result(dkim2_output); + } if let Some(spf_ehlo) = &self.data.spf_ehlo { auth_results = auth_results.with_spf_ehlo_result( spf_ehlo, @@ -273,6 +361,7 @@ impl Session { DmarcParameters { message: &auth_message, dkim_output: &dkim_output, + dkim2_output: dkim2_output.as_ref(), rfc5321_mail_from_domain: if !mail_from.domain.is_empty() { &mail_from.domain } else { @@ -329,6 +418,7 @@ impl Session { rejected, dmarc_output, &dkim_output, + dkim2_output.as_ref(), &arc_output, ) .await; @@ -438,6 +528,7 @@ impl Session { .spam_classify( &parsed_message, &dkim_output, + dkim2_output.as_ref(), (&arc_output).into(), dmarc_result.as_ref(), dmarc_policy.as_ref(), @@ -688,7 +779,7 @@ impl Session { { match self.server.dkim_signers(&sign_with_domain).await { Ok(Some(signers)) => { - for signer in signers.as_ref() { + for signer in &signers.dkim1 { match signer.sign_chained(&[headers.as_ref(), raw_message]) { Ok(signature) => { signature.write_header(&mut headers); @@ -999,3 +1090,47 @@ impl Session { headers.extend_from_slice(b"\r\n"); } } + +fn parse_dkim2_dsn<'x, 'r>( + parsed_message: &mail_parser::Message<'x>, + raw: &'r AuthenticatedMessage<'x>, + raw_message: &'x [u8], +) -> Option, AuthenticatedMessage<'x>>> { + if !parsed_message.content_type().is_some_and(|ct| { + ct.ctype().eq_ignore_ascii_case("multipart") + && ct + .subtype() + .is_some_and(|subtype| subtype.eq_ignore_ascii_case("report")) + && ct + .attribute("report-type") + .is_some_and(|report_type| report_type.eq_ignore_ascii_case("delivery-status")) + }) { + return None; + } + let mail_parser::PartType::Multipart(children) = &parsed_message.root_part().body else { + return None; + }; + + let mut returned = &b""[..]; + let mut returned_full = false; + for child in children { + let part = parsed_message.parts.get(*child as usize)?; + if part.is_content_type("message", "rfc822") { + returned = raw_message.get(part.offset_body as usize..part.offset_end as usize)?; + returned_full = true; + } else if part.is_content_type("text", "rfc822-headers") { + returned = raw_message.get(part.offset_body as usize..part.offset_end as usize)?; + returned_full = false; + } + } + + if !returned.is_empty() { + Some(Dkim2Dsn::new( + raw, + AuthenticatedMessage::parse(returned)?, + returned_full, + )) + } else { + None + } +} diff --git a/crates/smtp/src/inbound/mod.rs b/crates/smtp/src/inbound/mod.rs index ff622120..ff255228 100644 --- a/crates/smtp/src/inbound/mod.rs +++ b/crates/smtp/src/inbound/mod.rs @@ -4,14 +4,10 @@ * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL */ +use common::config::smtp::auth::Dkim1Signer; +use mail_auth::{DkimResult, DmarcResult, IprevResult, SpfResult, dkim::Signature, dmarc::Policy}; use std::borrow::Cow; -use common::config::smtp::auth::{ArcSealer, DkimSigner}; -use mail_auth::{ - ArcOutput, AuthenticatedMessage, AuthenticationResults, DkimResult, DmarcResult, IprevResult, - SpfResult, arc::ArcSet, dkim::Signature, dmarc::Policy, -}; - pub mod auth; pub mod data; pub mod ehlo; @@ -30,45 +26,22 @@ pub struct FilterResponse { pub disconnect: bool, } -pub trait ArcSeal { - fn seal<'x>( - &self, - message: &'x AuthenticatedMessage, - results: &'x AuthenticationResults, - arc_output: &'x ArcOutput, - ) -> mail_auth::Result>; -} - -impl ArcSeal for ArcSealer { - fn seal<'x>( - &self, - message: &'x AuthenticatedMessage, - results: &'x AuthenticationResults, - arc_output: &'x ArcOutput, - ) -> mail_auth::Result> { - match self { - ArcSealer::RsaSha256(sealer) => sealer.seal(message, results, arc_output), - ArcSealer::Ed25519Sha256(sealer) => sealer.seal(message, results, arc_output), - } - } -} - pub trait DkimSign { fn sign(&self, message: &[u8]) -> mail_auth::Result; fn sign_chained(&self, message: &[&[u8]]) -> mail_auth::Result; } -impl DkimSign for DkimSigner { +impl DkimSign for Dkim1Signer { fn sign(&self, message: &[u8]) -> mail_auth::Result { match self { - DkimSigner::RsaSha256(signer) => signer.sign(message), - DkimSigner::Ed25519Sha256(signer) => signer.sign(message), + Dkim1Signer::RsaSha256(signer) => signer.sign(message), + Dkim1Signer::Ed25519Sha256(signer) => signer.sign(message), } } fn sign_chained(&self, message: &[&[u8]]) -> mail_auth::Result { match self { - DkimSigner::RsaSha256(signer) => signer.sign_chained(message.iter().copied()), - DkimSigner::Ed25519Sha256(signer) => signer.sign_chained(message.iter().copied()), + Dkim1Signer::RsaSha256(signer) => signer.sign_chained(message.iter().copied()), + Dkim1Signer::Ed25519Sha256(signer) => signer.sign_chained(message.iter().copied()), } } } diff --git a/crates/smtp/src/inbound/spam.rs b/crates/smtp/src/inbound/spam.rs index 7d059c85..0ebb6705 100644 --- a/crates/smtp/src/inbound/spam.rs +++ b/crates/smtp/src/inbound/spam.rs @@ -6,7 +6,7 @@ use crate::core::Session; use common::{config::mailstore::spamfilter::SpamFilterAction, network::SessionStream}; -use mail_auth::{ArcOutput, DkimOutput, DmarcResult, dmarc::Policy}; +use mail_auth::{ArcOutput, DkimOutput, DmarcResult, dkim2::Dkim2Output, dmarc::Policy}; use mail_parser::Message; use spam_filter::{ SpamFilterInput, @@ -21,6 +21,7 @@ impl Session { &'x self, message: &'x Message<'x>, dkim_result: &'x [DkimOutput<'x>], + dkim2_result: Option<&'x Dkim2Output<'x>>, arc_result: Option<&'x ArcOutput<'x>>, dmarc_result: Option<&'x DmarcResult>, dmarc_policy: Option<&'x Policy>, @@ -29,6 +30,7 @@ impl Session { let mut ctx = server.spam_filter_init(self.build_spam_input( message, dkim_result, + dkim2_result, arc_result, dmarc_result, dmarc_policy, @@ -47,6 +49,7 @@ impl Session { &'x self, message: &'x Message<'x>, dkim_result: &'x [DkimOutput<'x>], + dkim2_result: Option<&'x Dkim2Output<'x>>, arc_result: Option<&'x ArcOutput>, dmarc_result: Option<&'x DmarcResult>, dmarc_policy: Option<&'x Policy>, @@ -58,6 +61,7 @@ impl Session { spf_ehlo_result: self.data.spf_ehlo.as_ref(), spf_mail_from_result: self.data.spf_mail_from.as_ref(), dkim_result, + dkim2_result, dmarc_result, dmarc_policy, iprev_result: self.data.iprev.as_ref(), diff --git a/crates/smtp/src/outbound/delivery.rs b/crates/smtp/src/outbound/delivery.rs index c1c6d1b4..6a701f08 100644 --- a/crates/smtp/src/outbound/delivery.rs +++ b/crates/smtp/src/outbound/delivery.rs @@ -300,77 +300,79 @@ impl QueuedMessage { ); // Obtain TLS reporting - let tls_report = - if is_smtp && mx_config.is_some() && (message.message.flags & FROM_REPORT == 0) { - match server - .eval_if( - &server.core.smtp.report.tls.send, - &envelope, - message.span_id, - ) - .await - .unwrap_or(AggregateFrequency::Never) - { - interval @ (AggregateFrequency::Hourly - | AggregateFrequency::Daily - | AggregateFrequency::Weekly) => { - let time = Instant::now(); - match server - .core - .smtp - .resolvers - .dns - .txt_lookup::( - format!("_smtp._tls.{domain}."), - Some(&server.inner.cache.dns_txt), - ) - .await - { - Ok(record) => { - trc::event!( - TlsRpt(TlsRptEvent::RecordFetch), - SpanId = message.span_id, - Domain = domain.to_string(), - Details = record - .rua - .iter() - .map(|uri| trc::Value::from(match uri { - mail_auth::mta_sts::ReportUri::Mail(uri) - | mail_auth::mta_sts::ReportUri::Http(uri) => - uri.to_string(), - })) - .collect::>(), - Elapsed = time.elapsed(), - ); + let tls_report = if is_smtp + && mx_config.is_some() + && (message.message.flags & FROM_REPORT == 0) + { + match server + .eval_if( + &server.core.smtp.report.tls.send, + &envelope, + message.span_id, + ) + .await + .unwrap_or(AggregateFrequency::Never) + { + interval @ (AggregateFrequency::Hourly + | AggregateFrequency::Daily + | AggregateFrequency::Weekly) => { + let time = Instant::now(); + match server + .core + .smtp + .resolvers + .dns + .txt_lookup::( + format!("_smtp._tls.{domain}."), + Some(&server.inner.cache.dns_txt), + ) + .await + { + Ok(record) => { + trc::event!( + TlsRpt(TlsRptEvent::RecordFetch), + SpanId = message.span_id, + Domain = domain.to_string(), + Details = record + .rua + .iter() + .map(|uri| trc::Value::from(match uri { + mail_auth::mta_sts::ReportUri::Mail(uri) + | mail_auth::mta_sts::ReportUri::Http(uri) => + uri.to_string(), + })) + .collect::>(), + Elapsed = time.elapsed(), + ); - TlsRptOptions { record, interval }.into() - } - Err(mail_auth::Error::Dns(mail_auth::DnsError::RecordNotFound(_))) => { - trc::event!( - TlsRpt(TlsRptEvent::RecordNotFound), - SpanId = message.span_id, - Domain = domain.to_string(), - Elapsed = time.elapsed(), - ); - None - } - Err(err) => { - trc::event!( - TlsRpt(TlsRptEvent::RecordFetchError), - SpanId = message.span_id, - Domain = domain.to_string(), - CausedBy = trc::Error::from(err), - Elapsed = time.elapsed(), - ); - None - } + TlsRptOptions { record, interval }.into() + } + Err(mail_auth::Error::Dns(mail_auth::DnsError::RecordNotFound(_))) => { + trc::event!( + TlsRpt(TlsRptEvent::RecordNotFound), + SpanId = message.span_id, + Domain = domain.to_string(), + Elapsed = time.elapsed(), + ); + None + } + Err(err) => { + trc::event!( + TlsRpt(TlsRptEvent::RecordFetchError), + SpanId = message.span_id, + Domain = domain.to_string(), + CausedBy = trc::Error::from(err), + Elapsed = time.elapsed(), + ); + None } } - _ => None, } - } else { - None - }; + _ => None, + } + } else { + None + }; // Obtain MTA-STS policy for domain let mta_sts_policy = if mx_config.is_some() && tls_strategy.try_mta_sts() && is_smtp { @@ -400,7 +402,9 @@ impl QueuedMessage { let strict = tls_strategy.is_mta_sts_required(); if let Some(tls_report) = &tls_report { match &err { - mta_sts::Error::Dns(mail_auth::Error::Dns(mail_auth::DnsError::RecordNotFound(_))) => { + mta_sts::Error::Dns(mail_auth::Error::Dns( + mail_auth::DnsError::RecordNotFound(_), + )) => { if strict { server.schedule_report(TlsEvent { policy: PolicyType::Sts(None), @@ -417,7 +421,9 @@ impl QueuedMessage { .await; } } - mta_sts::Error::Dns(mail_auth::Error::Dns(mail_auth::DnsError::Resolver(_))) => (), + mta_sts::Error::Dns(mail_auth::Error::Dns( + mail_auth::DnsError::Resolver(_), + )) => (), _ => { server .schedule_report(TlsEvent { @@ -436,7 +442,9 @@ impl QueuedMessage { } match &err { - mta_sts::Error::Dns(mail_auth::Error::Dns(mail_auth::DnsError::RecordNotFound(_))) => { + mta_sts::Error::Dns(mail_auth::Error::Dns( + mail_auth::DnsError::RecordNotFound(_), + )) => { trc::event!( MtaSts(MtaStsEvent::PolicyNotFound), SpanId = message.span_id, @@ -821,8 +829,12 @@ impl QueuedMessage { None } Err(err) => { - let not_found = - matches!(&err, mail_auth::Error::Dns(mail_auth::DnsError::RecordNotFound(_))); + let not_found = matches!( + &err, + mail_auth::Error::Dns(mail_auth::DnsError::RecordNotFound( + _ + )) + ); if not_found { trc::event!( diff --git a/crates/smtp/src/reporting/dmarc.rs b/crates/smtp/src/reporting/dmarc.rs index c86aa6cd..d46f4fd4 100644 --- a/crates/smtp/src/reporting/dmarc.rs +++ b/crates/smtp/src/reporting/dmarc.rs @@ -21,6 +21,7 @@ use mail_auth::{ ArcOutput, AuthenticatedMessage, AuthenticationResults, DkimOutput, DkimResult, DmarcOutput, SpfResult, common::verify::VerifySignature, + dkim2::Dkim2Output, dmarc::{self}, report::{AuthFailureType, IdentityAlignment, PolicyPublished, Record, SPFDomainScope}, }; @@ -50,6 +51,7 @@ impl Session { rejected: bool, dmarc_output: DmarcOutput, dkim_output: &[DkimOutput<'_>], + dkim2_output: Option<&Dkim2Output<'_>>, arc_output: &Option>, ) { let dmarc_record = dmarc_output.dmarc_record_cloned().unwrap(); @@ -282,6 +284,9 @@ impl Session { .map(|mf| mf.domain.as_str()) .unwrap_or_else(|| self.data.helo_domain.as_str()), ); + if let Some(dkim2_output) = dkim2_output { + report_record = report_record.with_dkim2_output(dkim2_output); + } if let Some(spf_ehlo) = &self.data.spf_ehlo { report_record = report_record.with_spf_output(spf_ehlo, SPFDomainScope::Helo); } diff --git a/crates/smtp/src/reporting/send.rs b/crates/smtp/src/reporting/send.rs index 3953db29..c0d1349e 100644 --- a/crates/smtp/src/reporting/send.rs +++ b/crates/smtp/src/reporting/send.rs @@ -151,7 +151,7 @@ impl MtaReportSend for Server { Ok(Some(signers)) => { let mut headers = Vec::with_capacity(64); - for signer in signers.as_ref() { + for signer in &signers.dkim1 { match signer.sign(bytes) { Ok(signature) => { signature.write_header(&mut headers); diff --git a/crates/smtp/src/scripts/event_loop.rs b/crates/smtp/src/scripts/event_loop.rs index 074d8643..a8cf4c77 100644 --- a/crates/smtp/src/scripts/event_loop.rs +++ b/crates/smtp/src/scripts/event_loop.rs @@ -282,7 +282,7 @@ impl RunScript for Server { Ok(Some(signers)) => { let mut headers = Vec::new(); - for signer in signers.as_ref() { + for signer in &signers.dkim1 { match signer.sign(raw_message) { Ok(signature) => { signature.write_header(&mut headers); diff --git a/crates/spam-filter/src/analysis/dmarc.rs b/crates/spam-filter/src/analysis/dmarc.rs index 230ff27f..9b4903a6 100644 --- a/crates/spam-filter/src/analysis/dmarc.rs +++ b/crates/spam-filter/src/analysis/dmarc.rs @@ -7,7 +7,7 @@ use std::future::Future; use common::Server; -use mail_auth::{DkimResult, DmarcResult, SpfResult, dmarc::Policy}; +use mail_auth::{Dkim2Result, DkimResult, DmarcResult, SpfResult, dmarc::Policy}; use crate::SpamFilterContext; @@ -52,6 +52,18 @@ impl SpamFilterAnalyzeDmarc for Server { }, ); + ctx.result.add_tag( + ctx.input + .dkim2_result + .map_or("DKIM2_NA", |r| match r.result() { + Dkim2Result::Pass => "DKIM2_ALLOW", + Dkim2Result::Fail(_) => "DKIM2_REJECT", + Dkim2Result::PermError(_) => "DKIM2_PERMFAIL", + Dkim2Result::TempError(_) => "DKIM2_TEMPFAIL", + Dkim2Result::None => "DKIM2_NA", + }), + ); + ctx.result .add_tag(ctx.input.arc_result.map_or("ARC_NA", |r| match r.result() { DkimResult::Pass => "ARC_ALLOW", diff --git a/crates/spam-filter/src/lib.rs b/crates/spam-filter/src/lib.rs index a04d4f25..9657c330 100644 --- a/crates/spam-filter/src/lib.rs +++ b/crates/spam-filter/src/lib.rs @@ -11,7 +11,9 @@ pub mod modules; use analysis::ElementLocation; use analysis::url::UrlParts; -use mail_auth::{ArcOutput, DkimOutput, DmarcResult, IprevOutput, SpfOutput, dmarc::Policy}; +use mail_auth::{ + ArcOutput, DkimOutput, DmarcResult, IprevOutput, SpfOutput, dkim2::Dkim2Output, dmarc::Policy, +}; use mail_parser::Message; use modules::html::HtmlToken; use nlp::tokenizers::types::TokenType; @@ -30,6 +32,7 @@ pub struct SpamFilterInput<'x> { pub spf_ehlo_result: Option<&'x SpfOutput>, pub spf_mail_from_result: Option<&'x SpfOutput>, pub dkim_result: &'x [DkimOutput<'x>], + pub dkim2_result: Option<&'x Dkim2Output<'x>>, pub dmarc_result: Option<&'x DmarcResult>, pub dmarc_policy: Option<&'x Policy>, pub iprev_result: Option<&'x IprevOutput>, @@ -147,6 +150,7 @@ impl<'x> SpamFilterInput<'x> { spf_ehlo_result: None, spf_mail_from_result: None, dkim_result: &[], + dkim2_result: None, dmarc_result: None, dmarc_policy: None, iprev_result: None, diff --git a/crates/trc/src/event/conv.rs b/crates/trc/src/event/conv.rs index ddfab62d..db467960 100644 --- a/crates/trc/src/event/conv.rs +++ b/crates/trc/src/event/conv.rs @@ -442,6 +442,36 @@ impl From<&mail_auth::DkimResult> for Error { } } +impl From<&mail_auth::Dkim2Result> for Error { + fn from(value: &mail_auth::Dkim2Result) -> Self { + match value.clone() { + mail_auth::Dkim2Result::Pass => Error::new(EventType::Dkim(DkimEvent::Pass)), + mail_auth::Dkim2Result::Fail(err) => { + Error::new(EventType::Dkim(DkimEvent::Fail)).caused_by(Error::from(err)) + } + mail_auth::Dkim2Result::PermError(err) => { + Error::new(EventType::Dkim(DkimEvent::PermError)).caused_by(Error::from(err)) + } + mail_auth::Dkim2Result::TempError(err) => { + Error::new(EventType::Dkim(DkimEvent::TempError)).caused_by(Error::from(err)) + } + mail_auth::Dkim2Result::None => Error::new(EventType::Dkim(DkimEvent::None)), + } + } +} + +impl From<&mail_auth::dkim2::Dkim2Output<'_>> for Error { + fn from(value: &mail_auth::dkim2::Dkim2Output<'_>) -> Self { + Error::from(value.result()).ctx_opt( + Key::Domain, + value + .chain() + .first() + .map(|link| link.signature.d.to_compact_string()), + ) + } +} + impl From<&mail_auth::DmarcResult> for Error { fn from(value: &mail_auth::DmarcResult) -> Self { match value.clone() { diff --git a/crates/trc/src/event/enums.rs b/crates/trc/src/event/enums.rs index aa4523ae..88b88547 100644 --- a/crates/trc/src/event/enums.rs +++ b/crates/trc/src/event/enums.rs @@ -6,8 +6,8 @@ // This file is auto-generated. Do not edit directly. -pub const TOTAL_EVENT_COUNT: usize = 630; -pub const TOTAL_METRIC_COUNT: usize = 364; +pub const TOTAL_EVENT_COUNT: usize = 633; +pub const TOTAL_METRIC_COUNT: usize = 367; #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub enum EventType { @@ -681,6 +681,9 @@ pub enum SmtpEvent { LoopDetected = 443, DkimPass = 422, DkimFail = 421, + Dkim2Pass = 630, + Dkim2Fail = 631, + Dkim2DsnDiscarded = 632, ArcPass = 410, ArcFail = 409, SpfEhloPass = 474, @@ -1182,6 +1185,9 @@ pub enum MetricType { SmtpLoopDetected = 255, SmtpDkimPass = 256, SmtpDkimFail = 257, + SmtpDkim2Pass = 364, + SmtpDkim2Fail = 365, + SmtpDkim2DsnDiscarded = 366, SmtpArcPass = 258, SmtpArcFail = 259, SmtpSpfEhloPass = 260, diff --git a/crates/trc/src/event/enums_impl.rs b/crates/trc/src/event/enums_impl.rs index e3cec6d6..666812b6 100644 --- a/crates/trc/src/event/enums_impl.rs +++ b/crates/trc/src/event/enums_impl.rs @@ -466,6 +466,9 @@ impl EventType { b"smtp.loop-detected" => EventType::Smtp(SmtpEvent::LoopDetected), b"smtp.dkim-pass" => EventType::Smtp(SmtpEvent::DkimPass), b"smtp.dkim-fail" => EventType::Smtp(SmtpEvent::DkimFail), + b"smtp.dkim2-pass" => EventType::Smtp(SmtpEvent::Dkim2Pass), + b"smtp.dkim2-fail" => EventType::Smtp(SmtpEvent::Dkim2Fail), + b"smtp.dkim2-dsn-discarded" => EventType::Smtp(SmtpEvent::Dkim2DsnDiscarded), b"smtp.arc-pass" => EventType::Smtp(SmtpEvent::ArcPass), b"smtp.arc-fail" => EventType::Smtp(SmtpEvent::ArcFail), b"smtp.spf-ehlo-pass" => EventType::Smtp(SmtpEvent::SpfEhloPass), @@ -1218,6 +1221,9 @@ impl EventType { EventType::Smtp(SmtpEvent::LoopDetected) => "smtp.loop-detected", EventType::Smtp(SmtpEvent::DkimPass) => "smtp.dkim-pass", EventType::Smtp(SmtpEvent::DkimFail) => "smtp.dkim-fail", + EventType::Smtp(SmtpEvent::Dkim2Pass) => "smtp.dkim2-pass", + EventType::Smtp(SmtpEvent::Dkim2Fail) => "smtp.dkim2-fail", + EventType::Smtp(SmtpEvent::Dkim2DsnDiscarded) => "smtp.dkim2-dsn-discarded", EventType::Smtp(SmtpEvent::ArcPass) => "smtp.arc-pass", EventType::Smtp(SmtpEvent::ArcFail) => "smtp.arc-fail", EventType::Smtp(SmtpEvent::SpfEhloPass) => "smtp.spf-ehlo-pass", @@ -1873,6 +1879,9 @@ impl EventType { EventType::Smtp(SmtpEvent::LoopDetected) => 443, EventType::Smtp(SmtpEvent::DkimPass) => 422, EventType::Smtp(SmtpEvent::DkimFail) => 421, + EventType::Smtp(SmtpEvent::Dkim2Pass) => 630, + EventType::Smtp(SmtpEvent::Dkim2Fail) => 631, + EventType::Smtp(SmtpEvent::Dkim2DsnDiscarded) => 632, EventType::Smtp(SmtpEvent::ArcPass) => 410, EventType::Smtp(SmtpEvent::ArcFail) => 409, EventType::Smtp(SmtpEvent::SpfEhloPass) => 474, @@ -2546,6 +2555,9 @@ impl EventType { 443 => Some(EventType::Smtp(SmtpEvent::LoopDetected)), 422 => Some(EventType::Smtp(SmtpEvent::DkimPass)), 421 => Some(EventType::Smtp(SmtpEvent::DkimFail)), + 630 => Some(EventType::Smtp(SmtpEvent::Dkim2Pass)), + 631 => Some(EventType::Smtp(SmtpEvent::Dkim2Fail)), + 632 => Some(EventType::Smtp(SmtpEvent::Dkim2DsnDiscarded)), 410 => Some(EventType::Smtp(SmtpEvent::ArcPass)), 409 => Some(EventType::Smtp(SmtpEvent::ArcFail)), 474 => Some(EventType::Smtp(SmtpEvent::SpfEhloPass)), @@ -2940,6 +2952,9 @@ impl EventType { EventType::Smtp(SmtpEvent::LoopDetected) => Level::Info, EventType::Smtp(SmtpEvent::DkimPass) => Level::Info, EventType::Smtp(SmtpEvent::DkimFail) => Level::Info, + EventType::Smtp(SmtpEvent::Dkim2Pass) => Level::Info, + EventType::Smtp(SmtpEvent::Dkim2Fail) => Level::Info, + EventType::Smtp(SmtpEvent::Dkim2DsnDiscarded) => Level::Info, EventType::Smtp(SmtpEvent::ArcPass) => Level::Info, EventType::Smtp(SmtpEvent::ArcFail) => Level::Info, EventType::Smtp(SmtpEvent::SpfEhloPass) => Level::Info, @@ -3659,6 +3674,9 @@ impl EventType { EventType::Smtp(SmtpEvent::LoopDetected) => "Mail loop detected", EventType::Smtp(SmtpEvent::DkimPass) => "DKIM verification passed", EventType::Smtp(SmtpEvent::DkimFail) => "DKIM verification failed", + EventType::Smtp(SmtpEvent::Dkim2Pass) => "DKIM2 verification passed", + EventType::Smtp(SmtpEvent::Dkim2Fail) => "DKIM2 verification failed", + EventType::Smtp(SmtpEvent::Dkim2DsnDiscarded) => "DKIM2 DSN discarded", EventType::Smtp(SmtpEvent::ArcPass) => "ARC verification passed", EventType::Smtp(SmtpEvent::ArcFail) => "ARC verification failed", EventType::Smtp(SmtpEvent::SpfEhloPass) => "SPF EHLO check passed", @@ -4024,6 +4042,9 @@ impl EventType { EventType::Smtp(SmtpEvent::LoopDetected) => "SMTP error", EventType::Smtp(SmtpEvent::DkimPass) => "SMTP error", EventType::Smtp(SmtpEvent::DkimFail) => "SMTP error", + EventType::Smtp(SmtpEvent::Dkim2Pass) => "SMTP error", + EventType::Smtp(SmtpEvent::Dkim2Fail) => "SMTP error", + EventType::Smtp(SmtpEvent::Dkim2DsnDiscarded) => "SMTP error", EventType::Smtp(SmtpEvent::ArcPass) => "SMTP error", EventType::Smtp(SmtpEvent::ArcFail) => "SMTP error", EventType::Smtp(SmtpEvent::SpfEhloPass) => "SMTP error", @@ -4589,6 +4610,9 @@ impl EventType { EventType::Smtp(SmtpEvent::LoopDetected), EventType::Smtp(SmtpEvent::DkimPass), EventType::Smtp(SmtpEvent::DkimFail), + EventType::Smtp(SmtpEvent::Dkim2Pass), + EventType::Smtp(SmtpEvent::Dkim2Fail), + EventType::Smtp(SmtpEvent::Dkim2DsnDiscarded), EventType::Smtp(SmtpEvent::ArcPass), EventType::Smtp(SmtpEvent::ArcFail), EventType::Smtp(SmtpEvent::SpfEhloPass), @@ -5054,6 +5078,9 @@ impl MetricType { b"smtp.loop-detected" => MetricType::SmtpLoopDetected, b"smtp.dkim-pass" => MetricType::SmtpDkimPass, b"smtp.dkim-fail" => MetricType::SmtpDkimFail, + b"smtp.dkim2-pass" => MetricType::SmtpDkim2Pass, + b"smtp.dkim2-fail" => MetricType::SmtpDkim2Fail, + b"smtp.dkim2-dsn-discarded" => MetricType::SmtpDkim2DsnDiscarded, b"smtp.arc-pass" => MetricType::SmtpArcPass, b"smtp.arc-fail" => MetricType::SmtpArcFail, b"smtp.spf-ehlo-pass" => MetricType::SmtpSpfEhloPass, @@ -5434,6 +5461,9 @@ impl MetricType { MetricType::SmtpLoopDetected => "smtp.loop-detected", MetricType::SmtpDkimPass => "smtp.dkim-pass", MetricType::SmtpDkimFail => "smtp.dkim-fail", + MetricType::SmtpDkim2Pass => "smtp.dkim2-pass", + MetricType::SmtpDkim2Fail => "smtp.dkim2-fail", + MetricType::SmtpDkim2DsnDiscarded => "smtp.dkim2-dsn-discarded", MetricType::SmtpArcPass => "smtp.arc-pass", MetricType::SmtpArcFail => "smtp.arc-fail", MetricType::SmtpSpfEhloPass => "smtp.spf-ehlo-pass", @@ -5805,6 +5835,9 @@ impl MetricType { MetricType::SmtpLoopDetected => 255, MetricType::SmtpDkimPass => 256, MetricType::SmtpDkimFail => 257, + MetricType::SmtpDkim2Pass => 364, + MetricType::SmtpDkim2Fail => 365, + MetricType::SmtpDkim2DsnDiscarded => 366, MetricType::SmtpArcPass => 258, MetricType::SmtpArcFail => 259, MetricType::SmtpSpfEhloPass => 260, @@ -6174,6 +6207,9 @@ impl MetricType { 255 => Some(MetricType::SmtpLoopDetected), 256 => Some(MetricType::SmtpDkimPass), 257 => Some(MetricType::SmtpDkimFail), + 364 => Some(MetricType::SmtpDkim2Pass), + 365 => Some(MetricType::SmtpDkim2Fail), + 366 => Some(MetricType::SmtpDkim2DsnDiscarded), 258 => Some(MetricType::SmtpArcPass), 259 => Some(MetricType::SmtpArcFail), 260 => Some(MetricType::SmtpSpfEhloPass), @@ -6522,6 +6558,9 @@ impl MetricType { MetricType::SmtpLoopDetected => 443, MetricType::SmtpDkimPass => 422, MetricType::SmtpDkimFail => 421, + MetricType::SmtpDkim2Pass => 630, + MetricType::SmtpDkim2Fail => 631, + MetricType::SmtpDkim2DsnDiscarded => 632, MetricType::SmtpArcPass => 410, MetricType::SmtpArcFail => 409, MetricType::SmtpSpfEhloPass => 474, @@ -6899,6 +6938,9 @@ impl MetricType { MetricType::SmtpLoopDetected => "Mail loop detected", MetricType::SmtpDkimPass => "DKIM verification passed", MetricType::SmtpDkimFail => "DKIM verification failed", + MetricType::SmtpDkim2Pass => "DKIM2 verification passed", + MetricType::SmtpDkim2Fail => "DKIM2 verification failed", + MetricType::SmtpDkim2DsnDiscarded => "DKIM2 DSN discarded", MetricType::SmtpArcPass => "ARC verification passed", MetricType::SmtpArcFail => "ARC verification failed", MetricType::SmtpSpfEhloPass => "SPF EHLO check passed", @@ -7256,6 +7298,9 @@ impl MetricType { | MetricType::SmtpLoopDetected | MetricType::SmtpDkimPass | MetricType::SmtpDkimFail + | MetricType::SmtpDkim2Pass + | MetricType::SmtpDkim2Fail + | MetricType::SmtpDkim2DsnDiscarded | MetricType::SmtpArcPass | MetricType::SmtpArcFail | MetricType::SmtpSpfEhloPass @@ -7637,6 +7682,9 @@ impl MetricType { MetricType::SmtpLoopDetected, MetricType::SmtpDkimPass, MetricType::SmtpDkimFail, + MetricType::SmtpDkim2Pass, + MetricType::SmtpDkim2Fail, + MetricType::SmtpDkim2DsnDiscarded, MetricType::SmtpArcPass, MetricType::SmtpArcFail, MetricType::SmtpSpfEhloPass, diff --git a/resources/schema/schema.json.gz b/resources/schema/schema.json.gz index d46002f8b281c2800073555c14fb3f978ae57d49..db069c2639f101ed4dc8fb26e0045ac66a92db7f 100644 GIT binary patch delta 114611 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 *295eJ8sV#-MnTjS# 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 z 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 aYyRv~|5RR(Q`e>a?Ee7@u`AKUHVy!5wpbVd diff --git a/resources/schema/schema.json.sha256 b/resources/schema/schema.json.sha256 index 017aae52..5b1bcc22 100644 --- a/resources/schema/schema.json.sha256 +++ b/resources/schema/schema.json.sha256 @@ -1 +1 @@ -FLxK3azkzVxELInWViuc-_dg8JEbSF7YkWZfH-PjzeA \ No newline at end of file +hFFGU64dDXCQt2y4dqKbd_2qzMdcWCa1eKu2PT1zzrM \ No newline at end of file diff --git a/tests/resources/smtp/antispam/combined.test b/tests/resources/smtp/antispam/combined.test index 4580d5d8..ee411e8a 100644 --- a/tests/resources/smtp/antispam/combined.test +++ b/tests/resources/smtp/antispam/combined.test @@ -6,7 +6,7 @@ spf.result none spf_ehlo.result none dmarc.result none remote_ip 195.210.29.48 -expect_header X-Spam-Result: ARC_NA (0.00), DKIM_NA (0.00), FROM_EQ_ENV_FROM (0.00), FROM_HAS_DN (0.00), HAS_DATA_URI (0.00), HAS_LINK_TO_LARGE_IMG (0.00), HTML_SHORT_1 (0.00), MID_RHS_MATCH_ENV_FROM (0.00), RCPT_COUNT_ONE (0.00), SPF_NA (0.00), SUBJECT_ENDS_EXCLAIM (0.00), TO_DN_NONE (0.00), TO_MATCH_ENVRCPT_ALL (0.00), RCVD_COUNT_ZERO (0.10), RCVD_NO_TLS_LAST (0.10), MIME_HTML_ONLY (0.20), HELO_NORES_A_OR_MX (0.30), AUTH_NA (1.00), DATE_IN_PAST (1.00), DMARC_NA (1.00), MID_RHS_MATCH_FROM (1.00), FROMHOST_NORES_A_OR_MX (1.50), HTML_SHORT_LINK_IMG_1 (2.00), RDNS_NONE (2.00), PYZOR (3.50) +expect_header X-Spam-Result: ARC_NA (0.00), DKIM2_NA (0.00), DKIM_NA (0.00), FROM_EQ_ENV_FROM (0.00), FROM_HAS_DN (0.00), HAS_DATA_URI (0.00), HAS_LINK_TO_LARGE_IMG (0.00), HTML_SHORT_1 (0.00), MID_RHS_MATCH_ENV_FROM (0.00), RCPT_COUNT_ONE (0.00), SPF_NA (0.00), SUBJECT_ENDS_EXCLAIM (0.00), TO_DN_NONE (0.00), TO_MATCH_ENVRCPT_ALL (0.00), RCVD_COUNT_ZERO (0.10), RCVD_NO_TLS_LAST (0.10), MIME_HTML_ONLY (0.20), HELO_NORES_A_OR_MX (0.30), AUTH_NA (1.00), DATE_IN_PAST (1.00), DMARC_NA (1.00), MID_RHS_MATCH_FROM (1.00), FROMHOST_NORES_A_OR_MX (1.50), HTML_SHORT_LINK_IMG_1 (2.00), RDNS_NONE (2.00), PYZOR (3.50) expect_header X-Spam-Score: spam, score=13.70 From: Client Services @@ -49,7 +49,7 @@ dkim.domains tenthrevolution.com dmarc.result pass remote_ip 185.58.86.181 tls.version TLSv1.3 -expect_header X-Spam-Result: DMARC_POLICY_ALLOW (-0.50), DKIM_ALLOW (-0.20), SPF_ALLOW (-0.20), MIME_GOOD (-0.10), ARC_NA (0.00), DKIM_SIGNED (0.00), FROM_EQ_ENV_FROM (0.00), FROM_HAS_DN (0.00), HAS_ATTACHMENT (0.00), HTML_SHORT_2 (0.00), RCPT_COUNT_ONE (0.00), RCVD_COUNT_THREE (0.00), TO_DN_EQ_ADDR_ALL (0.00), TO_MATCH_ENVRCPT_ALL (0.00), RCVD_NO_TLS_LAST (0.10), HELO_NORES_A_OR_MX (0.30), SUBJECT_ENDS_SPACES (0.50), URI_COUNT_ODD (0.50), DATE_IN_PAST (1.00), FORGED_RCVD_TRAIL (1.00), FROMHOST_NORES_A_OR_MX (1.50) +expect_header X-Spam-Result: DMARC_POLICY_ALLOW (-0.50), DKIM_ALLOW (-0.20), SPF_ALLOW (-0.20), MIME_GOOD (-0.10), ARC_NA (0.00), DKIM2_NA (0.00), DKIM_SIGNED (0.00), FROM_EQ_ENV_FROM (0.00), FROM_HAS_DN (0.00), HAS_ATTACHMENT (0.00), HTML_SHORT_2 (0.00), RCPT_COUNT_ONE (0.00), RCVD_COUNT_THREE (0.00), TO_DN_EQ_ADDR_ALL (0.00), TO_MATCH_ENVRCPT_ALL (0.00), RCVD_NO_TLS_LAST (0.10), HELO_NORES_A_OR_MX (0.30), SUBJECT_ENDS_SPACES (0.50), URI_COUNT_ODD (0.50), DATE_IN_PAST (1.00), FORGED_RCVD_TRAIL (1.00), FROMHOST_NORES_A_OR_MX (1.50) expect_header X-Spam-Score: ham, score=3.90 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tenthrevolution.com; @@ -574,7 +574,7 @@ dmarc.result fail dmarc.policy reject remote_ip 51.89.165.39 tls.version TLS1_2 -expect_header X-Spam-Result: DKIM_ALLOW (-0.20), HAS_LIST_UNSUB (-0.01), ARC_NA (0.00), DKIM_SIGNED (0.00), FROM_EQ_ENV_FROM (0.00), FROM_HAS_DN (0.00), HAS_EXTERNAL_IMG (0.00), HAS_LINK_TO_LARGE_IMG (0.00), HAS_REPLYTO (0.00), HTML_SHORT_1 (0.00), MID_RHS_MATCH_ENV_FROM (0.00), RCPT_COUNT_ONE (0.00), REPLYTO_ADDR_EQ_FROM (0.00), REPLYTO_EQ_FROM (0.00), SPF_SOFTFAIL (0.00), TO_DN_NONE (0.00), TO_MATCH_ENVRCPT_ALL (0.00), RCVD_COUNT_ZERO (0.10), RCVD_NO_TLS_LAST (0.10), HELO_NORES_A_OR_MX (0.30), DATE_IN_PAST (1.00), MID_RHS_MATCH_FROM (1.00), PARTS_DIFFER (1.00), FROMHOST_NORES_A_OR_MX (1.50), HTML_SHORT_LINK_IMG_1 (2.00), RDNS_NONE (2.00), VIOLATED_DIRECT_SPF (3.50), DMARC_POLICY_REJECT (4.00) +expect_header X-Spam-Result: DKIM_ALLOW (-0.20), HAS_LIST_UNSUB (-0.01), ARC_NA (0.00), DKIM2_NA (0.00), DKIM_SIGNED (0.00), FROM_EQ_ENV_FROM (0.00), FROM_HAS_DN (0.00), HAS_EXTERNAL_IMG (0.00), HAS_LINK_TO_LARGE_IMG (0.00), HAS_REPLYTO (0.00), HTML_SHORT_1 (0.00), MID_RHS_MATCH_ENV_FROM (0.00), RCPT_COUNT_ONE (0.00), REPLYTO_ADDR_EQ_FROM (0.00), REPLYTO_EQ_FROM (0.00), SPF_SOFTFAIL (0.00), TO_DN_NONE (0.00), TO_MATCH_ENVRCPT_ALL (0.00), RCVD_COUNT_ZERO (0.10), RCVD_NO_TLS_LAST (0.10), HELO_NORES_A_OR_MX (0.30), DATE_IN_PAST (1.00), MID_RHS_MATCH_FROM (1.00), PARTS_DIFFER (1.00), FROMHOST_NORES_A_OR_MX (1.50), HTML_SHORT_LINK_IMG_1 (2.00), RDNS_NONE (2.00), VIOLATED_DIRECT_SPF (3.50), DMARC_POLICY_REJECT (4.00) expect_header X-Spam-Score: spam, score=16.29 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=sectionalism; d=grupokonecta.net; @@ -791,7 +791,7 @@ dmarc.result pass dmarc.policy reject remote_ip 52.103.64.5 tls.version TLS1_2 -expect_header X-Spam-Result: DMARC_POLICY_ALLOW (-0.50), DKIM_ALLOW (-0.20), SPF_ALLOW (-0.20), ARC_NA (0.00), ARC_SIGNED (0.00), DKIM_SIGNED (0.00), FREEMAIL_FROM (0.00), FROM_EQ_ENV_FROM (0.00), FROM_HAS_DN (0.00), HAS_SEO_WORD (0.00), HAS_X_PRIO_ONE (0.00), HTML_SHORT_1 (0.00), MID_RHS_MATCH_ENV_FROMTLD (0.00), MID_RHS_MATCH_FROMTLD (0.00), RCPT_COUNT_ONE (0.00), RCPT_IN_BODY (0.00), RCVD_COUNT_TWO (0.00), TO_DN_EQ_ADDR_ALL (0.00), TO_MATCH_ENVRCPT_ALL (0.00), RCVD_NO_TLS_LAST (0.10), HELO_NORES_A_OR_MX (0.30), DATE_IN_PAST (1.00), FROMHOST_NORES_A_OR_MX (1.50), SEO_SPAM (5.00) +expect_header X-Spam-Result: DMARC_POLICY_ALLOW (-0.50), DKIM_ALLOW (-0.20), SPF_ALLOW (-0.20), ARC_NA (0.00), ARC_SIGNED (0.00), DKIM2_NA (0.00), DKIM_SIGNED (0.00), FREEMAIL_FROM (0.00), FROM_EQ_ENV_FROM (0.00), FROM_HAS_DN (0.00), HAS_SEO_WORD (0.00), HAS_X_PRIO_ONE (0.00), HTML_SHORT_1 (0.00), MID_RHS_MATCH_ENV_FROMTLD (0.00), MID_RHS_MATCH_FROMTLD (0.00), RCPT_COUNT_ONE (0.00), RCPT_IN_BODY (0.00), RCVD_COUNT_TWO (0.00), TO_DN_EQ_ADDR_ALL (0.00), TO_MATCH_ENVRCPT_ALL (0.00), RCVD_NO_TLS_LAST (0.10), HELO_NORES_A_OR_MX (0.30), DATE_IN_PAST (1.00), FROMHOST_NORES_A_OR_MX (1.50), SEO_SPAM (5.00) expect_header X-Spam-Score: spam, score=7.00 Return-Path: @@ -1021,7 +1021,7 @@ dmarc.result pass dmarc.policy reject remote_ip 173.224.123.255 tls.version TLS1_2 -expect_header X-Spam-Result: DMARC_POLICY_ALLOW (-0.50), DKIM_ALLOW (-0.20), SPF_ALLOW (-0.20), ARC_NA (0.00), DKIM_SIGNED (0.00), FROM_EQ_ENV_FROM (0.00), FROM_HAS_DN (0.00), HAS_EXTERNAL_IMG (0.00), HAS_REPLYTO (0.00), HAS_X_PRIO_THREE (0.00), HTML_SHORT_1 (0.00), RCPT_COUNT_ONE (0.00), REPLYTO_DN_EQ_FROM_DN (0.00), REPLYTO_DOM_EQ_FROM_DOM (0.00), TO_DN_ALL (0.00), TO_EQ_FROM (0.00), RCVD_COUNT_ZERO (0.10), RCVD_NO_TLS_LAST (0.10), HELO_NORES_A_OR_MX (0.30), MID_RHS_NOT_FQDN (0.50), UNPARSABLE_URL (0.50), DATE_IN_PAST (1.00), FROMHOST_NORES_A_OR_MX (1.50), DIRECT_TO_MX (2.00), FORGED_RECIPIENTS (2.00), SUBJ_ALL_CAPS (3.00) +expect_header X-Spam-Result: DMARC_POLICY_ALLOW (-0.50), DKIM_ALLOW (-0.20), SPF_ALLOW (-0.20), ARC_NA (0.00), DKIM2_NA (0.00), DKIM_SIGNED (0.00), FROM_EQ_ENV_FROM (0.00), FROM_HAS_DN (0.00), HAS_EXTERNAL_IMG (0.00), HAS_REPLYTO (0.00), HAS_X_PRIO_THREE (0.00), HTML_SHORT_1 (0.00), RCPT_COUNT_ONE (0.00), REPLYTO_DN_EQ_FROM_DN (0.00), REPLYTO_DOM_EQ_FROM_DOM (0.00), TO_DN_ALL (0.00), TO_EQ_FROM (0.00), RCVD_COUNT_ZERO (0.10), RCVD_NO_TLS_LAST (0.10), HELO_NORES_A_OR_MX (0.30), MID_RHS_NOT_FQDN (0.50), UNPARSABLE_URL (0.50), DATE_IN_PAST (1.00), FROMHOST_NORES_A_OR_MX (1.50), DIRECT_TO_MX (2.00), FORGED_RECIPIENTS (2.00), SUBJ_ALL_CAPS (3.00) expect_header X-Spam-Score: spam, score=10.10 Return-Path: diff --git a/tests/resources/smtp/antispam/dmarc.test b/tests/resources/smtp/antispam/dmarc.test index 9e3a77e3..feaa1217 100644 --- a/tests/resources/smtp/antispam/dmarc.test +++ b/tests/resources/smtp/antispam/dmarc.test @@ -1,4 +1,4 @@ -expect DMARC_NA SPF_NA DKIM_NA ARC_NA AUTH_NA +expect DMARC_NA SPF_NA DKIM_NA ARC_NA AUTH_NA DKIM2_NA Subject: test @@ -9,7 +9,7 @@ spf.result pass dkim.result pass arc.result pass dmarc.result pass -expect DKIM_SIGNED ARC_SIGNED DKIM_ALLOW SPF_ALLOW ARC_ALLOW DMARC_POLICY_ALLOW +expect DKIM_SIGNED ARC_SIGNED DKIM_ALLOW SPF_ALLOW ARC_ALLOW DMARC_POLICY_ALLOW DKIM2_NA DKIM-Signature: abc ARC-Seal: xyz @@ -23,7 +23,7 @@ dkim.result fail arc.result fail dmarc.result fail dmarc.policy quarantine -expect SPF_FAIL ARC_REJECT DKIM_REJECT DMARC_POLICY_QUARANTINE +expect SPF_FAIL ARC_REJECT DKIM_REJECT DMARC_POLICY_QUARANTINE DKIM2_NA Subject: test @@ -35,7 +35,7 @@ dkim.result temperror arc.result permerror dmarc.result fail dmarc.policy reject -expect DKIM_TEMPFAIL SPF_NEUTRAL ARC_INVALID DMARC_POLICY_REJECT +expect DKIM_TEMPFAIL SPF_NEUTRAL ARC_INVALID DMARC_POLICY_REJECT DKIM2_NA Subject: test @@ -46,7 +46,7 @@ spf.result softfail dkim.result permerror arc.result temperror dmarc.result permerror -expect ARC_DNSFAIL DMARC_BAD_POLICY DKIM_PERMFAIL SPF_SOFTFAIL +expect ARC_DNSFAIL DMARC_BAD_POLICY DKIM_PERMFAIL SPF_SOFTFAIL DKIM2_NA Subject: test @@ -55,7 +55,7 @@ Test dkim.result pass dkim.domains spf-dkim-allow.org spf.result pass -expect DKIM_ALLOW SPF_ALLOW ARC_NA DMARC_NA +expect DKIM_ALLOW SPF_ALLOW ARC_NA DMARC_NA DKIM2_NA From: user@spf-dkim-allow.org Subject: test @@ -65,7 +65,7 @@ Test dkim.result pass spf.result pass arc.result pass -expect DKIM_ALLOW SPF_ALLOW ARC_ALLOW DMARC_NA +expect DKIM_ALLOW SPF_ALLOW ARC_ALLOW DMARC_NA DKIM2_NA From: user@spf-dkim-allow.org Subject: test @@ -74,7 +74,7 @@ Test spf.result pass dkim.result fail -expect DKIM_REJECT SPF_ALLOW ARC_NA DMARC_NA +expect DKIM_REJECT SPF_ALLOW ARC_NA DMARC_NA DKIM2_NA From: user@spf-dkim-allow.org Subject: test @@ -83,7 +83,7 @@ Test spf.result pass dkim.result temperror -expect DKIM_TEMPFAIL SPF_ALLOW ARC_NA DMARC_NA +expect DKIM_TEMPFAIL SPF_ALLOW ARC_NA DMARC_NA DKIM2_NA From: user@spf-dkim-allow.org Subject: test @@ -93,7 +93,7 @@ Test dkim.result pass dkim.domains spf-dkim-allow.org spf.result fail -expect DKIM_ALLOW SPF_FAIL ARC_NA DMARC_NA +expect DKIM_ALLOW SPF_FAIL ARC_NA DMARC_NA DKIM2_NA From: user@spf-dkim-allow.org Subject: test @@ -103,7 +103,7 @@ Test dkim.result pass dkim.domains spf-dkim-allow.org spf.result temperror -expect DKIM_ALLOW SPF_DNSFAIL ARC_NA DMARC_NA +expect DKIM_ALLOW SPF_DNSFAIL ARC_NA DMARC_NA DKIM2_NA From: user@spf-dkim-allow.org Subject: test @@ -112,7 +112,7 @@ Test dkim.result fail spf.result fail -expect DKIM_REJECT SPF_FAIL ARC_NA DMARC_NA +expect DKIM_REJECT SPF_FAIL ARC_NA DMARC_NA DKIM2_NA From: user@spf-dkim-allow.org Subject: test @@ -121,7 +121,7 @@ Test dkim.result temperror spf.result temperror -expect DKIM_TEMPFAIL SPF_DNSFAIL ARC_NA DMARC_NA AUTH_NA_OR_FAIL +expect DKIM_TEMPFAIL SPF_DNSFAIL ARC_NA DMARC_NA AUTH_NA_OR_FAIL DKIM2_NA From: user@spf-dkim-allow.org Subject: test @@ -133,7 +133,7 @@ dkim.result pass arc.result pass dmarc.result pass envelope_from hello@stalw.art -expect TRUSTED_DOMAIN DMARC_POLICY_ALLOW DKIM_ALLOW SPF_ALLOW ARC_ALLOW +expect TRUSTED_DOMAIN DMARC_POLICY_ALLOW DKIM_ALLOW SPF_ALLOW ARC_ALLOW DKIM2_NA From: diff --git a/tests/src/automation/dkim.rs b/tests/src/automation/dkim.rs index bbdd2fa4..f80f5c6d 100644 --- a/tests/src/automation/dkim.rs +++ b/tests/src/automation/dkim.rs @@ -6,7 +6,7 @@ use crate::utils::{account::Account, server::TestServer}; use ahash::AHashSet; -use common::{config::smtp::auth::DkimSigner, network::dns::update::DNS_RECORDS}; +use common::{config::smtp::auth::Dkim1Signer, network::dns::update::DNS_RECORDS}; use dns_update::{DnsRecord, NamedDnsRecord}; use registry::{ schema::{ @@ -316,10 +316,11 @@ impl TestServer { .await .unwrap() .unwrap_or_else(|| panic!("No signatures found: {:?}", selectors)) + .dkim1 .iter() .map(|s| match s { - DkimSigner::RsaSha256(s) => s.template.s.as_str(), - DkimSigner::Ed25519Sha256(s) => s.template.s.as_str(), + Dkim1Signer::RsaSha256(s) => s.template.s.as_str(), + Dkim1Signer::Ed25519Sha256(s) => s.template.s.as_str(), }) .collect::>(), selectors.iter().copied().collect::>() diff --git a/tests/src/smtp/inbound/antispam.rs b/tests/src/smtp/inbound/antispam.rs index a099eb75..97a03d98 100644 --- a/tests/src/smtp/inbound/antispam.rs +++ b/tests/src/smtp/inbound/antispam.rs @@ -520,6 +520,7 @@ async fn antispam() { .spam_classify( &parsed_message, &dkim_domains, + None, arc_result.as_ref(), dmarc_result.as_ref(), dmarc_policy.as_ref(), @@ -549,6 +550,7 @@ async fn antispam() { let mut spam_input = session.build_spam_input( &parsed_message, &dkim_domains, + None, arc_result.as_ref(), dmarc_result.as_ref(), dmarc_policy.as_ref(),