DKIM Replay Attacks: Mechanics, Detection and Defences (RFC 6376 section 8.6)

A focused deep dive on DKIM replay attacks defined by RFC 6376 section 8.6 as a known limitation of the DKIM design: what a replay attack IS (capture a legitimately signed message and re-send it byte-for-byte to a new recipient list), WHY DMARC by design does not stop it (the replayed message still passes DKIM and is still aligned with the From: header), the canonical four-step attack mechanics, the high-profile real-world disclosures and the February 2024 gmail / yahoo bulk-sender response, the four attack-vector taxonomy, detection signals at the original sender (DMARC RUA aggregate-report volume disparity is the strongest), the seven canonical defences (short DKIM signing-key lifetimes, short DNS TTLs, following the IETF DKIM2 drafts, per-recipient-domain rate limiting, outbound-volume anomaly detection, detection of duplicated signatures at the receiver, sender-aligned ESP rate-limit policies), and an FAQ for the questions operators ask most often when they suspect their domain is being replayed.

This reference is provided in English. DKIM is specified in an English-language RFC (RFC 6376) and the canonical vocabulary (body hash, signed headers, l= tag, selector, signing key, replay, ARC chain, RUA aggregate report) does not translate. We keep the body in the source language so technical terms remain consistent with the specifications.

TL;DR

  • A DKIM replay attack captures a legitimately DKIM (RFC 6376)-signed message from a high-reputation sender and re-sends the exact byte-for-byte body and signed headers to a new, attacker-chosen recipient list. The DKIM signature still verifies; DMARC alignment still passes; the message lands in the inbox under the original senders brand.
  • RFC 6376 section 8.6 names replay as a known limitation of DKIM: a message signed once can be sent again to any number of recipients and still verifies. DKIM binds a signing identity to a message body and a selected set of headers, not to a particular recipient list.
  • DMARC does not stop DKIM replay because the replayed message passes DKIM and IS aligned with the From: header. RFC 7489 sees a pass result and applies no protective policy.
  • The 2024 gmail and yahoo bulk-sender requirements (mandatory RFC 8058 one-click List-Unsubscribe, 5000-per-day DKIM / DMARC threshold, 0.3 percent spam-complaint cap) were partly an industry response to DKIM-replay weaponisation at scale - they raise the operational cost of replay-based phishing but do not close the protocol gap.
  • The seven canonical defences layer at the sender, the receiver, and the protocol: (1) short DKIM signing-key lifetimes, (2) short DNS TTLs on the DKIM public key, (3) following the DKIM2 drafts of the IETF DKIM working group, which are not yet published or deployed, (4) per-recipient-domain rate limiting at the original sender, (5) outbound-volume anomaly detection, (6) detection of duplicated signatures at the receiver, (7) sender-aligned ESP rate-limit policies.
  • The most replay-attractive content classes are high-frequency transactional mail (order confirmations, password resets, account-recovery emails) and high-reputation marketing newsletters, because their content is predictable and their sending domains have established receiver-side trust.
  • Detection happens primarily at the original sender, not at the receiver: a sudden volume disparity between your outbound logs and your DMARC RUA aggregate- report counts is the strongest replay signal.

1. Overview: what DKIM replay is and why it matters

DomainKeys Identified Mail (DKIM) authenticates email by attaching a cryptographic signature over the message body and a selected list of headers. The signing operation produces a DKIM-Signature header that includes a body hash (bh=), the list of signed headers (h=), the signing domain (d=), the selector (s=), and the signature itself (b=). The receiver fetches the public key at {selector}._domainkey.{domain}, re-computes the body hash, re-canonicalises the signed headers, and verifies that the signature matches.

The cryptographic guarantee DKIM provides is narrow but well-defined: the message body and the signed headers were produced by a holder of the private key under the named signing domain. The guarantee says nothing about who the message was intended for, when it was sent, how many copies were sent, or what envelope-recipient list it travelled under. DKIM was designed in 2007 (RFC 4871, superseded by RFC 6376 in 2011) to defend against unauthenticated forgery - an attacker who spoofs the From: but cannot sign. It was not designed to defend against authenticated replay - an attacker who inherits a legitimate signature and changes the envelope.

A DKIM replay attack exploits this gap. The attacker captures a legitimately signed message from a high-reputation sender (gmail.com, microsoft.com, paypal.com, a major bank, a major SaaS vendor) and re-submits the exact byte-for-byte message to a new SMTP envelope addressing the attackers desired victim list. Because the message bytes are unchanged, the DKIM signature still verifies at every receiver that respects DKIM. Because the original From: still aligns with the original signing domain, DMARC still passes. The message lands in the inbox under the original senders brand, even though the actual recipients are the attackers victim list rather than the originally-intended ones.

The attack matters because receivers learn over time to trust DMARC-passing mail from high-reputation domains. Mail that consistently authenticates and aligns is treated more leniently by spam filters, by anti-phishing engines, and by the receiver- side warning UI. Replay lets an attacker inherit that trust to deliver phishing, malware, or fraud lures inside the inbox under the umbrella of a trusted brand. The phishing yield per message is materially higher than for unauthenticated forgery because the brand indicator surfaces (BIMI logo, sender-name avatar, anti-phishing warning suppression) treat the message as fully legitimate.

RFC 6376 section 8.6 explicitly acknowledges this:

In this attack, a spammer sends a piece of spam through an MTA that
signs it, banking on the reputation of the signing domain (e.g., a
large popular mailbox provider) rather than its own, and then re-
sends that message to a large number of intended recipients.  The
recipients observe the valid signature from the well-known domain,
elevating their trust in the message and increasing the likelihood of
delivery and presentation to the user.

DKIM itself offers no mechanism against this. In practice, replay defence is a layered combination of sender-side and receiver-side controls; a protocol-level answer is what the IETF DKIM working group is drafting under the name DKIM2. This guide walks the canonical attack mechanics, the industry response, the per-vector taxonomy, the detection signals at the original sender, and the seven canonical defences.

2. The canonical replay attack mechanics

A DKIM replay attack follows a four-step sequence. Every step is mechanically simple; the value comes from the attackers operational discipline at scale.

  1. Step 1: Capture a legitimately signed message. The attacker registers with the target signer and causes a high-reputation transactional or marketing message to be sent to an attacker-controlled address. Common capture paths include signing up for a free trial of a SaaS product (yields a welcome email, a verification email, a first-billing email), making a small purchase at a major retailer (yields an order confirmation, a shipping notification), opening an account at a major bank or fintech (yields onboarding mail, account-statement mail), or subscribing to a high-reputation marketing list (yields the recurring newsletter). The attackers goal is a complete copy of the SMTP DATA payload including the DKIM-Signature header, every signed header, the body, and the body boundary.
  2. Step 2: Preserve the signed bytes verbatim. The attacker stores the captured message exactly. Every byte of the body, every signed header in the order the h= tag enumerates, every boundary delimiter, every character of whitespace inside signed headers. Any byte change inside the signed surface invalidates the signature, which is why the canonical attack does NOT modify the message body or signed headers - the attacker only manipulates the envelope and the bytes outside the signed surface.
  3. Step 3: Construct a new SMTP envelope. The attacker submits the captured DATA payload to an attacker-controlled MTA (a rented VPS, a compromised botnet host, a poorly-secured third-party relay). The MAIL FROM envelope-sender and the RCPT TO envelope- recipient are set independently of the signed headers. Because DKIM does not sign the SMTP envelope, the receiver has no cryptographic record of who the original signer intended to send the message to.
  4. Step 4: Fan out to the victim list. The MTA delivers the message to each address on the attackers victim list. Each receiver fetches the original signers public key, re-computes the body hash, verifies the signature, and records a passing DKIM result. DMARC sees DKIM=pass aligned with the From: domain and applies no protective policy. The message lands in each victims inbox carrying the original senders branding, BIMI logo, and accumulated trust.

The economic asymmetry is severe. The attacker pays for one signed message (a free trial, a sub-dollar purchase, a newsletter subscription) and gains the ability to deliver the same high-trust payload to as many victims as their MTA infrastructure can carry. The yield ratio is essentially unlimited; the only practical constraint is the receivers anti-spam volume controls, which the canonical replay attack sidesteps by distributing the outbound load across many attacker-controlled MTAs and obeying per-receiver rate limits.

3. Why DMARC by design does not stop replay

DMARC (RFC 7489) is a policy layer that instructs receivers what to do when SPF and DKIM both fail or are not aligned with the From: header. The threat model DMARC was designed for is unauthenticated From: spoofing: an attacker who sends a message claiming to be From: ceo@example.com but cannot sign with example.coms DKIM key and is not sending from a SPF-authorised IP. DMARC tells the receiver to quarantine or reject such messages based on the published policy.

A DKIM replay attack does not match this threat model. The replayed message:

  • Passes DKIM: the signature bytes verify against the original signers public key.
  • Passes DKIM alignment: the signing domain (d=) matches the From: domain because both come from the original legitimate message.
  • Produces a DMARC pass: per RFC 7489 section 3, a DMARC evaluation passes when either SPF or DKIM passes AND is aligned. DKIM is sufficient on its own.
  • SPF result is irrelevant: even though the replayed message arrives from an attacker-controlled MTA whose IP is not SPF-authorised, SPF failure does not gate DMARC when DKIM passes.

DMARCs evaluation logic is correct under its own threat model: a passing aligned DKIM result is exactly the signal DMARC was designed to trust. The mismatch is between DMARCs threat model (unauthenticated forgery) and the replay threat model (authenticated redirection). Closing the gap requires defences at layers DMARC does not address: sender-side rate limits, receiver-side detection of duplicated signatures, and a protocol change that the IETF is still drafting.

ARC (RFC 8617) does not close the gap either. An ARC chain records the authentication results seen at each hop that adds one, but RFC 8617 section 9.5 states that ARC is subject to the same replay attacks as DKIM: a complete, valid chain can be sent again to new recipients just like a signed message. ARC helps receivers with legitimate forwarding and mailing lists; it does not distinguish a replay from an ordinary delivery.

4. Historical disclosures and industry response

DKIM replay was understood as a theoretical attack class from the original RFC 4871 (2007) onward. The specification text in RFC 6376 section 8.6 explicitly names replay as a known limitation. For most of the 2010s the attack remained theoretically interesting but operationally minor: receiver-side anti-phishing engines were still learning to trust DMARC-passing mail, BIMI logo display was not widely deployed, and the receiver-side trust premium for a passing DMARC result was modest.

The risk environment shifted in the years that followed:

  • The arrival of BIMI. Large mailbox providers began displaying brand-controlled logos for DMARC-passing mail, increasing the inbox-display payoff of a passing DMARC result.
  • Campaigns observed in practice. Mail providers and security researchers began to describe publicly campaigns in which signed messages of well-known senders were sent again at scale.
  • The topic returned to the IETF. The DKIM working group was rechartered; its charter lists replay among the problems that the original DKIM does not solve.
  • February 2024 gmail and yahoo bulk-sender requirements. The joint announcement introduced three controls partly aimed at the replay attack class: RFC 8058 one-click List-Unsubscribe (so victims of replayed marketing mail can unsubscribe immediately, depriving the attacker of further-reuse value), a 5000-per-day threshold above which DKIM + DMARC are mandatory (so the receiver always has authentication data to attribute outbound replay back to the original signer), and a 0.3 percent spam-complaint cap (so a sender whose signed mail is being replayed at scale will see a measurable complaint rate increase and risk reputation loss).
  • DKIM2 work at the IETF. The current drafts of the DKIM working group describe a successor to the present protocol; the charter of the group ties replay to the fact that the signature does not protect the envelope recipient (RCPT TO). Nothing is published or deployed yet.

The industry response is layered: economic pressure (gmail / yahoo policy), receiver-side detection, and protocol evolution (the DKIM2 work at the IETF). No single layer eliminates the attack class. Together they raise the operational cost of replay-based phishing campaigns without rendering them impossible.

5. Attack-vector taxonomy

Not every signed message is equally replay-attractive. Attackers select targets based on a multi-factor scoring function that weights receiver-side trust value, capture cost, content predictability, and the lifetime of the signature. The table below summarises the four canonical attack vectors:

DKIM replay attack vectors
Vector Capture path Receiver-side trust value Defence priority
Transactional capture Register with target signer; receive welcome / verification / order-confirmation / password-reset email. Highest. Transactional senders accumulate the most receiver-side trust because they consistently produce DMARC-passing mail. Short DKIM signing-key lifetimes (weekly rotation); per-recipient-domain rate limiting.
Marketing-newsletter capture Subscribe to high-reputation newsletter; receive recurring branded message. High. Branded marketing senders carry strong BIMI display and accumulated reputation. RFC 8058 one-click List-Unsubscribe; outbound-volume monitoring; detection of duplicated signatures at receivers.
Bulk-list aggregation Compromise or buy access to a mailing-list archive; harvest thousands of recent signed messages. Medium. Older messages may have already been seen by receiver-side replay caches. Aggressive DKIM key rotation (weekly or shorter for high-reputation senders); short DNS TTLs on the public-key TXT record.
Phishing-as-a-service replay kits Purchase a pre-captured signed message library from an underground market. Variable. Quality depends on freshness and signing-domain reputation. Industry-wide intelligence sharing of known replayed message-ids; receiver-side anomaly detection on sudden volume spikes.

The defence priority for a given sender depends on which vector is most likely to target that sender. High-frequency transactional senders (e-commerce, financial services, account recovery) should prioritise short key lifetimes and per-recipient-domain rate limiting. High- reputation marketing senders should prioritise RFC 8058 List-Unsubscribe compliance and outbound-volume monitoring. Mailing-list operators should prioritise short DNS TTLs and receiver-side replay-cache participation.

6. Detection signals at the original sender

Detection of an in-progress replay attack happens primarily at the original sender, not at the receiver. The receiver has limited visibility into whether a message is original or replayed; the original sender has perfect visibility into their own outbound logs and can compare them against the receiver-side counts reported in DMARC aggregate reports.

The canonical detection signals are:

  • DMARC RUA aggregate-report volume disparity. The single strongest replay signal. A DMARC aggregate report from gmail.com reporting 50000 messages from your domain when your outbound logs show 10000 messages sent to gmail.com is a 5x volume disparity that almost certainly indicates replay. DMARC Analyzer surfaces aggregate-report counts per receiving domain in its Reports view; comparing the per-receiver counts against your outbound logs is the canonical detection workflow.
  • Abuse@ and feedback-loop reports about messages you did not send. Users complaining about messages your domain did not send to them, or spam-trap addresses receiving messages whose contents you did send to legitimate recipients, both indicate replay.
  • DMARC report source-IP entries outside your sending infrastructure. A <source_ip> in a DMARC report that does not match any of your authorised sending infrastructure but reports DKIM=pass is a hint, not proof: ordinary forwarding by a recipient server or a mailing list looks exactly the same. What points to replay is a large number of messages from such addresses. The attackers MTA appears in the source IP field because the receiver records the origin of the SMTP connection, even though DKIM verified successfully against your signing key.
  • Inbox-placement degradation anomaly. Your legitimate outbound mail starts landing in spam at receivers where it previously inboxed, because your domain reputation is being eroded by attackers replaying your signed mail to spam-trap addresses.
  • Sudden BIMI display loss. Some receivers (gmail.com in particular) will suppress BIMI logo display for domains whose reputation has degraded below a threshold, even if DMARC continues to pass. Loss of BIMI display without an obvious operational cause can indicate replay-driven reputation erosion.
  • List-Unsubscribe abuse spikes. Sudden bursts of one-click unsubscribes per RFC 8058 from addresses that are not in your marketing list indicate that replayed marketing mail is reaching recipients you never opted in.

The DMARC RUA aggregate-report stream is the single most valuable forensic source because it includes the receiver-recorded source IP and per-IP message count. Reviewing the per-IP counts in DMARC Analyzers Reports view weekly is the recommended baseline operational practice for replay detection at any sender that produces transactional or marketing mail.

7. The seven canonical defences

Replay defence is a layered combination of sender-side controls, receiver-side controls, and protocol-level controls. No single defence eliminates the attack class; the combination materially raises the operational cost of replay-based phishing.

  1. Short DKIM signing-key lifetimes. Rotate the DKIM signing key every 7 days (high-value senders) or every 30 days (standard transactional senders) instead of the conventional annual cadence. Every rotation invalidates every previously- captured signed message that depended on the rotated key, truncating the replay window to the key lifetime. See DKIM key rotation for the canonical dual-selector procedure.
  2. Short DNS TTLs on the DKIM public key. Publish the DKIM public-key TXT record with a short DNS TTL (300 seconds rather than the conventional 86400). Short TTLs let you rotate the published key at any time without waiting for receiver caches to expire, supporting emergency rotation in response to a detected replay campaign.
  3. Follow the protocol work. Watch the documents of the IETF DKIM working group. The present DKIM has no anti-replay mechanism: RFC 6376 states that the x= tag (signature expiration) is not intended as an anti-replay defence. The DKIM2 drafts aim at the missing protection of the recipient address, but they are not yet published or deployed.
  4. Per-recipient-domain rate limiting at the original sender. Cap the outbound rate per recipient domain at levels consistent with your legitimate sending pattern. A transactional sender delivering 1000 messages per hour to gmail.com but suddenly producing 50000 per hour is being abused or has a configuration issue; either way the sender-side rate cap stops the abuse before the receiver sees it.
  5. Outbound-volume anomaly detection. Instrument your outbound MTA to detect volume spikes that do not correlate with legitimate business activity. Most replay campaigns produce outbound spikes in the original-sender MTA logs (from the legitimate signing operation that captured the message) or in the DMARC RUA aggregate-report stream (from the replay fan-out at receivers).
  6. Detection of duplicated signatures at the receiver. RFC 6376 section 8.6 notes that large receivers can detect an unusually large number of messages carrying the same signature within a short time, and that smaller receivers can gain similar knowledge through collaboration systems. A message recognised as a repetition is treated more sceptically. The sender benefits from this layer but does not control it.
  7. Sender-aligned ESP rate-limit policies. If you send via an ESP (Mailgun, SendGrid, Amazon SES, Postmark, SparkPost), enforce ESP-level per- recipient-domain rate limits on your sending account. Most major ESPs offer per-domain throughput caps and abuse triggers; configuring them to match your legitimate sending pattern limits the damage if your ESP account or DKIM signing key is compromised.

Defences 1, 2 and 4 are sender-side and fully under the senders control. The fifth is sender-side instrumentation. The sixth is receiver-side and depends on receiver participation. The seventh is sender-side but delegated to the ESP. The third is observation for now: the protocol change is not available yet. A high-value sender should deploy at least defences 1, 2, 4, 5, and 7 today.

8. IETF work: from RFC 6376 to DKIM2

The IETF DKIM working group is working on a successor to the 2011 specification (RFC 6376). Its charter lists problems that the original DKIM does not solve, replay among them. There is no published "RFC 6376bis" with a finished anti-replay mechanism; the current drafts are called DKIM2.

The charter describes replay as exploiting the fact that the signature in the DKIM-Signature header does not cover the recipient address: an authorised user sends a message signed by a service to a cooperating recipient, who sends it on to addresses outside the original list, that is with different RCPT TO values, and nothing in the message shows it. The direction of the work is to tie the signature to the recipients the message was sent to.

Deploying such a change requires industry-wide coordination: signers must produce the new signatures and verifiers must check them. The documents are working drafts whose details may change before publication; mainstream adoption will take years. Until then, the defences remain the layered sender-side and receiver-side combination documented in section 7.

Operators planning for these changes should follow the mailing list of the IETF DKIM working group and read the current drafts from time to time, for example once a quarter.

9. Best practices

  1. Rotate DKIM signing keys aggressively for high-reputation senders. Weekly rotation for domains whose mail carries significant receiver-side trust value (financial services, e-commerce, SaaS verification flows). Monthly rotation for standard transactional senders. The dual-selector procedure documented in DKIM key rotation guarantees zero downtime during rotation.
  2. Publish DKIM TXT records with short DNS TTLs. 300 seconds rather than 86400. Short TTLs support emergency rotation if a replay campaign is detected against your domain.
  3. Subscribe to all DMARC RUA aggregate reports. Configure rua= in your DMARC record to receive aggregate reports from every DMARC-respecting receiver. DMARC Analyzer ingests, parses, and surfaces the reports in its Reports view; the per-receiver volume comparison is your single best replay-detection signal.
  4. Configure outbound-volume anomaly detection. Instrument your MTA or ESP to alert on volume spikes that do not correlate with legitimate business activity. Even a coarse threshold (alert when the hourly outbound rate exceeds 2x the 7-day moving average) catches most replay campaigns at the original sender before the receiver-side trust damage is done.
  5. Enforce per-recipient-domain rate limits at the sender or ESP. Cap the outbound rate per recipient domain at levels consistent with your legitimate sending pattern. Major ESPs (Mailgun, SendGrid, Amazon SES) offer per-domain throughput caps; configure them.
  6. Adopt RFC 8058 one-click List-Unsubscribe for marketing mail. Required since February 2024 by gmail and yahoo for bulk senders. Beyond compliance, one-click unsubscribe lowers the economic value of replayed marketing mail because victims can unsubscribe immediately when they see the replayed message.
  7. Maintain a sub-0.3 percent spam-complaint rate. Required since February 2024 by gmail and yahoo for bulk senders. A sender whose signed mail is being replayed at scale will see a measurable complaint rate increase; watching the rate is a leading indicator of replay-driven reputation erosion.
  8. Maintain accurate DMARC RUA aggregate-report retention. DMARC Analyzers Reports view retains aggregate-report data for the lifetime of the account. Long retention windows let you compare current per-receiver volumes against historical baselines to detect slow-burn replay campaigns that fan out over weeks rather than hours.

10. Common mistakes

  • Assuming DMARC stops replay. DMARC explicitly passes replayed messages because DKIM passes and is aligned. The DMARC p=reject policy does not affect replay because the policy is never invoked for a passing message. Operators who rely on DMARC as the sole anti-phishing control are blind to the replay attack class.
  • Long DKIM key lifetimes. Annual or longer rotation cadences create long replay windows. A 365-day-old signed message captured by an attacker remains replayable for the remainder of the signing keys lifetime.
  • Long DKIM DNS TTLs. 86400-second TTLs delay emergency rotation by up to 24 hours, giving an attacker time to fan out the captured message before the new key propagates.
  • Not monitoring DMARC RUA volume per receiver. Aggregate reports include per-receiver and per-source-IP message counts. Operators who only review the overall pass/fail rate miss the volume disparity that indicates replay.
  • Permissive l= tag usage. The existing DKIM l= tag (body-length limit) lets a signer declare that only the first N bytes of the body are signed. Attackers exploit this by appending arbitrary content after the signed body boundary, producing a partial-body replay that adds phishing content to the original signed message. RFC 6376 section 8.2 explicitly warns against l= usage; production senders SHOULD omit the tag entirely.
  • Ignoring the BIMI display loss signal. Loss of BIMI logo display at gmail.com without an obvious operational cause is a strong reputation- erosion indicator. Treat sudden BIMI loss as a replay-investigation trigger.
  • Not enforcing per-recipient-domain rate limits at the ESP. Sending via an ESP without per-domain caps lets a compromised ESP account or DKIM key produce unbounded replay volume before the abuse is detected.

11. Troubleshooting suspected replay

  • Symptom: spam complaints about messages you did not send. Confirmation that replay is happening against your domain. Capture the message headers from the complaining users, identify the Message-ID, and search your outbound logs for the original send. The time gap between the original send and the complaint is the replay-window duration. Rotate the DKIM signing key immediately to invalidate further replays of messages signed before the rotation.
  • Symptom: DMARC RUA volume from a receiver exceeds your outbound logs by 2x or more. Very likely replay. Identify the source IPs in the DMARC report that do not match your authorised sending infrastructure and set aside known forwarders; the remaining ones are candidates for the attackers MTAs. Report the address ranges to their operators and consider rotating the DKIM signing key to truncate the replay window.
  • Symptom: inbox-placement degradation without an obvious operational cause. Replay-driven reputation erosion. Review DMARC RUA aggregate reports for the past 30 days for unexpected source IPs. Engage with gmail postmaster tools and outlook smart network data service (SNDS) to gather per-IP reputation data.
  • Symptom: BIMI logo no longer displays at gmail. Reputation erosion below the BIMI display threshold. Same investigation path as inbox- placement degradation. BIMI display will recover automatically once reputation recovers; the underlying replay cause must be fixed first.
  • Symptom: List-Unsubscribe rate spike from addresses not in your marketing list. Replayed marketing mail reaching recipients you never opted in. Confirm by checking the unsubscribe receiver IPs against your outbound logs; mismatches indicate replay. Adopt aggressive DKIM key rotation for the marketing-sending subdomain.
  • Symptom: DMARC reports showing DKIM pass from source IPs outside your sending infrastructure. At low counts this is usually mail forwarding; at high counts it is the typical trace of replay. Document the unexpected source IPs and their volumes and, once replay is confirmed, rotate the DKIM signing key. Consider engaging the operators of those addresses (hosting providers, ISPs) via their abuse contacts.

12. Frequently asked questions

What is a DKIM replay attack?
A DKIM replay attack is the practice of capturing a legitimately DKIM-signed message from a high-reputation sender (gmail.com, microsoft.com, paypal.com, a major bank or SaaS) and re-sending the exact byte-for-byte message body and signed headers to a new, attacker-chosen recipient list. The DKIM signature still verifies because the bytes are unchanged; DMARC alignment still passes because the original From: still aligns with the original d=. The receiver sees a DMARC-pass message from a trusted brand and applies the normal trust treatment, but the actual recipients are the attackers victim list rather than the originally-intended recipients. RFC 6376 section 8.6 names replay as a known limitation of DKIM.
How does a DKIM replay attack actually work?
The attacker captures a signed message from a target signer, preserves the signed bytes exactly, submits the captured DATA payload to an attacker-controlled MTA with a new SMTP envelope, and fans the message out to the attackers victim list. Each receiver verifies the original signers signature and treats the message as legitimate.
Why does DMARC not stop DKIM replay?
DMARC is a policy layer on top of SPF and DKIM. It instructs receivers what to do when SPF and DKIM both fail or are not aligned with the From: header. In a DKIM replay attack, DKIM does not fail and IS aligned with the From: header (because the replayed bytes are unchanged from the original). DMARC therefore sees a pass result and applies no protective policy. DMARC was designed to defend against unauthenticated forgery (the attacker spoofs the From: but cannot sign), not against authenticated replay (the attacker controls the envelope but inherits the signature from a legitimate signer). Closing the replay gap requires defences outside DMARC: sender-side outbound rate limiting, receiver-side detection of duplicated signatures, and a protocol change that the IETF DKIM working group is still drafting (DKIM2).
How can I detect DKIM replay attacks against my domain?
The single best signal is a volume disparity between your outbound logs and your DMARC RUA aggregate-report counts per receiving domain. Other signals include unexpected source IPs in DMARC reports, abuse complaints about messages you did not send, sudden BIMI display loss, and List-Unsubscribe spikes from addresses not in your marketing list.
Does DKIM key rotation prevent DKIM replay?
DKIM key rotation does not prevent replay attacks during the lifetime of any single signing key but it does bound the replay window. As long as a public key is published in DNS, any message signed by the corresponding private key can be replayed. Rotation truncates the replay window to the key lifetime: a key live for 90 days admits 90 days of replay; a key live for 24 hours admits 24 hours of replay. Aggressive rotation (weekly or daily for high-value senders) materially constrains the economic value of any single captured signed message, but it does not eliminate the attack class. Eliminating the class needs a protocol change, which the IETF DKIM working group is drafting as DKIM2; nothing is deployed yet.
What is the IETF doing about DKIM replay?
The IETF DKIM working group is drafting a successor to the 2011 specification (RFC 6376) under the name DKIM2. Its charter describes replay as exploiting the absence of a protected recipient address: a signed message can be sent again to recipients outside the original list and nothing in it shows that. There is no published RFC 6376bis with a finished anti-replay mechanism, and the DKIM2 documents are still working drafts. Until they are published and major receivers implement them, replay defence remains a layered combination of sender-side rate limiting, receiver-side detection, and short signing-key lifetimes.
Did the 2024 gmail and yahoo bulk-sender rules address DKIM replay?
Partly yes. The mandatory RFC 8058 one-click List-Unsubscribe, the 5000-per-day DKIM and DMARC threshold, and the 0.3 percent spam-complaint cap together raise the operational cost of replay-based phishing but do not close the protocol gap. The DKIM2 drafts of the IETF DKIM working group aim at the protocol-level fix.
Is DKIM replay only a problem for large brands?
No. Any domain whose DKIM-signed messages are obtainable by an attacker is replay-attractive, including small businesses that send transactional mail. The receiver-side trust premium attaches to any domain that has accumulated a history of DMARC-passing mail.

14. Audit your domain for DKIM replay exposure now

DMARC Analyzer's Domain Security Checker performs a live recursive lookup of any published DKIM public key under a given selector (via includes/DnsChecker.php), reporting the key algorithm, key size, canonical selector name, and the DNS TTL of the published TXT record. Short TTLs (300 seconds) and current key ages bounded by a short rotation cadence (weekly or monthly) are the single most effective sender-side replay defences. The Email Header Analyzer parses the DKIM-Signature header from any captured message (via includes/EmailHeaderParser.php) and surfaces the signer's selector, algorithm, signed-header list, and signature timestamp - the data you need to confirm whether a suspected replayed message originally came from your signing infrastructure or another high-reputation sender.

Check my DKIM public key Sign up — Free plan