Skip to content
Groundmail

Guides

How to add MX, SPF, DKIM and DMARC records in Bluehost

Add MX, SPF, DKIM, DMARC and CNAME records in Bluehost's DNS tab or cPanel Zone Editor: the host field, Bluehost's default SPF record and how to check.

By GroundmailUpdated All guides →

Short answer

In the Bluehost Portal, select Domains in the left-hand menu, choose the domain and open the DNS tab. Under Manage Advanced DNS Records, select + Add Record, then Single record. Pick the Type (TXT for SPF, DKIM and DMARC; MX for mail servers; CNAME for aliases), set the host to @ or to the name before your domain, such as _dmarc, paste the value and select Add. Accounts managed in cPanel use Zone Editor under Domains instead.

Bluehost puts a default SPF record on each domain, so the result must be one merged SPF record, never a second one. When the domain's mail goes somewhere other than Bluehost, also set cPanel's Email Routing to Remote Mail Exchanger. Bluehost says changes usually show within minutes and can take up to 8 hours, and they only apply while the domain uses Bluehost's nameservers.

Before you start: is Bluehost running your DNS?

Records you add at Bluehost only count while the domain uses Bluehost's nameservers. If it points to Cloudflare or another DNS host, add the records there instead. Check from a terminal:

Terminal
dig +short NS example.com

# Bluehost's nameservers:
# ns1.bluehost.com.
# ns2.bluehost.com.

Bluehost has two places to edit DNS: the DNS tab in the Bluehost Portal, which Bluehost's current help articles use, and Zone Editor in cPanel (Hosting > My Plans > cPanel > Domains > Zone Editor). Use the one your account shows; the steps for both are below. Have the records from your email service ready, and copy them with its copy buttons rather than retyping them.

Add a TXT record (SPF, DKIM or DMARC) in the Bluehost Portal

Step 1: Open the DNS tab

Log in to the Bluehost Portal and select Domains in the left-hand menu. If you have more than one domain, select the one you want. Open the DNS tab; it takes you to Manage Advanced DNS Records. Look through the TXT records for one starting v=spf1 and one named _dmarc before you add anything.

Step 2: Select + Add Record, then Single record

Select + Add Record on the right and choose Single record. (Multiple records lets you add several of one type, then Save them together.)

Step 3: Choose TXT and set the host

Choose TXT as the Type. Then set the host, which Bluehost's articles call Refers to, Host Record or Host Name depending on the page: choose @ for the root domain; for any other name, choose Other Host and type the name before your domain, such as _dmarc or s1._domainkey.

After you add the record, check how it appears in the list. It should read _dmarc.example.com or _dmarc; if your domain shows up twice, as _dmarc.example.com.example.com, edit the host and remove the extra domain.

Step 4: Paste the TXT Value and set the TTL

Paste the value into TXT Value exactly as your provider gives it, on one line and without surrounding quotation marks. Leave TTL at its default; Bluehost's own SPF instructions use 4 hours.

Step 5: Select Add

Select Add to create the record. Bluehost says record changes usually show within a few minutes and can take up to 8 hours to reach everyone.

Using cPanel's Zone Editor instead

In cPanel, open Zone Editor under Domains and select Manage next to the domain (or the + button for the record type). Select + Add Record, choose the type, and fill in Name, TTL and the record. cPanel adds your domain to a name you type, so _dmarc becomes _dmarc.example.com.; if you type the full name, end it with a dot, as in _dmarc.example.com., so the domain isn't added twice. Select Save Record. cPanel's own docs warn that the record field accepts invalid data, so check what you pasted.

How to add an MX record in Bluehost

Step 1: Add an MX record in the DNS tab

On the DNS tab, select + Add Record and Single record, then choose MX as the Type. Set the host to @ for mail to you@example.com, or to a subdomain such as inbound. Enter the mail server's host name in Points to (it must be a host name, never an IP address) and the Priority your provider gives you: lower numbers are tried first. Leave TTL at its default and save.

Step 2: Remove MX records you no longer want

By default a Bluehost domain's MX record points at the domain itself, so mail is handled on Bluehost's servers. If you're moving the domain's email elsewhere, delete the old MX record from the MX (Mail Exchanger) list (three-dot menu) once the new ones are in. Bluehost warns that removing an MX record stops the email connected to it, so only do this for the mail you're moving.

Step 3: Set Email Routing in cPanel

In the Bluehost Portal go to Hosting > My Plans, select cPanel Email, then Email Routing. Choose Remote Mail Exchanger if the domain's email is not hosted by Bluehost, or Local Mail Exchanger if it is, and select Change. Bluehost advises against Automatically Detect Setting. With the wrong setting, Bluehost's server can keep mail for the domain to itself, for example contact-form mail sent from your own website.

What to enter for each email record

RecordTypeHostValue (example)
SPFTXT@One v=spf1 record covering every service that sends as the domain
DKIM keyTXTselector._domainkeyv=DKIM1; k=rsa; p=MIIBIjANBgkq…
DKIM, delegatedCNAMEselector._domainkeyA host name from your provider
DMARCTXT_dmarcv=DMARC1; p=none; rua=mailto:dmarc@example.com
Return path or trackingCNAMEThe prefix your provider names, such as rpA host name from your provider, in Points to
Receiving mailMX@ or a subdomainMail server host name in Points to, plus a priority

Hosts are for example.com, chosen as @ or typed under Other Host. For a subdomain such as mail.example.com, keep the subdomain: _dmarc.mail, selector._domainkey.mail, and mail instead of @.

Bluehost SPF: deal with the default record first

Bluehost adds a default SPF record to the zone of every domain it hosts, and its SPF guide says to remove that default before you install a new one. Either way, the goal is a single record: two v=spf1 records make SPF fail for every message.

Before deleting the default, look at what it contains (cPanel's Email Deliverability page shows the value Bluehost expects). If you still send any mail through Bluehost, such as Bluehost mailboxes or a WordPress site using the server's mail, copy those parts into the new record so it covers both:

Shape of a merged SPF record (TXT at @)
v=spf1 <what Bluehost's default record had, minus its "all"> include:_spf.example-provider.com ~all

Keep one all term, at the very end, and stay under the limit of 10 DNS lookups. The SPF checker counts them and flags a second SPF record.

Bluehost DKIM

Add the key as a TXT record with the host set to Other Host and selector._domainkey, or as a CNAME if your provider gives you a target. Paste the key as one line without quotes; a 2048-bit key is about 400 characters and DNS stores it as several strings that receivers join back together. Only one DKIM record can exist per selector, so delete any duplicate. If cPanel's Email Deliverability page offers to install a suggested record, Bluehost's own DKIM guide says not to click it; add records in the DNS tab instead.

Bluehost DMARC

Add one TXT record with the host _dmarc. Start at p=none with a rua= address you read, then move to quarantine and reject once the reports show every legitimate sender passing. If a _dmarc record already exists, edit it instead; two DMARC records make receivers ignore both. The SPF, DKIM and DMARC guide has the rollout plan.

Bluehost CNAME

Choose CNAME, set the host under Other Host (for example rp), and enter the target host name in Points to. A CNAME can't share its name with any other record, and it must point to a host name, not an IP address.

Check that the records work

Terminal
# SPF: expect exactly one line starting "v=spf1"
dig +short TXT example.com @1.1.1.1

# DKIM: use the selector from your provider
dig +short TXT s1._domainkey.example.com @1.1.1.1

# DMARC: expect exactly one "v=DMARC1" line
dig +short TXT _dmarc.example.com @1.1.1.1

# MX: expect the new mail servers, and no leftovers
dig +short MX example.com @1.1.1.1

# Straight from Bluehost's nameserver, before caches catch up
dig +short TXT _dmarc.example.com @ns1.bluehost.com

# Doubled name? This should return nothing
dig +short TXT _dmarc.example.com.example.com @1.1.1.1

On Windows, nslookup -type=TXT _dmarc.example.com 1.1.1.1 does the same job.

Common mistakes in Bluehost DNS

MistakeWhat happensFix
A new SPF record next to Bluehost's defaultSPF permerror: SPF fails for every messageMerge into one record and delete the other
Default SPF deleted while Bluehost still sends some of your mailThat mail starts failing SPFCopy Bluehost's mechanisms into the merged record
Full host name typed under Other HostThe record can land at _dmarc.example.com.example.comCheck the saved name and remove the extra domain
MX moved but Email Routing left on Local Mail ExchangerMail sent from your Bluehost server to the domain never leaves itSet Email Routing to Remote Mail Exchanger
Old MX record left in placeSome senders still deliver to the old serverDelete MX records for services you've stopped using
DKIM key pasted with quotes or line breaksdkim=fail or dkim=permerrorPaste the key as one line with no quotes
Records added at Bluehost while the nameservers point elsewhereNothing changes in public DNSAdd them at the DNS host your nameservers name

Using Groundmail? Your records at Bluehost

When you add a domain to Groundmail, you get the records below. Here they are written the way Bluehost's host field wants them for example.com: @, or the name under Other Host.

PurposeTypeHost at BluehostValue (example)
OwnershipTXT_groundmailgroundmail-verify=1a2b3c…
DKIMTXTss-abc123._domainkeyv=DKIM1; k=rsa; p=MIIBIjANBgkq…
Return pathCNAMErprp.groundmail.dev
SPFTXT@v=spf1 include:spf.groundmail.dev ~all, merged into any SPF record you already have
DMARCTXT_dmarcv=DMARC1; p=none; to start, unless the domain already has a DMARC record
Open and click tracking (optional)CNAMEpstrack.groundmail.dev
Receiving (optional)MX@, or the subdomain you receive onmx.groundmail.dev, priority 10

For a domain added as example.com. The token, the DKIM selector and the key are unique to your domain, so copy the real values from your dashboard. Ownership, DKIM, return path and SPF are needed to verify; DMARC is recommended. The tracking record appears only when open or click tracking is on, and the MX record only when receiving is on.

The dashboard shows full host names, such as _groundmail.example.com. Your DNS host adds the domain itself, so type only the part before it. If you added a subdomain such as mail.example.com, keep the subdomain in the name: _groundmail.mail, ss-abc123._domainkey.mail, rp.mail, mail for SPF and _dmarc.mail.

Merge include:spf.groundmail.dev into the domain's one SPF record rather than adding a second. If you turn on receiving, the Groundmail MX record is best on a subdomain, with Email Routing for it set to Remote Mail Exchanger. Copy the real values from any of these:

  • Dashboard: open Domains, select the domain, then the DNS records tab. Each record has a copy button, and selecting a row shows the full host and value.
  • CLI: groundmail domains get example.com prints the domain with its records (install with npm install -g groundmail-cli).
  • API: GET /domains/{id} returns the same records list. See the domains docs.

Then select Verify DNS on the domain's page. Home reads your public DNS and names any record it can't find yet, and the DNS records tab marks each record and keeps re-checking while the domain is pending, so you can see which one is missing instead of waiting and guessing. Verifying also switches signing to your own domain, so messages carry a DKIM signature for example.com and DMARC can pass.

New to Groundmail? It sends your app's sign-in codes, password resets and receipts, and the free plan includes 3,000 emails a month with no time limit. Create a free account, add your domain, and the records above are generated for you.

Frequently asked questions

How do I add an MX record in Bluehost?

In the Bluehost Portal, open Domains, select the domain and the DNS tab, then + Add Record and Single record. Choose MX, set the host to @ (or a subdomain), enter the mail server in Points to with its Priority, and save. If the mail is hosted outside Bluehost, set cPanel's Email Routing to Remote Mail Exchanger.

How do I add an SPF record in Bluehost?

Add a TXT record with Refers to set to @ and your SPF value as the TXT Value. Bluehost already puts a default SPF record on the domain, so merge the two into one record rather than keeping both.

How do I add a DKIM record in Bluehost?

Add a TXT record, choose Other Host, enter selector._domainkey as the host and paste the key as the TXT Value, then select Add. If your provider gives a CNAME target instead of a key, add a CNAME record with the target in Points to.

Where is the Zone Editor in Bluehost?

In cPanel: from the Bluehost Portal go to Hosting, My Plans, cPanel, then Zone Editor under Domains. Bluehost's newer help articles use the DNS tab under Domains in the Portal instead.

How long do Bluehost DNS changes take?

Bluehost says record changes usually take a few minutes and can take up to 8 hours. Nameserver changes take longer, up to 24 to 48 hours.

Can I keep Bluehost email and use another service to send?

Yes. Keep Bluehost's MX records and add the other service's records: its DKIM key, any CNAMEs, and its include merged into your single SPF record.

Sources

Facts on this page about other companies' products, prices and policies come from these public pages. They change, so check them before you decide.

Email for apps. Set up by your agent.

Sign-in codes, receipts and alerts kept separate from marketing mail, with inbound, templates and automations included. Start free with 3,000 emails a month, and move to a dedicated IP or server without changing your code.