RustMail vs Mailpit vs MailHog

Three local SMTP mail catchers with the same default ports. This page is written by the RustMail project, so it says where the others are stronger too.

Pick Mailpit

if you want the widest feature set: HTML client compatibility scores, live link checks, SpamAssassin, POP3 and SMTP failure injection. It is mature and actively maintained.

Pick RustMail

if your tests live in CI: an assertion endpoint built for curl -f, a blocking rustmail assert command and an official GitHub Action, plus full-text search, auth results and a terminal UI.

Move off MailHog

it has had no release since 2020. Both alternatives listen on the same ports, so switching is a one-line change in your Docker Compose file.

Features

FeatureRustMailMailpitMailHog
LanguageRustGoGo
LicenseMIT or Apache 2.0MITMIT
StorageSQLite, or in memorySQLiteIn memory, MongoDB or files
SearchFull-textSearch with filtersBy sender, recipient or text
Mobile previewYesYesNot listed
HTML client compatibility checkNoYesNot listed
Spam scoreNoWith SpamAssassinNot listed
DKIM, SPF, DMARC and ARC resultsYesNot listedNot listed
POP3 serverNoYesNot listed
SMTP failure injectionNoYesYes
Release to a real SMTP serverYesYesYes
WebhooksYesYesNot listed
CI assertion endpointYesGeneral REST APIGeneral HTTP API
CLI assert modeYesNot listedNot listed
Official GitHub ActionYesNot listedNot listed
Terminal UIYes, plus a Neovim pluginNot listedNot listed

"Not listed" means the feature is not in the project's README feature list as of October 2026. Corrections are welcome as an issue on GitHub. For speed, memory and disk, see the benchmarks.

Switching from MailHog or Mailpit

Your app's SMTP settings do not change: RustMail listens on 1025 for SMTP and serves the inbox on 8025. Tests that call the MailHog or Mailpit HTTP API do need updating, because RustMail has its own REST API. For most CI checks the assertion endpoint replaces the polling code entirely.

Quick startFramework guides