chore(tests): Add a way to disable DKIM for tests (#50)

Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
This commit is contained in:
Jagoda Estera Ślązak
2026-08-18 12:21:27 +02:00
committed by missytake
parent 1192531afc
commit 223fa3c67b
2 changed files with 16 additions and 3 deletions
+6 -2
View File
@@ -15,13 +15,15 @@ use std::str::FromStr;
pub struct IncomingBeforeQueueHandler { pub struct IncomingBeforeQueueHandler {
config: Config, config: Config,
dkim_verifier: DkimVerifier, dkim_verifier: DkimVerifier,
skip_dkim: bool,
} }
impl IncomingBeforeQueueHandler { impl IncomingBeforeQueueHandler {
pub fn new(config: Config) -> Result<Self, crate::error::Error> { pub fn new(config: Config, skip_dkim: bool) -> Result<Self, crate::error::Error> {
Ok(Self { Ok(Self {
config, config,
dkim_verifier: DkimVerifier::new()?, dkim_verifier: DkimVerifier::new()?,
skip_dkim,
}) })
} }
} }
@@ -67,7 +69,9 @@ impl SmtpHandler for IncomingBeforeQueueHandler {
} }
} }
AddressDomain::Name(domain) => { AddressDomain::Name(domain) => {
self.dkim_verifier.verify(&envelope.data, &domain).await?; if !self.skip_dkim {
self.dkim_verifier.verify(&envelope.data, &domain).await?;
}
} }
} }
+10 -1
View File
@@ -96,9 +96,18 @@ async fn main() {
process::exit(1); process::exit(1);
} }
} else { } else {
// Skip DKIM verification (used for tests).
let skip_dkim = env::var("FILTERMAIL_SKIP_DKIM")
.map(|val| val == "1" || val.eq_ignore_ascii_case("true"))
.unwrap_or(false);
if skip_dkim {
log::warn!("DKIM verification DISABLED! This should not be used in production.");
}
let handler = Arc::new( let handler = Arc::new(
// We want to panic here if the handler cannot be created. // We want to panic here if the handler cannot be created.
IncomingBeforeQueueHandler::new(config.clone()).unwrap(), IncomingBeforeQueueHandler::new(config.clone(), skip_dkim).unwrap(),
); );
let addr = format!("127.0.0.1:{}", config.filtermail_smtp_port_incoming); let addr = format!("127.0.0.1:{}", config.filtermail_smtp_port_incoming);
let max_size = config.max_message_size; let max_size = config.max_message_size;