rusmes-server 0.1.0

Main server binary for RusMES — orchestrates SMTP, IMAP, POP3, and JMAP protocol servers with unified configuration, graceful shutdown, and signal handling
Documentation

rusmes-server

Main server binary for RusMES. Composes all crates into a running mail server: loads configuration, initializes storage, builds the mailet processing pipeline, and starts protocol servers.

Status

All four protocol servers (SMTP, IMAP, POP3, JMAP) start in parallel. File-based authentication is fully integrated. LDAP/SQL/OAuth2 auth backends require additional wiring to replace the DummyAuthBackend fallback.

Binary

cargo build --bin rusmes-server

Usage

# With configuration file
rusmes-server rusmes.toml

# With default configuration (localhost:2525)
rusmes-server

Startup Sequence

  1. Initialize tracing/logging
  2. Load configuration from TOML file (or use defaults)
  3. Initialize storage backend (filesystem or PostgreSQL)
  4. Create metrics collector
  5. Build mailet processor router from config:
    • Parse processor state names
    • Create matchers and mailets via factory
    • Assemble processing chains
  6. Initialize authentication backend
  7. Start SMTP server on configured address

Configuration

Reads rusmes.toml (or path from first CLI argument). Falls back to defaults:

  • Domain: localhost
  • SMTP: 0.0.0.0:2525
  • Storage: filesystem at /tmp/rusmes
  • Processors: single "root" processor with LocalDelivery

Dependencies

Depends on nearly all workspace crates:

  • rusmes-proto - core types
  • rusmes-core - mailet engine, factory, processor router
  • rusmes-storage - storage backend
  • rusmes-smtp - SMTP server
  • rusmes-imap - IMAP server (declared, not yet started)
  • rusmes-jmap - JMAP server (declared, not yet started)
  • rusmes-config - configuration loading
  • rusmes-metrics - metrics collector
  • rusmes-auth - authentication backend
  • tokio - async runtime
  • tracing / tracing-subscriber - logging