Skip to content

Troubleshooting

The sender gets Address not found.

First, check the address is on the right domain. Aliases live on your mail domain — the zone apex, yourdomain.com — not the dashboard hostname inbox.yourdomain.com. Email Routing’s catch-all is bound to the apex.

If the dashboard shows addresses ending in inbox.…, that install predates the fix. Run mailriz-cli update: it moves them and reports how many.

Then check, in order:

  1. MX recordsdig +short MX yourdomain.com should return route1/2/3.mx.cloudflare.net.
  2. Email Routing is enabled and its catch-all action is the mailriz Worker — Email → Email Routing → Routing Rules in the dashboard.
  3. The alias is not disabled. A disabled alias is rejected on purpose and the catch-all will not recreate it.
  4. The daily budget. Past 50 auto-created addresses in 24 hours, new ones get a temporary failure. Senders retry; it clears itself.
  • In access mode, an empty audience tag makes the Worker reject every request. mailriz-cli status shows the auth mode; if it is access and the install has no aud recorded, re-run setup.
  • In session mode, a 401 should show the login screen. If it does not, the Worker may not be answering at all — check /healthz.

An older CLI replayed every migration on each run. Update the CLI itself:

Terminal window
bunx mailriz-cli@latest update

Newer versions record applied migrations and adopt what is already present.

The dot on the refresh button is grey.

A brief grey moment every few minutes is normal — connections are short-lived by design and the browser reconnects. Persistent grey means the stream is not staying up.

On Workers Free, the 10 ms CPU budget per request is the usual cause: each poll inside a connection spends from the same budget. Raise the poll interval to spend fewer:

UPDATES_POLL_MS = 8000

Set it as a Worker variable and redeploy. Refresh still works meanwhile.

  • Embedded images in older messages stay broken. Content-ID is recorded at ingest, so messages received before that shipped have nothing to resolve against. Mail arriving after the update renders normally; the files remain downloadable from the attachment list.
  • SVG never renders inline. It can carry script, so it is always a download.
  • Remote images need the Show images prompt — that is deliberate.

Cloudflare refuses to attach a Custom Domain over an existing DNS record. Delete any existing record for the dashboard hostname, then re-run setup.

Large HTML messages can exceed the 10 ms CPU limit on Workers Free while parsing. Workers Paid raises it to 30 s and is the recommended fix.

Terminal window
npx wrangler tail --name mailriz

Shows live Worker output, including the email handler.