Mailpit is the development mail service to receive and read emails sent from arcane demesne apps and services
  • Makefile 100%
Find a file
2026-07-09 17:43:00 -04:00
docs first commit 2026-07-09 17:43:00 -04:00
nginx/snippets first commit 2026-07-09 17:43:00 -04:00
.env.example first commit 2026-07-09 17:43:00 -04:00
.gitignore first commit 2026-07-09 17:43:00 -04:00
compose.yml first commit 2026-07-09 17:43:00 -04:00
Makefile first commit 2026-07-09 17:43:00 -04:00
nginx.conf first commit 2026-07-09 17:43:00 -04:00
README.md first commit 2026-07-09 17:43:00 -04:00

Mailpit

SMTP capture + web UI for the Arcane Demesne homelab. Apps on gateway-hub send mail to mailpit:1025; messages appear in the dashboard at mail.arcanedemesne.com (or http://localhost:8085).

Production apps should use a real SMTP relay (Cloudflare Email Service, SES, etc.) — not Mailpit relay-all. See docs/consumers.md.

Bootstrap

cp .env.example .env
podman network create gateway-hub   # once, if missing
make up

Reload hub after first start:

make proxy-reload

Ports

Surface Host Container
Edge nginx 8085 mailpit-proxy:80
Web UI mailpit:8025
SMTP (not published) mailpit:1025

Public hostname: mail.arcanedemesne.com → Gateway → mailpit-proxy.

Tunnel: add DNS + Cloudflare ingress for mail.arcanedemesne.comhttp://127.0.0.1:8080.

UI auth

Before exposing the UI on the tunnel, set MP_UI_AUTH (htpasswd user:hash) or MP_UI_AUTH_FILE in .env. Cloudflare Access is an alternative.

Generate htpasswd:

htpasswd -nbB admin 'your-password'

Consumer env (homelab)

Shared convention on gateway-hub:

SMTP_HOST=mailpit
SMTP_PORT=1025
SMTP_USE_TLS=false
SMTP_FROM=[email protected]

Authentik uses AUTHENTIK_EMAIL__* — see docs/consumers.md.

Health

Mailpit exposes GET /livez — used as HomeLab Infrastructure tile health URI.

Optional dev overlay

To hit Mailpit from host processes (split-port dev), publish SMTP/UI in a local override compose file (1025:1025, 8025:8025). Default stack keeps SMTP internal only.

Makefile

Target Action
make up Start stack
make down Stop stack
make proxy-reload Reload mailpit-proxy + gateway-proxy nginx