This guide helps you establish responsibilities and bring the separate pieces of evidence together. The main DKIM chapter explains the technical foundations of signatures, algorithms and alignment.
What to establish before setup
Domain registration, DNS operation and email sending may be handled by three different providers. The receiving MX also does not reliably identify the service signing your outgoing messages. A newsletter service or website may use a separate sending route alongside your mailbox provider.
For every route actually used, record:
On narrow screens, scroll the table sideways.
| Information needed | Where to obtain it | What it is needed for |
|---|---|---|
| Service that sends and signs the message | Sending configuration, responsible administrator, provider documentation | Keys and signing are managed there. |
| Intended signing domain | The service’s DKIM setting | It appears as d= in its signature; it is not automatically identical to the visible From domain. |
| Selector | Provider/server configuration or s= in an existing signature | Together with d=, it determines the DNS name of the key. |
| Authoritative DNS zone | Active name servers and any delegated subzone | The records needed by the signer must be published there. |
| Authorisation and existing configuration | Person responsible for sending and DNS | Existing keys used by other sending routes must not be overwritten. |
For your own Google Workspace domain, use the Google guide; for Exchange Online, the Microsoft 365 guide. A personal Gmail or Outlook.com account does not provide the corresponding domain administration access.
Find the correct selector
Start in the DKIM configuration of the service responsible for sending. If you already have a message sent through it, the corresponding DKIM-Signature header contains the selector in s= and the signing domain in d=. If there are several signatures, examine each combination separately. The presence of the header does not yet prove a valid signature.
The following shortened example is synthetic, not a real or verifiable signature:
d=example.com; s=mail202609
mail202609._domainkey.example.comdefault, google and selector1 are possible names, not a complete list. A freely chosen selector works only if the signer uses exactly that name too. If you find no key at known selectors, other selectors may exist. There is no general DNS query that lists every DKIM selector for a domain.
1. Prepare keys at the responsible signer
With a managed sending service, let the service generate the keys. Use the DNS values it provides. The private key stays with the service and belongs neither in DNS nor in a check report. Some services supply a TXT value; others specify CNAME targets behind which they manage the public key.
For a self-hosted signer, follow its documented key format and permissions. For new RSA keys, RFC 8301, section 3.2 recommends at least 2048 bits. The mandatory minimum is 1024 bits; 1024 bits alone therefore does not establish an invalid signature. rsa-sha1 must no longer be used for signing or verification. Ed25519 is a separate DKIM algorithm, but not an option automatically available from every provider.
The following example only shows local RSA key generation in a new protected working directory. The commands were run with OpenSSL 3.6.3 for the isolated signature test. Existing files must not be overwritten; the generated private file has no passphrase and must remain protected. Importing it into the specific mail service is a further step.
umask 077
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out dkim-private.pem
openssl pkey -in dkim-private.pem -pubout -out dkim-public.pemThe second file contains only the public key in PEM format. For the DNS entry, use the export intended by the DKIM signer. Merely removing PEM boundary lines is not a complete format or setup check. Do not upload the private key to an online generator or checker. OpenSSL: genpkey, pkey.
2. Publish the intended DNS record
Identify the DNS administration that is actually responsible. dig NS example.com can indicate the name servers; for delegated subzones, examining the main domain is not enough. The registrar is the right place to enter the record only if it also manages that DNS zone.
For a direct TXT record, the public key is stored under the name formed from the selector, _domainkey and signing domain. This schematic example is not a usable key:
mail202609._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=PUBLIC_KEY_BASE64"On narrow screens, scroll the table sideways.
| Component | Meaning |
|---|---|
mail202609 | This example’s selector; it must match the signing configuration. |
_domainkey.example.com | DKIM namespace under the signing domain. |
v=DKIM1 | Recommended version tag; if present, it comes first. |
k=rsa | Key type; do not replace it with ed25519 for this RSA key. |
p= | Public key in the required Base64 format, never the private key. |
A long TXT record may consist of several character strings within one record. The limit of 255 octets applies to each string, not to the entire DKIM key. The strings are joined without an additional space. Several separate DKIM TXT records at the same selector name are not a substitute. Check how your DNS interface accepts long values. RFC 6376, section 3.6.2.
If the service specifies CNAMEs, use those instead of assembling a TXT record yourself. Check the record type, full name and target. An interface may automatically append the zone to the name entered. Do not displace an existing record at the same name without checking which sending route uses it first.
3. Activate signing
For a managed service, DNS publication is followed by that service’s activation and status check. “Record saved” in DNS administration and “signing active” at the sending service are different states.
If you manage the server yourself, the private key, signing domain and selector must match in the relevant DKIM component. Restrict key access to the service that needs it. Check the configuration with that implementation’s tools and load it using its procedure. A blanket restart of all mail services is not part of DKIM setup.
relaxed/relaxed identifies particular rules for header and body canonicalisation. They can tolerate some whitespace changes, but not arbitrary content changes. Use the documented setting for your signer; changing it does not repair a signature already damaged.
4. Check DNS and an actually sent message separately
Query the name that corresponds to the actual signing configuration. The examples use only the synthetic domain and selector from above:
dig TXT mail202609._domainkey.example.com +short
dig CNAME mail202609._domainkey.example.com +shortA CNAME leads to the key target managed by the service. Read the full response if the short form is empty or unclear, for example with dig TXT mail202609._domainkey.example.com without +short. An empty short response does not reliably distinguish a missing name from all DNS errors. Cache state, resolver and query time form part of the observation. These commands do not send a test email.
To demonstrate the signature, you need your own message sent through the route under examination and received externally. Read its original headers: which signature contains the expected d= and s=? What result does the trusted receiving service report for that signature in Authentication-Results? A freely inserted header is not a trusted verification result. The guide to interpreting header findings helps establish the connection.
On narrow screens, scroll the table sideways.
| Evidence available | Question answered | Not established by this evidence |
|---|---|---|
| Public DNS response | What is visible at the queried name now? | Active signing or the validity of a message. |
A message’s DKIM-Signature | Which domain and selector does this signature name? | That the recipient verified it successfully. |
Trusted dkim=pass | Did this particular signature pass verification there? | DMARC alignment, harmless content or inbox placement. |
| DMARC evaluation | Does a successful authentication path align with the From domain? | Complete phishing protection or a delivery guarantee. |
The Email Security Check examines publicly discoverable DKIM keys using a limited set of known or supplied selectors. Enter the actual selector where the form provides for it. Failure to find a key does not prove that DKIM is absent. The domain check does not read a message or automatically monitor later changes.
For a new message of your own, the free German test email beta with its limited initial eligibility and scope is available through the Email Check. Observe the requirements stated there. Your private message finding remains separate from the public domain finding; it does not replace its grade. A complete English service flow is not currently enabled. If you need to document the position for a handover, the report overview explains the limited findings each document contains. A report is not an audit, compliance or security certificate.
Multiple sending services and key changes
If several services use the same From domain, every route that actually signs needs a suitable configuration. A key provided for Google Workspace does not configure a separate newsletter service. Record the signing domain, selector, record type and responsibility for each service; avoid name collisions.
For a planned change, publish the new public key under the intended new selector, check that it is reachable and then switch the signer only according to the service’s procedure. Afterwards, check a new message for the selector actually used and the recipient’s result. Old DNS keys may remain relevant to messages still in transit or verified again later. Do not remove them merely because the new configuration has been saved.
One general waiting period does not suit all caches, queues and providers. An emergency involving a compromised private key also requires a different assessment from a planned change. The DKIM chapter provides the detailed explanation; each provider’s rotation remains governed by its documented procedure.
What the isolated signature test shows
On 29 September 2026, fresh 2048-bit RSA keys were generated with OpenSSL 3.6.3. dkimpy 1.1.8 signed a synthetic message with rsa-sha256, d=example.com and s=mail202609. The verifier received the public key solely from local DNS fixtures. Their wire format and CNAME chain were processed with dnspython 2.7.0. No email was sent and no public DNS query was made.
On narrow screens, scroll the table sideways.
| Controlled case | Observation | Conclusion and next step |
|---|---|---|
| Unchanged message, matching selector and key | Signature verified successfully. | This pair works. For a real sending route, still check an actually sent message at the trusted recipient. |
| Signed message content deliberately changed | Verification failed. | The signed bytes checked no longer match. Find the processing step that changed them. |
| Different public key or truncated key value | Verification failed. | Compare the full DNS value with the responsible signer. |
| Wrong selector or no key for the queried name | Verification failed. | Examine the specific signature and its DNS name; this says nothing about every selector of the domain. |
| Unsigned message | No successful DKIM verification. | Check the actual signer and its activation. |
| Several TXT substrings within one RR | Joined without spaces; signature verified successfully. | Segmentation is possible. By contrast, the lab identified two separate TXT RRs as an ambiguous configuration and did not select one arbitrarily. |
| Local CNAME pointing to the matching TXT key | Target resolved; signature verified successfully. | A specified CNAME can lead to the key. This does not establish anything about a particular provider tenant. |
Valid signature with d=example.com, visible From under example.net | Cryptographic verification successful. | Signature validity alone does not establish DKIM alignment with the visible sender domain. |
The eleven controlled cases test signature behaviour and DNS representation. They are not the receiving internet mail service’s own Authentication-Results, nor evidence of delivery, Google or Microsoft behaviour. The private test keys were removed after the test. Your own acceptance check remains the message on the intended sending route described in step 4.
When the evidence does not match
On narrow screens, scroll the table sideways.
| Observation | Useful next step |
|---|---|
| Record visible in the interface but not found publicly | Check the authoritative zone, full name, record type and DNS response status. Do not simply wait longer. |
| Key present, expected signature absent | Check the actual sending service, activation and message examined. Adding a DNS entry alone does not add a signature. |
| Signature present, verification failed | Read the matching d=/s=, key and recipient diagnosis; investigate later changes by gateways or forwarding. Do not claim a cause from fail alone. |
| DKIM passes, DMARC does not | Check alignment with the visible From domain separately. Another domain’s successful signer is not automatically sufficient. |
| One service works, another does not | Identify each sending route separately; do not replace the working key as a precaution. |
Missing DKIM does not automatically mean DMARC failure: a successful aligned SPF path can satisfy the general pass criterion. Conversely, a published p=reject policy does not guarantee a particular recipient decision. DMARC and alignment explains these limits.
Frequently asked questions
Can I enable DKIM solely at the DNS host?
You can publish the required record there. The responsible sending service must sign. If the DNS host is also your mail provider, both steps may appear in the same administration interface; they remain different tasks.
Is an online DKIM checker enough?
It can help with the DNS question it describes. A limited selector query proves neither complete absence of DKIM nor active signing. For a particular signature, you need the message and a verification result attributable to the trusted receiving service.
Do I need to use a key generator?
Google Workspace and Microsoft 365 provide the keys. These guides do not require a separate generator. For self-hosting, the particular DKIM component and its export procedure determine the format needed.
Related setup guides
More DKIM guidance: Google Workspace · Microsoft 365
For context: SPF, DKIM foundations and DMARC. For the relationship with the visible sender domain: understand DMARC alignment.
Sources and testing limits
DKIM: RFC 6376, RSA requirements: RFC 8301, Ed25519: RFC 8463, trusted authentication results: RFC 8601, dig documentation.
Primary sources checked and isolated functional test performed on 29 September 2026. The OpenSSL commands and the signature cases described were run locally; the DNS queries in the instructions remain examples for your own authorised environment. No domain was configured, no message was sent over the internet, and no provider activation or rotation was tested.