1
0
mirror of https://github.com/axllent/mailpit.git synced 2025-01-24 03:47:38 +02:00
mailpit/README.md

92 lines
5.1 KiB
Markdown
Raw Normal View History

2022-08-18 21:41:37 +12:00
# Mailpit - email testing for developers
2022-07-29 23:23:08 +12:00
2022-08-07 10:57:45 +12:00
![Tests](https://github.com/axllent/mailpit/actions/workflows/tests.yml/badge.svg)
![Build status](https://github.com/axllent/mailpit/actions/workflows/release-build.yml/badge.svg)
![Docker builds](https://github.com/axllent/mailpit/actions/workflows/build-docker.yml/badge.svg)
![CodeQL](https://github.com/axllent/mailpit/actions/workflows/codeql-analysis.yml/badge.svg)
2022-08-07 22:38:23 +12:00
[![Go Report Card](https://goreportcard.com/badge/github.com/axllent/mailpit)](https://goreportcard.com/report/github.com/axllent/mailpit)
2022-08-07 10:57:45 +12:00
Mailpit is a multi-platform email testing tool & API for developers.
2022-07-29 23:23:08 +12:00
It acts as both an SMTP server, and provides a web interface to view all captured emails.
Mailpit is inspired by [MailHog](#why-rewrite-mailhog), but much, much faster.
2022-10-08 00:26:46 +13:00
![Mailpit](https://raw.githubusercontent.com/axllent/mailpit/develop/docs/screenshot.png)
2022-07-29 23:23:08 +12:00
2022-08-06 00:09:20 +12:00
2022-07-29 23:23:08 +12:00
## Features
2022-08-18 21:41:37 +12:00
- Runs entirely from a single binary, no installation required
2022-07-30 00:17:56 +12:00
- SMTP server (default `0.0.0.0:1025`)
- Web UI to view emails (formatted HTML, highlighted HTML source, text, headers, raw source and MIME attachments including image thumbnails)
2023-04-03 18:53:11 +12:00
- Mobile and tablet HTML preview toggle in desktop mode
2022-09-16 23:15:40 +12:00
- Advanced mail search ([see wiki](https://github.com/axllent/mailpit/wiki/Mail-search))
2022-11-13 17:20:54 +13:00
- Message tagging ([see wiki](https://github.com/axllent/mailpit/wiki/Tagging))
2022-07-30 19:57:44 +12:00
- Real-time web UI updates using web sockets for new mail
2023-05-23 16:07:34 +12:00
- Optional browser notifications for new mail (HTTPS and `localhost` only)
2022-07-29 23:23:08 +12:00
- Configurable automatic email pruning (default keeps the most recent 500 emails)
- Email storage either in a temporary or persistent database ([see wiki](https://github.com/axllent/mailpit/wiki/Email-storage))
2023-04-21 14:19:32 +12:00
- Fast SMTP processing & storing - approximately 70-100 emails per second depending on CPU, network speed & email size, easily handling tens of thousands of emails
2023-05-05 17:07:28 +12:00
- SMTP relaying / message release - relay messages via a different SMTP server including an optional allowlist of accepted recipients ([see wiki](https://github.com/axllent/mailpit/wiki/SMTP-relay))
2023-03-12 15:06:26 +13:00
- Optional SMTP with STARTTLS & SMTP authentication, including an "accept anything" mode ([see wiki](https://github.com/axllent/mailpit/wiki/SMTP-with-STARTTLS-and-authentication))
- Optional HTTPS for web UI ([see wiki](https://github.com/axllent/mailpit/wiki/HTTPS))
- Optional basic authentication for web UI ([see wiki](https://github.com/axllent/mailpit/wiki/Basic-authentication))
2022-11-01 20:24:28 +13:00
- A simple REST API ([see docs](docs/apiv1/README.md))
- Multi-architecture [Docker images](https://github.com/axllent/mailpit/wiki/Docker-images)
2022-07-29 23:23:08 +12:00
## Installation
2023-02-06 15:27:08 +13:00
The Mailpit web UI listens by default on `http://0.0.0.0:8025`, and the SMTP port on `0.0.0.0:1025`.
2023-02-06 15:24:36 +13:00
Mailpit runs as a single binary and can be installed in different ways:
2023-02-06 15:24:36 +13:00
### Install via Brew (Mac)
Add the repository to your taps with `brew tap axllent/apps`, and then install Mailpit with `brew install mailpit`.
2023-02-06 15:24:36 +13:00
### Install via bash script (Linux & Mac)
2022-09-14 12:11:52 +12:00
Linux & Mac users can install it directly to `/usr/local/bin/mailpit` with:
```bash
sudo bash < <(curl -sL https://raw.githubusercontent.com/axllent/mailpit/develop/install.sh)
```
2023-02-06 15:24:36 +13:00
### Download static binary (Windows, Linux and Mac)
2022-07-29 23:23:08 +12:00
2023-02-06 15:24:36 +13:00
Static binaries can always be found on the [releases](https://github.com/axllent/mailpit/releases/latest). The `mailpit` binary can extracted and copied to your `$PATH`, or simply run as `./mailpit`.
2023-02-06 15:24:36 +13:00
### Docker
See [Docker instructions](https://github.com/axllent/mailpit/wiki/Docker-images).
2022-07-29 23:23:08 +12:00
2023-02-06 15:24:36 +13:00
### Compile from source
To build Mailpit from source see [building from source](https://github.com/axllent/mailpit/wiki/Building-from-source).
2022-09-14 17:25:56 +12:00
2022-07-29 23:23:08 +12:00
2023-05-04 22:13:06 +12:00
### Testing Mailpit
2022-07-29 23:23:08 +12:00
2023-05-04 22:13:06 +12:00
Please refer to [the documentation](https://github.com/axllent/mailpit/wiki/Testing-Mailpit) of how to easily test email delivery to Mailpit.
2022-07-29 23:23:08 +12:00
2023-05-04 22:13:06 +12:00
### Configuring sendmail
2022-07-29 23:23:08 +12:00
2023-05-04 22:13:06 +12:00
Mailpit's SMTP server (by 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 a SMTP server is `sendmail`, used by many applications including PHP. Mailpit can also act as substitute for sendmail. For instructions of how to set this up, please refer to the [sendmail documentation](https://github.com/axllent/mailpit/wiki/Configuring-sendmail).
2022-07-29 23:23:08 +12:00
## Why rewrite MailHog?
2023-04-21 14:19:32 +12:00
I had been using MailHog for a few years to intercept and test emails generated from several projects. MailHog has a number of performance issues, many of the frontend and Go modules are horribly out of date, and it is not actively developed.
2022-07-29 23:23:08 +12:00
2023-04-21 14:19:32 +12:00
Initially I tried to upgrade a fork of MailHog (both the UI as well as the HTTP server & API), but soon discovered that it is (with all due respect to its authors) poorly designed. It is in my opinion over-engineered (split over 9 separate projects), and performs very poorly when dealing with large amounts of emails or processing emails with an attachments (a single email with a 3MB attachment can take over a minute to ingest). Finally, the API transmits a lot of duplicate and unnecessary data on every browser request, and there is no HTTP compression.
2022-07-29 23:23:08 +12:00
In order to improve it I felt it needed to be completely rewritten, and so Mailpit was born.