Zoho Mail: SPF, DKIM and DMARC alignment
By Thomas · virtual CISO · September 05, 2026
Zoho Mail holds a place of its own among mail suites: hosting for business email, calendar, collaborative tools, all at a price that appeals to small structures and to organisations mindful of data sovereignty alike. That last concern has a direct, often underestimated consequence for authentication: Zoho spreads its customers across several regional data centres, and the SPF configuration is not the same depending on which one hosts the account.
By default, a domain added to Zoho Mail does send under its own name — the envelope and the From header carry the organisation's domain — but nothing yet guarantees that DMARC passes. As long as the SPF record does not authorise Zoho's servers and the DKIM signature is not enabled in the admin console, messages leave without aligned authentication. A recipient enforcing p=reject then rejects them, even though they come from a perfectly legitimate mailbox.
This guide covers the three building blocks that make Zoho Mail DMARC-compatible: the SPF record and its regional include, the DKIM selector generated then verified in the console, and the alignment that follows. Then the data-centre question — the mistake most specific to Zoho — the common configuration traps, and the final proof through RUA reports.
SPF: the include that depends on the data centre
The SPF record authorises Zoho's servers to send for the domain. Its form depends on the account's hosting region:
example.com. TXT "v=spf1 include:zohomail.com ~all"
The zohomail.com include applies to accounts hosted in the US data centre; an account in the European centre uses zoho.eu, an Indian account zoho.in, and so on. This is the point most specific to the platform: copying an include seen in generic documentation, without checking the account's actual region, produces an SPF that authenticates wrongly — the servers that really send are not the ones the include authorises, and SPF fails intermittently depending on the outbound server Zoho picks.
A domain must carry only one SPF record. If the domain also sends through another service — an ESP for campaigns, a transactional application — the includes combine within the same record, never in two separate records (which would trigger a permerror). SPF's ten-DNS-lookup limit remains worth watching: each include consumes lookups, and a record that stacks too many services eventually exceeds the ceiling.
DKIM: the selector generated in the console
Unlike SPF, DKIM is not configured in the DNS zone alone: it is driven from the Zoho admin console. The process comes in two steps. First, the console generates a key pair for the domain and displays a TXT record to publish, under a chosen selector — zmail by default, customisable:
zmail._domainkey.example.com. TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkq…"
Then — and this is the step most often forgotten — one must return to the console once the TXT has propagated and enable the signature. Publishing the key is not enough: until the box is ticked on Zoho's side, messages leave without a DKIM signature, and the TXT sits inert in the zone. This double action — publish then enable — is Zoho's operational particularity when it comes to DKIM.
The signature produced carries d=example.com, the organisational domain itself. DKIM alignment is therefore secured from the moment it is enabled, even in strict mode.
Two operational details deserve attention. Key length, first: Zoho offers 1024- or 2048-bit keys; 2048 is the recommended default, several mail operators now treating 1024 as weak. Rotation, next: renewing a DKIM key at Zoho means generating a new selector, publishing the corresponding TXT, enabling it, then removing the old one once propagation is confirmed. It is a seamless switch — provided the old selector is not deleted before the new one is effective, otherwise a window of messages leaves without a valid signature. key renewal, step by step follows this same overlap principle everywhere.
DMARC alignment: the favourable case
DMARC only validates a message if SPF or DKIM passes and aligns with the From domain. Zoho Mail sits here in the favourable case, like classic mail hosting.
On the DKIM side, the signature carries the domain itself — alignment is direct. On the SPF side, the envelope of outgoing messages is also on the organisation's domain, since Zoho hosts that domain's mail: SPF therefore aligns naturally, with no envelope subdomain to declare as with some ESPs. Two mechanisms pass aligned, and that redundancy protects: if a forward breaks SPF along the way, DKIM survives; if a gateway rewrites the body and invalidates the signature, SPF holds. A softfail qualifier (~all) stays prudent while the setup is being confirmed, before any move to a stricter -all. The worked examples, from the simplest to the strictest show how to set the _dmarc instruction once SPF and DKIM are in place — first at p=none while observing, then tightening.
The data-centre trap
Almost all Zoho configurations that fail come down to a region mismatch. The account is hosted on a given data centre — chosen at sign-up, sometimes without much attention — but the SPF include, the DKIM console and the MX records must all match that same region. A domain whose account lives on the European centre but whose SPF points to include:zohomail.com will see its messages fail SPF in a baffling way: the documentation seems to have been followed, and yet authentication does not pass.
The diagnostic reflex is to check, in the console, the actual hosting region, then align every record on it. Zoho's MX records follow the same regional logic as the SPF include; a correct MX but an include from another region is a classic case, precisely because the two are configured at different moments. Migrating an account from one data centre to another — an operation Zoho offers — also requires revisiting the SPF include in passing, a point the switch does not always flag. It is a check of a few minutes that saves hours of trial and error.
Domain aliases and subdomains
Zoho Mail allows several domains and aliases to be attached to one organisation. Each domain that sends mail is a distinct authentication perimeter: it needs its own SPF record and its own DKIM key, published in ITS zone. An alias that reuses a main domain's infrastructure without publishing its own records will send under an unauthenticated identity — and DMARC will fail for that particular alias, even if the main domain is flawless.
The rule holds for subdomains too. A subdomain that sends — billing, support, notifications — does inherit the parent's DMARC policy through the DMARCbis tree walk, but not its SPF record or its DKIM key: those still have to be published where the mail actually leaves from. Confusing inheritance of policy with inheritance of configuration is a frequent mistake that leaves an active subdomain without aligned authentication, under an inherited policy that will have it rejected.
Common configuration mistakes
Several traps recur in the body of reports the free DMARC analyzer processes daily.
Publishing the DKIM key without enabling it. The TXT is in place, but the signature is never applied because enabling was not ticked in the console. Symptom: SPF passes, DKIM is absent from reports.
Stacking two SPF records. Adding a second v=spf1 record instead of merging the includes into one triggers a permerror that invalidates SPF entirely — not just the addition.
Copying an include from the wrong region. The Zoho case par excellence, described above.
Tightening the policy too early. Moving to p=reject before confirming, reports in hand, that all legitimate traffic aligns — human mail as well as application notifications — means risking the rejection of one's own messages.
The final proof: RUA reports
The only proof that a configuration holds is not the Zoho console, but what recipients report. Once a _dmarc record is published with a rua= address, aggregate reports arrive within a few days and detail, source by source, what aligns and what fails. Reading the reports the receivers send back confirms that Zoho traffic is correctly attributed to the domain: DKIM aligned, SPF aligned, and no Zoho source failing both mechanisms.
A simple cadence is enough: a first read a few days after publishing the _dmarc record, once several recipients have reported, then a weekly glance while the policy stays at p=none. Zoho traffic appears under a stable set of addresses specific to the account's region: an aligned baseline is quick to recognise, and any new or unaligned Zoho source stands out immediately — usually the sign of a service sending from another region or a DKIM selector never enabled.
That verification, held over several days, is what licenses tightening the policy without risk. As long as reports show legitimate traffic that is not aligned — a forgotten service, a misconfigured region — the move to p=reject stays premature. Once alignment is confirmed across every flow, the shift to a strict policy is made calmly. The online analyzer reconstructs this state from the published records and the reports received, and places the domain on the path that leads to p=reject.
Related guides
- Enabling DKIM on Microsoft 365: the step-by-step guide
Microsoft 365 signs with onmicrosoft.com by default — a signature DMARC cannot align. Defender portal, PowerShell, the two CNAMEs: the full walkthrough.
- Enabling DKIM on Google Workspace: the step-by-step guide
DKIM is off by default on a Google Workspace domain. Generating the 2048-bit key, publishing the google._domainkey TXT, header checks and DMARC alignment.
- Setting up SPF and DKIM on OVHcloud
OVHcloud MX Plan, Email Pro and Exchange each need their own SPF and DKIM records. The DNS zone, the default SPF trap, CNAME selectors, checks.
About the author
Thomas — Thomas is the virtual CISO of DMARC.com: a copilot specialized in email authentication that walks organizations from p=none to p=reject without breaking their mail. His guides draw on real data from the DMARC Observatory and the RUA reports the platform analyzes.
