v2.0.0 Native macOS · pure Rust + egui

Catch every email. Right inside a real Mac app.

MailBox Ultra is a native macOS application that runs a real SMTP server in-process. Point any sender at smtp://127.0.0.1:1025 and every message is parsed, stored, and rendered live in the app — HTML emails painted by the same WebKit engine Mail.app uses. No browser, no HTTP server, no Chromium, no cloud.

curl -sSL https://raw.githubusercontent.com/MPJHorner/MailboxUltra/main/scripts/install.sh | bash
macOS 11+ · universal binary, ~10 MB System WebKit for HTML rendering MIT licensed 0 telemetry · runs offline
MailBox Ultra showing a captured marketing email rendered in the desktop preview, with a sidebar of captured messages from Stripe, GitHub, Figma, and a fictional bikini brand
Why MailBox Ultra

The local Mac alternative to mail-staging SaaS.

Pointing your dev environment at a real SMTP relay is overkill, and every SaaS sandbox needs an account and an internet round-trip. MailBox Ultra is a real SMTP server inside a real Mac app — capture every message your stack sends, render the HTML pixel-perfectly inside the app window, never deliver one.

Real SMTP

HELO, EHLO, MAIL FROM, RCPT TO, DATA, RSET, NOOP, QUIT, AUTH PLAIN, AUTH LOGIN. Anything that speaks RFC 5321 just works.

🪟 Native window

Real Mac dock icon, native menu bar, ⌘, for Preferences, ⌘Q to quit. Window position persists across launches.

📱 WebKit HTML preview

Captured HTML emails render via an in-app WKWebView — same engine Mail.app uses. Desktop / iPad / Mobile width buttons swap viewport and User-Agent to faithfully preview responsive emails.

Relay mode

Optional upstream smtp:// or smtps:// URL. Capture for inspection, then forward to a real MTA. Toggle without restarting the SMTP listener.

🔒 Locked-down by default

HTML preview runs with JavaScript disabled, no remote loads through nav, link clicks intercepted and shelled to your default browser. Captured email HTML is sandboxed.

🗎 NDJSON log

Optional log file appends each captured message as one JSON object per line — never truncated. Tail it from a script or a coding agent watching alongside you.

30-second tour

Install. Send mail. See it.

Drop the .app into /Applications, open it. The toolbar shows the SMTP URL it bound. Send anything to 127.0.0.1:1025 and it lands in the inbox in milliseconds.

01

Install

Mount the universal .dmg, drag MailBox Ultra.app to /Applications.

$ open MailBoxUltra-2.0.0-universal.dmg
# drag → /Applications
# right-click → Open on first launch
02

Send mail

Anything SMTP works — Laravel, Django, Rails, Node, swaks.

$ swaks --to dev@example.com --from app@example.com \
  --server 127.0.0.1:1025 \
  --header "Subject: Hello"
03

Inspect it

HTML rendered by WebKit. Headers, attachments (with Save…), raw RFC 822 source, all on tab keys.

📥 14:23:45  app@example.com → dev@example.com  Hello  140 B
Built for the way you actually debug

Use cases.

Transactional mail

Password resets, invoices, signups. Every mailer in your app, no smtp config gymnastics.

Responsive email QA

Render an HTML email pixel-perfectly. Click Mobile (390) to see the iOS Mail layout — @media queries fire, UA is iPhone Safari.

Library inspection

Find out exactly what a Mailer SDK or queue worker writes on the wire — headers, MIME structure, encoding.

Capture-and-relay

Inspect locally, then deliver upstream with one toggle. One transaction, two outcomes.

AI-assistant pairing

NDJSON log + optional relay lets a coding agent watch live mail while you keep working in the GUI.

Onboarding flows

Reset the buffer between test runs, replay any captured signup email from the Release tab, repeat.

Get started

Install in 30 seconds.

sh
curl -sSL https://raw.githubusercontent.com/MPJHorner/MailboxUltra/main/scripts/install.sh | bash

Detects your arch, downloads the matching .dmg from the latest release, drops MailBox Ultra.app into /Applications, and clears the Gatekeeper quarantine flag. Full install guide → manual download, build-from-source, code-signing, uninstall

Read the full reference.

Every Preferences field, every relay option, every keyboard shortcut. Searchable, mobile-friendly, always in sync with the code that ships.

Quick start Preferences