Cloudflare Email Routing: Forwarding and Catch-All Setup -- Complete Guide
In this tutorial, you will learn how to configure Cloudflare Email Routing to forward incoming emails from your custom domain to any email address, set up catch-all rules, and manage email destinations -- all without running a mail server.
Why Cloudflare Email Routing Matters
Running email for a custom domain typically requires either a paid email hosting service (Google Workspace, Microsoft 365), a self-hosted mail server with complex configuration, or a forwarder service that limits you to a few addresses. Cloudflare Email Routing provides free email forwarding for your Cloudflare-managed domains with unlimited custom addresses, catch-all support, and built-in spam filtering. Unlike traditional email forwarders that require you to manage MX records manually, Email Routing integrates directly with Cloudflare's DNS management and configures MX records automatically. This means you can create custom email addresses like contact@yourdomain.com and forward them to your existing Gmail, Outlook, or any other inbox without paying for email hosting.
Real-world use: A freelancer with a personal domain wants contact@domain.com, hello@domain.com, and jobs@domain.com all delivered to their single Gmail inbox. With Cloudflare Email Routing, they create three custom addresses in minutes with no hosting fees and no MX record configuration.
Email Routing Flow
flowchart LR
S[Sender] --> M[MX Lookup]
M --> C[Cloudflare Edge]
C --> R[Email Routing]
R --> F[Spam Filter]
F --> D[Destination Inbox]
R --> C2[Catch-All Rule]
C2 --> D
style C fill:#f90,color:#fff
style R fill:#f90,color:#fff
Enabling Email Routing for Your Domain
Before using Email Routing, ensure your domain uses Cloudflare nameservers. The feature is available on all plans including the free tier.
# Step 1: Enable Email Routing
# Cloudflare Dashboard > Email > Email Routing
# Click "Get started"
# Step 2: Verify DNS records
# Cloudflare automatically adds MX records:
# Priority 0: route1.mx.cloudflare.net
# Priority 0: route2.mx.cloudflare.net
# These handle incoming email delivery to Cloudflare
# Step 3: Add a custom address
# Go to Email Routing > Routes > Create Address
# Custom address: contact@yourdomain.com
# Destination: yourname@gmail.com
# Click "Save"
Expected output: The custom address appears in the routing table. Emails sent to contact@yourdomain.com are now forwarded to your Gmail inbox. Add as many addresses as needed.
Setting Up a Catch-All Rule
A catch-all rule captures emails sent to any address at your domain that does not match an existing route. This prevents email loss from typos or addresses you have not explicitly created.
# To create a catch-all rule:
# 1. Email Routing > Routes > Catch-All
# 2. Set action to "Send to email"
# 3. Enter destination address
# 4. Click "Save"
# Alternatively, you can set catch-all to "Drop" to reject
# emails to unknown addresses (reduces spam)
Adding Multiple Destinations
You can route different custom addresses to different inboxes, useful for team management or separating personal and business mail.
# Example route table:
# Custom Address Destination
# contact@domain.com team@company.com
# billing@domain.com accounts@company.com
# support@domain.com help@zendesk.com
# jobs@domain.com hr@company.com
# Each route processes independently
# Spam filtering applies per message
Managing DNS Records
Email Routing manages MX records automatically, but you should verify they are correct.
dig MX yourdomain.com +short
# Expected output:
# 0 route1.mx.cloudflare.net.
# 0 route2.mx.cloudflare.net.
dig TXT yourdomain.com +short | grep "v=spf1"
# Expected output (if SPF is configured):
# "v=spf1 include:_spf.cloudflare.com ~all"
Common Errors
| Error | Cause | Fix |
|---|---|---|
Email not received |
DNS propagation delay or spam filter | Wait 30 minutes; check spam folder; verify MX records |
Route creation failed |
Domain not verified | Ensure domain is active on Cloudflare with proper nameservers |
Catch-all not working |
Catch-all rule not enabled | Go to Email Routing > Routes > Catch-All and enable it |
SPF softfail |
Missing SPF record | Add v=spf1 include:_spf.<a href="/web-servers-hosting/cloudflare/">Cloudflare</a>.com ~all TXT record |
MX records missing |
Email Routing not fully enabled | Check Email Routing status; toggle off and on to regenerate |
Practice Questions
- What DNS records does Cloudflare Email Routing automatically configure for your domain?
- What is the purpose of a catch-all rule in email routing?
- Can you route different email addresses at your domain to different destination inboxes?
FAQ
Summary
Cloudflare Email Routing provides free, unlimited email forwarding for your custom domains with automatic MX record configuration, catch-all support, and spam filtering. You create custom addresses like contact@yourdomain.com and forward them to any existing inbox without running a mail server or paying for email hosting.
Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro -- security-first tools for the modern web.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro