Blog/ Email glossary & concepts

What Is a DKIM Selector? How Signature Keys Are Found

Nafiul HasanNafiul Hasan· 11 min read
AI Emaily blog cover for what is a DKIM selector, showing a receiver using the s= selector and d= domain to fetch the matching public key from DNS

The short answer

A DKIM selector is a label carried in the s= tag of a message's DKIM-Signature header. A receiving server combines it with the d= signing domain to build the DNS name <selector>._domainkey.<domain>, then queries that location for the TXT record holding the public key it needs to verify the signature.

What is a DKIM selector? It's the label in a signature's s= tag that, with the d= domain, tells a receiver which public key to fetch from DNS.

On this page
  1. 01What is a DKIM selector?
  2. 02How does a receiver find the DKIM public key?
  3. 03Why do DKIM selectors exist?
  4. 04How do I find my DKIM selector?
  5. 05DKIM selector (s=) vs signing domain (d=)
  6. 06Common misconceptions about DKIM selectors
  7. 07How this shows up in AI Emaily

A DKIM selector is a short label that tells a receiving mail server exactly which public key to use when it verifies a message's DKIM signature. It travels in the `s=` tag of the `DKIM-Signature` header, and the receiver combines it with the signing domain from the `d=` tag to look the key up in DNS.

That one small label is what lets a single domain run several DKIM keys at once — a different key for each service that sends mail as you — and rotate keys without breaking delivery. This guide covers what a DKIM selector is, how a receiver uses it to find the key, and why every sending platform asks you to publish its own.

What is a DKIM selector?#

The DKIM standard, RFC 6376, defines the selector as the value that subdivides the key namespace under a signing domain. In the standard's own words, selectors exist "to support multiple concurrent public keys per signing domain." Each key a domain publishes lives under its own selector, so the selector is how a receiver picks the right key out of however many that domain has.

In a signed message, the selector is carried in the `s=` tag of the `DKIM-Signature` header, and it is required — a signature without it cannot be verified. RFC 6376 describes `s=` as "the selector subdividing the namespace for the `d=` (domain) tag." The `d=` tag names the signing domain (the standard calls it the SDID, the Signing Domain Identifier); the `s=` tag names which of that domain's keys was used.

The selector itself is just a label the signer chooses. It is not secret, not a password, and carries no security on its own — it appears in plain text in every signed message and is openly queryable in DNS. All the security rests on the private key, which never leaves the sender. The selector's only job is to point a receiver at the matching public key.

A DKIM selector in one sentence

It is the s= label in a signature that, together with the d= domain, tells a receiver the exact DNS location of the public key it needs to check the signature.

How does a receiver find the DKIM public key?#

When a receiving server accepts a signed message, it reads two tags from the `DKIM-Signature` header: `d=` (the signing domain) and `s=` (the selector). It slots them into a fixed pattern to build one specific DNS name: `<selector>._domainkey.<domain>`. The literal label `_domainkey` in the middle is the reserved subdomain where DKIM stores all of a domain's keys, and it never changes.

RFC 6376 gives the exact construction: for a signature with `d=example.com` and `s=foo.bar`, "the DNS query will be for `foo.bar._domainkey.example.com`." The receiver queries that name for a TXT record, reads the public key out of its `p=` tag, and uses that key to verify the signature. No selector — or a selector that points nowhere — means there is no key to fetch and a signature the receiver cannot check.

A DKIM-Signature's s= selector and d= domain routing to a single DNS location, selector._domainkey.domain, where the matching public-key TXT record is stored
The selector and domain from the header route the receiver to exactly one DNS record — the key that verifies the signature.
Part of the DNS nameComes fromWhat it is
<selector>the s= tagThe label naming which key was used, e.g. s=selector1
_domainkeya fixed literalThe reserved subdomain where DKIM keys always live
<domain>the d= tagThe signing domain that took responsibility (the SDID)
The TXT record found thereDNSHolds the public key in its p= tag, alongside v=DKIM1 and k=

Why do DKIM selectors exist?#

If a domain only ever needed one key, it would not need selectors at all — the receiver could look in a single fixed place. Selectors exist because real domains almost never send from just one system, and because keys have to be replaced from time to time. RFC 6376 leaves the number of selectors entirely up to the domain owner: "Many domain owners will be satisfied with just one selector, whereas administratively distributed organizations can choose to manage disparate selectors and key pairs in different regions or on different email servers."

The first reason is multiple senders. A single domain often sends through several services at once — its own mail server, a marketing platform, a transactional email service, a help-desk tool. Each one holds its own private key and signs under its own selector, so they sign independently and none has to share a secret with the others. That is why every sending platform asks you to publish its selector: it is publishing the address of its own key.

The second reason is key rotation. To replace a key safely, you publish a new key under a new selector, switch signing to it, and leave the old selector live until no in-flight mail still relies on it — then remove it. Because both keys are valid during the overlap, nothing fails verification mid-swap. Without selectors there would be nowhere to stand up the new key while the old one was still in use.

  • Multiple senders: one selector per service, each with its own private key, so streams sign independently.
  • Safe rotation: publish the new key under a new selector, overlap, then retire the old one — no failed signatures during the swap.
  • No shared secrets: because each sender has its own selector and key, exposing one does not expose the others.

How do I find my DKIM selector?#

This is where a lot of people get stuck, because DNS gives you no way to list a domain's selectors. You cannot ask DNS "what selectors does example.com have?" — you can only query a name you already know, like `selector1._domainkey.example.com`. So the reliable way to find a selector is to read it off a message the domain actually sent.

  1. 1

    Send yourself a message from the domain

    Send an email from the address in question to an account you can inspect, ideally at a different provider so the receiver adds its own authentication results.

  2. 2

    Open the raw headers

    Use "Show original" in Gmail, or "View source" / "View message details" elsewhere, to see the full headers including DKIM-Signature.

  3. 3

    Read the s= tag

    Find the DKIM-Signature header and look for s=. Its value is the selector; the d= value beside it is the signing domain.

  4. 4

    Confirm the record is published

    Query <selector>._domainkey.<domain> for a TXT record. A DKIM checker, or a dig / nslookup TXT query, will show the p= public key if it exists.

If a domain signs with more than one service, you will see more than one `DKIM-Signature` header, each with its own `s=` — that is normal and expected. Your sending provider's DKIM setup page also lists the selector it uses. As of 2026, Google Workspace commonly publishes its key under the selector `google`, and Microsoft 365 typically uses `selector1` and `selector2` via CNAME records — but check your own provider's setup page rather than assuming, since selector names can differ per account and change over time.

DKIM selector (s=) vs signing domain (d=)#

The two tags are easy to mix up because they always travel together and are used together, but they answer different questions. The `d=` tag answers who took responsibility for the message; the `s=` tag answers which of that party's keys was used. You need both to find a key: the domain tells the receiver whose DNS to look in, and the selector tells it which record within that domain's `_domainkey` space to read.

Propertys= (selector)d= (signing domain / SDID)
AnswersWhich key was usedWho signed and took responsibility
Required in the signature?YesYes
Chosen byThe signer, as an arbitrary labelThe organization whose key signs the mail
Varies per serviceYes — one per sender or keyUsually your domain; may be a provider's domain
Role in the lookupThe <selector> part of the DNS nameThe <domain> part of the DNS name
Example valueselector1, google, s1example.com

Common misconceptions about DKIM selectors#

Because the selector is small and rarely explained, a handful of wrong ideas about it circulate widely. Each of these is worth correcting, because acting on the wrong one is how DKIM setups get broken or feared for no reason.

  • "A domain has one selector." It can have many — one per sending service, plus extra ones live during a key rotation. Seeing several is healthy, not a fault.
  • "The selector is secret or security-sensitive." It is a public label that appears in every signed message and is meant to be looked up in DNS. Security comes from the private key, not from hiding the selector.
  • "I can list all of a domain's selectors in DNS." You cannot — DNS has no way to enumerate the names under `_domainkey`. You learn a selector by reading the `s=` tag of a real message.
  • "The selector points to the private key." It points to the public key, which is published openly. The private key never appears in DNS and never leaves the sender.
  • "Changing selectors means telling receivers." It does not. The selector rides inside every signature in the `s=` tag, so a receiver always learns the current selector from the message itself — which is exactly why rotation is painless.

The selector is not a secret

Publishing your selector and public key in DNS is by design and weakens nothing. A DKIM signature is safe to expose because only the private key can create one; the public key and its selector exist precisely so the whole internet can verify a signature — not forge one.

How this shows up in AI Emaily#

DKIM selectors are configured at the sending domain — in DNS and at whatever service sends your mail — not inside the mail client you read messages in. AI Emaily does not publish DKIM records or manage selectors, and no email client does; that job belongs to your domain and your sending platform. What a client can do is respect the result. By the time a message reaches you, the receiving server has already run the selector lookup and recorded the outcome, and AI Emaily leans on those authentication signals — trusting verified mail and flagging senders that fail authentication, which feeds its spam and phishing protection instead of presenting a forgery as if it were genuine.

We build AI Emaily, an AI-native client that brings Gmail, Outlook, and any IMAP account into one place and keeps you in control of what the AI does. It is private by design — your mail is used to help you read and write, never to train models for anyone else — and it starts with a 7-day free trial. On DKIM itself the honest boundary is simple: the standards live in DNS and on sending servers, and a good client just makes their outcome legible and acts on it sensibly.

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

An inbox that respects what can be verified.

AI Emaily brings Gmail, Outlook, and any IMAP account into one AI-native client that trusts authenticated mail and treats forgeries with suspicion — while keeping you in control of every send. Private by design. Start your 7-day free trial.

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