From 80af300540d4a2099dc765038328efcd8570eb00 Mon Sep 17 00:00:00 2001 From: mdecimus <11444311+mdecimus@users.noreply.github.com> Date: Thu, 18 Dec 2025 09:36:00 +0100 Subject: [PATCH] Fix NO_SPACE_IN_FROM spam tag detection logic (fixes #2372) --- crates/spam-filter/src/analysis/from.rs | 7 ++++++- tests/resources/smtp/antispam/from.test | 8 ++++++++ tests/src/smtp/inbound/antispam.rs | 5 +++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/crates/spam-filter/src/analysis/from.rs b/crates/spam-filter/src/analysis/from.rs index d724e4b0..3d1f79e9 100644 --- a/crates/spam-filter/src/analysis/from.rs +++ b/crates/spam-filter/src/analysis/from.rs @@ -179,7 +179,12 @@ impl SpamFilterAnalyzeFrom for Server { // Validate space in FROM if !from_name.is_empty() && !from_addr.address.is_empty() - && !from_raw_utf8.contains(" <") + && from_raw_utf8 + .as_bytes() + .iter() + .position(|&b| b == b'<') + .and_then(|v| from_raw_utf8.as_bytes().get(v - 1)) + .is_none_or(|v| !v.is_ascii_whitespace()) { ctx.result.add_tag("NO_SPACE_IN_FROM"); } diff --git a/tests/resources/smtp/antispam/from.test b/tests/resources/smtp/antispam/from.test index 8fc2b76f..073e23f3 100644 --- a/tests/resources/smtp/antispam/from.test +++ b/tests/resources/smtp/antispam/from.test @@ -132,6 +132,14 @@ expect NO_SPACE_IN_FROM FROM_EQ_ENV_FROM FROM_HAS_DN From: "Hello" +Test + +envelope_from hello@domain.org +expect FROM_EQ_ENV_FROM FROM_HAS_DN + +From: "Hello" + + Test envelope_from hello@domain.org diff --git a/tests/src/smtp/inbound/antispam.rs b/tests/src/smtp/inbound/antispam.rs index 00e0918f..31ff78f7 100644 --- a/tests/src/smtp/inbound/antispam.rs +++ b/tests/src/smtp/inbound/antispam.rs @@ -78,8 +78,9 @@ category = 0 confidence = 1 explanation = 2 -[spam-filter.reputation] -enable = true +[spam-filter.classifier.samples] +min-ham = 10 +min-spam = 10 [session.rcpt] relay = true