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
+5 -1
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,9 +69,11 @@ impl SmtpHandler for IncomingBeforeQueueHandler {
} }
} }
AddressDomain::Name(domain) => { AddressDomain::Name(domain) => {
if !self.skip_dkim {
self.dkim_verifier.verify(&envelope.data, &domain).await?; self.dkim_verifier.verify(&envelope.data, &domain).await?;
} }
} }
}
let mail_encrypted = check_encrypted(&message, false); let mail_encrypted = check_encrypted(&message, false);
log::debug!("mail_encrypted: {mail_encrypted}"); log::debug!("mail_encrypted: {mail_encrypted}");
+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;