Skip to content
SecureThreadDocs
All guides
app.securethread.co/admin/domains
Sending domains: SPF, DKIM and DMARC records and their verification stateSending domains: SPF, DKIM and DMARC records and their verification state

Sending domains and DNS

A receiving mail server decides whether to trust a message partly from the DNS records of the domain in its From address. These records show that your mail is authorized to come from that domain. This page explains what to publish, how SecureThread checks it, and what each result means.

Why the records matter#

  • SPF lists the servers that may send mail for your domain.
  • DKIM signs each message with a key published in your DNS. The receiving server checks the signature against that key.
  • DMARC tells receiving servers what to do with mail that fails the checks, and where to send reports. A message passes DMARC when SPF or DKIM passes and the domain that passed matches the From domain. That match is called alignment. DKIM alignment survives forwarding. SPF alignment often does not.

Large mailbox providers, including Google and Yahoo, expect senders to authenticate their mail with these records. Their own help pages set out the current requirements.

SecureThread counts a domain as verified when four checks pass: the ownership record, SPF, DKIM and DMARC. A DMARC record with p=none counts as published, with a warning.

Add a domain#

  1. Open Administration › Sending domains and choose Add a domain.
  2. Enter the domain, such as example.com. Enter the domain only, with no www, no @ and no address.
  3. If your sending provider gave you a DKIM selector, enter it. Leave the field empty to try the usual selectors.
  4. Choose Add domain. While the domain is not verified, its card lists the records to publish. Once it is verified, choose DNS records on the card to show them.

A workspace can have up to 25 sending domains. Adding a domain that is already on the list is refused with "This domain is already on the list." Personal mail domains such as gmail.com and outlook.com belong to their providers. Your organization cannot verify them.

The records#

The app works out each record for your domain. Replace the placeholders with the values the app shows. The values for DKIM and some SPF records come from your sending provider.

Ownership

Type

TXT

Name (host)

_securethread

Value

securethread-verification=<token shown in the app>

SPF

Type

TXT

Name (host)

@ (the domain itself)

Value

One record that starts v=spf1, names your provider with include:, and ends ~all

DKIM

Type

TXT or CNAME

Name (host)

<selector>._domainkey

Value

The value your provider gives you for that selector

DMARC

Type

TXT

Name (host)

_dmarc

Value

v=DMARC1; p=none; rua=mailto:<an address you read>
  • Ownership proves that your organization controls the domain. Keep it published. SecureThread checks it again on a schedule.
  • SPF: a domain has exactly one SPF record. Two SPF records are an error. Put every sending service into that one record. A record may make at most 10 DNS lookups, and each include: counts, including the includes inside it.
  • DKIM: your sending provider generates the key and names the selector. Microsoft 365 uses two CNAME records, selector1._domainkey and selector2._domainkey, which point to the values its portal shows.
  • DMARC: start with p=none and an address you read in rua. Move to p=quarantine or p=reject once reports show that your mail passes.

SPF and DKIM values for common providers#

The table lists the values the app used when this page was written. Your provider's own dashboard is the authority, and the setup guide in the app shows the current values for the providers you use.

Google Workspace

SPF mechanism

include:_spf.google.com

DKIM

TXT at selector google. Generate the key in the Google Admin console under Apps › Google Workspace › Gmail › Authenticate email.

Microsoft 365

SPF mechanism

include:spf.protection.outlook.com

DKIM

Two CNAMEs, selector1 and selector2. Copy the targets from the Microsoft Defender portal under Email & collaboration › Policies & rules › Threat policies › Email authentication settings › DKIM.

Hostinger Email

SPF mechanism

include:_spf.mail.hostinger.com

DKIM

CNAME. Copy it from hPanel under Emails › DNS.

Titan Email

SPF mechanism

include:spf.titan.email

DKIM

TXT. Copy it from the Titan dashboard.

Fastmail

SPF mechanism

include:spf.messagingengine.com

DKIM

CNAMEs fm1, fm2 and fm3, from Settings › Domains.

Proton Mail

SPF mechanism

include:_spf.protonmail.ch

DKIM

CNAMEs protonmail, protonmail2 and protonmail3.

Rackspace Email

SPF mechanism

include:emailsrvr.com

DKIM

TXT. Copy it from the control panel.

Namecheap Private Email

SPF mechanism

include:spf.privateemail.com

DKIM

TXT. Copy it from the Private Email dashboard.

GoDaddy Email

SPF mechanism

include:secureserver.net

DKIM

TXT. Copy it from the GoDaddy dashboard.

Mailgun

SPF mechanism

include:mailgun.org

DKIM

TXT. Copy it from Sending › Domains.

Mailjet

SPF mechanism

include:spf.mailjet.com

DKIM

TXT. Copy it from Account settings › Domains.

Mailchimp Transactional (Mandrill)

SPF mechanism

include:spf.mandrillapp.com

DKIM

CNAME. Copy it from Settings › Domains.

For other sending services, the setup guide in the app names where to copy each value from.

Add the records at your DNS host#

Your DNS host is where the domain's DNS records are managed. It can differ from your mail provider.

  1. Sign in to the DNS host and open the DNS records for the domain.
  2. Add a record with the type the app shows, TXT or CNAME.
  3. In the Name or Host field, enter only the part before your domain. Enter _securethread, not _securethread.example.com. For the SPF record, enter @ if the host uses it for the domain itself. Most hosts add the domain for you. If you type the full name, the host adds the domain again and the record lands at the wrong name. The app reports this as a doubled name.
  4. Paste the value exactly as shown. Do not add quotation marks unless your host requires them around the whole value. Some hosts split long TXT values into pieces. That is normal.
  5. Save the record. Then return to SecureThread and choose Check now.

Domain statuses#

Not verified yet

Meaning

The domain was added and its records do not all check out yet. Mail from it is refused.

Verified

Meaning

All four checks pass. Mail from the domain can be sent.

Failing checks

Meaning

A verified domain failed its latest check. Mail can still be sent until 72 hours after the first failed check. After that, mail is refused until the records check out again.

Record results#

Each check shows one of these results.

Found

Meaning

The record is published as expected.

Found, with a warning

Meaning

The record is published but needs attention. For DMARC with p=none, receiving servers only report and do not act.

Not found yet

Meaning

Nothing is published at the name the app checks.

Wrong value

Meaning

A record exists at that name, but its value is not the expected one.

DNS didn't answer

Meaning

The DNS lookup failed or timed out, so the app does not know what is published. Check again shortly.

Messages and fixes#

Use this table to match a message with its fix. <domain> stands for your domain.

Ownership

Message in the app

Publish a TXT record at _securethread.<domain> with the value shown.

Meaning

The ownership record is missing.

Fix

Publish the record with the value shown.

Ownership

Message in the app

_securethread.<domain> has a TXT record, but not this workspace's value.

Meaning

A record exists with a different value.

Fix

Replace the value with the one shown, exactly.

Ownership

Message in the app

DNS did not answer for _securethread.<domain>.

Meaning

The lookup failed.

Fix

Check again shortly.

SPF

Message in the app

No SPF record at <domain>. Publish the one your sending provider gives you.

Meaning

There is no SPF record.

Fix

Publish one SPF record that includes your provider.

SPF

Message in the app

<domain> has N SPF records; receivers treat that as an error. Merge them into one.

Meaning

There are two or more SPF records.

Fix

Merge the includes into a single record and delete the others.

SPF

Message in the app

The SPF record needs N DNS lookups; receivers stop at 10 and treat it as an error. Flatten some includes.

Meaning

The record makes too many lookups.

Fix

Remove includes you no longer use, or ask your provider for a flatter record.

SPF

Message in the app

The SPF record ends in +all, which lets anyone send as this domain.

Meaning

+all allows any server to send.

Fix

Change +all to ~all, or to -all once every sender is listed.

SPF

Message in the app

DNS did not answer for the SPF record.

Meaning

The lookup failed.

Fix

Check again shortly.

SPF

Message in the app

SPF is published: (the record).

Meaning

Found.

Fix

None.

DKIM

Message in the app

No DKIM key at the usual selectors. Enter the selector your sending provider gave you.

Meaning

No key was found at the common selectors.

Fix

Enter the selector from your provider in the domain's selector field.

DKIM

Message in the app

No DKIM key at <selector>._domainkey.<domain>.

Meaning

No key at the selector you entered.

Fix

Check the selector, then publish the key your provider gives you.

DKIM

Message in the app

DNS did not answer for the DKIM keys.

Meaning

The lookup failed.

Fix

Check again shortly.

DKIM

Message in the app

A DKIM key is published at <selector>._domainkey.<domain>.

Meaning

Found.

Fix

None.

DMARC

Message in the app

No DMARC record at _dmarc.<domain>. Publish one, at least v=DMARC1; p=none.

Meaning

There is no DMARC record.

Fix

Publish v=DMARC1; p=none at the name _dmarc.

DMARC

Message in the app

DMARC is published with p=none: receivers only report. Move to quarantine or reject once mail passes.

Meaning

Found, with a warning.

Fix

Tighten the policy once reports show your mail passes.

DMARC

Message in the app

DNS did not answer for the DMARC record.

Meaning

The lookup failed.

Fix

Check again shortly.

DMARC

Message in the app

DMARC is published with p=(policy).

Meaning

Found.

Fix

None.

Setup: OWNERSHIP_HOST_DOUBLED

Message in the app

The ownership record is at _securethread.<domain>.<domain>. Enter only _securethread as the name.

Meaning

The DNS host added the domain a second time.

Fix

Change the name to _securethread.

Setup: DMARC_HOST_DOUBLED

Message in the app

The DMARC record is at _dmarc.<domain>.<domain>. Enter only _dmarc as the name.

Meaning

The DNS host added the domain a second time.

Fix

Change the name to _dmarc.

Setup: DKIM_HOST_DOUBLED

Message in the app

The DKIM key is at <selector>._domainkey.<domain>.<domain>. Enter only <selector>._domainkey as the name.

Meaning

The DNS host added the domain a second time.

Fix

Change the name to <selector>._domainkey.

Setup: OWNERSHIP_VALUE_ALTERED

Message in the app

The ownership record has a value close to this workspace's, with extra or missing characters. Publish exactly the value shown, without quotes.

Meaning

The value has extra or missing characters.

Fix

Paste the value exactly, without quotation marks.

Setup: DMARC_AT_ROOT

Message in the app

A DMARC record is published at <domain> itself, where mail servers never look. Move it to _dmarc.<domain>.

Meaning

DMARC is at the domain, not at _dmarc.

Fix

Move the record to _dmarc.

Setup: SPF_MISSING_PROVIDER

Message in the app

Mailboxes here send through <provider>, but the SPF record does not include it. Add the include to the record.

Meaning

The provider is missing from SPF.

Fix

Add the provider's include to your single SPF record.

Setup

Message in the app

DNS didn't answer for this record just now, so it is not known what is published. Read DNS again in a moment before changing it.

Meaning

A lookup failed, so no value is suggested.

Fix

Wait a moment, then check again.

Alignment

Message in the app

Mail through <provider> cannot pass DMARC yet: publish its DKIM key, or add its SPF include to the SPF record.

Meaning

The provider's mail does not align with the domain.

Fix

Publish the provider's DKIM key, or add its include.

Messages in the domain card:

Mail can be sent from this domain. It is checked again twice a day.

Meaning

The domain is verified.

Mail can't be sent from this domain until every record below checks out.

Meaning

The domain is not verified yet.

Its records stopped checking out. Mail can still be sent from it until the date shown.

Meaning

The domain is failing, and the grace period has not ended.

Its records stopped checking out, so mail can't be sent from it. Publish them again and check it.

Meaning

The grace period has ended.

Checks and re-checks#

  • After you add a domain, SecureThread checks it every hour for seven days. Choose Check now at any time. A check you start restarts the hourly checks if they have stopped.
  • A verified domain is checked every 12 hours.
  • When a verified domain fails a check, its status becomes Failing checks. The card shows the date its grace period ends. Mail can still be sent until then, which is 72 hours after the first failed check.
  • After 72 hours of failing, mail from the domain is refused with the code SENDER_DOMAIN_NOT_VERIFIED until the records check out.
  • A check that passes makes the domain Verified again. Sending from it resumes without further action.

How long DNS changes take#

The app's guidance is that new records usually show within minutes, but some DNS hosts take up to 48 hours. A new or changed record appears once your DNS host publishes it and the resolvers that receiving servers use pick it up. The time depends on the record's TTL, which is how long resolvers keep an answer, and on your DNS host. Choose Check now after you publish the records.

Check the records yourself#

Any DNS lookup tool shows what is published at a name, such as _dmarc.<domain> for a TXT record. It is a useful second check. SecureThread's own check decides verification.