Setting Up a Custom Email with Zoho Mail and Cloudflare
I’ve always wanted a professional email address for my domain - something like [email protected] instead of a generic Gmail address.
I’ve tried using Cloudflare Email Routing in the past, and while it works great for forwarding emails to your personal inbox, I was missing having an actual custom mailbox - a dedicated inbox where I could send and receive emails as my custom address.
After exploring a few options, I landed on Zoho Mail. Here’s how I set it up with my Cloudflare-hosted domain.
Why Zoho Mail?
There are several providers for custom domain email - Google Workspace, Microsoft 365, Fastmail, and more. I chose Zoho Mail for a few reasons:
- Free tier available - Up to 5 users with 5GB storage each
- Clean interface - Modern UI without the clutter
- Privacy-focused - No ads, even on the free tier
- Good deliverability - Emails actually land in inboxes
If you’re a freelancer, creator, or just want a professional email without paying monthly fees, Zoho’s free tier is hard to beat.
What You’ll Need
Before we start, make sure you have:
- A domain name (I’m using my domain)
- Access to your Cloudflare DNS dashboard (or if your domain is hosted elsewhere, access to that dashboard to change DNS settings)
- About 15-20 minutes of your time
Step 1: Sign Up for Zoho Mail
Head to Zoho Mail and click “Sign Up Free”. Choose the Personal email which includes:
- Up to 5 users
- 5GB storage per user
- Web access + mobile apps
- Email hosting for one domain
During signup, you’ll enter your domain name and the email address you want to create (e.g., [email protected]).
After signing up, head over to the Zoho admin panel.
Step 2: Verify Domain Ownership (One-Click Method)
Zoho needs to confirm you own the domain. The good news is that Zoho offers a one-click verification method that makes this incredibly easy. If you use one-click verification, you can also configure your MX, SPF, and DKIM records using the same method - no manual DNS editing required!
Using One-Click Verification (Recommended)
- In the Zoho setup wizard, look for the One-click verification option
- Authenticate with your DNS provider (Cloudflare, in my case)
- Zoho will automatically add the verification TXT record to your domain
- Once verified, you can use the same one-click method for MX, SPF, and DKIM records
This is the method I used, and it took less than a minute to configure everything. Zoho handles all the DNS record creation for you.
Manual Method (If One-Click Isn’t Available)
If one-click verification isn’t available for your DNS provider, you can add the records manually. Zoho will give you a verification code that looks something like:
zoho-verification=zb12345678.zmverify.zoho.com
Add this TXT record in Cloudflare:
- Log in to your Cloudflare dashboard
- Select your domain
- Go to DNS > Records
- Click Add record
- Configure the record:
| Type | Name | Content | TTL |
|---|---|---|---|
| TXT | @ | zoho-verification=zb12345678.zmverify.zoho.com | Auto |
Click Save and head back to Zoho to verify. It usually takes a few minutes for DNS to propagate.
Step 3: Configure MX Records
If you used one-click verification, you can configure MX records the same way - just click the button and Zoho handles it automatically.
For manual configuration, MX (Mail Exchange) records tell the internet where to deliver emails for your domain. This is the most important step.
In Cloudflare, add the following MX records:
| Type | Name | Mail server | Priority | TTL |
|---|---|---|---|---|
| MX | @ | mx.zoho.com | 10 | Auto |
| MX | @ | mx2.zoho.com | 20 | Auto |
| MX | @ | mx3.zoho.com | 50 | Auto |
The priority numbers matter - lower numbers have higher priority. If the primary server (mx.zoho.com) is unavailable, email routes to the backup servers.
Step 4: Set Up SPF Record
Again, if you used one-click verification, Zoho can add this automatically for you.
SPF (Sender Policy Framework) helps prevent email spoofing by specifying which servers can send email on behalf of your domain.
For manual setup, add this TXT record:
| Type | Name | Content | TTL |
|---|---|---|---|
| TXT | @ | v=spf1 include:zoho.com ~all | Auto |
Note: If you already have an SPF record (maybe from another service), don’t create a duplicate. Instead, merge them:
v=spf1 include:zoho.com include:other-service.com ~all
Step 5: Configure DKIM
One-click verification supports DKIM too! If you’re doing it manually, here’s how:
DKIM (DomainKeys Identified Mail) adds a digital signature to your emails, proving they came from your domain. This improves deliverability significantly.
In Zoho Mail:
- Go to Admin Console > Email Authentication > DKIM
- Click Add Selector
- Zoho will generate a TXT record value for you
Add the DKIM record in Cloudflare:
| Type | Name | Content | TTL |
|---|---|---|---|
| TXT | zmail._domainkey | v=DKIM1; k=rsa; p=MIGfMA0GCS… (your key) | Auto |
The selector name might be different (like default._domainkey or zoho._domainkey) - use whatever Zoho provides.
Step 6: Add DMARC Record (Optional but Recommended)
DMARC ties SPF and DKIM together and tells receiving servers what to do with emails that fail authentication.
Add this TXT record:
| Type | Name | Content | TTL |
|---|---|---|---|
| TXT | _dmarc | v=DMARC1; p=none; rua=mailto:[email protected] | Auto |
The p=none policy means you’re just monitoring for now. Once you’re confident everything works, you can change it to p=quarantine or p=reject.
Final DNS Configuration
Here’s what your Cloudflare DNS records should look like when you’re done:
# MX Records
@ MX mx.zoho.com 10
@ MX mx2.zoho.com 20
@ MX mx3.zoho.com 50
# TXT Records
@ TXT zoho-verification=zb12345678.zmverify.zoho.com
@ TXT v=spf1 include:zoho.com ~all
zmail._domainkey TXT v=DKIM1; k=rsa; p=MIGfMA0GCS...
_dmarc TXT v=DMARC1; p=none; rua=mailto:[email protected]
Testing Your Setup
Once everything is configured:
- Send a test email from your new address to a Gmail account
- Check email headers - Look for SPF=pass and DKIM=pass
- Use a testing tool like mail-tester.com to check your deliverability score
If SPF or DKIM fails, double-check your DNS records and wait for propagation (can take up to 48 hours, though usually much faster).
Accessing Your Email
You can access your Zoho Mail through:
- Web: mail.zoho.com
- Mobile: Zoho Mail app for iOS/Android
- Desktop client: Configure IMAP/SMTP in your preferred email client
IMAP/SMTP Settings
If you want to use a desktop client like Apple Mail or Thunderbird, here are the settings. Note that IMAP/POP access requires a paid Zoho plan, so if you’re optimizing for free, you’ll want to stick with the web and mobile apps.
Incoming (IMAP):
- Server: imap.zoho.com
- Port: 993
- Security: SSL
Outgoing (SMTP):
- Server: smtp.zoho.com
- Port: 465
- Security: SSL
Wrapping Up
Setting up a custom email might seem intimidating at first, but Zoho’s one-click verification makes it incredibly straightforward - you can have everything configured in minutes without touching DNS records manually. Even if you go the manual route, it’s really just a matter of adding a few DNS records. With Zoho’s free tier and Cloudflare’s DNS management, you get a professional email setup without any monthly costs.
Now when I send emails from [email protected], they land in inboxes properly authenticated. That’s a win!
Have you set up custom email for your domain? I’d love to hear what provider you chose and why.
Resources
- Zoho Mail Setup Guide
- Cloudflare DNS Documentation
- SPF Record Syntax
- DMARC Explained
- Mail Tester - Check your email deliverability score
Share this post on: