Mailboar is an email test server written in Rust.
In the backend, it uses a fork of Tiny MailCatcher, rewritten with the Axum framework, to provide extra features.
- Local SMTP server
- REST API
- Web interface to view emails as plain text, HTML or source code, download attachments.
- SSE to receive new emails in real time.
- Dark and light themes.
- Allow to send emails to a specific address to view them in a real mailbox.
The REST API is the same as the one of MailCatcher and Tiny MailCatcher:
- The
GET/DELETE http://localhost:1080/messagesendpoint returns/delete all messages in the repository. - The
GET http://localhost:1080/messages/:id.jsonendpoint returns a single message in JSON format. - The
GET http://localhost:1080/messages/:id.sourceendpoint returns the message source. - The
GET http://localhost:1080/messages/:id.htmlendpoint returns the HTML version of this message. - The
GET http://localhost:1080/messages/:id.emlendpoint returns the EML version of this message. - The
GET http://localhost:1080/messages/:id.plainendpoint returns the text/plain version of this message. - The
DELETE http://localhost:1080/messages/:idendpoint deletes a message. - The
GET http://localhost:1080/messages/:id/parts/:cidendpoint returns attachments by content ID.
In addition, the following endpoints are available:
- The
POST http://localhost:1080/messages/:id/sendendpoint sends a message to the specified address. - The
GET http://localhost:1080/eventsendpoint returns SSE events.
First, install mailboar using Cargo:
cargo install mailboar
Then, clone this repository, and build the static assets using https://pnpm.io/. Node >= 20 is required.
cd crates/frontend
pnpm i # Install dependencies
pnpm run build # Build static assets
This will create a static repository with all the assets.
Finally, launch mailboar from the cloned repository:
mailboar --ip 127.0.0.1 --smtp-port=1025 --api-port=1080 --http-port=8025 --assets-path=crates/frontend/static # default values
To be able to send emails to a specific address, you need to configure the SMTP server to use. The following environment variables can be used to do so:
MAILBOAR_SMTP_DSN: The DSN of the SMTP server to use. Defaults tosmtp://127.0.0.1:25.MAILBOAR_SMTP_FROM: The email address to use as the sender. Defaults tomailboar@localhost.
The MAILBOAR_SMTP_DSN can be configured in multiple ways. Go to lettre documentation to see all the possible configurations.
There is also a small Docker image available, with all batteries included:
docker run --rm --init -t -p 1080:1080 -p 1025:1025 -p 8025:8025 aeyoll/mailboar:latest
For easier development, use https://github.com/watchexec/cargo-watch to auto-compile on change:
cargo watch -x 'run'
Auto-compile static assets:
pnpm run start
1.71.0+
