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.
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
One container, one volume, no .env and no build. The database connection is entered in a browser.
services:
ferroma:
image: wesukilaye/ferroma:0.1.7
container_name: ferroma
restart: always
# Binds 25/587/143/8080 on the host directly, so a PostgreSQL running
# on this host is simply 127.0.0.1. Linux only.
network_mode: host
volumes:
- ./data:/var/lib/ferroma
- ./tls:/etc/ferroma/tls:rodocker compose up -d
docker compose logs ferroma # read the setup code it prints
# then open http://<host>:8080/ and enter the database address and that codeOne address, two steps. An instance with no stated database does not exit — it asks for the connection and the setup code from its log at /, then continues booting in the same process and the page turns into the wizard that creates the first mail domain and administrator. It assumes a PostgreSQL already runs on this host; Ferroma connects to it but never creates it. The full version, including the plain docker run form, is in the deployment guide.
Every document exists in both languages, and the whole site is searchable.