.chglog | ||
.github | ||
cmd | ||
config | ||
internal | ||
sendmail | ||
server | ||
.dockerignore | ||
.gitignore | ||
CHANGELOG.md | ||
Dockerfile | ||
esbuild.config.mjs | ||
go.mod | ||
go.sum | ||
install.sh | ||
LICENSE | ||
main.go | ||
package-lock.json | ||
package.json | ||
README.md |
Mailpit - email testing for developers
Website • Documentation • API
Mailpit is a small, fast, low memory, zero-dependency, multi-platform email testing tool & API for developers.
It acts as an SMTP server, provides a modern web interface to view & test captured emails, and includes an API for automated integration testing.
Mailpit was originally inspired by MailHog which is no longer maintained and hasn't seen active development or security updates for a few years now.
Features
- Runs entirely from a single static binary
- Modern web UI to view emails (formatted HTML, highlighted HTML source, text, headers, raw source, and MIME attachments including image thumbnails), including optional HTTPS
- Optional basic authentication for web UI & API
- HTML check to test & score mail client compatibility with HTML emails
- Link check to test message links (HTML & text) & linked images
- Spam check to test message "spamminess" using a running SpamAssassin server
- Create screenshots of HTML messages via web UI
List-Unsubscribe
syntax validation- Mobile and tablet HTML preview toggle in desktop mode
- Advanced mail search
- Message tagging
- Real-time web UI updates using web sockets for new mail & optional browser notifications for new mail (when accessed
via either HTTPS or
localhost
only) - SMTP server with optional STARTTLS & SMTP authentication (including an "accept any" mode)
- SMTP relaying (message release) - relay messages via a different SMTP server including an optional allowlist of accepted recipients
- Fast SMTP processing & storing - ingesting 100-200 emails per second depending on CPU, network speed & email size, easily handling tens of thousands of emails
- Optional POP3 server to download captured message directly into your email client
- Configurable automatic email pruning (default keeps the most recent 500 emails)
- A simple REST API for integration testing
- Optional webhook for received messages
- Multi-architecture Docker images
Installation
The Mailpit web UI listens by default on http://0.0.0.0:8025
and the SMTP port on 0.0.0.0:1025
.
Mailpit runs as a single binary and can be installed in different ways:
Install via package managers
- Mac:
brew install mailpit
(to run automatically in the background:brew services start mailpit
) - Arch Linux: available in the AUR as
mailpit
- FreeBSD:
pkg install mailpit
Install via bash script (Linux & Mac)
Linux & Mac users can install it directly to /usr/local/bin/mailpit
with:
sudo bash < <(curl -sL https://raw.githubusercontent.com/axllent/mailpit/develop/install.sh)
Download static binary (Windows, Linux and Mac)
Static binaries can always be found on the releases. The mailpit
binary can be extracted and copied to your $PATH
, or simply run as ./mailpit
.
Docker
See Docker instructions for 386, amd64 & arm64 images.
Compile from source
To build Mailpit from source, see Building from source.
Usage
Run mailpit -h
to see options. More information can be seen in the docs.
If installed using homebrew, you may run brew services start mailpit
to always run mailpit automatically.
Testing Mailpit
Please refer to the documentation on how to easily test email delivery to Mailpit.
Configuring sendmail
Mailpit's SMTP server (default on port 1025), so you will likely need to configure your sending application to deliver mail via that port.
A common MTA (Mail Transfer Agent) that delivers system emails to an SMTP server is sendmail
, used by many applications, including PHP.
Mailpit can also act as substitute for sendmail. For instructions on how to set this up, please refer to the sendmail documentation.