A mail suite written in Rust, meant to be easy to use.
IMAP (ports 143 / 993)
IDLE, NAMESPACE, UNSELECT, MOVE, ESEARCH, ENABLE, UTF8=ONLYAUTH=PLAIN over TLSSMTP (port 25)
PIPELINING, SIZE, 8BITMIME, AUTH LOGIN PLAIN (over TLS), REQUIRETLS, VRFYGeneral
/mail/config-v1.1.xml) for automatic client setup (Thunderbird etc.)opendkim-genkey \
--domain=<your-hostname> \
--subdomains
Save the .private file at the path you set in mail.dkim_key_path and add the generated TXT record to your DNS.
Create config.yml in /etc/erooster/ or the working directory:
tls:
key_path: "./certs/key.pem"
cert_path: "./certs/cert.pem"
mail:
maildir_folders: "./maildir"
hostname: "example.com"
displayname: "Erooster"
dkim_key_path: "/etc/erooster/keys/default.private"
dkim_key_selector: "default"
database:
url: "postgres://user:password@localhost/erooster"
listen_ips:
- "0.0.0.0"
- "[::]"
webserver:
port: 80
tls: false
# Optional — remove if not using Rspamd
rspamd:
address: http://localhost:11333
maildir_folders is the root directory where per-user mail is stored in Maildir format.
cargo run --release
Or with SQLite (testing only):
cargo run --release --no-default-features --features sqlite
Use the bundled eroosterctl binary. It reads the same config.yml.
# Create a new user
eroosterctl register
# Change a user's password
eroosterctl change-password
Passwords are stored as Argon2 hashes.
SQLite is supported as a compile-time feature (--features sqlite) and is useful for local development and tests. It is not recommended for production — use PostgreSQL instead.
Due to personal constraints, there is no enterprise support for Erooster. Please open GitHub issues instead. Responses are best-effort with no guaranteed time frame.
Erooster does not report errors automatically. A GitHub link is printed on panics. You can optionally configure a Sentry DSN via environment variable for self-hosted error reporting.
Content type
Image
Digest
sha256:4a5793557…
Size
21.9 MB
Last updated
4 months ago
docker pull mtrnord/erooster:main