Blog/ Deliverability & authentication

Proton Mail Custom Domain: SPF, DKIM and DMARC Setup

Nafiul HasanNafiul Hasan· 9 min read
Diagram of a Proton Mail custom domain protected by SPF, DKIM and DMARC DNS records against email spoofing

The short answer

In Proton's dashboard, add your custom domain and verify it with a TXT record, then publish three DNS records: an SPF TXT with include:_spf.protonmail.ch, the three DKIM CNAMEs Proton generates, and a DMARC TXT at _dmarc set to p=quarantine. Proton signs DKIM automatically once the CNAMEs resolve.

Proton Mail custom domain SPF DKIM DMARC setup: the exact DNS records, why Proton signs DKIM automatically, and the DMARC policy that stops spoofing.

On this page
  1. 01The short answer
  2. 02Before you start
  3. 03Set up SPF, DKIM and DMARC step by step
  4. 04The four DNS records at a glance
  5. 05What these records actually stop
  6. 06Where you add the records: registrar differences
  7. 07Why DMARC needs alignment (and why Proton passes it)
  8. 08What to do when it doesn't work
  9. 09A note on the DMARC standard
  10. 10A faster way to run a Proton inbox

If you use a custom domain with Proton Mail, SPF, DKIM and DMARC are what stop someone forging mail that looks like it came from your address. For privacy-minded Proton users this is less about sending volume and more about protecting your own name from being spoofed.

The good news: Proton generates most of the records for you, and once the DNS is correct it signs your outgoing mail automatically. This guide gives you the exact records, in order, and what to do when one of them will not verify.

The short answer#

You add all three records in your domain registrar's DNS after adding the domain in Proton. Each one does a different job, and mailbox providers check them together.

  • SPF tells receivers which servers may send for your domain — for Proton, that is include:_spf.protonmail.ch.
  • DKIM adds a cryptographic signature that Proton generates, hosts and rotates for you through three CNAME records.
  • DMARC tells receivers what to do with mail that fails both checks, and asks them to send you reports.
  • A verification TXT record proves to Proton that you own the domain before any of this turns on.

Before you start#

Two things have to be true before the anti-spoofing records will work.

First, custom domains need a paid Proton Mail plan (Mail Plus and above); the free plan does not support them. Plan details change, so confirm current packaging on Proton's own pricing page (as of August 2026).

Second, you need access to your domain's DNS — the registrar or DNS host where the domain lives — because every record here is added there, not inside Proton. Add and verify the domain in Proton first, then add Proton's MX records so mail is actually delivered before you worry about signing it. DNS changes are not instant: most propagate within minutes, but they can take up to 48 hours.

  • A paid Proton Mail plan with custom-domain support (as of August 2026).
  • The domain added in Proton under Settings, then Domain names.
  • Your registrar's DNS console open in another tab.
  • Proton's two MX records added first — copy them exactly from the setup screen.

Set up SPF, DKIM and DMARC step by step#

  1. 1

    Verify the domain

    In Proton, open Settings then Domain names and add your domain. Proton gives you a TXT record: host @ (the root of your domain), value protonmail-verification=xxx, where xxx is your unique code. Add it at your registrar and click Verify. Nothing else activates until this passes.

  2. 2

    Add the SPF record

    Publish one TXT record on the root (@) with the value v=spf1 include:_spf.protonmail.ch ~all. The include authorises Proton's servers; ~all soft-fails everything else, which is safer than -all while you confirm nothing legitimate breaks. If you already have an SPF record, merge this include into it — never publish a second SPF record.

  3. 3

    Add the three DKIM CNAMEs

    Proton's wizard generates three CNAME records unique to your domain. Copy each host name and target exactly as shown; a single typo stops signing. You never paste a public key into a TXT record yourself — the keys stay with Proton, which rotates a fresh 2048-bit key every six months. Once all three CNAMEs resolve, Proton starts signing your outgoing mail automatically.

  4. 4

    Publish the DMARC policy

    Add a TXT record on the host _dmarc with a value such as v=DMARC1; p=quarantine; rua=mailto:[email protected]. Proton recommends p=quarantine, which asks receivers to spam-folder unauthenticated mail. The rua address is where aggregate reports are sent, so you can see who is sending as your domain.

  5. 5

    Confirm it is working

    Back in Proton, each record should show a verified state. Send yourself a message from the domain and check the headers for spf=pass, dkim=pass and dmarc=pass. If any is missing, the troubleshooting section below points you to the record to fix.

Move the DMARC policy in stages

Go none, then quarantine, then reject. Read a week or two of aggregate reports at p=none, fix any legitimate source that fails, then tighten. Jumping straight to reject can silently drop mail from a forgotten sender you did not know used your domain.

The four DNS records at a glance#

RecordTypeHost / nameValue (copy exactly)
VerificationTXT@ (root)protonmail-verification=xxx
SPFTXT@ (root)v=spf1 include:_spf.protonmail.ch ~all
DKIMCNAME x3Generated by ProtonThree host/target pairs from Proton's wizard
DMARCTXT_dmarcv=DMARC1; p=quarantine; rua=mailto:[email protected]

What these records actually stop#

Without authentication, anyone can put your domain in the From line and mailbox providers have no reliable way to tell the forgery from you. That is the whole risk for a personal or business domain: your name gets used to phish the people who trust it.

With SPF, DKIM and DMARC in place, a receiver can check that the mail really came through Proton and that the signature matches your domain. Your DMARC policy then tells it to quarantine or reject anything that fails, which is what turns authentication from a passive record into active protection.

Before authentication a spoofed message passes as your domain; after SPF, DKIM and DMARC it is quarantined or rejected
Authentication turns your domain from freely spoofable into a name receivers can verify.

Where you add the records: registrar differences#

The records are the same everywhere; only the field labels differ between DNS hosts. Two things trip people up most: how to enter the root (@), and, on proxying hosts, leaving DKIM CNAMEs un-proxied so they resolve.

RegistrarRoot host fieldWatch out for
CloudflareUse @ or the apex nameSet the DKIM CNAMEs to DNS only (grey cloud) — a proxied record will not resolve for DKIM
GoDaddyUse @Enter host names without your domain; GoDaddy appends it automatically
NamecheapUse @ on the Advanced DNS tabPick CNAME Record for DKIM, and TXT Record for SPF, DMARC and verification
Most others@ or a blank host means the rootYou may keep only one SPF record — merge includes, do not add a second

Why DMARC needs alignment (and why Proton passes it)#

DMARC does more than run SPF and DKIM — it checks alignment. A message passes DMARC when SPF or DKIM verifies and the verified domain matches the domain in the visible From address. A message can pass SPF for a completely different domain and still be a spoof of yours, so alignment is the part that matters.

With Proton, DKIM signs as your own domain, so a correctly signed message aligns and passes DMARC. Keep DKIM healthy and alignment takes care of itself. This is also why a broken DKIM CNAME can make DMARC start failing even when SPF still looks fine.

What to do when it doesn't work#

Most failures come down to one wrong field. Work through them by symptom rather than re-adding everything.

  • Domain will not verify: the TXT is on the wrong host. It must be on @ (the root), not on www or a subdomain. Give it time to propagate before retrying.
  • DKIM will not sign: one of the three CNAMEs does not match exactly, or it is proxied on Cloudflare. Re-copy each host and target from Proton and set them to DNS only.
  • SPF permerror or too many lookups: SPF fails once it needs more than ten DNS lookups. Trim unused includes, and confirm you have exactly one SPF record.
  • DMARC has no effect: it needs alignment and an enforcing policy. Keep DKIM working, and start at p=none to read reports before you move to quarantine or reject.

One SPF record only

A domain may publish just one SPF TXT record. If you already send from another provider, merge every include into a single line — for example v=spf1 include:_spf.protonmail.ch include:othersender.com ~all. Two separate SPF records make both invalid and can break delivery.

A note on the DMARC standard#

If an older guide tells you to add a pct tag to your DMARC record, ignore it.

DMARC is now RFC 9989 (2026)

RFC 9989 obsoletes RFC 7489 and RFC 9091. It removed the pct tag, so leave pct= out of your record. It also replaced the Public Suffix List with a bounded DNS tree walk and added a psd tag for public-suffix operators. Much of the DMARC advice still ranking online predates this.

A faster way to run a Proton inbox#

Authentication is a one-time job at your registrar, and nothing automates it for you — publishing SPF, DKIM and DMARC is between you and your DNS host. AI Emaily does not set those records up, and it is not a DMARC monitoring service. The records above are yours to add, and this page exists to get them right whether or not you ever sign up.

What AI Emaily does is the part that never ends. Once your Proton domain is authenticated and mail is flowing, you can connect that mailbox — Proton exposes it through Proton Bridge — and let AI Emaily triage it, draft replies in a voice you set, and file threads, with approve-before-send and an undo on every action. It does not train on your mail. We build AI Emaily; that is the product this site sells, and this is the honest scope of where it fits.

Frequently asked

Nafiul Hasan

Written by

Nafiul Hasan

Nafiul Hasan is an entrepreneur and AI automation system builder with 10+ years of experience turning messy, manual workflows into reliable automated systems. He designs and ships AI enterprise solutions end-to-end — the agent logic, the data plumbing, and the product people actually use — and founded AI Emaily to give busy professionals their attention back. He writes here from the builder's seat: what works, what breaks, and how to put AI to work without giving up control.

EntrepreneurAI Automation System BuilderAI EnthusiastBuilds AI Enterprise Solutions10+ years experience
More from Nafiul
Ready when you are

Run your authenticated Proton inbox with less effort

Once your domain passes SPF, DKIM and DMARC, connect it to AI Emaily for triage, drafting and follow-ups — approve-before-send, with undo. Start a 7-day free trial.

  • 7-day free trial
  • Cancel anytime
  • Every provider