diff --git a/crates/spam-filter/src/analysis/domain.rs b/crates/spam-filter/src/analysis/domain.rs index e47df425..903a7a3b 100644 --- a/crates/spam-filter/src/analysis/domain.rs +++ b/crates/spam-filter/src/analysis/domain.rs @@ -168,7 +168,9 @@ impl SpamFilterAnalyzeDomain for Server { if value.contains('@') { return Some(ElementLocation::new( Recipient { - email: Email::new(value), + email: Email::new( + value.split_once('?').map_or(value, |(e, _)| e), + ), name: None, }, if is_body { diff --git a/tests/src/smtp/inbound/antispam.rs b/tests/src/smtp/inbound/antispam.rs index 265adc8d..6526f0a9 100644 --- a/tests/src/smtp/inbound/antispam.rs +++ b/tests/src/smtp/inbound/antispam.rs @@ -263,6 +263,8 @@ async fn antispam() { .join("resources") .join("smtp") .join("antispam"); + let filter_test = std::env::var("TEST_NAME").ok(); + for test_name in [ "combined", "ip", @@ -289,9 +291,12 @@ async fn antispam() { "pyzor", "llm", ] { - /*if test_name != "combined" { + if filter_test + .as_ref() + .is_some_and(|s| !s.eq_ignore_ascii_case(test_name)) + { continue; - }*/ + } println!("===== {test_name} ====="); let contents = fs::read_to_string(base_path.join(format!("{test_name}.test"))).unwrap(); let mut lines = contents.lines();