diff --git a/crates/kumod/src/smtp_server.rs b/crates/kumod/src/smtp_server.rs index 180db5d5..fdf08724 100644 --- a/crates/kumod/src/smtp_server.rs +++ b/crates/kumod/src/smtp_server.rs @@ -2965,6 +2965,11 @@ impl ConnectionMetaData { meta.get(name.as_ref()).cloned() } + pub fn get_meta_string>(&self, name: N) -> Option { + self.get_meta(name) + .and_then(|v| v.as_str().map(|s| s.to_string())) + } + pub fn clone_inner(&self) -> serde_json::Value { self.map.lock().clone() } diff --git a/crates/kumod/src/spf.rs b/crates/kumod/src/spf.rs index dc1f5781..c1ce9335 100644 --- a/crates/kumod/src/spf.rs +++ b/crates/kumod/src/spf.rs @@ -26,8 +26,8 @@ pub fn register<'lua>(lua: &'lua Lua) -> anyhow::Result<()> { .and_then(|v| SocketAddr::from_str(v.as_str()?).ok()) .expect("`received_from` is always set, and always to a value representing a `SocketAddr`"); - let ehlo_domain = meta.get_meta("ehlo_domain").map(|s| s.to_string()); - let relaying_host_name = meta.get_meta("hostname").map(|s| s.to_string()); + let ehlo_domain = meta.get_meta_string("ehlo_domain"); + let relaying_host_name = meta.get_meta_string("hostname"); let resolver = dns_resolver::get_resolver(); let result = CheckHostParams {