A Rust-native, self-hosted mail platform — its own SMTP and IMAP servers, its own MIME core, its own storage engine. It does not wrap Postfix or Dovecot. The point is to own the whole stack.
一个 Rust 原生、可自托管的邮件平台——自研 SMTP 与 IMAP 服务器、自研 MIME 邮件核心与存储引擎,不封装 Postfix、Dovecot 等任何现有邮件服务器,目标是掌握全部技术栈。
FERROMA
│
┌──────────────────────────┼──────────────────────────┐
│ │ │
Webmail Official Clients Admin
│ │ │
│ ┌─────┼─────┐ │
│ ▼ ▼ ▼ │
│ Win Linux macOS │
│ │
└──────────────────────────┼──────────────────────────┘
│
Client API (FCP) / HTTP API
│
┌────────▼────────┐
│ Ferroma Core │
└────────┬────────┘
│
┌───────────┬─────────────┼─────────────┬───────────┐
▼ ▼ ▼ ▼ ▼
SMTP IMAP Storage Queue DNS
│ │ │ │ │
└───────────┴─────────────┼─────────────┴───────────┘
│
Event Bus ── WebSocket ── Push
│
PostgreSQLSMTP, IMAP, Webmail and the Client API all go through ferroma-mail — one implementation of every operation.
SMTP、IMAP、Webmail 与客户端 API 全部经由 ferroma-mail——每个操作只有一份实现。
Unauthenticated peers deliver only to local domains, enforced at the protocol edge.
未认证的对端只能投递到本地域,这条规则在协议边缘强制执行。
Clients keep a cache and a cursor; the change log and its sequence numbers keep the truth.
客户端只保留缓存与游标;变更日志及其序列号保存真相。
Client operations carry an idempotency key and survive a crash mid-request.
客户端操作携带幂等键,请求中途崩溃也能安全重放。
One TLS implementation, in Rust. No OpenSSL, no schannel.
只使用一种 Rust 实现的 TLS。不用 OpenSSL,也不用 schannel。
mail.received and friends replay for reconnecting clients over WebSocket.
mail.received 等事件可对重连客户端重放,经 WebSocket 推送。
git clone https://github.com/ferroma/ferroma && cd ferroma
cp .env.example .env # POSTGRES_PASSWORD / FERROMA_HOSTNAME / FERROMA_JWT_SECRET
docker compose up -d
docker compose logs -f ferroma完整部署说明(DNS、TLS、DKIM、备份与升级)见 Deployment 与 中文版部署文档。