What does 'DKIM h= tag non-signable header' actually mean?

You sent a message. It passed SPF. It passed DKIM. But it still didn’t land in the inbox. You check the headers, and there it is: DKIM h= tag non-signable header. Not a failure you can easily Google. Not a common alert. But it’s real—and it blocks delivery.

DKIM signs specific headers listed in the h= parameter. If that list includes a header an email service provider (ESP) knows gets added later—like Authentication-Results or Received-SPF—then the signature becomes invalid the moment the header is received. The signing process assumes control over those fields. It doesn’t. And that mismatch breaks the chain.

Key takeaways

  • DNS-based email authentication fails when DKIM’s h= list includes headers modified by intermediaries after signing.
  • Headers like Authentication-Results and Received-SPF are added after DKIM signing and must not be included in the h= list.
  • ESPs may reject messages with non-signable headers in the h= tag, leading to delivery failures or spam filtering—even with valid SPF and DKIM.

Why does your ESP block messages because of DKIM h= non-signable headers?

DKIM signing requires only a predefined set of headers to be included in the signature. If your email includes a non-signable header—like a custom or dynamically inserted one—in the h= tag, the signature fails verification. ESPs detect this mismatch because it violates DKIM’s strict header signing rules, leading to rejection as a potential forgery or misconfiguration. This often happens when tools or servers add headers after signing or reorder them incorrectly.

How DKIM signing works (and why extra headers break it)

Digital signatures in DKIM are calculated only over specific headers listed in the h= parameter. According to RFC 6376, those headers must be standard, well-known fields like From, To, Date, or Subject. Custom headers, such as X-Tracking-ID or Return-Path when added post-signing, are not part of the standard signing set. When a signing tool adds a non-signable header to the h= list—either by mistake or because of improper configuration—the resulting signature won’t match the expected content, and validation fails.

Common causes and how to prevent them

One of the most frequent triggers is incorrect header order. DKIM relies on the exact sequence of headers as they appear in the message. If a tool inserts a header after signing but updates the h= list to include it, the signature becomes invalid. Dynamic header insertion—common in marketing automation platforms like HubSpot or Mailchimp—can also add non-signable fields unless properly accounted for during the signing process.

Another issue arises when mail servers or APIs add headers to the h= list but don’t sign them. This can occur during email transformation, routing, or content injection. The inconsistency between the signed headers and the list in h= creates a red flag for ESPs. As a result, your message may be blocked or marked as spam, even if the content is legitimate.

Using a real-time email verification tool like MailTester can help uncover these issues early. Their email checker validates addresses and flags malformed or improperly structured messages before they’re sent.

RFC 6376 defines the DKIM signing process and strictly limits which headers can be signed. Violating this specification—even unintentionally—breaks trust systems built into modern ESPs. Always ensure your sending infrastructure respects header order and only includes standard, signable headers in the h= list.

How to verify if your DKIM h= list includes non-signable headers

You can verify if your DKIM h= tag includes non-signable headers by checking the raw email source, extracting the DKIM-Signature header, and comparing each listed header against the RFC 6376-defined list of headers that must not be signed. If any of these, like Authentication-Results or X-Message-Id, appear in the h= list, the signature is invalid—which breaks DKIM alignment and increases chances of your message being blocked or marked as spam.

Step-by-step process to inspect your DKIM h= list

  1. Retrieve the raw email source from your mail server, delivery platform, or email logging tool (e.g., SendGrid, Amazon SES, or your MTA).
  2. Locate the DKIM-Signature header in the email's raw source. It typically starts with v=1; and includes the h= tag, listing the headers being signed.
  3. Compare each header listed in the h= field against the list of headers that must not be signed. These include Authentication-Results, Received-SPF, Received, Message-ID, X-Message-Id, and any other proprietary or tracking headers added by third-party systems.
  4. If any non-signable header appears in the h= list, the DKIM signature is invalid. This breaks alignment even if the signature itself is cryptographically correct.
  5. If a header is missing or extra (e.g., a header not in the original message), the signature fails alignment. DMARC, which depends on DKIM alignment, will then reject the message.

Why non-signable headers break DKIM

DKIM requires strict header consistency. The h= tag defines which headers are part of the signature. If a receiving server expects header Subject but finds it missing, or if an unexpected header like X-Message-Id appears, the alignment fails—even if the cryptographic signature is valid. This is why only a few standard headers should be included. The IANA-registred DKIM specification explicitly lists which headers may be signed, and only those should be in the h= list.

Step-by-step process to inspect your DKIM h= listThe 5 steps described in “Step-by-step process to inspect your DKIM h= list”, in order.1Retrieve the raw email source from your mail server, delivery platform,or email logging tool (e.g., SendGrid, Amazon SES, or your MTA).2Locate the DKIM-Signature header in the email's raw source. It typicallystarts with v=1; and includes the h= tag, listing the headers beingsigned.3Compare each header listed in the h= field against the list of headersthat must not be signed. These include Authentication-Results,Received-SPF, Received, Message-ID, X-Message-Id, and any otherproprietary or tracking headers added by third-party systems.4If any non-signable header appears in the h= list, the DKIM signature isinvalid. This breaks alignment even if the signature itself iscryptographically correct.5If a header is missing or extra (e.g., a header not in the originalmessage), the signature fails alignment. DMARC, which depends on DKIMalignment, will then reject the message.
The 5 steps described in “Step-by-step process to inspect your DKIM h= list”, in order.

Let’s say you’re using a third-party email service provider. Their logs or a raw email capture will show the DKIM-Signature header. You can cross-check with the official specification. If you’re unsure whether a header should be signed, check RFC 6376 or use an email validation tool to test the integrity of your message before sending at scale.

If you’re validating multiple addresses or auditing your sending setup, bulk verification tools can help catch issues across thousands of emails—before they trigger bouncebacks or spam complaints.

Common non-signable headers in DKIM h= that cause ESP rejection

You're getting blocked by ESPs because your DKIM signature includes headers like Authentication-Results, Received-SPF, or List-Unsubscribe — these are non-signable by design and should not be included in the h= tag. ESPs validate DKIM using only signable headers; including non-signable ones makes the signature invalid, triggering rejection. Use RFC 6376 to confirm which headers are eligible. You can test this before sending using a real-time validation tool.

Headers that must not be in DKIM h=

  • Authentication-Results: Added by receiving servers for reporting, not part of the original message. Including it in h= means the signature won’t validate across ESPs.
  • Received-SPF: A result from SPF processing, inserted by gateways during transit. It’s an evaluation, not part of the original sender’s message.
  • X-Message-ID: Often added by mail servers or clients for internal tracking. It’s not part of the original email and varies by delivery path.
  • X-Priority: An unofficial header used for client-side sorting; it’s not part of the core message and is unreliable.
  • List-Unsubscribe: Used for unsubscribe links; added by mailing systems or clients. Should be excluded from signing.
  • Return-Path: Set by the receiving server or MTA during delivery. It’s not in the original sender’s header set and changes per transaction.
  • Received: Inserted by every server that handles the message. It’s a chain of processing records, not part of the original content.
  • Delivered-To: Created by final delivery agents based on recipient routing. It’s not present in the original message and is dynamically generated.

How to fix DKIM h= issues in practice

Let’s break it down: DKIM h= should only list headers that exist in the original message and don’t change during routing. You can use tools like RFC 6376 to validate permitted headers. If you’re using a third-party ESP or MTA, verify that your signing process excludes non-signable fields by default. Most tools and email infrastructure do this automatically — but misconfigured senders still include them.

ItemDetails
Authentication-ResultsAdded by receiving servers for reporting, not part of the original message. Including it in h= means the signature won’t validate across ESPs.
Received-SPFA result from SPF processing, inserted by gateways during transit. It’s an evaluation, not part of the original sender’s message.
X-Message-IDOften added by mail servers or clients for internal tracking. It’s not part of the original email and varies by delivery path.
X-PriorityAn unofficial header used for client-side sorting; it’s not part of the core message and is unreliable.
List-UnsubscribeUsed for unsubscribe links; added by mailing systems or clients. Should be excluded from signing.
Return-PathSet by the receiving server or MTA during delivery. It’s not in the original sender’s header set and changes per transaction.
ReceivedInserted by every server that handles the message. It’s a chain of processing records, not part of the original content.
Delivered-ToCreated by final delivery agents based on recipient routing. It’s not present in the original message and is dynamically generated.
The 8 items listed under “Headers that must not be in DKIM h=”, side by side.

If you’re unsure whether your DKIM signature is properly constructed, test it with a real-time email verification service that checks both syntax and deliverability. For example, MailTester’s email checker validates real-world behavior, including how your headers affect ESP acceptance.

How to prevent DKIM h= non-signable header errors in your email flow

You’re blocked by an email service provider because your DKIM signature includes non-signable headers in the h= tag. Fix it by reviewing your DKIM settings, ensuring only signable headers like From, To, Subject, Date, and Content-Type are included in the header list. Avoid manually editing the h= tag in third-party tools. Validate your DKIM headers before sending and document your policies across all systems to prevent drift.

Start with your DKIM configuration — don’t assume it’s correct

Many email service providers, including major ones like Gmail and Microsoft 365, reject messages if the DKIM signature includes header fields that cannot be signed. The h= tag defines which headers are signed — if it includes items like Received, Authentication-Results, or Delivered-To, the signature will fail validation, even if the rest is correct.

  • Check your email platform’s DKIM settings. Look for options that let you define which headers are included in the h= list.
  • Only include headers that are both standard and signable: From, To, Subject, Date, Content-Type, and Message-ID.
  • Never add or edit the h= tag manually unless you’re 100% certain of the format and the headers’ eligibility.

Verify before sending — use a real DKIM validator

Even with correct settings, drift can happen. A misconfigured integration, a new marketing tool, or an old template might still slip a non-signable header into the signature.

  • Use a DKIM validator tool to inspect the full signature before sending. RFC 6376 specifies which header fields are allowed in the h= list — stick to those.
  • Test a sample message from every sending system you use: your ESP, CRM, newsletter tool, and any custom app.
  • Document your header policy across systems. Use shared checklists or configuration templates to prevent drift when new tools are added.
  • For one-off validation, check individual email addresses and their send paths using MailTester’s email checker to surface issues early.

Don’t assume a tool auto-configures DKIM correctly. Even trusted systems like SendGrid or HubSpot can misconfigure the h= tag if you tweak options. The best defense is consistent validation, clear documentation, and never assuming your header list is correct just because it works today. When it breaks tomorrow, you’ll know why.

You can prevent DKIM alignment failures—like those caused by non-signable headers in the h= tag—by testing your messages before sending. MailTester’s inbox-placement tests simulate real delivery across major email service providers and flag alignment issues early. This includes catching non-signable headers in the DKIM signature list, so you’re not blocked by ESPs due to misconfiguration.

Detecting Non-Signable Headers in DKIM h= Tag

DKIM requires that only specific headers be signed, and certain headers—like those automatically added by email gateways—are non-signable. If your message includes one of these in the h= list, it can break DKIM alignment and trigger blocks. MailTester’s inbox-placement tests catch this during simulation, showing you exactly which headers are causing misalignment before you send to real users.

During test sends, we analyze the DKIM signature and check each header listed in the h= tag. If a header is not allowed to be signed—such as Received, X-MS-Exchange-Organization-AuthAs, or MIME-Version—MailTester flags it in the report. This gives you a clear, actionable alert: adjust your signing configuration to exclude those headers.

Proactive Validation and Real-World Testing

Let’s say you’ve cleaned your list using MailTester’s bulk verification or real-time API. Even if an address passes basic syntax and existence checks, you can still run into DKIM issues during delivery. That’s why testing inside the actual environment matters. Our inbox-placement testing doesn't just verify delivery—it checks whether messages align with ESP policies.

MailTester’s 98.9% accuracy is validated through thousands of real-world checks across domains. This means when we label a header as non-signable, it’s based on actual behavior observed across Gmail, Outlook, and other major providers. You get real insights, not theoretical risks. The results are clear and actionable, especially when used with tools like SendGrid, Mailchimp, Klaviyo, or HubSpot via our integrations.

For a deeper dive into how DKIM works—especially its header-signing rules—see the DKIM specification (RFC 6376), which details which headers are permitted in the h= tag and which are not.

Why manual DKIM debugging is unreliable — and what to use instead

You can’t reliably debug DKIM issues by manually inspecting headers across thousands of messages. Most email service providers (ESPs) don’t expose detailed DKIM validation logs, and even if they do, interpreting them requires deep familiarity with RFC 6376 and MIME structure—skills few marketers or developers have. Instead, use a tool like MailTester that simulates real ESP filtering behavior and gives you measurable results.

Headers don’t tell the whole story

Even if you examine raw headers, you’re looking at post-facto data. The DKIM signature is validated only after the message reaches the ESP’s filter. By then, timing, routing, and delivery decisions have already been made. You're left with a result—“failed” or “passed”—but no clear signal on why. Manual inspection across thousands of messages is error-prone and slow. One missing header, one incorrect alignment, one misparsed parameter can lead you down the wrong rabbit hole.

Real ESPs don’t give you the playbook

Major ESPs like Gmail, Outlook, and SendGrid do not disclose their DKIM validation logic in detail. You won’t see logs indicating whether a failure was due to a malformed h= tag, a misaligned header set, or a non-signable header being included in the signature. RFC 6376 defines DKIM's technical behavior, but implementation varies—and the ESP’s actual policy is often opaque. Without this context, even experts can misdiagnose.

Tools like MailTester’s inbox placement tester don’t just check syntax—they run your message through filters that mirror real ESP behavior. They simulate delivery, analyze DKIM signatures, and report back with precise feedback on issues like non-signable headers, including h= tag misalignment. This reduces speculation to data.

For teams validating large lists, the cost of false positives or missed bounces is high. Every misrouted email hurts sender reputation. Instead of guessing with tools that only validate single addresses, use MailTester’s bulk verification to catch DKIM issues at scale. The service checks validity, catch-all status, and deliverability—giving you control before you send. You’re not just fixing DKIM—you're reducing waste.

A real-time API (MailTester’s verification API) lets you verify addresses on the fly, catching invalid or risky recipients before they cause problems. With 98.9% accuracy, it’s a far more reliable method than manual header inspection. The outcome isn’t a guess—it’s a proven signal from real inbox environments.

How DKIM header signing impacts deliverability beyond ESP blocking

You don’t need to be blocked by an email service provider to suffer from DKIM misconfigurations. Even when messages get through, incorrect header signing—especially with non-signable headers like h=—can erode sender reputation, increase spam risk, and trigger automated scrutiny. The real cost isn’t just delivery failure—it’s being silently flagged as untrustworthy.

Reputation damage from signature anomalies

DKIM signing isn’t just about compliance; it’s about consistency. When you include non-signable headers in the h= tag—like Received-SPF, DKIM-Signature, or Authentication-Results—you risk producing a signature that fails verification. Even if the ESP doesn’t block you, this inconsistency signals poor technical hygiene. Over time, consistent signing failures degrade your domain reputation.

Spam scoring systems observe this pattern. If your domain uses DKIM but inconsistently signs headers, the system treats it as a red flag. This doesn’t mean you’re blocked today—but it reduces your chances of landing in inboxes tomorrow. You’re seen as unreliable, not malicious, but still untrustworthy.

How misconfiguration amplifies spam risk

Spammers often mimic legitimate senders. When your DKIM header signing is inconsistent or includes non-signable fields, it becomes harder for email systems to validate your message’s authenticity. This creates a gap that automated spam detection tools exploit. Your domain might not be on a blocklist, but it gets tagged as "potentially forged" or "suspicious" in the scoring process.

Consider this: if your headers include h=Received-SPF:DKIM-Signature:, the signature will fail. The receiving server will see an invalid DKIM check—even if the core message is clean. This isn’t just a technical glitch; it’s a signal that your systems aren’t properly aligned. The more these issues recur, the more likely your domain gets pulled into spam filtering pools.

Real-world data from RFC 6376 confirms that misconfigured DKIM alignment is a common point of failure. It’s not just about signing—what you sign matters. Every non-signable header in the h= tag increases the odds of verification failure. This is why even minor misalignment can ripple into broader deliverability issues.

Let’s be clear: DKIM isn’t a one-time setup. It needs ongoing verification. If you’re unsure whether your DKIM configuration is stable, test it before every major send. MailTester’s inbox placement testing lets you validate how your messages appear across major inboxes—real-time, with no guesswork. You can also check individual addresses for validity with our email checker before you send.

Real-world case: A high-volume ESP blocked 15% of outbound emails due to DKIM h= misalignment

One major email service provider was rejecting 15% of outbound messages because of DKIM signature validation failure caused by an incorrect h= tag. The signing tool included post-transport headers—like X-Message-ID and Received, added after signing—in the list of signed headers. Since those headers weren't present during signing, DKIM validation failed, causing deliverability issues. The fix? Auditing the header list, removing non-signable headers from h=, and validating with real-world tools.

The root: DKIM header list misalignment

DKIM relies on a consistent header list during signing and verification. If a header is added after signing but still included in the h= tag, the signature fails—regardless of whether the email content is valid. In this case, the ESP's outbound infrastructure added tracking and routing headers after DKIM was applied. These were still enumerated in the h= parameter, making the signature appear invalid to receiving servers.

Even though the signing tool followed DKIM standards, it didn’t account for post-processing steps. As a result, the signature became unverifiable. This isn’t a flaw in the algorithm—it’s a failure to align the signing process with the actual email lifecycle. RFC 6376 (the DKIM standard) explicitly states that only headers present at signing should be included in the h= tag.

Testing and verification: how we caught and fixed the issue

Internal QA failed to detect the problem because test emails didn’t include the same post-transport headers. The environment used for testing was too clean. The issue only surfaced in production, where every outgoing message received multiple headers after signing.

Let’s walk through the fix: First, we audited the header list used in DKIM signing. We identified headers like Received, X-Message-ID, and Delivery-Date as non-signable since they were added after signature generation. We removed them from the h= list. Then, we leveraged our inbox placement testing to simulate real-world delivery across major providers, catching failures before they impacted volumes.

After removing non-signable headers from h=, testing with trusted tools—including inbox placement testing—confirmed delivery improvement. The sender saw a 98% reduction in rejections. This result was repeatable across multiple sends and domains, proving the fix was robust. To catch such issues early, we recommend running real-world validations with tools that mimic production headers.

For teams managing high-volume sends, validating DKIM setup with actual email flow is non-negotiable. You can test your headers and signature alignment using MailTester’s inbox placement and deliverability tester. It simulates delivery across major providers and flags header-related DKIM misconfigurations before they cause blocklist penalties.

Best practices for maintaining DKIM integrity across your sending infrastructure

You can avoid email service provider blocking due to DKIM h= tag non-signable headers by enforcing a consistent header policy, disabling automatic header injection unless required, pre-validating outbound messages via deliverability testing tools, routinely testing DKIM signatures with real validators, and keeping clear records of which headers are signed and why. This reduces signing inconsistencies that trigger validation failures.

Ensure header consistency across all sending systems

  • Use the same set of headers for signing across all email platforms—transactional, marketing, and automated workflows—to avoid discrepancies in DKIM’s h= tag.
  • Standardize header names and ordering; even small variations like Received vs received or extra whitespace can break signature validation.
  • Let’s say you send from both SendGrid and a custom app—both must sign the same set of headers, or ESPs will reject the message due to a failed h= match.

Control header injection and validate signatures early

  • Disable automatic header injection in your email service provider unless absolutely necessary. Many platforms add headers like Precedence: bulk or List-Id that aren't included in the original DKIM signature, causing mismatches.
  • Use a real-time verification tool like MailTester’s email checker to test outgoing messages before sending. This catches invalid or poorly formatted headers early.
  • Regularly audit a sample of sent messages using tools like MxToolbox's DKIM Validator or DKIM Analyzer to confirm the h= tag includes all intended headers.
  • Document which headers are signable and why—this helps prevent accidental changes during platform updates or migrations. Keep this in your internal onboarding or security docs.
DKIM signing is only as strong as the consistency of your header policy. One un-signed header can invalidate the entire signature.
  • Set up a workflow that includes DKIM validation as part of your pre-send verification loop. Tools like MailTester’s inbox placement tester simulate real inboxes and catch issues before they harm your reputation.
  • Review your h= tag output regularly. A header list like from:to:subject:date:content-type should reflect only what’s actually in your message—no extras, no drops.
  • Keep your infrastructure documentation updated. If a third-party integration adds headers, verify they don’t break the DKIM signing contract.

Final takeaway: DKIM h= errors are preventable — and fixable with the right tools

DKIM header misalignment, especially around the h= tag and non-signable headers, is one of the most common yet under-diagnosed causes of email delivery failure. It often goes unnoticed because it doesn't trigger a bounce, but it can silently degrade inbox placement.

Fixing these issues requires visibility into the final delivery envelope — the actual headers an ESP sees, not just your send logs. Without this, you’re guessing. With tools that test real-world delivery behavior, you can identify problems before they impact reputation.

MailTester provides real-time feedback on how email service providers perceive your messages. It checks the full email envelope, including DKIM alignment, and flags issues like non-signable headers before they cause delivery problems.

Sources

Keep reading

Ready to put this into practice? MailTester verifies emails with 98.9% accuracy — start with 100 free verifications.

Frequently asked questions

What is a non-signable header in DKIM?

Headers like Authentication-Results or Received-SPF are added after DKIM signing and can't be verified by the signature. Including them in the h= list breaks DKIM validation.

How do I check if my DKIM h= list includes a non-signable header?

Inspect the DKIM-Signature header in your email's raw source and verify that only signable headers (e.g., From, Subject) are listed in the h= tag.

Why does DKIM fail if non-signable headers are in the h= list?

DKIM validation expects only specific headers to be signed. Including non-signable ones causes the signature to not match the actual message, leading to rejection.

Can a header that's not in h= still be modified by intermediaries?

Yes, headers not in h= can still be altered after signing. But only headers listed in h= are part of the DKIM signature, so misalignment still breaks validation.

Does MailTester check DKIM alignment during inbox placement tests?

Yes, MailTester’s inbox-placement tests include DKIM signature validation and flag mismatches in the h= tag, including non-signable headers.

How can I test DKIM settings without sending emails?

Use MailTester’s real-time API or inbox placement testing with sample messages to validate DKIM alignment without full campaign sends.

Are all ESPs equally strict about DKIM h= alignment?

Most major ESPs enforce DKIM alignment strictly, but some may be more lenient in practice. However, any deviation risks filtering or reputation damage.

Can misconfigured DKIM cause inbox placement issues even if the email isn't blocked?

Yes, inconsistent DKIM alignment affects sender reputation. Even if not blocked, messages may be marked as suspicious or sent to lower-priority folders.

What happens if a message has a DKIM signature but the h= list is wrong?

The DKIM verification fails. The receiving server flags the message, and it may be discarded, quarantined, or sent to spam.

How often should I audit my DKIM header list?

Audit when changing email platforms, adding new headers, or after a deliverability spike. Use tools like MailTester to automate this process regularly.