一个 Rust 原生、可自托管的邮件平台——自研 SMTP 与 IMAP 服务器、自研 MIME 邮件核心与存储引擎,不封装 Postfix、Dovecot 等任何现有邮件服务器,目标是掌握全部技术栈。
FERROMA
|
+-----------------------+-----------------------+
| | |
Webmail Clients Admin
| | |
+-----------------------+-----------------------+
|
HTTP API . FCP . WebSocket
|
+--------v--------+
| Mail core |
+--------+--------+
+-----------+-----------+-----------+-----------+
v v v v v
SMTP IMAP Storage Queue DNS
+-----------+-----------+-----------+-----------+
|
Event Bus -- Push
|
PostgreSQL
一个容器、一个数据卷,没有 .env,也没有构建。数据库连接在浏览器里填。
services:
ferroma:
image: wesukilaye/ferroma:0.1.7
container_name: ferroma
restart: always
# 直接绑定宿主的 25/587/143/8080,于是宿主上的 PostgreSQL 就是
# 127.0.0.1。仅限 Linux。
network_mode: host
volumes:
- ./data:/var/lib/ferroma
- ./tls:/etc/ferroma/tls:rodocker compose up -d
docker compose logs ferroma # 读它打印出来的 setup code
# 然后打开 http://<host>:8080/,填入数据库地址和那个 code一个地址走完两步。没有声明数据库的实例不会退出——它在 / 上要连接串和日志里的 setup code;验证通过后同一个进程继续启动,页面直接变成引导界面,在那里建第一个邮件域和管理员账号。前提是这台主机上已经有一个 PostgreSQL,Ferroma 只连接、不建库。完整说明(含纯 docker run 写法)见部署指南。
全部文档中英各一份,可整站搜索。