DKIM Validation Report
Check a DKIM selector in public DNS and review its record count, key strength and policy tags with clear testing and resolver evidence.{{ summaryTitle }}
{{ summaryLine }}
Selector report
{{ section.title }}
{{ section.body }}
| Check | Status | Observed | Next step | Copy |
|---|---|---|---|---|
| {{ row.label }} | {{ row.statusLabel }} | {{ row.observed }} | {{ row.action }} |
The chart renderer is unavailable. The same counts remain available in the evidence ledger and JSON handoff.
DomainKeys Identified Mail (DKIM) lets a receiving mail system check that selected message content was signed by an organization controlling a domain. The message carries a signature header, while the corresponding public key is published in DNS. A receiver combines both pieces to verify the signature without learning the private key.
Two fields locate that public key. The signing domain comes from the signature's d= value, and the selector comes from s=. Together they form a DNS owner such as selector._domainkey.example.com. Checking the wrong selector or the visible From domain instead of the actual signing domain commonly produces a false missing-record diagnosis.
- Selector
- A label chosen by the signer so keys can be rotated or separated by service.
- Key record
- A semicolon-delimited TXT value containing tags such as version, key type, public key, hash policy, service scope, and testing flags.
- Revoked selector
- A key record with an empty
p=value, which tells verifiers that the selector no longer has a usable public key.
Publication quality matters because a valid message signature cannot be checked when the DNS owner is wrong, the key payload is malformed, or restrictive tags exclude the signature's algorithm or email service. Key size also affects security and interoperability: Ed25519 keys use a fixed 256-bit public key, while RSA keys need enough modulus strength for current DKIM practice.
A healthy DNS record is necessary but not sufficient. It does not prove that outgoing messages are signed, that a particular message verifies, that the body and signed headers were preserved, or that DKIM aligns for DMARC. Message-level troubleshooting still requires the received headers and signature data.
How to Use This Tool:
Use the signing domain and selector from a recent DKIM-Signature header or from the mail provider that publishes the key.
- Enter the
d=signing domain, not an email address or an assumed organizational domain. - Enter only the
s=selector label. The DNS owner name is assembled automatically. - Choose Cloudflare DNS or Google Public DNS when a second recursive-resolver view would help distinguish a record problem from cache or propagation delay.
- Select Validate, then start with the first non-healthy item in the evidence ledger.
- After publication checks are healthy, verify a newly received signed message to confirm the signature, signed headers, body hash, and alignment behavior.
Interpreting Results:
Healthy means all ten publication checks passed in the selected resolver view. Review identifies a missing record, an RSA key from 1024 through 2047 bits, an unreadable RSA size, or the t=y testing flag. Needs attention means at least one stronger failure was found, such as a DNS error, duplicate key records, invalid tags, or unusable key material.
The status is severity-based rather than an average: any attention item controls the overall result, otherwise any review item does. Compare resolvers when a record was just changed, but use message-level verification before concluding that production mail is authenticating correctly.
Technical Details:
DKIM key publication uses a DNS TXT record containing tag-value pairs. Quoted TXT fragments are joined without added spaces, tag names are compared case-insensitively, and records containing a p= tag are treated as DKIM key records. Omitting k= selects RSA by default; omitting v= uses the DKIM1 default.
Lookup Core
| Stage | Mechanism | Failure meaning |
|---|---|---|
| Owner construction | s= selector + ._domainkey. + d= signing domain | A correct key published at another owner will not be discovered. |
| TXT retrieval | One explicit query through the selected public recursive resolver | Cache state and resolver policy can differ from another viewpoint. |
| Record selection | TXT values with a p= tag are counted as DKIM key records | Zero records needs confirmation; multiple effective records are ambiguous. |
| Tag parsing | Semicolon-separated names and values are preserved, including an empty value | Duplicate names or an empty public key can invalidate or revoke the selector. |
Rule Core
The report applies ten checks in a fixed order. The counts of healthy, review, and attention results always add to ten.
| Check | Healthy condition | Review or attention condition |
|---|---|---|
| DNS response | Resolver returns NOERROR. | Any other response needs attention. |
| Record count | Exactly one DKIM key record. | Zero is Review; more than one needs attention. |
| Version | v=DKIM1 is first, or v= is omitted. | An explicit invalid or misplaced version needs attention. |
| Tag uniqueness | No duplicate tag names. | Any duplicate needs attention. |
| Key type | RSA or Ed25519. | Another advertised type needs attention. |
| Public key | p= contains decodable key material; Ed25519 decodes to 32 bytes. | Missing, empty, malformed, or wrong-length material needs attention. |
| Key strength | RSA is at least 2048 bits, or Ed25519 is 256 bits. | RSA 1024 to 2047 bits or unreadable size is Review; below 1024 bits needs attention. |
| Hash policy | h= is omitted or includes sha256. | A restrictive list without SHA-256 needs attention. |
| Service scope | s= is omitted, wildcarded, or includes email. | A scope excluding email needs attention. |
| Testing flag | t=y is absent. | t=y produces Review. |
Formula Core
RSA strength is estimated from the decoded modulus. Leading padding bytes are removed before the first significant byte determines the remaining leading zero bits.
B is the displayed bit length, n is the number of bytes in the trimmed modulus, and z is the number of leading zero bits in its first byte. A DER integer containing one leading padding byte may therefore still represent a 2048-bit RSA modulus after trimming.
Privacy and Accuracy Notes:
The selected public resolver receives the selector owner name, revealing which domain and selector are being investigated. Results describe one cached resolver view at one moment and can differ during propagation.
RSA size extraction can be unavailable for malformed or unexpected encodings. The report never sees a private key or message content and does not perform cryptographic verification of an email message.
Worked Examples:
Ed25519 key still marked for testing
A selector returning one v=DKIM1; k=ed25519; p=…; t=y record with a 32-byte decoded key passes nine checks. The testing flag changes the tenth check to Review, so the overall result is Review even though the key length and record structure are healthy. Remove t=y only after testing is complete and normal receiver treatment is intended.
References:
- RFC 6376: DomainKeys Identified Mail (DKIM) Signatures, RFC Editor, September 2011.
- RFC 8301: Cryptographic Algorithm and Key Usage Update to DKIM, RFC Editor, January 2018.
- RFC 8463: A New Cryptographic Signature Method for DKIM, RFC Editor, September 2018.