SPF, DKIM & DMARC for DreamHost.
DreamHost is a web host, so "authenticating your domain" here means authenticating the mailboxes and website mail you send through DreamHost's own mail servers — there's no separate ESP wizard. For any domain whose DNS is hosted at DreamHost, the panel does most of the work automatically: it publishes an SPF record that authorizes DreamHost's outbound IPs and its MailChannels relay, and it generates a DKIM key under the "dreamhost" selector so every message sent through DreamHost SMTP is signed as your domain. The one record DreamHost never creates is DMARC — you add that yourself. And the trap that catches almost everyone: the moment you hand-edit the SPF record, DreamHost silently drops its managed version, so your replacement has to carry both of DreamHost's includes by hand.
Why authenticate DreamHost?
Getting SPF, DKIM, and DMARC right on DreamHost decides whether your mail reaches the inbox. Since February 2024, Gmail and Yahoo require every bulk sender (roughly 5,000+ messages a day) to pass SPF, DKIM, and DMARC with alignment, and Microsoft began enforcing the same on high-volume mail to Outlook/Hotmail in 2025. DreamHost is unusual among "provider" pages because you send from your own mailboxes: the envelope sender is your domain, so SPF aligns, and DreamHost signs DKIM as your domain, so DKIM aligns too — a properly configured DreamHost domain passes DMARC on both mechanisms, the resilient setup that survives forwarding. But two DreamHost-specific things quietly break it: website scripts that send through PHP's mail()/sendmail instead of authenticated SMTP aren't DKIM-signed, and editing SPF drops DreamHost's managed record. Close both gaps and the sending reputation you build accrues to your own domain instead of leaking away as unauthenticated mail.
The SPF reality for DreamHost
DreamHost is a genuine "include" provider, but the include is really two includes plus mx, and together they ARE your whole root SPF record. For a domain whose DNS lives at DreamHost, the panel auto-publishes v=spf1 mx include:netblocks.dreamhost.com include:relay.mailchannels.net -all. netblocks.dreamhost.com holds DreamHost's own outbound IP ranges; relay.mailchannels.net is there because DreamHost routes outbound mail through MailChannels (a shared outbound relay) — both are required, and dropping either causes some of your mail to hard-fail SPF. Because you send from your own mailboxes, the SMTP envelope sender is an address on your domain, so SPF actually ALIGNS to your organizational domain here (unlike a Mailchimp or SendGrid that owns the Return-Path). The behavior that trips people up: this record is managed only as long as you don't touch it. Add or edit a custom SPF TXT record and DreamHost removes its auto-generated one, so your replacement MUST contain both include:netblocks.dreamhost.com and include:relay.mailchannels.net (plus any third-party include you're adding), all inside ONE v=spf1 record. The default ends in -all (hard fail), which is strict — every legitimate sender has to be listed or it's rejected outright. And never publish two SPF TXT records on the domain; two SPF records is itself a PermError.
Two ways to set it up
DNS hosted at DreamHost (automatic)
- DreamHost auto-publishes the SPF record (mx + netblocks.dreamhost.com + relay.mailchannels.net, ending -all)
- DreamHost auto-generates the dreamhost._domainkey DKIM record and signs all SMTP mail
- Nothing to paste for SPF/DKIM — you only add the DMARC record yourself
- Watch the trap: editing SPF drops the managed record, so re-add both includes by hand
DNS hosted elsewhere (Cloudflare, registrar) — manual
- DreamHost can't publish records on a zone it doesn't control, so nothing appears automatically
- Add v=spf1 mx include:netblocks.dreamhost.com include:relay.mailchannels.net -all yourself at your DNS host
- Copy the dreamhost._domainkey DKIM TXT value from the DreamHost panel into your DNS host (DNS-only if on Cloudflare)
- Add the _dmarc TXT record there too — none of these are created for you
Step by step
- 1
Confirm where your DNS is hosted
Log in at panel.dreamhost.com and open Websites → Manage Websites (older panels: Domains → Manage Domains). Find your domain, click the vertical three-dots button, and choose DNS Settings. If your DNS is hosted at DreamHost, SPF and DKIM are likely already published; if your nameservers point to Cloudflare or a registrar, DreamHost can't auto-publish and you'll add every record manually at that host.
- 2
Verify the managed SPF record
In DNS Settings, confirm the SPF TXT record reads v=spf1 mx include:netblocks.dreamhost.com include:relay.mailchannels.net -all with a blank Name (the root). If you send only through DreamHost, leave it exactly as is — don't 'clean it up.'
- 3
Adding another sender? Merge, never duplicate
Because editing removes DreamHost's managed record, re-create ONE SPF TXT that keeps both DreamHost includes and appends the new one — e.g. v=spf1 mx include:netblocks.dreamhost.com include:relay.mailchannels.net include:_spf.google.com -all. Never add a second SPF record (PermError).
- 4
Confirm DKIM is on
DreamHost auto-generates the dreamhost._domainkey TXT record and signs all authenticated-SMTP mail for hosted domains. In DNS Settings, check for a TXT record whose Name contains _domainkey (selector dreamhost). If your DNS is external, copy that TXT value to your DNS host so DKIM resolves.
- 5
Send website mail via authenticated SMTP
Contact forms and scripts using PHP mail()/sendmail pass SPF (they leave from DreamHost IPs) but are NOT DKIM-signed. Point WordPress and any app at smtp.dreamhost.com with a mailbox's credentials (an SMTP plugin does this) so the mail is signed and aligns for DMARC.
- 6
Add the DMARC record
DreamHost doesn't create DMARC. In DNS Settings click Add Record, set Name to _dmarc, Type to TXT, and Value to v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com, then save. p=none is monitor-only so nothing is affected while you confirm alignment.
- 7
Send a test and read the headers
Email yourself at Gmail from a DreamHost mailbox, open the message and choose ⋮ → Show original. Confirm SPF: PASS (your domain), DKIM: PASS with d=yourdomain.com and selector dreamhost, and DMARC: PASS. Missing DKIM almost always means the mail went out via PHP mail() instead of SMTP.
- 8
Ramp DMARC to enforcement
After a week or two of clean rua reports confirming every legitimate source passes aligned, tighten the policy from p=none to p=quarantine and then p=reject. Because DreamHost aligns both SPF and DKIM, you can usually reach p=reject quickly.
Records to add
DreamHost generates the exact values in its setup wizard — these show the shape of what you'll add at your DNS host.
| Type | Host | Value |
|---|---|---|
| TXT | @ | v=spf1 mx include:netblocks.dreamhost.com include:relay.mailchannels.net -allDreamHost's managed root SPF. Leave the Name field BLANK for the root (don't type @ or the domain). Editing it removes DreamHost's auto record, so any replacement must keep both includes. |
| TXT | dreamhost._domainkey | v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQ…(auto-generated public key)Auto-created by DreamHost for hosted email; the selector is always dreamhost. Illustrative — the real key is generated per domain and visible in your DNS Settings. |
| TXT | _dmarc | v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.comYou add this — DreamHost never creates it. One DMARC record per domain; start at p=none. |
Keep exactly one SPF (v=spf1) TXT record on your root domain — merge every sender into it. Two SPF records is itself an error.
The 10-lookup budget
SPF is capped at a hard 10 DNS lookups — go over and it returns a permerror and stops validating everywhere. Here's what DreamHost's setup costs against that budget.
DreamHost adds 3 of your 10 lookups; ip4: and ip6: mechanisms are free.
DKIM
DKIM on DreamHost is automatic for domains using DreamHost email. DreamHost generates an RSA key and publishes the public half as a TXT record at dreamhost._domainkey.yourdomain.com — the selector is always "dreamhost", and the value is v=DKIM1; k=rsa; p=<public key>. Every message that leaves through DreamHost's authenticated SMTP mail server (smtp.dreamhost.com) is signed with the matching private key, so DKIM aligns to your domain and there is normally nothing for you to create. Two DreamHost-specific caveats decide whether it actually works. First, signing only happens for mail sent through DreamHost's authenticated SMTP servers — website mail sent with PHP's mail() function or the local sendmail binary (a WordPress contact form with no SMTP plugin, a cron script, a PHP mailer) leaves the server unsigned. Those messages still pass SPF because they originate from DreamHost IPs inside netblocks.dreamhost.com, but they carry no DKIM signature, so configure any app that sends mail to authenticate through smtp.dreamhost.com with a real mailbox's credentials. Second, DKIM is only auto-published when your DNS is hosted at DreamHost. If your nameservers point to Cloudflare or a registrar, DreamHost publishes nothing — copy the dreamhost._domainkey TXT value from the DreamHost DNS panel and add it at your actual DNS host (grey-cloud / DNS-only on Cloudflare) or DKIM will never resolve.
DMARC
DMARC is the one record DreamHost does not create for you — you add it as a custom DNS record. In the DreamHost panel, open your domain's DNS Settings, click Add Record, set the Name to _dmarc, the Type to TXT, and the Value to v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com, then save. p=none is monitor-only: it changes nothing about delivery while receivers email you aggregate (rua) reports so you can confirm your DreamHost mail is passing SPF and DKIM aligned to your domain. DreamHost is well-positioned here because it aligns BOTH mechanisms — SPF via your domain as the envelope sender and DKIM via the dreamhost selector on your domain — so a correctly configured DreamHost domain passes DMARC two ways. Watch the reports for a week or two (they start arriving within 24–72 hours), make sure every legitimate source is authenticating, then tighten the policy to p=quarantine and eventually p=reject. Keep exactly one _dmarc record for the whole domain no matter how many senders you use.
Check it actually worked
Don't trust the panel alone — confirm on a real message. Send a test from a DreamHost mailbox to a Gmail address, open it, and choose ⋮ → Show original: you want SPF: PASS showing your domain, DKIM: PASS with d=yourdomain.com and the selector dreamhost, and DMARC: PASS. If DKIM is missing, the message almost certainly went out via PHP mail()/sendmail rather than authenticated SMTP. You can spot-check the raw records with dig TXT dreamhost._domainkey.yourdomain.com and dig TXT _dmarc.yourdomain.com, and confirm the SPF record still contains both includes with dig TXT yourdomain.com. Then run the domain through Qualisend's domain health check to confirm every record resolves and the SPF stays under the 10-lookup limit, and once DMARC aggregate reports start arriving, drop one into the DMARC report analyzer — DreamHost (and its MailChannels relay) should show up as an aligned, passing source.
Common gotchas
- DNS setup
Editing SPF removes DreamHost's managed record — the #1 DreamHost trap. The instant you save a custom SPF TXT, DreamHost drops its auto-generated one, so your replacement MUST contain both include:netblocks.dreamhost.com AND include:relay.mailchannels.net or some of your mail silently starts failing SPF.
- Coverage
relay.mailchannels.net is not optional. DreamHost sends outbound mail through MailChannels, so mail routed through the relay hard-fails SPF if you leave that include out (the record ends in -all).
- Coverage
Website mail via PHP mail()/sendmail isn't DKIM-signed. Only mail sent through authenticated SMTP (smtp.dreamhost.com) is signed; a WordPress form or PHP mailer without an SMTP plugin passes SPF but not DKIM, so it won't align on DKIM.
- Coverage
The default -all is a hard fail, not a soft one. DreamHost's record rejects any sender you forget to include, so add every legitimate service before relying on it — or loosen to ~all while you test.
- DNS setup
Automatic records only exist when your DNS is hosted at DreamHost. If your nameservers point to Cloudflare or a registrar, DreamHost publishes nothing — you must add the SPF record, copy the dreamhost._domainkey DKIM TXT, and add DMARC at your real DNS host yourself.
- Breaks auth
Never publish two SPF records. If you add another mail service, merge its mechanism into the single v=spf1 line — two separate SPF TXT records is a PermError that breaks SPF entirely.
- Coverage
Leave the Name field blank for the root SPF. DreamHost represents the domain root with an empty Name field; entering @ or your domain name doubles it into an invalid host.
- Coverage
DMARC is on you. DreamHost auto-handles SPF and DKIM but never creates DMARC — without a _dmarc record you fail the Gmail/Yahoo bulk-sender requirements even though SPF and DKIM pass.
Build your SPF record
DreamHost is pre-selected below. Add any other platforms you send through, then publish the single merged record.
This domain's own servers
Authorize the domain itself, if it sends mail directly (not through a platform above).
Other senders & IPs
Anything not in the list — another provider's SPF host, or specific IP addresses.
We add the include: prefix — enter the hostname your provider documents.
Policy for everyone else
What receivers should do with mail from any server not listed above (the all mechanism).
- Publish it as a TXT record at your root domain — host @ (the bare domain), value the full string above.
- Keep only one SPF record per domain. Merge every sending source into this single line — a second TXT record starting v=spf1 makes both invalid.
- Stay at or under 10 DNS lookups. Each include:, a and mx counts, and an include can trigger more lookups inside itself — ip4: and ip6: are free.
Authentication published? The next step is sending to a clean, verified list.
Verify a listDreamHost SPF — FAQ
Related reading
Once it's published, confirm everything resolves with the domain health check, then read who's sending as you with the DMARC report analyzer. Browse all sending sources in the generator. Authentication is only half of deliverability, though — a listed sending IP or domain still lands you in spam no matter how clean your SPF is, so it's worth watching the blacklists with blacklist monitoring.
Authenticated — now keep the list clean
Passing SPF, DKIM, and DMARC gets you to the inbox; a clean list keeps you there. Verify yours — start free with 100 credits, no card required.