Free Email Hosting on a Custom Domain
Compare free custom-domain mailboxes with forwarding, then set up DNS, authentication, sending, and reliable delivery.
Yes, free email on a custom domain is possible, but “free email hosting” can mean two different things: a hosted mailbox that sends and receives mail, or forwarding that only delivers incoming messages to another inbox.
For a hosted mailbox, Zoho documents a free plan for one custom domain, up to five users, and 5 GB of storage per user in supported data centers. For inbound-only use, Cloudflare Email Routing forwards custom-domain addresses to an existing inbox. Sending from the domain requires a separate SMTP provider.
Choose a mailbox or forwarding first
| Option | What you get | Limits to check | Best fit |
|---|---|---|---|
| Zoho Mail free plan | Hosted mailboxes on one custom domain | Up to five users, 5 GB per user, select data centers, and no IMAP, POP, or ActiveSync | A small team that qualifies for the free plan and can use Zoho’s web or supported apps |
| Cloudflare Email Routing | Incoming messages forwarded to an existing inbox | It is not a mailbox; sending requires a separate SMTP provider | Personal or small-site addresses that mainly need inbound mail |
Compare these questions before changing DNS:
- Do you need to send as
you@example.com, or only receive? - How many addresses and domains are required?
- Do you need IMAP, POP, or ActiveSync for a desktop or mobile client?
- Is the free plan available in your data center or region?
- Can you edit DNS records for the domain?
- Who provides outbound SMTP and its sending limits?
What you need before setup
- A registered domain, such as
example.com. - Access to the domain’s DNS management page.
- The exact verification, MX, SPF, and DKIM values supplied by your chosen provider.
- An address plan: individual mailboxes such as
alex@example.com, aliases such assales@example.com, or forwarding destinations.
Without DNS access, you cannot prove domain ownership or route mail for the domain. Never copy generic MX, SPF, or DKIM values from another provider; use the current values shown in your provider’s console.
Set up a free hosted mailbox with Zoho
1. Add and verify the domain
Open Zoho Mail’s admin setup, add your domain, and choose the verification method it provides. Zoho documents TXT and CNAME verification. Add the record at your DNS host, wait for it to publish, then click the verification control in Zoho.
2. Create users and addresses
Create the users you need, for example alex@example.com and support@example.com. Keep the five-user and 5 GB-per-user limits in mind when planning a free deployment. If you need an alias instead of a separate login, configure it in the admin console where supported.
3. Point MX records to Zoho
Remove conflicting MX records and add the exact Zoho MX records shown for your account. MX records determine where inbound mail is delivered. DNS propagation can take time, and some resolvers may continue using cached records.
4. Add SPF and DKIM
SPF lists the services authorized to send for your domain. DKIM adds a cryptographic signature that authenticates the domain and helps recipients detect changes to the message in transit. Publish the exact TXT values generated by Zoho. If another service already sends mail for the domain, combine authorized SPF mechanisms into one SPF record rather than publishing multiple SPF records.
5. Test both directions
- Send from the new address to an unrelated mailbox.
- Reply back to the custom-domain address.
- Check the received message’s authentication results for SPF and DKIM.
- Send a message with an attachment and confirm it arrives.
The free Zoho plan does not include IMAP, POP, or ActiveSync, so verify that its web interface and supported apps meet your workflow before moving existing mail.
Set up Cloudflare Email Routing for inbound mail
1. Enable Email Routing
In Cloudflare, select the domain and enable Email Routing. Choose the destination inbox that should receive forwarded mail.
2. Create custom addresses
Add routes such as hello@example.com or billing@example.com. Cloudflare publishes the DNS records needed for routing. Confirm the destination address if Cloudflare requests verification.
3. Understand the sending limitation
Forwarding delivers incoming messages; it does not automatically provide a mailbox or authenticated outbound sending. To send and receive as the custom-domain address, add an SMTP provider and configure its SPF and DKIM records.
Cloudflare’s Email Service pricing distinguishes inbound and outbound use: inbound routing is listed as unlimited on Workers Free and Workers Paid; outbound sending is unavailable on Workers Free. Workers Paid includes 3,000 outbound emails per account per month, with additional usage priced at $0.35 per 1,000 according to the referenced pricing documentation.
DNS records explained
| Record | Purpose | Common mistake |
|---|---|---|
| TXT verification | Proves you control the domain | Putting the value on the wrong hostname or including extra quotation marks |
| MX | Routes incoming mail to the mailbox provider | Leaving old MX records active |
| SPF TXT | Authorizes approved sending services | Publishing more than one SPF record |
| DKIM TXT | Publishes the public key used to validate signed mail | Using the wrong selector or truncating the value |
DNS changes are controlled by your registrar or DNS host, not by the inbox provider. If your nameservers point to Cloudflare, edit records in Cloudflare. If they point elsewhere, edit them there instead.
Or skip the browser setup
If your goal is to capture a page showing your domain or email setup, ScreenshotNeo provides a website screenshot API. It accepts one GET request and returns PNG, JPEG, WebP, or PDF. Cookie banners, newsletter popups, and chat widgets are removed before capture; bot checks, blank pages, failed loads, timeouts, and cache hits are not billed. Responses identify the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.
See the ScreenshotNeo API documentation for all options.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://example.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://example.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
Free use includes 1,000 screenshots per month with no card. Paid plans start at $5 for 3,000 screenshots, and every feature is included on every plan. Create a free ScreenshotNeo account.
Troubleshooting
Verification fails
Check that the TXT or CNAME record is on the exact hostname requested, then allow time for DNS propagation. Remove duplicate records with conflicting values.
Mail still goes to the old provider
Inspect the domain’s public MX records. Delete obsolete MX entries and wait for cached resolvers to expire.
Messages arrive in spam
Publish the provider’s SPF and DKIM records, ensure the sending service is included in SPF, and verify that DKIM signatures pass. Authentication improves trust but does not guarantee inbox placement.
Replies cannot be sent from the custom address
You are likely using forwarding only. Add an SMTP provider and configure its authentication records, or use a hosted mailbox plan that includes outbound sending.
Desktop client cannot connect to Zoho free mail
IMAP, POP, and ActiveSync are not included in the documented free plan. Use Zoho’s supported web experience or select a plan and provider with the protocols you require.
Some users receive mail while others do not
Check for forwarding loops, misspelled addresses, mailbox quotas, and stale DNS caches. Test from more than one external provider.
Performance, reliability, and cost notes
- DNS: Changes are not instantaneous. Lowering TTL before a planned migration can reduce waiting, but it does not bypass resolver caches.
- Forwarding: It adds another delivery hop and can complicate replies, filtering, and authentication. Keep the destination mailbox secure.
- Authentication: SPF and DKIM values must match every service that sends mail for the domain. Coordinate marketing, transactional, and support senders.
- Storage: Zoho’s documented free allowance is 5 GB per user. Monitor quotas before importing old mail.
- Cost: “Free” may cover the mailbox or routing service while the domain, SMTP provider, or paid outbound plan remains separate. The cited documents do not establish a universal bundled cost.
- Availability: Zoho’s free tier is limited to select data centers, so eligibility can depend on where the account is provisioned.
Decision checklist
- Choose Zoho if you need hosted mailboxes, qualify for its free data-center offering, and can work without IMAP, POP, or ActiveSync.
- Choose Cloudflare Email Routing if you only need inbound delivery to an existing inbox.
- Add a separate SMTP provider when you need outbound mail from the custom domain with forwarding.
- Keep DNS ownership, MX routing, SPF, DKIM, user limits, storage, and regional availability documented.
FAQ
Can I host email without owning a domain?
No. Custom-domain email requires control of a registered domain and its DNS records.
Is forwarding the same as a mailbox?
No. Forwarding routes incoming messages to another inbox; it does not necessarily provide storage, folders, login access, or outbound SMTP.
Can I use multiple domains on the free Zoho plan?
The documented free plan supports one custom domain.
Do SPF and DKIM replace each other?
No. SPF authorizes sending sources, while DKIM signs messages and authenticates the sending domain. Configure both when your provider supports them.
Should I publish more than one SPF record?
No. Combine authorized mechanisms into a single SPF record for the domain.


