[ Email sender guides ]

Vultr SPF, DKIM and DMARC setup, step by step

By the EmailAuth research team · 9 min read

On this page

No customer account, DNS change or sending test was performed.

Use Vultr DNS to publish authentication records issued by your email sender. Do not look for a universal “Vultr SPF include” or a Vultr-generated DKIM key just because your DNS or virtual server is hosted there. This guide covers an existing authoritative Vultr DNS zone, not installing a mail server or moving your domain's nameservers.

SPF authorizes sending infrastructure. DKIM lets a receiver verify a message signature. DMARC checks whether a passing identity matches the domain people see in From. Publishing their records is one stage of setup; the sending service must also use the intended identity and sign actual messages.

Before changing anything

Confirm that you control the domain and have permission to edit its DNS in the correct Vultr account. Obtain your email provider's current authentication instructions for the actual account, sending domain, product and region. Save the complete record types, names, values and any activation steps. A screenshot from someone else's account is not your record packet.

Identify the authoritative zone, not merely the company that registered the domain. Vultr's domain provisioning documentation identifies its nameservers as ns1.vultr.com and ns2.vultr.com. An existing zone in the console is not proof that the public domain delegates to it. Check the live authority before editing. A separately delegated child may have different DNS ownership from its parent.

If another provider is authoritative, make the changes there or plan a separate, approved migration. Do not change nameservers, MX, DNSSEC, forwarding or mail routing merely to follow this guide. Those changes can affect the website and inbound email as well as authentication.

Record the existing values and TTLs at every affected owner. Keep a change log with the approved before-and-after values, owner, timestamp and person responsible. Preserve existing selectors, verification tokens, legitimate SPF senders and direct or inherited DMARC policy.

Where to add records in the Vultr Console

Vultr's current record-management instructions, describe this Console flow:

  1. Open Products, expand Network, and choose DNS.
  2. Select the existing domain zone.
  3. Choose the issued record Type. Enter the owner in Name and the supplied value in Data.
  4. Keep the appropriate TTL in seconds or use the provider-approved value. Priority is not an SPF/DKIM TXT setting.
  5. For a new, nonconflicting record, use Add Record under Actions.

Do not use Add Record to create a second SPF policy at an owner that already has one. The cited Console instructions show Add and Delete, but do not document an existing-record edit control. Before changing existing SPF, obtain the confirmed account or Vultr-support workflow for updating that record. Stop if you cannot establish that you are modifying the intended record rather than adding another. This guide does not recommend deleting a working policy before preparing its replacement.

After saving, inspect the resulting full name and authoritative DNS answer. A successful console save does not establish correct publication or successful email authentication.

Map the issued name to the right zone

Think in full DNS names first. For example, the full DKIM owner could be selector._domainkey.example.com. The selector in this example is illustrative: replace it with the sender's issued selector, not an arbitrary word.

When the editor uses names relative to its selected zone, the mapping is:

Full owner needed Selected authoritative zone Relative name
selector._domainkey.example.com example.com selector._domainkey
selector._domainkey.news.example.com news.example.com selector._domainkey
selector._domainkey.example.com _domainkey.example.com selector
_dmarc.news.example.com example.com _dmarc.news
_dmarc.news.example.com news.example.com _dmarc

For a zone-root policy, use the editor's apex representation and confirm the resulting owner is the zone name. Do not assume every DNS interface treats blank, @ and a full name interchangeably. The decisive check is the complete saved owner and its DNS answer, not what looks plausible in a text box. Avoid duplicated suffixes such as example.com.example.com.

If _domainkey or a child domain is delegated, coordinate with its administrator. Do not remove existing NS records to force a new record into the parent zone. A record below a delegation must be published through the authority that actually serves it.

Publish SPF without breaking existing senders

First determine the real SMTP MAIL FROM domain used by your sender, normally reflected in the delivered Return-Path. SPF evaluates that identity, or HELO in the relevant cases, not automatically the visible From address. Adding a service to apex SPF cannot fix an unrelated envelope domain.

Use the sender's documented authorization for that route. There is no universal value to infer from DNS hosting. If you operate your own mail server, authorization must match its actual approved outbound infrastructure, not every IP associated with your Vultr account.

At the evaluated owner, publish one TXT record starting v=spf1. If a policy exists, incorporate only the required legitimate authorization while preserving the other valid senders and intentional qualifiers. Do not add a second policy or replace the existing one with a tutorial example. Other, unrelated TXT records can coexist at that owner.

An SPF policy is not merely a list of includes. Evaluate its complete path against the ten DNS-dependent-term limit, including nested mechanisms and redirects. ip4 and ip6 do not consume that particular budget; other SPF limits still apply. An all mechanism causes redirect to be ignored. Do not add a or mx simply because they appear in a sample: that may authorize infrastructure which should not send mail.

Keep the established -all, ~all or other intentional behavior unless a separate policy change is approved. Qualifiers affect SPF results; they do not guarantee that a recipient will accept or reject a message. See RFC 7208.

Publish the complete DKIM record packet

The sending service or your authorized mail-server administrator supplies the selector, signing domain and public DNS records. Vultr DNS stores those records; adding them does not turn on signing inside a separate mail application.

For TXT DKIM, preserve the complete tagged public value, including the entire public key. Do not publish a private key, a clipped screenshot value, an empty p= value or a different tenant's key. A long TXT record may be represented by multiple quoted character strings within one DNS record; these are not separate competing DKIM records. Verify that the concatenated result matches the supplied value.

For CNAME DKIM, preserve the issued type, full owner and destination. Do not convert the alias into an A record or insert the destination's current public key as a substitute. At a CNAME owner, do not add conflicting TXT, A, AAAA, MX or another CNAME. If there is already a record or delegation, resolve ownership and dependencies before replacing anything. RFC 2181 section 10.1 explains the CNAME constraint.

If any DNS layer offers HTTP proxying or CNAME flattening, ensure the required alias remains a literal CNAME answer when the sender requires one. Disable an applicable per-record flattening option if available, and examine zone-wide, apex and same-zone behavior that could hide the alias. This is a conditional compatibility check, not a claim that Vultr exposes a particular proxy or flattening switch. Do not make an unrequested global setting change. If mandatory behavior cannot preserve the issued answer, stop and coordinate a supported configuration.

Return to the sending product after DNS publication. Complete its own domain verification and signing activation steps. A generic DNS-host article cannot invent those account-specific controls. Preserve older selectors while they are still needed for in-flight messages or other approved senders.

Publish DMARC only with the right policy decision

Read the existing direct policy and any applicable inherited policy first. Preserve their protection and authorized report destinations. Do not replace a working enforcement policy with monitoring, create duplicate DMARC records or copy a reporting mailbox from a public example.

Only if no applicable policy exists and the domain owner approves a monitoring plan, a minimal first-policy example is:

Full owner: _dmarc.example.com
Type: TXT
Value: v=DMARC1; p=none

Replace example.com with the actual policy domain. In an example.com zone the relative owner is _dmarc; in a parent zone for news.example.com, use _dmarc.news. This minimal example does not request reports. Add an authorized rua destination only as part of an agreed reporting and privacy plan. Monitoring is not an enforcement outcome.

For a report destination in a different Organizational Domain, the report-generating receiver must check DNS authorization. A destination within the same Organizational Domain is excepted. A different hostname alone does not determine this distinction. Follow RFC 9990 section 4; DNS authorization does not replace the owner's permission to share report data. Current policy and alignment behavior are defined in RFC 9989.

Verify publication, then verify a real message

Replace all example domains and selectors below before use. These are read-only query shapes, not fabricated successful results:

dig NS example.com
dig TXT example.com
dig CNAME selector._domainkey.example.com
dig TXT selector._domainkey.example.com
dig TXT _dmarc.example.com

Query the actual authoritative server as well as a public recursive resolver. For example, add @AUTHORITATIVE_SERVER using the server that really serves that zone. Match the full owner, type, target or concatenated TXT data against the approved packet. Check all issued selectors. Cached answers can remain until their TTL expires; a fixed waiting period is not proof that the change is correct. Distinguish an empty answer from NXDOMAIN, SERVFAIL or a timeout.

Next send a controlled test through the intended production application and route to a valid recipient you control. Inspect receiver-generated Authentication-Results inside that receiving service's known processing boundary. Use its documented handling of externally supplied result headers to establish trust. A familiar authserv-id, a high position in the header or a copied results field is not sufficient evidence; ignore attacker-supplied or otherwise untrusted fields. See RFC 8601 section 7.

For newly configured branded DKIM, require the intended provider signature to pass, its signing d= domain to align with the intended visible From under adkim, and the trusted receiver to report dmarc=pass. SPF-only DMARC success does not prove DKIM works. A rewritten provider-owned From address is not successful authentication of your brand.

SPF alignment compares the authenticated MAIL FROM domain with From under aspf. DKIM alignment compares its signing domain under adkim. Relaxed alignment allows the same Organizational Domain; strict alignment requires exact domains. Thus bounce.example.com and example.com can align under relaxed SPF but not strict SPF. Do not promise strict alignment simply because a sender offers a branded child envelope domain.

For more detail, read raw versus aligned DKIM results. A message's valid signature and its contribution to DMARC are separate questions.

Troubleshoot the failed layer

Symptom Check before changing anything
Console record exists but DNS does not show it Actual authority, delegated child, full saved owner and cached negative answer
Two SPF policies appear Restore one reviewed policy containing legitimate authorizations; do not remove unrelated TXT records
SPF permerror Syntax, duplicate policies and evaluated lookup limits
SPF temperror Temporary DNS or resolver failures; do not rewrite authorization based on a transient error
SPF fail Actual envelope identity, outbound IP and approved authorization, even if DKIM passes DMARC
DKIM record resolves but no signature appears Sender-side activation and the actual application route
DKIM passes but DMARC fails Signing domain versus intended From and the active alignment policy
Sender rejects a CNAME Exact owner/target, record conflicts, delegation and literal CNAME visibility

Do not change inbound MX records to troubleshoot outbound authentication unless a separately reviewed sender setup genuinely requires a routing change. Do not turn off DNSSEC to hide a validation failure.

Rollback and ongoing maintenance

If a change is wrong, use the saved before-state to plan restoration of only the affected record. Because the cited Console guide does not specify an existing-record edit control, obtain the confirmed account or Vultr-support restoration workflow before proceeding. Do not delete the entire zone, all TXT records or shared selectors. Retest authoritative DNS and an intended-route message after correction. Where a selector is shared or rotated, coordinate retirement with the sending administrator rather than guessing that an old record is unused.

Repeat checks when senders, outbound IPs, keys, DNS authorities or application routes change. Keep report evidence and controlled message samples without exposing private message content or credentials.

[ FAQs ]

Frequently asked questions

Must I move my nameservers to configure email authentication?

No. Publish at the existing authoritative DNS service. This guide applies when that service is already Vultr DNS. A migration is a separate project with its own records, delegation and DNSSEC checks.

Is a successful DNS lookup enough?

No. It establishes publication, not sending activation, a valid signature or alignment on delivered mail. Keep DNS, sender verification and actual receiver results separate.

Can I publish the same DKIM selector for two different providers?

Not if they require conflicting data at the same owner. Obtain distinct supported selectors or coordinate a supported delegation. Do not overwrite one sender's key with another's.

Will these records guarantee inbox placement?

No. Authentication is one input to receiving decisions. This guide does not certify live customer DNS, sending tests, inbox placement or publication.

Enterprise provenance

Why top financial institutions and governments retired their email security dashboards.

Traditional email authentication platforms sell you a dashboard and ask your engineers to do the labour. In high-stakes environments, manual oversight means delayed enforcement, configuration drift and unmonitored shadow domains.

EmailAuth is the agentic email provenance platform. Our agents enforce p=reject, keep third-party senders aligned and move your domains to full RFC 9989 compliance, the new DMARC standard, with human-in-the-loop auditability.

Governments Large enterprises Tier-1 financial institutions

SaaS · Dedicated tenancy · Air-gapped on-prem · BYOK encryption

Knowledge Base