What is a DKIM selector?
A DKIM selector is a short label that tells a receiving mail server which public key to fetch when it verifies your signature. It lets one domain publish several DKIM keys at once — one per sending service. The selector travels in the s= tag of every message you send, and the key itself lives in DNS at selector._domainkey.yourdomain.com.
Written by the SieveGuard team from the checks our own free tools run. Last reviewed .
Where the record lives
A DKIM record is a TXT record at a subdomain built from the selector. The selector goes first, then the fixed literal _domainkey, then your domain:
google._domainkey.yourdomain.com TXT "v=DKIM1; k=rsa; p=MIIBIjANBg…" └─ selector └─ fixed literal
There is no record that lists your selectors. DNS gives you no way to ask “which DKIM keys does this domain publish?” — you can only ask about a name you already know. That single fact explains most of this page: finding a selector means either reading it off a message you sent, or guessing well.
How to find your selector
From a message you sent (authoritative)
Send yourself a message, open the raw source, find the DKIM-Signature header and read the s= tag:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yourdomain.com;
s=google; t=1717171717; bh=…
└─ selector- Gmail — ⋮ → Show original
- Outlook — File → Properties → Internet headers
- Apple Mail — View → Message → All Headers
d= is the signing domain and s= is the selector. Together they give you the exact record to look up.
By probing a known list
If you are auditing a domain you do not send from — a prospect, an acquisition, a client you have just onboarded — there is no header to read. The standard fallback is to probe a curated list of selectors, which is what our checker does, and what every other checker does too.
Check a domain’s DKIM records — it probes all 36 selectors below in parallel and reports every key it finds.
Which selector does my provider use?
This is the exact list our checker probes, grouped by who publishes each one. If your provider is not here, it either mints a per-account selector (see below) or has you publish a CNAME that points at a record it hosts.
| Provider | Selector(s) |
|---|---|
| Google Workspace | |
| Microsoft 365 / Outlook | selector1, selector2 |
| Mailchimp / Mandrill | k1, mandrill |
| SendGrid | s1, s2 |
| Amazon SES Easy DKIM only — BYODKIM mints a per-account token no probe can find. | amazonses |
| Brevo (formerly Sendinblue) | brevo1, brevo2, sib1, sib2 |
| Zoho Mail | key1, key2, zmail |
| Proton Mail | protonmail, protonmail2, protonmail3 |
| MailerLite | mlsend1, mlsend2 |
| Constant Contact | ctct1, ctct2 |
| Mailjet | mailjet |
| Namecheap Private Email | privateemail |
| Mailo | mailo |
| MXVault and similar filtering gateways | mxvault |
| Generic / self-hosted (Postfix + OpenDKIM, cPanel, Plesk) | default, mail, dkim, dkim1, dkim2, smtp, mta |
| Other selectors seen in the wild Carried over from older hosting stacks; kept because removing one produces false negatives. | pf2014, fd, fd2 |
The table tracks our probe list rather than a provider’s current documentation. Providers do change selectors; when one does, the authoritative answer is still the s= tag on a message you actually sent.
The selectors nobody can guess
Some providers mint a per-account selector — a random token rather than a fixed word. Amazon SES BYODKIM and several ESPs do this, having you publish three CNAMEs of the form abc123xyz._domainkey.yourdomain.com.
No probe list will ever find those, because the selector is unique to your account. You have to read it from a sent message or from the provider’s dashboard. Any tool claiming to discover DKIM for every domain is either reading headers or overstating what DNS can do.
Why you get “DKIM selector not found”
In rough order of how often each one is the actual cause:
- Wrong selector. The commonest cause by a distance. The record is fine; you are asking for the wrong name. Read
s=off a real message rather than guessing. - You looked up the bare domain. There is no DKIM record at the apex. It lives one level down, under the selector.
- The CNAME is not followed. Most providers have you publish a CNAME pointing at a TXT record they host. If it is missing, mistyped, or your DNS host silently flattened it, the lookup dead-ends.
- DNS has not propagated. A new record can take up to the zone’s TTL. Minutes usually, an hour sometimes.
- Your DNS host appended the domain twice. Entering a fully-qualified name where the host expects a relative one produces
google._domainkey.yourdomain.com.yourdomain.com. Check the record’s resolved name, not what you typed into the box. - The key was rotated and the old selector retired. Mail signed with the old selector now fails while new mail passes — see rotation below.
Multiple selectors, and rotating them
Publishing several selectors at once is normal and correct — one per sending service:
google._domainkey.yourdomain.com → Google Workspace (staff mail) k1._domainkey.yourdomain.com → Mailchimp (marketing) s1._domainkey.yourdomain.com → SendGrid (transactional)
Each service signs with its own key; a receiver fetches whichever one the s= tag names. Nothing conflicts, and there is no limit worth worrying about.
Rotation means publishing a new selector, moving signing to it, then retiring the old one — after every message signed with it has aged out. Retire it too early and mail still in flight fails DKIM. A common cadence is two selectors alternating every 6–12 months.
This is also the failure DMARC reports surface first: one service starts failing DKIM while the rest keep passing, usually because its key was rotated at the provider and the DNS record was never updated.
Selector vs signing domain vs DMARC alignment
Worth separating, because these three get conflated constantly:
s=(selector) — which key to fetch. Purely a lookup detail.d=(signing domain) — who claims responsibility for the message. This is what DMARC cares about.- Alignment — DMARC passes on DKIM when
d=matches the visibleFrom:domain. The selector plays no part in alignment. Sign with any selector you like; what matters is thatd=lines up.
Hence a frequent misdiagnosis: “DMARC fails, so the selector must be wrong.” If DKIM verified at all, the selector was right — the problem is d= not aligning. The DMARC checker reads the policy side of that.
Sources
FAQ
Can I have more than one DKIM selector?+
Yes, and you usually should — one per sending service. Each publishes its own key and signs with its own selector. They do not conflict with each other.
Does the selector name matter?+
Not to the protocol. Any label works as long as the TXT record exists at that selector under _domainkey, and the signature’s s= tag names it. Providers pick fixed names so their setup docs can stay static.
Why can’t a tool just list my selectors?+
DNS has no "list the records under this name" query. You can only look up a name you already know, so discovery is either reading s= from a real message or probing a curated list. That is a limit of DNS, not of the tool.
What is _domainkey?+
A fixed literal the DKIM spec requires between the selector and your domain. It is always present and it never changes, so it is not something you configure.
Is a 1024-bit DKIM key still fine?+
It still verifies, but Gmail and Outlook both downrank it and may eventually stop accepting it. Use 2048-bit. Our DKIM key generator produces a 2048-bit keypair entirely in your browser.
My provider gave me a CNAME, not a TXT record. Is that wrong?+
No, that is the normal pattern. The CNAME points at a TXT record the provider hosts, so they can rotate the key without you touching DNS. Just verify the CNAME resolves; a DKIM lookup follows it.
Check it on a real domain
Free, no signup, DNS-only. Nothing you type leaves the lookup.