How to Verify DKIM h= Tag with Uncanonicalized Header List Using Online Tools
Learn how to verify DKIM h= tags using uncanonicalized header lists with reliable online tools.
Why Does DKIM h= Tag Verification Matter for Email Deliverability?
You sent a perfectly formatted email. The DKIM signature looks good. But it still bounces—no error code, no explanation. Why?
The h= tag in your DKIM signature might be misaligned with the actual headers sent. Even if the cryptographic math checks out, a mismatch here breaks verification—leading to delivery failures you can’t see from the sender side.
DKIM signing depends on header canonicalization: the exact list of headers used to compute the signature must match what’s actually in the message. An uncanonicalized h= tag—especially with custom or non-standard headers—can silently invalidate the signature, even if everything else is correct.
Many online tools assume canonicalization rules that don’t reflect your mail system’s actual behavior. If your headers are reordered, folded, or modified in transit, a standard tool may return a false positive. That’s why verifying the h= tag with an uncanonicalized header list is critical.
Key takeaways
- DKIM verification can fail even with a correct signature if the h= tag doesn’t match the exact header list sent.
- Real-world email systems often use non-standard or custom headers; tools relying on canonicalization rules may incorrectly validate these.
- Using uncanonicalized header lists in verification tests catches header mismatches that standard tools miss.
How Does DKIM Header Canonicalization Work in Practice?
DKIM verifies email authenticity by normalizing headers exactly as listed in the h= tag before hashing. The signing system must apply the same canonicalization to every header in the h= list—preserving order, trimming whitespace, and lowercasing names. If the receiving server finds a header missing, misspelled, or improperly formatted, the signature fails. This means even small deviations in capitalization or spacing in the raw email can break verification.
The Role of the h= Tag in DKIM Signing
When you set the h= tag in a DKIM signature, you’re explicitly telling the validator which headers matter and in what order. For example, h=from:subject:to means only those three headers are included, and only in that sequence. If you later send an email with a different header order or a slightly different name—like “From” instead of “from”—the validation will fail, even if the content is correct.
DKIM’s normalization process is designed to be deterministic: the same input, same output, every time. This means systems must remove extra whitespace, collapse multiple spaces to one, and convert all header names to lowercase before hashing. This consistency ensures that slight transport differences don’t invalidate a valid signature.
Why Uncanonicalized Headers Break Validation
Uncanonicalized headers are the raw headers as sent—without any normalization. These can include mixed case, extra spaces, or non-standard formatting. While your email client might display them fine, DKIM does not accept them in the verification process. The receiving server applies canonicalization rules based on the h= list, and if a header doesn’t match exactly, the validation fails.
For example, if h=From:Subject is used but the actual header is sent as From: (with trailing space), the hash won’t match. Even if your email system uses a different internal format, DKIM requires strict adherence to the normalized version. This is why tools that test DKIM signatures must simulate the real validation behavior.
This is where MailTester’s email verification tool helps: you can test the full DKIM signature including header canonicalization. It shows exactly which headers are being used and flags any mismatched or missing names. You can test individual addresses or run bulk checks to find issues before sending. Use our email checker to validate DKIM alignment on individual messages.
For deeper validation, consult RFC 6376, the formal specification for DKIM, which details the header canonicalization algorithm. This standard is maintained by the IETF and is the authoritative source for how DKIM works in real-world systems. RFC 6376 explains all steps, including how whitespace is handled and how header names are normalized.
What’s the Role of the DKIM h= Tag in the Signature Process?
The DKIM h= tag lists the headers used to generate the signature hash. It must exactly match the header names and order present in the message when sent—any deviation, like a missing or misnamed header, breaks the signature. Since some systems normalize headers and others don’t, testing with uncanonicalized data is essential to ensure the signature validates in real-world conditions.
How the h= Tag Maps to Real Message Headers
When a DKIM signature is created, the h= tag defines which headers are included in the hash calculation. For example, if h=from:subject:date; is used, only those three headers are considered. You can’t skip one, reorder them, or include extra fields—each must match exactly what the receiving server sees. Even a single missing header or a typo like From instead of from will cause validation failure.
Different email systems handle header normalization differently. Some automatically canonicalize field names (e.g., converting all to lowercase) and whitespace formatting. Others preserve the exact raw header order and case. This is why testing with uncanonicalized, raw message headers is necessary—only then can you confirm your signature will pass in actual delivery environments. As outlined in RFC 6376, DKIM signing relies on predictable, consistent header processing.
Why Uncanonicalized Testing Matters
If you only test with normalized or cleaned headers, you may miss issues that show up in real-world delivery. A server that processes headers exactly as sent—without standardizing—will reject a signature if the h= list doesn’t precisely match. This is especially common with older or non-compliant mail systems.
For example, if your mailing system alters the header order or adds a non-standard field like Auto-Submitted, but the h= tag doesn’t include it, the signature fails—even if all other fields are correct. To avoid this, always test with the exact, unaltered header list you send. Tools like the MailTester email checker can validate DKIM signatures using the raw, uncanonicalized data you’re sending, helping you catch mismatches before they impact deliverability.
DKIM failure isn’t always obvious—sometimes it’s just a low inbox rate or a bounce. But the root cause can be a simple mismatch in the h= tag. Testing with real-world conditions ensures your messages are both secure and deliverable.
How to Verify DKIM h= Tag with Uncanonicalized Headers Using Online Tools
You can verify the DKIM h= tag with uncanonicalized headers by uploading the raw email source to a tool that shows both the original headers and the DKIM signature separately. Extract the header fields listed in the h= tag from the DKIM-Signature header, then check that each one matches exactly—spelling, case, and spacing—with the actual header names in the raw message. Tools that expose signature inputs allow manual alignment checks, which is critical when headers are sent uncanonicalized. Use RFC 6376, the standard for DKIM, as a reference for header canonicalization rules.
Use Tools That Show Raw Headers and DKIM Signature Separately
Not all tools let you inspect the raw message and the DKIM signature in isolation. You need one that preserves the original header structure. Send a test email through an SMTP service like SendGrid or Mailgun, and ensure headers are not altered or reordered during transmission. This ensures the h= tag reflects the actual header names sent, not a canonicalized version.
Step-by-Step Verification Process
- Obtain the raw email source — Save the complete message including headers and body from your email client or SMTP service. Avoid using tools that auto-rewrite headers during export.
- Find the DKIM-Signature header — Locate the
DKIM-Signatureheader in the raw source and copy its full value. Look for theh=tag inside it, which lists the headers involved in the signature. - Compare header names exactly — Check every field listed in the
h=tag against the raw message headers. Case matters.From:is not the same asfrom:. Spelling and spacing must match precisely. - Confirm presence and order — The headers must appear in the exact order specified in the
h=tag. DKIM signing is sensitive to header order, even if the canonicalization method is uncanonicalized. - Verify signature computation inputs — Use a tool that lets you see how the signature was computed. Tools like those from the IETF or Spamhaus explain how header canonicalization impacts signature validation.
Manual verification helps catch issues early. For instance, if a custom header like X-Tracking-ID is listed in h= but never sent, the signature fails. Similarly, if the Subject: header arrives as subject: due to case sensitivity, DKIM validation will reject the message.
Even minor mismatches in header names or case can break DKIM alignment — the signature computes over exact byte values.
For teams doing bulk email sends, use a service that supports real-time DKIM verification. MailTester’s email checker validates sender infrastructure and flagging issues like malformed DKIM setups before they hurt deliverability.
Common Pitfalls When Testing DKIM with Uncanonicalized Headers
When testing DKIM with uncanonicalized headers, you risk false passes if your tool normalizes header names, collapses whitespace, or skips custom fields. Real DKIM validation requires comparing the exact raw header list as sent—no auto-lowercasing, no hidden reformatting. Tools that hide the raw header comparison aren't verifying DKIM correctly.
Don’t assume automatic normalization is safe
- You must verify the raw, uncanonicalized header list exactly as the server received it—DNS and MTA-level processing don’t reformat headers.
- Many online DKIM tools assume that all headers are normalized (e.g., lowercase keys, cleaned whitespace) before validation, which is the opposite of how DKIM works in practice.
- Use a tool that shows the original header structure and lets you inspect each header line as sent—this is the only way to verify uncanonicalized signing.
Watch for hidden reformatting and missing headers
- Some tools reformat headers before validation—automatically lowercasing names or collapsing whitespace—which breaks the DKIM signature check.
- Custom headers like
X-Tracking-IDorMessage-IDare often excluded from theh=tag but are still part of the signed payload in uncanonicalized mode. - If your
h=tag omits these, the signature will fail—even if the rest of the email is correct. Always double-check the full header list listed inh=. - Don’t trust a tool that claims to “validate DKIM” if it doesn’t show the raw header comparison—some tools only verify the signature digest, not the actual header canonization.
For testing the true state of your DKIM setup, especially with custom headers or uncanonicalized mode, inspect the raw message as received. The MailTester Inbox Placement tool lets you test end-to-end delivery and verify header handling in real mail servers, giving you insight into how your DKIM signature holds up in practice—even with nonstandard header handling.
DKIM requires exact header matching. Variations in capitalization, spacing, or order break verification. This is enforced by RFC 6376 and RFC 6377.
What to Look for in a Tool That Supports Uncanonicalized DKIM Testing
You need a tool that shows the exact header list as sent—no changes, no reordering, no normalization. It must expose the raw DKIM-Signature header, including the h= and b= values, so you can validate them against the original message. The tool should not auto-correct header names or values, and it must allow testing with custom headers like X-Client-ID or X-Track-UID without filtering or rewriting them.
Key Features to Confirm
- Display the full, unmodified header list exactly as sent, including whitespace, line breaks, and spacing.
- Show the complete
DKIM-Signatureheader, with theh=tag listing the exact header names used during signing. - Let you inspect the
b=value without applying any algorithmic reprocessing or trimming. - Preserve header name case and spacing (e.g.,
From:vsfrom:)—no automatic lowercasing or trimming. - Allow testing with non-standard header names (e.g.,
X-Client-ID,X-Track-UID) without filtering or rewriting them. - Not auto-correct or normalize header values—even for headers like
DateorFrom—since DKIM relies on exact byte-level matches.
Why This Matters
DKIM validation fails if the header list doesn't match exactly. RFC 6376 mandates that the header list used in signing must be identical to the one used in verification, down to spacing and line endings. Tools that normalize or reorder headers give false positives. For example, a header like X-Track-UID: abc123 must appear exactly as sent, or the signature checks as invalid. You can’t rely on tools that reformat headers under the assumption they’re “equivalent”—they’re not, in DKIM’s eyes.
Some tools use heuristic normalization for readability, but this breaks the test. You should only use tools that let you validate against the actual wire-level data. For this reason, it's better to verify DKIM with tools that expose the full raw message, not just the canonicalized version.
When testing DKIM with custom headers or non-standard mail systems, the only reliable way to verify correctness is to see the exact input as sent. Real-world tools should reflect this, not enforce assumptions.
For teams testing DKIM in complex or legacy environments, this level of transparency is essential. The tool you choose should treat uncanonicalized data as the default, not an optional feature. You’re not debugging a template—you’re validating cryptographic integrity.
How MailTester Helps You Verify DKIM h= Tags with Uncanonicalized Headers
You can verify DKIM h= tags with uncanonicalized headers using MailTester by uploading the raw email or calling the API—no header normalization occurs. The tool displays the exact DKIM-Signature header and the original header list as sent, so you can manually check if each header in h= matches in name, case, and formatting, including any custom or non-standard headers. This transparency helps identify mismatches caused by typos, wrong casing, or missing fields.
See What Was Actually Sent — No Hidden Changes
Unlike tools that auto-normalize headers (e.g., converting all to lowercase or reordering), MailTester shows the raw message exactly as received. The DKIM signature and the h= list appear intact, preserving original case, spacing, and order. This is critical when validating signed emails against RFC 6376, which requires that the header list match the one used during signing—no substitutions, no simplifications.
Let’s say a header like Received-SPF is in your h= list. MailTester displays it exactly as it appears in the raw email. If the actual header is Received-Spf (lowercase 'p'), the mismatch is immediately clear. You don't need to guess whether your tool altered the case or whether the signature was generated incorrectly.
Spot Issues Faster with AI Help
When a header doesn't match, the in-app AI assistant helps you diagnose common root causes. It may flag issues like a missing header, a typo (e.g., X-Message-ID vs X-Message-Id), or incorrect ordering in the h= list. These are frequent, subtle errors that cause DKIM failures even if the signature itself is valid.
MailTester does not rewrite or simplify the input. What you upload is what you analyze. This approach aligns with industry standards such as those in RFC 6376, which defines DKIM's canonicalization rules and emphasizes that the signed header list must remain unaltered during verification.
If you're validating bulk email sends or testing sender reputation, accuracy in header verification is non-negotiable. You can validate individual addresses via MailTester’s email checker or run larger validations through the bulk verification tool. For automated workflows, the API supports exact header comparisons for every message.
Why Testing with Real, Unchanged Headers is Critical for Deliverability
You must test DKIM signatures using the exact, unmodified header list your email server sends—because receiving mail systems apply DKIM verification to the real headers, not cleaned or normalized versions. If the header order, naming, or spacing differs even slightly from what was signed, the signature fails, and your email may be rejected or marked as spam. This isn’t theoretical: misaligned headers are a common reason for DKIM failures, even when everything else is configured correctly.
Receiving servers don’t normalize headers
Unlike some processing tools, mail servers do not rewrite or standardize header names or order during DKIM validation. The signature is computed based on the precise headers sent, including spacing, line breaks, and capitalization. Even a single space added where one wasn’t expected can invalidate the signature.
Consider this: if you use a tool that automatically sorts headers, collapses whitespace, or converts names to lowercase before testing, you're simulating a different message than what actually leaves your server. The result? A "successful" test that means nothing in the real world.
One failure breaks the chain
A DKIM failure, even in a single message, can harm your sender reputation over time. Receiving providers track consistent validation failures as signs of poor mail hygiene, which can lead to increased filtering, rate limiting, or outright blocking.
It's not just about the technical check. A failed DKIM can cascade into broader deliverability issues—especially when combined with poor SPF or DMARC alignment, or if the message lands in spam folders consistently. The impact is cumulative, and the root cause is often overlooked because testing tools didn’t surface the real header issue.
That’s why tools that alter input—whether by normalizing, reordering, or simplifying headers—mislead you. They produce a false sense of security. Testing with your actual, raw headers ensures the verification matches the real-world environment.
With MailTester’s inbox placement and email verification tools, you can check whether your messages pass DKIM validation in realistic, production-like conditions—without artificial normalization. You’ll verify not just the address, but the full delivery path, including header fidelity and authentication alignment.
Run a deliverability test with your real headers and see how your message performs in a live inbox environment.
What to Do When DKIM Verification Fails with Uncanonicalized Headers
If your DKIM verification fails due to an uncanonicalized header list, the likely culprit is a mismatch between the headers listed in the h= tag and the actual headers in the message. Confirm that every header in h= appears exactly as sent—same case, spacing, and order—and that no custom or missing headers were omitted. Use a real-time verifier like the MailTester API to catch these issues before sending bulk mail.
Step-by-step fixes for uncanonicalized header issues
- Review the
h=tag in the DKIM-Signature header — check the list of field names exactly as they appear. If the signature includesfrom:subject:date, then those three headers must be present and match precisely. Even a single missing or misnamed header breaks verification. Use RFC 6376 (Section 3.5) as a reference for how DKIM header canonicalization works [RFC 6376]. - Compare every header listed to the raw message — open the raw email (in MIME format) and check the exact field names, capitalization, and spacing. For example,
From:is not the same asfrom:for signature verification. Spelling errors likerecepientor extra spaces in header names will cause DKIM to fail. - Ensure no custom or non-standard headers are missing — if your email includes headers like
X-Message-ID,Precedence, or any other custom field, including them in theh=list is mandatory. DKIM requires the complete header list used in signing to match exactly during verification. - Re-sign the message using the exact header list — if you're generating the signature programmatically, double-check that the header list used for signing is identical to the list sent. Use tools that preserve header order and case. Even small changes during transport (like auto-adding a
Delivered-Tofield) can break canonicalization if not accounted for. - Validate with MailTester’s real-time API before sending — integrate the MailTester verification API into your send workflow. It checks not just syntax but the full signature path, including header canonicalization. This catches issues early, especially in bulk mail campaigns, helping you avoid delivery failures and sender reputation damage.
Why consistency matters
DKIM relies on strict header formatting. An uncanonicalized header list means the receiving server can't reproduce the canonical form used during signing. This triggers rejection. According to industry data, improperly signed messages have meaningfully higher bounce and spam rates—even if content is clean. Always verify the header list before finalizing the signature.
Final Thoughts: How to Improve Your DKIM Implementation
DKIM signatures depend on exact header formatting. Even small deviations in header order or normalization can cause verification failures. Always test with uncanonicalized headers to ensure your signature matches the raw message sent.
Use Tools That Preserve the Original Message
Tools like MailTester process raw email headers without auto-normalization. They show you the exact header list used during signing, which is essential for diagnosing mismatches and validating DKIM correctness.
Automate and Standardize for Scale
For high-volume senders, automate header validation in your email pipeline. Ensure consistent header naming and ordering across campaigns to reduce variability and improve deliverability over time.
Sources
- DMARC adoption among top domains surged 75% between 2023 and 2025 — from 27.2% to 47.7% — in the wake of Google and Yahoo's bulk-sender authentication requirements. — EasyDMARC 2025 DMARC Adoption Report (2025)
- Since May 5, 2025, Microsoft Outlook requires SPF, DKIM, and DMARC from domains sending 5,000+ emails per day, rejecting non-compliant mail outright at the SMTP level with error 550 5.7.515. — Microsoft Outlook requirements (via MailOver bulk-sender requirements guide) (2025)
Keep reading
- Email authentication: SPF, DKIM, DMARC, BIMI and MTA-STS (complete guide)
- How to Update DNS DKIM Record to Remove rsa-sha1 Dependency
- How to Avoid DKIM Rejection by Escaping Colons in Email Headers
- Why Does SPF Include Fail When Target Domain Has DNSSEC Enabled?
- Tools for Validating SPF and DMARC Alignment in 2026
Ready to put this into practice? MailTester verifies emails with 98.9% accuracy — start with 100 free verifications.
Frequently asked questions
What does DKIM h= tag do?
It lists the exact header names used to compute the DKIM signature hash. If any listed header is missing, misspelled, or out of order, verification fails.
Why is uncanonicalized header testing important for DKIM?
Receiving servers use the headers exactly as sent — no normalization. Tools that alter header names can give false positives.
Can tools like MailTester help verify DKIM with uncanonicalized headers?
Yes. MailTester preserves raw headers and shows the exact list in the DKIM-Signature h= tag, enabling manual validation without modification.
What happens if the h= tag doesn’t match the actual headers?
DKIM verification fails, which may result in email rejection or delivery to spam folders, harming sender reputation.
How do I test DKIM headers without altering them?
Use tools that display raw message sources and don’t apply normalization. MailTester is designed for this — it shows headers exactly as sent.
Do email providers apply canonicalization before DKIM verification?
No. They verify DKIM using headers exactly as received, with no preprocessing or formatting changes.
Is DKIM h= tag validation necessary with every email send?
Yes, especially for bulk or transactional mail. Testing before sending helps avoid deliverability failures.
Can a missing custom header cause DKIM to fail?
Yes. If the custom header is included in the h= tag but not sent, verification will fail. Ensure all listed headers are present.
What’s the benefit of testing DKIM h= tag with real tools?
It prevents avoidable bounces and inbox placement issues by ensuring signatures align with actual message content.
Does MailTester support bulk DKIM header testing?
Yes. Use the bulk verification feature with raw email sources to test DKIM alignment across multiple messages at scale.
Why does MailTester claim 98.9% accuracy?
Because it validates email data using real SMTP checks, not just syntax. This includes testing DKIM integrity with uncanonicalized headers.
Can I use MailTester’s API for DKIM header verification?
Yes. The real-time API allows you to send raw message sources and receive detailed DKIM validation results, including header alignment.