Skip to content
Start with 100 free verification credits
Qualisend
SPF setup guide

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.

SPF include
Your DNSAdd the CNAME / TXT records
DreamHostSigns & sends as your domain
The inboxSPF · DKIM · DMARC pass

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

Recommended

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
Legacy

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

In the DreamHost panel
  1. 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.

In your DNS
  1. 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.'

  2. 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).

In the DreamHost panel
  1. 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.

In your app or CMS
  1. 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.

In your DNS
  1. 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.

Verify
  1. 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.

  2. 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.

TypeHostValue
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.
TXTdreamhost._domainkeyv=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_dmarcv=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.

SPF 10-lookup budget3 used · 7 free

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.

1

Sending sources

Search for each platform you send email through and tick it.

Selected
Guide →
2

This domain's own servers

Authorize the domain itself, if it sends mail directly (not through a platform above).

3

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.

4

Policy for everyone else

What receivers should do with mail from any server not listed above (the all mechanism).

Your SPF record1/10 DNS lookups
v=spf1 include:netblocks.dreamhost.com ~all
  • 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 list

DreamHost 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.

Start verifying