The Senders tab on the Mail Settings page (/admin/mail-settings?tab=senders)
now includes an MX Records section that shows:
This makes it easy for site administrators to diagnose and resolve email delivery issues without needing direct access to Cloudflare.
When a new environment is provisioned via the environment setup workflow, the required MX records are now created automatically alongside the existing A and AAAA DNS records. This prevents the email routing gap that previously affected all new subdomain deployments.
Emails sent to *.ngx-ramblers.org.uk subdomain addresses were bouncing with
error 5.4.0 (network or routing status) because no MX records existed to tell
sending mail servers where to deliver email. The root domain and all custom
domains (e.g. ekwg.co.uk) had correct MX records, but subdomains like
kent.ngx-ramblers.org.uk were missing them entirely.
The three required MX records point to Cloudflare's email routing servers:
route1.mx.cloudflare.net (priority 16)route2.mx.cloudflare.net (priority 99)route3.mx.cloudflare.net (priority 2)server/lib/cloudflare/cloudflare.model.ts — Added priority field to
DnsRecord and DnsRecordResult interfaces. Added MxRecordDetail and
MxRecordStatus interfaces for the status API response.
server/lib/cloudflare/cloudflare-dns.ts — Updated createDnsRecord() to
conditionally include priority in the Cloudflare API POST body when present
(required for MX record creation).
server/lib/cloudflare/cloudflare-email-routing-routes.ts — Added two new
authenticated API endpoints:
GET /api/cloudflare/email-routing/mx-records — returns MX record status
for the current environment's subdomain
POST /api/cloudflare/email-routing/mx-records — creates any missing MX
records and returns updated status
server/lib/cli/commands/subdomain.ts — Updated
setupSubdomainForEnvironment() to create MX records after A/AAAA records,
with duplicate detection matching the existing pattern.
projects/ngx-ramblers/src/app/models/cloudflare-email-routing.model.ts —
Added MxRecordStatus, MxRecordDetail, and MxExistingRecord interfaces.
projects/ngx-ramblers/src/app/services/cloudflare/cloudflare-email-routing.service.ts —
Added queryMxRecordStatus() and createMissingMxRecords() service methods.
projects/ngx-ramblers/src/app/pages/admin/system-settings/mail/mail-senders-list.ts —
Added MX record status section to the template with status badge, record table,
error display, and create button. Added loadMxRecordStatus() and
createMissingMxRecords() component methods.