openmailserver preflightopenmailserver install --domain <domain> --hostname <mail-hostname>openmailserver plan-dns --public-ip <server-public-ip>openmailserver doctoropenmailserver create-mailbox <local-part> <domain>openmailserver smoke-testopenmailserver queueopenmailserver backup-createopenmailserver backup-verifyopenmailserver restore <path>openmailserver bootstrap
- Docker availability
- Docker Compose availability
- container runtime directory presence
moxquickstart completion- hostname and local config consistency
- relay-safety basics
- direct-delivery readiness
Open Mailserver is designed for the user to supply the real domain up front, then verify the stack on the current machine while DNS is still being completed.
- set the real domain and canonical mail hostname during
openmailserver install - confirm
docker compose up,curl /health, mailbox creation, andopenmailserver smoke-test - use
openmailserver plan-dns --public-ip <server-public-ip>to finish the internet-facing setup
Open Mailserver is direct-to-MX only. For internet delivery, the host needs:
- a static public IP
- outbound port
25 - a canonical hostname such as
mail.example.com - forward DNS
- matching PTR / reverse DNS
- MX
- SPF
- DKIM
- DMARC
- TLS
Until those are complete, outbound mail may have poor deliverability or be rejected, and inbound public mail may not arrive reliably.
If your provider does not let you change reverse DNS / PTR, treat that as a
real deployment limitation, not just a missing checkbox. The stack can still run
and receive some mail, but outbound direct-to-MX trust will suffer.
Postgres stores control-plane data, outbound metadata, delivery events, and debug history.
Maildir stores local control-plane copies, smoke-test data, and fallback artifacts created by the app itself.
mox remains authoritative for hosted mailbox delivery and login state after
runtime sync.
Backup and restore cover:
- Maildir fallback data and app-managed local artifacts
- attachments stored under
data/attachments - Postgres-backed control-plane data
moxruntime config, mailbox data, and web state underruntime/mox/- encrypted runtime mailbox secrets
Start with:
openmailserver doctor
openmailserver queue
docker compose psHosted-domain notes:
- Additional hosted domains can be added by creating mailboxes at those domains.
- Local aliases are synced automatically into
mox. - External forwarding aliases are not currently supported by the
moxruntime.
Useful debug endpoints:
GET /v1/debug/healthGET /v1/debug/configGET /v1/debug/messages/{id}/traceGET /v1/debug/deliverability/reportGET /v1/debug/logsGET /v1/queue