Catch every email your app sends

Nothing gets delivered. Every message lands in a local web UI instead. An SMTP mail catcher for dev and test environments, in one binary.

terminal

$ docker run -p 1025:1025 -p 8025:8025 smyile/rustmail:latest

SMTP listening on 0.0.0.0:1025

Web UI → http://localhost:8025

What it does

Persistence, search, a REST API, and a single binary you can drop into CI.

Emails survive restarts

SQLite-backed by default. Ephemeral mode for throwaway CI runs.

Full-text search

SQLite FTS5 across subject, body, sender, and recipients.

Real-time inbox

WebSocket push. Dark mode. Keyboard shortcuts. Instant delivery.

Built for CI

REST assertions, CLI assert mode, and a GitHub Action for your pipeline.

Single binary

Frontend embedded at compile time. One binary, zero runtime dependencies.

REST API + OpenAPI

Full API spec. Export emails, release to SMTP, webhook notifications.

The web UI

Keyboard shortcuts, live updates over WebSocket, and a theme that follows your system.

RustMail web interface in dark mode showing the inbox with email details

Or stay in the terminal

The same inbox, the same search, without leaving your shell.

RustMail terminal UI showing the inbox with email preview

Install

Dockerdocker run -p 1025:1025 -p 8025:8025 smyile/rustmail:latest
Homebrewbrew install rustmailapp/rustmail/rustmail
BinariesPre-built for Linux, macOS and ARM

Start catching email

Open source, dual-licensed MIT / Apache 2.0.