pub struct ServerConfig {Show 17 fields
pub domain: String,
pub postmaster: String,
pub smtp: SmtpServerConfig,
pub imap: Option<ImapServerConfig>,
pub jmap: Option<JmapServerConfig>,
pub pop3: Option<Pop3ServerConfig>,
pub storage: StorageConfig,
pub processors: Vec<ProcessorConfig>,
pub relay: Option<RelayConfig>,
pub auth: Option<AuthConfig>,
pub logging: Option<LoggingConfig>,
pub queue: Option<QueueConfig>,
pub security: Option<SecurityConfig>,
pub domains: Option<DomainsConfig>,
pub metrics: Option<MetricsConfig>,
pub tracing: Option<TracingConfig>,
pub connection_limits: Option<ConnectionLimitsConfig>,
}Expand description
Main server configuration
Fields§
§domain: String§postmaster: String§smtp: SmtpServerConfig§imap: Option<ImapServerConfig>§jmap: Option<JmapServerConfig>§pop3: Option<Pop3ServerConfig>§storage: StorageConfig§processors: Vec<ProcessorConfig>§relay: Option<RelayConfig>§auth: Option<AuthConfig>§logging: Option<LoggingConfig>§queue: Option<QueueConfig>§security: Option<SecurityConfig>§domains: Option<DomainsConfig>§metrics: Option<MetricsConfig>§tracing: Option<TracingConfig>§connection_limits: Option<ConnectionLimitsConfig>Implementations§
Source§impl ServerConfig
impl ServerConfig
Sourcepub fn from_file(path: impl AsRef<Path>) -> Result<Self>
pub fn from_file(path: impl AsRef<Path>) -> Result<Self>
Load configuration from a TOML or YAML file
The format is auto-detected based on file extension:
.tomlfiles are parsed as TOML.yamlor.ymlfiles are parsed as YAML
Sourcepub fn apply_env_overrides(&mut self)
pub fn apply_env_overrides(&mut self)
Apply environment variable overrides to configuration
Environment variables follow the convention RUSMES_SECTION_KEY. Priority: env vars > config file > defaults
Supported environment variables:
- RUSMES_DOMAIN
- RUSMES_POSTMASTER
- RUSMES_SMTP_HOST
- RUSMES_SMTP_PORT
- RUSMES_SMTP_TLS_PORT
- RUSMES_SMTP_MAX_MESSAGE_SIZE
- RUSMES_SMTP_REQUIRE_AUTH
- RUSMES_SMTP_ENABLE_STARTTLS
- RUSMES_SMTP_RATE_LIMIT_MAX_CONNECTIONS_PER_IP
- RUSMES_SMTP_RATE_LIMIT_MAX_MESSAGES_PER_HOUR
- RUSMES_SMTP_RATE_LIMIT_WINDOW_DURATION
- RUSMES_IMAP_HOST
- RUSMES_IMAP_PORT
- RUSMES_IMAP_TLS_PORT
- RUSMES_JMAP_HOST
- RUSMES_JMAP_PORT
- RUSMES_JMAP_BASE_URL
- RUSMES_STORAGE_PATH (for filesystem backend)
- RUSMES_LOG_LEVEL
- RUSMES_LOG_FORMAT
- RUSMES_LOG_OUTPUT
- RUSMES_QUEUE_INITIAL_DELAY
- RUSMES_QUEUE_MAX_DELAY
- RUSMES_QUEUE_BACKOFF_MULTIPLIER
- RUSMES_QUEUE_MAX_ATTEMPTS
- RUSMES_QUEUE_WORKER_THREADS
- RUSMES_QUEUE_BATCH_SIZE
- RUSMES_METRICS_ENABLED
- RUSMES_METRICS_BIND_ADDRESS
- RUSMES_METRICS_PATH
- RUSMES_TRACING_ENABLED
- RUSMES_TRACING_ENDPOINT
- RUSMES_TRACING_PROTOCOL (grpc or http)
- RUSMES_TRACING_SERVICE_NAME
- RUSMES_TRACING_SAMPLE_RATIO
- RUSMES_CONNECTION_LIMITS_MAX_CONNECTIONS_PER_IP
- RUSMES_CONNECTION_LIMITS_MAX_TOTAL_CONNECTIONS
- RUSMES_CONNECTION_LIMITS_IDLE_TIMEOUT
- RUSMES_CONNECTION_LIMITS_REAPER_INTERVAL
Sourcepub fn validate(&self) -> Result<()>
pub fn validate(&self) -> Result<()>
Validate the entire configuration
This method is called automatically when loading configuration from a file. It validates:
- Domain name format
- Postmaster email address
- Port numbers for SMTP, IMAP, JMAP
- Storage path accessibility
- Processor uniqueness
- Local domain names (if configured)
Sourcepub fn postmaster_address(&self) -> Result<MailAddress>
pub fn postmaster_address(&self) -> Result<MailAddress>
Get postmaster address
Trait Implementations§
Source§impl Clone for ServerConfig
impl Clone for ServerConfig
Source§fn clone(&self) -> ServerConfig
fn clone(&self) -> ServerConfig
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ServerConfig
impl Debug for ServerConfig
Source§impl<'de> Deserialize<'de> for ServerConfig
impl<'de> Deserialize<'de> for ServerConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for ServerConfig
impl RefUnwindSafe for ServerConfig
impl Send for ServerConfig
impl Sync for ServerConfig
impl Unpin for ServerConfig
impl UnsafeUnpin for ServerConfig
impl UnwindSafe for ServerConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more