diff --git a/crates/kumo-spf/src/eval.rs b/crates/kumo-spf/src/eval.rs index 5e3d6972..0c7fea2f 100644 --- a/crates/kumo-spf/src/eval.rs +++ b/crates/kumo-spf/src/eval.rs @@ -15,11 +15,13 @@ pub struct EvalContext<'a> { } impl<'a> EvalContext<'a> { - pub fn new(sender: &'a str, domain: &'a str, client_ip: IpAddr) -> Result { + pub fn new(sender: &'a str, domain: &'a str, client_ip: IpAddr) -> Result { let Some((local_part, sender_domain)) = sender.split_once('@') else { - return Err(format!( - "invalid sender {sender} is missing @ sign to delimit local part and domain" - )); + return Err(SpfResult { + disposition: SpfDisposition::PermError, + context: + "input sender parameter '{sender}' is missing @ sign to delimit local part and domain".to_owned(), + }); }; Ok(Self { diff --git a/crates/kumo-spf/src/lib.rs b/crates/kumo-spf/src/lib.rs index 03e3956e..ed020350 100644 --- a/crates/kumo-spf/src/lib.rs +++ b/crates/kumo-spf/src/lib.rs @@ -106,13 +106,7 @@ impl CheckHostParams { match EvalContext::new(&self.sender, &self.domain, self.client_ip) { Ok(cx) => record.evaluate(&cx, resolver).await, - Err(err) => SpfResult { - disposition: SpfDisposition::PermError, - context: format!( - "input sender parameter '{}' is malformed: {err}", - self.sender - ), - }, + Err(err) => err, } } }