DELIVERABILITY

DKIM key rotation: publish, switch, observe and retire

Plan a DKIM key change around the messages that will cross it. Make selector ownership, signing evidence and retirement criteria explicit before the switch.

  • Map a real DKIM signature to its signing domain, selector and owner.
  • Separate publishing a key from switching and verifying the signer.
  • Define retirement and recovery criteria for delayed messages and compromised keys.

A closer look

Identify the signer and the people who can change it

Begin with a complete message from each sending route in scope. Record the signing domain and selector it actually carries, then identify the team that controls the signer. A domain administrator may control DNS without controlling the service that generates signatures. A rotation cannot be scheduled reliably until both responsibilities are assigned.

DKIM uses d= for the signing domain and s= for the selector. Together they identify the public-key DNS name: selector._domainkey.domain. Different selectors allow keys to coexist. Follow the observed values; a selector name that sounds current does not prove it is active.

For the fictional example in this guide, the signing domain is example.org. The current selector is outreach2026a and the replacement is outreach2026b. These are illustrative operational labels, not keys or a configuration to deploy. The plan covers two routes owned by different teams, so each must supply evidence before the change is considered complete.

Ownership before scheduling the change
ResponsibilityRequired answer
Signing ownerWho creates the replacement key and changes the active signer?
DNS ownerWho publishes the exact record supplied for this domain and selector?
Route ownersWho can identify queued messages and produce representative samples?
ReviewerWho checks the evidence and authorizes retirement?
Incident ownerWho decides what to do if the key may be compromised?

References [1]

Worked example

Prepare a new selector and a usable change record

Use a distinct replacement selector so the old and new public keys can be addressed independently. NCSC guidance describes rotation with a new selector and notes that the available setup and automation depend on the email service. Record the process your actual service supports instead of assuming that every provider rotates on the same schedule.

For RSA signing, RFC 8301 requires at least 1,024-bit keys, recommends 2,048 bits or more, and prohibits rsa-sha1. These algorithm requirements do not establish a universal rotation interval. Confirm the supported signing configuration with the service owner as part of preparing the change.

The shared record should contain public operational information: domain, selector, record owner name, service reference, responsible people and evidence locations. Keep private key material and credentials out of the worksheet. If your organization manages keys directly, reference its controlled key-management record rather than copying the secret into a ticket.

Before scheduling, ask whether every route can be switched separately, whether a canary is possible and whether the old signer can be restored. Capture any service-imposed delay as a constraint of this specific change. That turns an apparently simple DNS edit into a plan the operating team can actually execute.

Fictional selector inventory — operational labels only
Signing domain: example.org
Current selector: outreach2026a
Current public-key owner: outreach2026a._domainkey.example.org.
Replacement selector: outreach2026b
Replacement public-key owner: outreach2026b._domainkey.example.org.

Public-key value or service-supplied alias: [controlled change reference]
Private key and credentials: [not included]
  1. Separate names

    The replacement gets its own DNS owner name; this plan does not overwrite the old selector with a different key.

  2. Record the real record type

    The service may supply a public-key TXT value or a CNAME pointing to its key location. Follow its documented record format.

References [3] [5]

Put it into practice

Publish the replacement without treating publication as completion

Google’s documented setup separates generating a key, adding its DNS record, turning on signing and verifying the result. Microsoft’s rotation guidance describes two selector records and scheduled rotation state. Both examples support a useful operational distinction: DNS publication and the signer’s use of the new key are separate checkpoints.

Ask the DNS owner to compare the published owner name, record type and value with the approved change. Record the observation time and the result of the organization’s normal DNS verification procedure. If the service uses an alias, confirm its supplied target as well as the alias itself. A screenshot of a saved editor form is evidence of an edit, not evidence of the answer a verifier can obtain.

Plan for the cache state that existed before the edit. A new selector may previously have returned a negative answer; an existing record may have an earlier TTL in caches. Record the applicable settings and the service’s readiness guidance. Do not declare universal readiness merely because one resolver returns the new record.

Leave the current signing route operating while the replacement is being prepared, unless the incident owner has identified a reason it must stop. The reviewer should receive a clear readiness statement, with unresolved dependencies called out, before the signing owner proceeds to the switch.

Your practical checklist

References [2] [4]

Worked example

Switch the signer and inspect actual messages

When the readiness checks pass, the signing owner uses the service’s supported switch or rotation process. Record the requested change and the service’s reported state separately. A queued operation or future activation time is not the same as evidence that the next message was signed with the replacement.

Use a controlled canary from each route where the service supports that approach. Inspect a complete received message and its trusted receiver authentication results. Record the actual d= and s= values and the outcome for the relevant signature. Google explicitly includes message-header verification in its setup procedure; use the equivalent evidence available for your sending service.

The extract below is schematic and cannot be cryptographically verified. It illustrates the two fields to record, not a valid signature. A real verification requires the full signed message and the appropriate key and verification process. Do not label a rotation successful from a truncated header, a generated sample string or the presence of a selector name alone.

If a message carries several DKIM signatures, identify the one belonging to the route under change. A passing signature from a different signer does not establish that this replacement works. Retain the relevant verification result with its message reference so the reviewer can connect the evidence to the intended route.

Schematic field extract — not complete or valid cryptography
DKIM-Signature: ... d=example.org; s=outreach2026b; ...

Expected public-key DNS owner:
outreach2026b._domainkey.example.org.

Evidence to record from the real received message:
Route: [route A or route B]
Observed signing domain and selector: [actual values]
Relevant DKIM verification result: [receiver evidence]
Message reference and receipt time: [controlled evidence location]
  1. What this proves

    The schematic proves nothing about a live sender. It shows how the fictional replacement selector maps to its DNS owner name.

  2. A useful comparison

    Retain a before-and-after sample for the same route so the reviewer can see which signer changed.

References [1] [2]

A closer look

Observe every route and account for delayed messages

Define the observation plan before the change. In our fictional case, route A can hold already-signed messages in a queue, while route B signs at a later delivery stage. Those routes need different evidence. The relevant question is when a message carrying the old signature can still arrive, not simply when the operator clicked the switch.

Ask each route owner for a justified bound on queueing, retries and any controlled release process. Record the basis for that bound and any exceptions. If the team cannot explain how long already-signed messages may remain in its workflow, retirement is an unresolved decision. Assign that gap to an owner rather than quietly substituting an arbitrary waiting period.

TTL describes DNS cache behavior; it does not bound message delivery delay. Keep the DNS readiness interval and the old-message delivery horizon as separate entries in the plan. Retaining the old public key supports verification of messages still carrying its signature; the decision to stop using the old private key is a different step.

The event ledger below deliberately uses evidence gates rather than a universal number of hours. For this example, route A’s retained queue is the last unresolved item even after route B produces a passing replacement signature.

Fictional observation ledger
CheckpointEvidenceDecision
New DNS readyReplacement owner name resolves as approved.Signing owner may proceed through the agreed switch process.
Route B switchedComplete sample uses outreach2026b and verifies.Mark route B observed; retain both public-key records.
Route A switchedNew sample verifies, but old-signed queued messages remain.Keep the old key available while that delivery horizon remains open.
Old-message horizon closedRoute owner documents queue disposition and the justified waiting criteria are met.Reviewer assesses retirement against all remaining checks.

References [1]

The essentials

Retire the old key only after the recorded gates pass

Retirement should be a separate, reviewable action. Confirm that every in-scope route has stopped creating old-selector signatures, representative replacement signatures verify, and the documented old-message delivery horizon has closed. Record any excluded route explicitly; silence from a route owner is not acceptance evidence.

The reviewer should be able to reconstruct the decision from the record: what changed, which messages were checked, which queues were considered and why the remaining risk was accepted. If an old-selector signature appears unexpectedly, reopen the route inventory. It may reveal an overlooked application, a delayed release or a signer that never switched.

Use the service’s documented retirement process. Some platforms manage key lifecycle steps themselves; others leave DNS removal and key disposal to the customer’s owners. Name the responsible party for each action and capture its completion evidence. Do not assume that deleting a public record destroys a private key, or that disabling a signer removes a record.

Keep the non-secret audit trail after retirement. Future operators need to know which selector replaced which, when the change was observed and who approved it. Archive message evidence according to your own retention rules. The operational record should remain useful without preserving private keys in a shared document.

References [4] [5]

The essentials

Separate routine rollback from a compromise response

A routine failure might be a replacement selector that does not resolve as intended, an incomplete switch or a route that no longer verifies. Pause further rollout, preserve the failing message and compare the actual selector and DNS answer with the plan. If the old private key remains secure, available and supported, restoring the old signer may be an option for the authorized owner.

If a rollback resumes the old signer, keep the replacement public key available for messages already signed with it. The overlap obligation runs in both directions: the decision must account for messages created during the attempted change. Capture the rollback time and add those messages to the observation record.

A suspected key compromise changes the objective. An old compromised key is not a safe fallback. Escalate to the incident owner, stop or isolate the affected signing path as appropriate, establish a secure replacement and coordinate revocation through the supported process. RFC 6376 defines an empty p= value as key revocation. Cached answers can limit how quickly a DNS change is visible, so do not describe publication as instantaneous containment.

Revoking a key can also prevent verification of legitimate messages that still carry its signature. The incident owner must weigh that disruption against continued trust in an exposed key. Record the decision, affected routes and recovery evidence. This emergency judgment is separate from the normal retirement criteria and should not inherit a routine waiting period by default.

References [1]

Put it into practice

Copy the DKIM rotation handover

Use this worksheet as the shared operational record. Store evidence references where the reviewer can access them, and keep private key material in its proper controlled system. Replace every placeholder before the planned switch or mark the missing answer as a blocker with an owner.

The handover is complete when another operator can explain the active selector, the status of both public-key records and the next authorized action. A date alone cannot provide that context.

DKIM selector rotation worksheet

Copy this worksheet into your own document, then fill it in with your details.

DKIM ROTATION HANDOVER
Change / date / business owner:
Signing domain from actual d=:
Current selector / replacement selector:
Current and replacement DNS owner names:
Record types and approved value references:
Signing service and supported rotation procedure:

OWNERS AND READINESS
Signing owner / DNS owner / route owners:
Reviewer / recovery decision owner / incident owner:
Replacement key configuration reference — no secrets:
DNS publication evidence / observation time:
Cache constraints and service readiness criteria:

SWITCH AND OBSERVATION
Switch request / reported activation state:
Per-route actual d= and s= / verification evidence:
Last observed old-selector signing evidence:
Queue, retry and controlled-release considerations:
Justified old-message delivery horizon and its basis:
Exceptions / unresolved owners:

RETIREMENT AND RECOVERY
Retirement gates / reviewer decision:
Old public-key and private-key lifecycle owners:
Retirement evidence and completion time:
Routine rollback trigger / secure fallback availability:
Replacement-signed messages to cover after rollback:
Compromise escalation and revocation decision owner:
Final active selector / next action / next review trigger:

Copy this into your own workspace. This page does not generate keys, inspect a mailbox, change DNS or rotate a live signer.

Rotate with evidence

Keep publication, signing, observation and retirement separate. Every route needs an owner, and every retirement decision needs a justified horizon for old signatures.

A LITTLE MORE CLARITY

Your questions, answered.

Does publishing a new DKIM record switch the signing key?+

Treat publication and switching as separate checkpoints. In the example, the replacement can be available in DNS while messages still use outreach2026a. Complete received messages from the intended routes provide the evidence needed to confirm the switch.

How long should both selectors remain available?+

Use the documented cache constraints, service behavior and justified delivery horizon for messages signed with the old key. Assign unresolved queue or retry questions to route owners. This guide does not prescribe a universal number of hours or days.

How often must we rotate DKIM keys?+

Set a review and rotation policy appropriate to the service, key-management controls and organizational requirements. Record its owner and triggers. A provider’s schedule or an example recommendation should not be presented as a protocol-wide mandatory interval.

Can we roll back to the old key if the new selector fails?+

Only the authorized owner should make that decision, and the old key must still be secure, available and supported. Keep the replacement public key available for messages already signed during the attempted switch. Suspected compromise requires the separate incident path.

Sources and further reading
  1. RFC 6376: DKIM selectors, signatures, key records and revocation
  2. Google Workspace: set up DKIM and verify signing
  3. RFC 8301: DKIM cryptographic algorithm and key-size requirements
  4. Microsoft Learn: configure DKIM and rotate signing keys
  5. NCSC: create and manage a DKIM record

YOUR NEW SECRET WEAPON

Build your empire.
Command total inbox deliverability.

Take total control over your outreach capacity. Run millions of emails across Google, Microsoft, and private servers & IPs with bulletproof inbox placement from day one.