From 2b4205a60af8c747b85bce7c0dbd99f3435e38e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jagoda=20Estera=20=C5=9Al=C4=85zak?= <128227338+j-g00da@users.noreply.github.com> Date: Wed, 21 Jan 2026 14:27:21 +0100 Subject: [PATCH] fix(config): Set default values for internal SMTP ports and max message size (#12) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: #7 Signed-off-by: Jagoda Ślązak --- filtermail/src/config.rs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/filtermail/src/config.rs b/filtermail/src/config.rs index 8465044a..24224ed2 100644 --- a/filtermail/src/config.rs +++ b/filtermail/src/config.rs @@ -6,10 +6,15 @@ use std::path::{Path, PathBuf}; /// Chatmail configuration subset used by filtermail. #[derive(Debug, Clone, Deserialize)] pub struct Config { + #[serde(default = "Config::default_filtermail_smtp_port")] pub filtermail_smtp_port: u16, + #[serde(default = "Config::default_filtermail_smtp_port_incoming")] pub filtermail_smtp_port_incoming: u16, + #[serde(default = "Config::default_postfix_reinject_port")] pub postfix_reinject_port: u16, + #[serde(default = "Config::default_postfix_reinject_port_incoming")] pub postfix_reinject_port_incoming: u16, + #[serde(default = "Config::default_max_message_size")] pub max_message_size: usize, pub max_user_send_per_minute: usize, #[serde(default, deserialize_with = "deserialize_sequence")] @@ -50,7 +55,7 @@ impl Config { Ok(wrapped_config.params) } - /// Get the mailboxes directory, using defaulting to `/home/vmail/mail/` if not set. + /// Get the mailboxes directory, defaulting to `/home/vmail/mail/` if not set. fn mailboxes_dir(&self) -> PathBuf { match &self.mailboxes_dir { Some(dir) => dir.clone(), @@ -70,4 +75,22 @@ impl Config { !enforce_e2ee.exists() } + + // Following are needed since serde does not support default literals. + + const fn default_filtermail_smtp_port() -> u16 { + 10080 + } + const fn default_filtermail_smtp_port_incoming() -> u16 { + 10081 + } + const fn default_postfix_reinject_port() -> u16 { + 10025 + } + const fn default_postfix_reinject_port_incoming() -> u16 { + 10026 + } + const fn default_max_message_size() -> usize { + 31457280 + } }