Custom domains
Point a domain you own at mailfixture and create inboxes on it. Your domain, your reputation — signup forms that blocklist shared testing domains have nothing to match against.
Why a custom domain
Shared domains are a demo funnel, and we're honest about their physics: any domain that hands out free programmatic addresses eventually lands on disposable-email blocklists (the full story). A custom domain ends that race permanently — signup-a1@testmail.acme.com is indistinguishable from any other address on your company's infrastructure, because it is your company's infrastructure. Custom domains are available on every paid plan.
Setup: two DNS records
Register the domain with POST /v1/domains or the dashboard wizard; either way you get two records to publish, with copy buttons in the dashboard:
; ownership proof _mfx.testmail.acme.com. TXT "mfx-verify=<your-token>" ; mail routing testmail.acme.com. MX 10 <mx-target-from-your-instructions>
testmail.acme.com, not acme.com. The MX record routes ALL mail for that name to mailfixture; putting it on a domain that already receives real email would reroute your actual mail. A subdomain carries your root domain's reputation without touching its mail flow.
Verification
Both records must check out: the TXT proves you control the domain, the MX proves mail will actually arrive. Trigger a check with the dashboard button or POST /v1/domains/{id}/verify — and for a domain's first 7 days a background task re-checks every 60 seconds anyway, so verification usually lands on its own as soon as your DNS propagates. You'll get an email when the domain goes fully green. Checks bypass DNS caches, so a freshly published record is seen within your DNS host's own propagation time, not a TTL later.
Until verification completes, mail to the domain is rejected — inbound routing switches on only when ownership is proven.
Using it
Pass the domain when creating inboxes; everything else — TTLs, long-polling, extraction — works identically to the shared domain:
$ curl -s -X POST https://api.mailfixture.com/v1/inboxes \ -H "Authorization: Bearer $MAILFIXTURE_API_KEY" \ -H "Content-Type: application/json" \ -d '{"domain": "testmail.acme.com"}'
The domain belongs to your account alone: no other account can create inboxes on it, and addresses you haven't created still 550-reject — a custom domain is not a catch-all.
Removing a domain
DELETE /v1/domains/{id} removes the domain and everything on it — every inbox and every message. Mail to the domain starts bouncing once your MX record is gone; remember to clean up the two DNS records.