# emailmarketing.net — full text (English) > Every published emailmarketing.net knowledge base article in English. Published by the team behind Cakemail. Index: https://emailmarketing.net/llms.txt # ARC (Authenticated Received Chain) > RFC 8617 reference — the three ARC header fields, instance and chain-validation tags, sealing and validation rules, and how receivers use an intact chain to override DMARC failures caused by forwarding. Source: emailmarketing.net — https://emailmarketing.net/learn/authentication/arc When mail passes through a forwarder or a mailing list, it can fail [DMARC](https://emailmarketing.net/learn/authentication/dmarc) at the final receiver even though the original sender authenticated it correctly. Forwarders and mailing lists routinely break [SPF](https://emailmarketing.net/learn/authentication/spf), because the sending IP address changes, and they often break [DKIM](https://emailmarketing.net/learn/authentication/dkim), because they add subject tags or footers or rewrite the body. This is the problem of **indirect mail flow**. ARC, defined in RFC 8617 (Experimental), addresses it. Each intermediary records the authentication results it saw when the message arrived, and seals them cryptographically, which builds a chain of custody that can be verified. The final receiver can then see that the message authenticated properly **before** the forwarder modified it, and may choose to override a DMARC failure. ARC reports what intermediaries saw. It is an additional signal, **not** a replacement for SPF, DKIM and DMARC, and it does not by itself make a message trustworthy. A spammer can seal their own spam, so the sealer's reputation matters. ## The ARC Set: three header fields per hop Each intermediary that takes part (an "ARC sealer") adds one **ARC Set** of three headers, all carrying the same instance number `i=`: | Header | Abbrev. | Contents | Signs | |---|---|---|---| | `ARC-Authentication-Results` | AAR | The SPF, DKIM and DMARC (and ARC) results this hop saw when it received the message, in the same format as the [Authentication-Results header](https://emailmarketing.net/learn/authentication/authentication-results-header). | (not a signature) | | `ARC-Message-Signature` | AMS | A signature like DKIM's (with the same tag syntax: `a=`, `b=`, `bh=`, `d=`, `s=`, `h=`, …) over the message **headers and body** as this hop passed it on. With it, the hop takes responsibility for any changes it made. It uses relaxed canonicalization, and must not sign existing ARC-Seal or Authentication-Results fields. | Headers and body | | `ARC-Seal` | AS | Seals the chain itself. It signs **only header fields** (not the body): all earlier ARC Sets plus this hop's AAR and AMS, in the order AAR, AMS, AS for each instance. It carries the `cv=` chain-validation verdict. | ARC headers only | ### Key tags | Tag | On | Values and rules | |---|---|---| | `i=` | all three | The instance number that ties a set together: **1–50**, increasing by 1 at each hop. Instance numbers must form a continuous sequence 1..N, with exactly one of each field for each instance. More than 50 sets, or a broken sequence, fails the chain. | | `cv=` | ARC-Seal | The chain validation status as this sealer saw it: `none` (no earlier chain existed, so this is the first hop), `pass` (the earlier chain validated) or `fail` (the earlier chain failed validation). | | `d=`, `s=`, `a=`, `b=`, `t=` | AMS, AS | As in DKIM: the sealing domain, the selector (the key is published at `._domainkey.`), the algorithm, the signature and the timestamp. | ## Chain validation (receiver algorithm) 1. Collect all ARC Sets. The chain **fails** if there are more than 50, or if the instance sequence 1..N is broken, duplicated or incomplete. 2. If the ARC-Seal with the highest instance has `cv=fail`, the chain **fails**. 3. Validate the **most recent AMS** signature (the latest custodian's snapshot of the message). Older AMS signatures may also be checked, to find the oldest point where the message still passed. 4. Validate **every ARC-Seal**, from the highest instance down. Each seal must verify over all the sets it covers. 5. If all checks pass, the chain status is **pass**. Otherwise it is **fail**. A failed or missing chain simply means that ARC gives no usable information. Judge the message on its ordinary SPF, DKIM and DMARC results. ## Sealing rules - A sealer records the results it saw in a new AAR, signs the message with an AMS, then seals it with an AS whose `cv=` reflects the state of the chain it found. - If the sealer found a **malformed or failed chain**, it must not extend the chain as valid. It seals with `cv=fail`, and the scope of the AS `b=` **MUST cover only the ARC Set created by the MTA that detected the failure** (not the broken earlier sets). - Sealers should seal only mail they actually handled and evaluated. Sealing is a statement of custody, backed by the reputation of the sealing domain. ## How receivers and DMARC evaluators use ARC - A DMARC evaluator **may, as local policy**, accept the authentication results in a validated ARC chain. If the message fails DMARC now, but the oldest AAR shows an aligned SPF or DKIM pass at the first hop and the receiver trusts every sealer in the chain, the receiver can deliver the message despite `p=reject` or `p=quarantine`. - This is exactly the `local_policy` or `mailing_list` override you see in [DMARC aggregate reports](https://emailmarketing.net/learn/authentication/dmarc-aggregate-reports). RFC 8617 suggests recording, in the report's comment on the policy override, the chain validation status, each seal's `d=` and `s=`, and the originating IP address from the first ARC Set. - Trust in sealers is based on reputation and differs from one receiver to another. Large providers keep lists of forwarders and list operators whose seals they honor. An ARC pass from an unknown sealer, or one with a poor reputation, typically changes nothing. ## Deliverability takeaways - **Senders** cannot deploy ARC to fix their own deliverability. Intermediaries (forwarders, mailing lists, security gateways) implement it, and receivers honor it. What senders should do is publish solid SPF, DKIM and DMARC records, so that the AAR at the first hop records an aligned pass. - **Operators of forwarding services, mailing lists or filtering gateways** should seal with ARC (and preserve the original headers), so that DMARC enforcement further along the path does not destroy their traffic. - Under its sender guidelines, Gmail requires ARC headers on traffic from bulk forwarders. Microsoft, Google and other major providers both seal and honor ARC. ## Related articles - [DMARC](https://emailmarketing.net/learn/authentication/dmarc), the policy layer ARC helps preserve across hops - [Authentication-Results header](https://emailmarketing.net/learn/authentication/authentication-results-header), the format the AAR reuses - [DKIM](https://emailmarketing.net/learn/authentication/dkim), the signature method the AMS and AS build on # BIMI (Brand Indicators for Message Identification) > Implementing BIMI — DMARC enforcement prerequisites, the BIMI DNS record, SVG Tiny PS logo requirements, VMC/CMC certificates, and mailbox-provider support. Source: emailmarketing.net — https://emailmarketing.net/learn/authentication/bimi If you want your brand's logo to appear next to your messages in recipients' inboxes, BIMI is how you ask for it. You publish the logo in DNS, and participating mailbox providers display it next to authenticated messages. Each mailbox provider decides independently whether to display the logo, and how. BIMI is not an authentication protocol itself. It is a **reward for full authentication**: a domain qualifies only once [DMARC](https://emailmarketing.net/learn/authentication/dmarc) is at enforcement. This is why BIMI is often the business reason that pays for a [DMARC enforcement rollout](https://emailmarketing.net/learn/authentication/dmarc-deployment). ## Prerequisites: DMARC at enforcement Before a BIMI record is honored, you need: - SPF, DKIM and DMARC deployed with proper alignment on the sending domain. - A DMARC policy at **enforcement on the Organizational Domain and its subdomains**: - `p=quarantine; sp=quarantine` or stronger, or - `p=reject; sp=reject`. - **Not permitted**: `p=none`, `sp=none`, or any `pct` value below 100. Mail must actually pass DMARC. The logo is displayed only on authenticated messages, and providers also make display depend on the reputation of the sending domain. ## The BIMI DNS record A TXT record published at the `default` selector under the `_bimi` label: ``` default._bimi.example.com. IN TXT "v=BIMI1; l=https://example.com/logo.svg; a=https://example.com/vmc.pem" ``` | Tag | Meaning | Notes | |---|---|---| | `v` | Version | `BIMI1`. Must be first | | `l` | HTTPS URL of the SVG Tiny PS logo file | Required for the logo to be displayed | | `a` | HTTPS URL of the evidence document (a VMC or CMC certificate, in PEM format) | Optional in the specification, but required in practice by providers that demand certificates (e.g., Gmail) | A record with `l=` but no `a=` is a **self-asserted** BIMI record. Support for self-asserted records varies among mailbox providers (see the table below). Selectors other than `default` are possible, declared through a `BIMI-Selector` header on the message, to show a different logo for each mail stream. ## SVG logo requirements (SVG Tiny PS) The logo must conform to the **SVG Portable/Secure (SVG Tiny PS)** profile, which is based on W3C SVG Tiny 1.2: | Requirement | Value | |---|---| | `version` attribute on `` | `1.2` | | `baseProfile` attribute on `` | `tiny-ps` | | `` element | **Required**. It should reflect the company name | | `` element | Recommended (accessibility) | | External links or references | Forbidden (other than declared XML namespaces) | | Scripts, animation, interactive elements | Forbidden | | `x=` and `y=` attributes on the `` root | Forbidden | | File size | ≤ 32 KB | | Aspect ratio | Square | | Background | A solid color is recommended, because transparent backgrounds display inconsistently across mail clients | | Composition | Center the logo. Mail clients crop it to a circle or a rounded square | SVG files exported by standard design tools do not comply as they are. Adobe Illustrator can export SVG Tiny 1.2, but you usually need to edit the file by hand to set `baseProfile="tiny-ps"` and remove stray `x` and `y` attributes. The BIMI Group publishes reference files and conversion tools. ## Certificates: VMC and CMC **Mark Verifying Authorities** issue mark certificates to confirm the link between a logo and a domain. Two Certification Authorities qualified for BIMI issue them: **DigiCert** and **Entrust**. The certificate contains the SVG logo, and the record's `a=` tag points to it as a PEM file. Certificates carry a `subject:markType` field (OID `1.3.6.1.4.1.53087.1.13`) that identifies the validation method used. | | Verified Mark Certificate (VMC) | Common Mark Certificate (CMC) | |---|---|---| | Logo basis | A **registered trademark** (the supported jurisdictions are listed in the BIMI Group VMC Guidelines) or a mark recognized by a government | A **mark with prior use** (no trademark needed) or a **modified registered mark** (a variant of a trademark you own, e.g., seasonal versions) | | Evidence required | Trademark registration, and validation of the organization | The logo displayed publicly for **at least 12 months** on a website you control, with historical proof (e.g., archive.org) as well as its current live display | | Gmail display | Logo **plus a blue verified checkmark** | Logo only, with no checkmark | | Common prerequisites | DMARC at enforcement (`p=quarantine` or `p=reject`, no `sp=none`, no `pct<100`), an SVG Tiny PS logo, and a published BIMI record | Same | Certificates are "highly recommended" rather than mandatory everywhere. Gmail requires a VMC or CMC and ignores self-asserted records, while Yahoo, Fastmail and LaPoste display self-asserted logos. ## Provider support (BIMI Group adoption list, May 2025) | Status | Providers | |---|---| | Supports BIMI | Apple, Google (Gmail), Yahoo Inc., Fastmail, Zoho Mail, Comcast, Cloudmark (Proofpoint), La Poste, WEB.DE, GMX, KDDI, NTT docomo, Onet Poczta, Zone, Zoner | | Considering or planning | Yahoo Japan, Seznam.cz, mail.com, BT, AT Mail, Nifty, Qualitia | | Does not support | Microsoft (Outlook.com and Microsoft 365 use their own mechanisms for brand logos instead) | Display criteria beyond the published requirements (domain reputation, sending history, volume) vary by provider, and each provider applies them at its own discretion. A valid record and certificate make a domain eligible to have its logo shown, but do not guarantee that it will be. ## Implementation checklist 1. Bring all mail streams to aligned SPF and DKIM, and move DMARC to enforcement: `p=quarantine` or `p=reject`, covering subdomains and applied to all messages (see [DMARC Deployment in Depth](https://emailmarketing.net/learn/authentication/dmarc-deployment)). 2. Produce an SVG Tiny PS logo that meets the requirements in the table above, and validate it with the BIMI Group's tools. 3. Obtain a VMC (for a trademarked logo) or a CMC (for 12-month prior use) from DigiCert or Entrust. This is required for Gmail. Skip it only if the providers you target accept self-asserted records. 4. Host the SVG file (and the PEM file, if you have a certificate) at stable HTTPS URLs. 5. Publish the `default._bimi` TXT record. 6. Check the result with a BIMI record checker, and by sending mail to test accounts at providers that support BIMI. Expect providers to apply their own reputation checks before they display the logo. ## Related articles - [DMARC](https://emailmarketing.net/learn/authentication/dmarc) - [DMARC Deployment in Depth](https://emailmarketing.net/learn/authentication/dmarc-deployment), on reaching the enforcement policy that BIMI requires # DKIM (DomainKeys Identified Mail) > RFC 6376 reference plus RFC 8301 (rsa-sha256 required, 1024–4096-bit keys) and RFC 8463 (ed25519-sha256) — signature and key record syntax, tag meanings, canonicalization, signing scope, and risks. Source: emailmarketing.net — https://emailmarketing.net/learn/authentication/dkim DKIM lets your domain take responsibility for a message by signing it. Receivers check the signature against a public key you publish in DNS. A valid signature proves that the signed content was not changed after signing, and it ties the message to the **d=** domain, which is the identifier DMARC checks for alignment (see [DMARC](https://emailmarketing.net/learn/authentication/dmarc)). Unlike [SPF](https://emailmarketing.net/learn/authentication/spf), DKIM survives forwarding, as long as the signed content is not modified. DKIM is defined in RFC 6376. It authenticates the content of the message: the signer adds a `DKIM-Signature` header that contains cryptographic hashes of selected headers and of the body. ## The DKIM-Signature header: tag reference | Tag | Req? | Meaning | |---|---|---| | `v=` | Required | Version; must be `1`. | | `a=` | Required | Signing algorithm: `rsa-sha256` or `ed25519-sha256` (RFC 8463). `rsa-sha1` **MUST NOT** be used (RFC 8301). | | `b=` | Required | The signature itself, in base64. Whitespace is ignored. | | `bh=` | Required | The hash of the canonicalized body (limited by `l=` if present), in base64. | | `c=` | Optional | Canonicalization, written as `header/body`, where each part is `simple` or `relaxed`. The default is `simple/simple`, and `c=relaxed` on its own means `relaxed/simple`. | | `d=` | Required | **SDID**, the signing domain that claims responsibility. It must have a key record in DNS. This is the identifier used for DMARC alignment. | | `h=` | Required | An ordered list of the signed header fields, separated by colons. It must not be empty and **must not** include the DKIM-Signature being created. It may list the same name several times, and may list fields that do not exist (see oversigning below). | | `i=` | Optional | **AUID**, the identity of the agent or user: an address whose domain must be the same as `d=` or a subdomain of it (exactly the same if the key record has the flag `t=s`). The default is `@` followed by the d= value. | | `l=` | Optional | Body length: the number of canonicalized body octets covered by `bh=`. The default is the entire body. **This is a security risk; see below.** | | `q=` | Optional | The method for retrieving the key. Only `dns/txt` is defined (the default). | | `s=` | Required | The selector, which names the key within the domain (see the key record below). | | `t=` | Recommended | The signature timestamp, in Unix seconds. Verifiers may ignore signatures with timestamps in the future. | | `x=` | Recommended | An absolute expiration timestamp, which must be > `t=`. It is not a defense against replay. | | `z=` | Optional | A copy of selected header fields at signing time, separated by `|`, for diagnosis. | ### Signing scope: which headers to sign - The **From:** field **MUST** be signed. It is the identity DKIM exists to protect, and the field DMARC evaluates. In practice, also sign Subject, Date, To, Reply-To, Message-ID, the MIME headers and the List-* fields. - **Oversigning:** listing a header name in `h=` one more time than the header appears signs a "null" instance of it. Any header of that name added later (e.g., a second From: or Subject: inserted along the way) then breaks the signature. This is recommended for From, Subject, To and Reply-To. - When a header appears several times, its instances are signed **from the bottom up**. You cannot choose to sign only one of them. ### The risk of the `l=` body length tag `l=` lets a signature cover only the first N octets of the body, so that intermediaries can add content (e.g., mailing list footers) without breaking the signature. As a result, **anything added after N octets is not verified**. An attacker can replay a signed message with malicious content added at the end, and the signature still validates. This was exploited in practice ("DKIM l= vulnerability", 2024). **Do not sign with `l=`. Verifiers should treat signatures with `l=` with suspicion, or ignore the exemption the tag grants.** ## The DNS key record The key is published as a TXT record at: ``` ._domainkey. ``` | Tag | Default | Meaning | |---|---|---| | `v=` | `DKIM1` | Version. If present, it must be the first tag. | | `p=` | — (required) | The public key, in base64. **An empty `p=` means the key is revoked.** | | `k=` | `rsa` | Key type: `rsa` or `ed25519` (RFC 8463). | | `h=` | all allowed | The acceptable hash algorithms, separated by colons (`sha256`; `sha1` is obsolete). | | `s=` | `*` | Service type: `*` or `email`. | | `t=` | none | Flags: `y` means testing mode; `s` means the `i=` domain must be exactly the same as `d=` (no AUIDs on subdomains). | | `n=` | empty | Notes for administrators to read. | Example (Ed25519, from RFC 8463): ``` brisbane._domainkey.football.example.com. IN TXT "v=DKIM1; k=ed25519; p=11qYAYKxCrfVS/7TyWQHOg7hcvPapiMlrwIaaPcHURo=" ``` **Selector hygiene:** selectors let you run several keys at the same time (for each system, each ESP or each date). To rotate keys, publish a new selector, switch signing to it, then revoke the old key. Never reuse a selector with a new key, because you lose the ability to tell old mail that was legitimately signed from forgeries. ## Algorithms and key sizes (RFC 8301, RFC 8463) | Rule | Requirement | |---|---| | Signing algorithm | Signers **MUST** sign with `rsa-sha256`. `rsa-sha1` **MUST NOT** be used for signing or verifying (SHA-1 is historic). | | RSA key size for signers | **MUST** use keys of ≥ 1024 bits. **2048 bits is recommended** (the current operational baseline). | | RSA key size for verifiers | **MUST** validate keys **from 1024 to 4096 bits**, and MAY support larger keys. **MUST NOT** treat signatures made with keys of < 1024 bits as valid. | | Ed25519 (RFC 8463) | `a=ed25519-sha256`, key record `k=ed25519`, and `p=` is the Ed25519 public key in base64. The keys are 256 bits, so the encoded key is only 44 octets and fits in one TXT string of 255 bytes (large RSA keys often have to be split across strings). | | Dual signing | For compatibility, sign with **both** `rsa-sha256` and `ed25519-sha256`, using **different selectors** (one key record for each selector). Support for Ed25519 among verifiers is still not universal. | ## Canonicalization Canonicalization normalizes the content before hashing, so that the signature tolerates rewriting in transit. It does not change the message that is sent. | Algorithm | Rules | |---|---| | `simple` (header) | Headers are used exactly as they appear, so any change breaks the signature. | | `relaxed` (header) | Header names are lowercased, continuation lines are unfolded, runs of whitespace are reduced to a single space, trailing whitespace is removed, and whitespace around the colon is removed. | | `simple` (body) | Trailing empty lines are removed, and the body ends with a single CRLF. | | `relaxed` (body) | Whitespace at the end of lines is removed, runs of whitespace within lines are reduced to a single space, trailing empty lines are removed, and the body ends with a CRLF. | **`relaxed/relaxed` is the default in practice.** `simple` header canonicalization breaks whenever any MTA folds or wraps headers again. ## Verification behavior - Each signature has one of three outcomes: **SUCCESS**, **PERMFAIL** (the failure cannot be recovered from: a bad signature, a revoked or undersized key, a syntax error) or **TEMPFAIL** (the failure is temporary, e.g., a DNS timeout). - A failed signature is treated **as if the message were unsigned**. A DKIM failure is not in itself a reason to reject the message. It simply provides no positive identifier. DMARC is what turns the absence of an aligned pass into a policy decision. - **Multiple signatures** are each evaluated on their own. Verifiers keep checking until one verifies. A message can legitimately carry a signature from the author's domain and signatures from one or more intermediaries. - The verifier's output must include the `d=` domain and the result. It appears later in the [Authentication-Results header](https://emailmarketing.net/learn/authentication/authentication-results-header). ## Deliverability notes - Mailbox providers increasingly tie reputation to the **DKIM d= domain**, and prefer DKIM to SPF for DMARC alignment, enrollment in feedback loops and tools for senders. - The requirements for bulk senders at Gmail and Yahoo in effect make an aligned DKIM signature, with a key of ≥1024 bits (2048 recommended), mandatory at scale. - DKIM does not prevent **replay**. A spammer can resend a legitimately signed message unchanged to new recipients, and the signature still passes, which uses up the reputation of the d= domain. Mitigations are short `x=` expiration times, selectors for each recipient or stream, and monitoring. ## Related articles - [SPF](https://emailmarketing.net/learn/authentication/spf), which authenticates the sending path instead - [DMARC](https://emailmarketing.net/learn/authentication/dmarc), on alignment and policy built on DKIM and SPF - [ARC](https://emailmarketing.net/learn/authentication/arc), on the chain of custody when intermediaries break signatures # DKIM Key Rotation > M3AAWG DKIM Key Rotation BCP (rev. March 2019) — semiannual rotation cadence, selector naming schemes, the two-live-keys workflow, p= retirement, CNAME/subdomain delegation for third parties, and rotation auditing. Source: emailmarketing.net — https://emailmarketing.net/learn/authentication/dkim-key-rotation If you sign mail with DKIM, your keys need to be replaced on a schedule. M3AAWG's *DKIM Key Rotation Best Common Practices* recommends how often and how. The document is M3AAWG078, first published in 2013 and revised in March 2019 (reference URL m3aawg.org/DKIMKeyRotation). The 2019 revision changed the recommended cycle from **quarterly to every six months** and reworked the convention for naming selectors. This guidance covers the practice of rotation. For how DKIM itself works (the syntax of signatures and key records, and the algorithms), see [DKIM](https://emailmarketing.net/learn/authentication/dkim). ## Why rotate - DKIM public keys are published in DNS, where anyone can inspect them, which makes them a target. Keeping the active lifetime of a key pair short limits the damage if a key is cracked **or stolen** from a compromised signing system. - Key length and cracking (RSA, according to the document): 512-bit keys can be cracked in hours. Zachary Harris cracked one in ~72 hours for ~$75 of AWS computing in 2012, and 512-bit keys were formally deprecated by RFC 8301 in Jan 2018. A 1024-bit key is "at the edge of attack" for general-purpose systems. **A 2048-bit key is considered immune to cracking with today's computing power.** Nation-states could crack 768-bit keys as of ~2012. - Rotating regularly builds knowledge within the organization, so an **emergency rotation outside the normal cycle** after a compromise can be done fast. (Google rotated its keys within days of the 2012 disclosure; other companies took months.) ## Cadence **Rotate at least every six months.** M3AAWG members concluded that rotating twice a year balances the risk of compromise against the operational effort, for organizations with complex mail flows and dependencies on third parties. Organizations with simpler flows can rotate more often: quarterly rotation lowers the cracking risk further, if operations allow it. Yearly rotation is discouraged, because it raises the risk of compromise and also lets the organization's knowledge of the process fade. Pick dates that avoid business peaks, for example April and October for e-commerce. Regular rotation brings other benefits: - Departments learn to work together, since the DNS team is not the email team. - Third-party senders practice the process, so vendors work together too. - Rotation conforms with ITIL and ISO-IEC-20000, because a planned rotation is a "standard change", not an "emergency change". - It leads to automation, such as scripts that generate keys. M3AAWG stresses developing scripts twice. - It builds redundancy, with more people able to do the work. ## The rotation workflow Starting state, for a new DKIM deployment: generate **two** key pairs (≥1024 bits), publish both public keys in DNS, wait for DNS propagation, then sign with private key 1. Key 2 is ready as "next in line". ``` dkim1._domainkey.example.com ← active public key 1, used to sign dkim2._domainkey.example.com ← public key 2 published for future use ``` At each rotation: 1. Generate the next key pair (key 3) and publish its public key in DNS. Wait for propagation before you use it. 2. Switch the signer from private key 1 to private key 2. 3. Leave public key 1 in DNS **unchanged for a minimum of 7 days, and up to 30 days**, so receivers can still validate mail that is in transit or validated later. 4. Then retire key 1 by setting the record's **`p=` field to empty** (`"v=DKIM1; p="`). **Do not delete the selector record.** The empty `p=` signals that the key was retired on purpose. Repeat the cycle: 1→2, 2→3, 3→4 and so on. After the rotation from key 2 to key 3, the records look like this: ``` dkim1._domainkey.example.com ← retired ("p=") dkim2._domainkey.example.com ← still validates old mail for 7–30 days dkim3._domainkey.example.com ← signs current mail dkim4._domainkey.example.com ← ready for future use ``` Operational notes: - Put the key activities (generation, deprecation) on a recurring operational calendar. The steps of a rotation can **all happen on a single day**: add key n+2 and retire key n−1 on the same day you switch signing, instead of spreading the work over several days. The timeline only has to leave time for DNS propagation before you sign with a new key, and time for mail in transit to be delivered before you retire an old one. - DKIM signatures support an expiration time. This is `x=` in the signature under RFC 6376; the text of the BP calls it `t=`, which RFC 6376 defines as the signature timestamp. An expiration time can ensure that signatures do not outlive the rotation period, but only if rotation is guaranteed to happen before the signatures expire. - DNS servers must support long TXT records for ≥1024-bit keys, so **fetching records over EDNS0 or TCP** is required. - The BP quotes the operations advice of RFC 4871: do not sign with a key whose selector will be revoked before verifiers can validate the signature. When you rotate, start signing with the new key immediately, and keep the old public key "for a reasonable validation interval." ## Selector naming schemes A selector should carry enough information to make rotation easier. **Never reuse a selector name.** Reuse makes old messages fail validation against the new key value, and it breaks receivers that have cached the old record. A suggested convention: start with the responsible department or stream, and include the key length and the planned activation date. For example, **`sales-201309-1024`** means the "sales" stream, a key put into active use in September 2013, and a 1024-bit key. A selector may contain the key length, the date, a random string, or a combination. Selectors that carry a date make auditing possible (see below). After a rotation on April 1, every message you sample should be signed with a selector dated in the style of `20130401`. ## Third-party and delegated domains **The request to rotate must come from the owner of the organizational domain**, usually the ESP's customer. M3AAWG does not recommend that third parties start rotation for their customers. Instead, teach customers to rotate according to this BP. Never share the same DKIM keys across several entities. There are three models of delegation. ### 1. Key delegation via domain or subdomain (keys held by the customer) The customer generates the key pairs, publishes the public keys in its domain (or a subdomain), and securely sends the private key to the third party, **only by encrypted email (GPG) or SFTP. Never send a private key in unencrypted email or by any other means that can be intercepted, and never save private keys locally.** This model needs coordination at every rotation. In a variant, the third party generates the key pair and gives the public key to the customer to publish in DNS. No private key is transferred, but the customer must confirm the key parameters (such as size) and agree on the date the key rotates out. ### 2. Key delegation via delegated subdomain The customer delegates a subdomain to the third party, which creates all the records itself. This is flexible, but it adds a risk unrelated to rotation: **the third party could publish a DMARC record on the subdomain that overrides the organizational policy.** Audit all delegated domains. ### 3. Key delegation via CNAME The domain holder publishes **three CNAME records** in the main domain, pointing at records the third party controls. The third party keeps one key valid while it rotates the others (key_1 expired, key_2 signing, key_3 next in line): ``` key1._domainkey.example.com CNAME key1.example.com.acme.com key2._domainkey.example.com CNAME key2.example.com.acme.com key3._domainkey.example.com CNAME key3.example.com.acme.com key1.example.com.acme.com TXT "v=DKIM1; p=" (expired) key2.example.com.acme.com TXT "v=DKIM1; p=ADfe34556…" (signing) key3.example.com.acme.com TXT "v=DKIM1; p=A783Fg4556…" (next) ``` The third party can then rotate on its own schedule without touching the customer's DNS again. Most ESPs use this model. The [Sending Domains BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-sending-domains) also describes the three delegation models. ## Preparation and readiness - **Take an inventory** of all mail streams (transactional, marketing, and conversational or employee mail), and identify who manages each domain and each stream. Every one of them has a stake in generating, publishing and using DKIM keys. Check mergers and acquisitions for streams you do not know about. **DMARC at `p=none` with aggregate (RUA) reporting is a useful way to discover streams**: the daily reports show what mail is being sent, or claims to be sent, with valid or missing DKIM signatures. - **Discuss the objectives with all parties.** Nobody, including third-party vendors, should be surprised when it is time to rotate. - **Stakeholders** include internal email administrators, DNS administrators and support staff, plus the customer and technical contacts at third-party vendors. Document how changes to a stream are requested (a ticket, an official request, a contract clause and so on). - **Be ready for a disaster**, meaning an unscheduled emergency rotation at any time. If you **publish the next public key in DNS in advance**, an emergency rotation needs action only from the mail administrator, the smallest possible group of people. ## Auditing - Schedule an audit shortly after each rotation (for example, a week later) to confirm that it happened and succeeded. - Keep a data store of rotations. For every mail stream, record all domains and subdomains, all selectors with the time ranges when they were active, and the responsible staff. - Audit by comparing the `d=` and `s=` values in the signatures of sampled messages with the values expected in the data store. A strict naming scheme for selectors, especially one that includes dates, simplifies ad-hoc audits and makes **automated auditing** possible. A wrong selector both reveals the failed rotation and, with a good naming scheme, tells you where to look. ## References The BP cites: RFC 6376 (DKIM signatures), RFC 5585 (service overview), RFC 5863 (deployment and operations), RFC 8301 (update on algorithms and key usage), RFC 3766 and keylength.com (key strength), M3AAWG *Best Practices for Implementing DKIM To Avoid Key Length Vulnerability* (rev. July 2017), and the Wired article "How a Google Headhunter's E-Mail Unraveled a Massive Net Security Hole" (Oct 24, 2012). # DKIM Replay Attacks > The DKIM replay problem (draft-ietf-dkim-replay-problem) — how one legitimately signed message gets resent to millions, why l=/x= don't fix it, current mitigations and their tradeoffs, and what it means for ESP infrastructure. Source: emailmarketing.net — https://emailmarketing.net/learn/authentication/dkim-replay If your domain signs mail with DKIM, an attacker who gets hold of one message you signed can resend it, unchanged, to millions of new recipients, and every copy still carries your valid signature. DKIM replay is an **attack on senders' infrastructure**, not an attack that forges messages against recipients. [DKIM](https://emailmarketing.net/learn/authentication/dkim) (RFC 6376) authenticates the content of a message, not its transport path or envelope. The `d=` domain therefore "vouches" for spam it never sent to those recipients, and the attacker spends its reputation. The problem is described in **draft-ietf-dkim-replay-problem** (Chuang/Google, Crocker, Robinson/Google, Gondwana/Fastmail). Status as of 2026-07: the draft's last revision (-00) is dated 2023-07-28 and has **expired**. The IETF DKIM working group has since moved from describing the problem to working on a solution, [DKIM2](https://emailmarketing.net/learn/authentication/dkim2). The draft remains the reference description of the attack. ## Attack mechanics 1. The attacker creates or compromises an account at a sender with a high reputation, such as a free mailbox provider or **an ESP free trial**, and gets one message signed by the target's `d=` domain. The content is the attacker's payload (spam or phishing), or a harmless message into which the payload can be inserted later (see `l=` below). 2. The attacker captures the fully signed message. This is trivial, because the attacker is the recipient: they send it to themselves. 3. The attacker injects the message again, through their own infrastructure, to a new recipient list of any size. The RFC 5321 envelope (`MAIL FROM`, `RCPT TO`) is **not signed**, so it can be rewritten freely. The RFC 5322 headers and body are untouched, so `bh=` and `b=` still verify. 4. Receivers see a valid DKIM signature, an aligned `d=` from a trusted domain, and a DMARC pass. Reputation systems attribute the mail volume, and the complaints and spam classifications that follow, to the signing domain. None of this violates RFC 6376. In fact, the RFC notes that mailing a signed message again cannot be told apart from legitimate forwarding. That is exactly the property that lets DKIM survive forwarding when SPF breaks. **The core difficulty, according to the draft, is that receivers cannot tell legitimate forwarding (alias forwarding, mailing lists, "send to a friend") from a replay attack.** Any simple fix that stops replay also stops forwarding. ## Why existing DKIM tags don't fix it | Tag | Why it fails | |---|---| | `l=` (body length) | It is irrelevant at best and harmful at worst. It limits which body octets are signed, but does nothing to bind the recipients. Worse, `l=` lets the attacker **append** unsigned malicious content that displays after the signed part while the signature still validates (exploited in the wild, 2024). Never sign with `l=`. | | `x=` (expiration) | It limits how long the signature is valid, but cannot tell a legitimate 2-hour forwarding delay from a 2-hour replay campaign. Replay campaigns send their volume within minutes of obtaining the signed message, well inside any `x=` window long enough for real delivery delays (queue retries, greylisting, mailing-list digests). RFC 6376 itself says `x=` is not a defense against replay. | | `t=` (timestamp) | Informational only, with the same window problem as `x=`. | | Signing `To:` | The `To:` header is usually signed, but replay does not change it. The spam is delivered to `RCPT TO` recipients who do not appear in the signed `To:`. A mismatch between the signed `To:` and the actual recipient is also normal (Bcc, aliases, forwarding, mailing lists), so receivers cannot fail messages on that basis. | ## Current mitigations and tradeoffs DKIM as specified has no complete fix. The measures below reduce exposure and limit the damage. The fix at protocol level is the [DKIM2](https://emailmarketing.net/learn/authentication/dkim2) effort, which binds signatures to the SMTP envelope at each hop. ### Sender and ESP side | Mitigation | Mechanism | Tradeoffs | |---|---|---| | **Oversigning** | List `To:`, `Subject:`, `From:`, `Reply-To:` and `Cc:` in `h=` one more time than they occur. An attacker then cannot add another instance (for example, a second Subject that some mail clients display) without breaking the signature. | Cheap, so always do it. It defeats only the variants that add headers. Pure replay of the unchanged message is not affected. | | **Short `x=` expiration** | Sign with `x=` set a small number of hours after `t=`. This narrows the replay window, and old replayed copies fail. | Legitimately delayed delivery (retries after a 4xx from the receiver, greylisting) also fails verification. Many verifiers ignore `x=` entirely, and attackers replay quickly. | | **Separate selectors and `d=` domains for each stream or tenant** | Sign each customer or mail stream with its own selector or subdomain, so that a replay incident damages the identifier of one tenant, not the platform's shared domain. | It does not prevent replay. It limits the damage to reputation, and makes the abusive tenant identifiable and its selector revocable (publish an empty `p=` to disable the selector). Managing the keys adds work at ESP scale. | | **Per-recipient signing** | Compute a separate signature for each RCPT TO, with the recipient bound into the signed content (for example, through a signed header specific to each recipient). | The strongest option within the protocol, but it needs one signing operation and a distinct set of body and headers for each recipient, which removes the efficiency of delivering to several recipients at once. It breaks legitimate forwarding to a different address, and there is no standard for how verifiers should check the binding. | | **Checking content and recipients before the first signature** | The attack requires one signed payload, so abuse controls on trial accounts, scanning of outbound content, and URL reputation checks at signing time all act as controls against DKIM replay. | An arms race. Payloads that look harmless (the `l=` trick, remote content) evade scanning. | | **Monitoring for volume anomalies** | Watch data from [Google Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools) and from feedback loops (FBLs) for spikes in spam rate and volume on a `d=` domain or selector that do not match your own sending logs. That mismatch is the sign of a replay in progress. | It detects, but does not prevent. The response is to revoke the selector and escalate to the providers. | ### Receiver side (what the draft discusses) - **Counting and rate observation:** the same signature (or `bh=`) suddenly seen across an unusually large set of unrelated recipients is the fingerprint of a replay. This needs visibility at large scale, which favors big mailbox providers, and coordination between systems. - **Differences between envelope and headers:** replayed mail usually shows `MAIL FROM` and `RCPT TO` domains unrelated to the signing domain and to the signed `To:`. This can be used as a scoring signal, but not as a strict rule, because forwarding produces the same pattern. - Receivers are advised to treat a valid DKIM signature as an **identifier for reputation**, not as a pass that guarantees trust. Replay exploits exactly the shortcut of treating a valid signature as proof of trust. ## Impact on ESPs - ESPs are a **favorite target for obtaining signed messages**. A free trial gives attackers a way to get messages signed by a domain with a warmed-up reputation. One signed message from a trial account can be replayed at a volume greater than the ESP's entire legitimate daily sending. - The damage falls on whichever `d=` domain signs the message. If all customers sign with the ESP's shared domain, one incident degrades delivery for every customer. This is the strongest architectural argument for a `d=` domain and selectors specific to each customer (see [M3AAWG Sending Domains BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-sending-domains)). - Incident response: identify the replayed message (from FBL samples, or a spike in spam rate in Postmaster Tools), revoke the selector (empty `p=`), suspend the account it came from, and switch the legitimate stream to a new selector. Keep keys for old selectors separate for each stream, so that you can revoke precisely. - Do not respond to a replay incident by adding `l=` or by removing `To:` from `h=`. Both make things worse. ## Related articles - [DKIM](https://emailmarketing.net/learn/authentication/dkim), including oversigning and `l=` - [DKIM2](https://emailmarketing.net/learn/authentication/dkim2), the protocol redesign in progress, whose envelope binding is the actual fix - [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring), on detecting the spike # DKIM2 (in-progress IETF work) > The IETF DKIM WG redesign of DKIM — per-hop chained signatures bound to the SMTP envelope, documented modifications ("recipes"), authenticated bounces, replay resistance — with WG status as of July 2026. NOT a published standard. Source: emailmarketing.net — https://emailmarketing.net/learn/authentication/dkim2 If you sign mail with DKIM, a redesign called DKIM2 is on its way, and it is meant to fix replay and the damage that forwarders and mailing lists do to signatures. It is not ready to deploy, but it is worth tracking so that your signing systems can adapt when it is. > **Status warning: this is standards work in progress, not a standard you can deploy.** Everything below comes from active Internet-Drafts in the IETF **dkim** working group (WG), which was given a new charter, as retrieved on 2026-07-20. Internet-Drafts are working documents. Tag names, header names and meanings **will change** between revisions, and the effort may stall entirely. Do not build production systems that depend on these details; use them to follow the direction of the work. [DKIM](https://emailmarketing.net/learn/authentication/dkim) (RFC 6376, STD 76) remains the standard in force. ## Why DKIM2 exists DKIM v1 has two built-in weaknesses that the email ecosystem has spent 15 years working around: 1. **Replay.** A signature is valid for any recipient, forever (within `x=`). See [DKIM Replay Attacks](https://emailmarketing.net/learn/authentication/dkim-replay). 2. **Breakage by intermediaries.** Forwarders and mailing lists that modify messages destroy signatures, and DMARC then penalizes the mail. [ARC](https://emailmarketing.net/learn/authentication/arc) records what an intermediary saw, but not what it changed, and it requires you to trust the intermediary. DKIM2's answer is that every hop that handles the message signs it, each signature is **bound to the SMTP envelope of that hop**, and changes are **recorded in a way that can be reversed**, so the final receiver can rebuild and verify the message as it was first signed. As a side effect, bounces become fully **authenticated**, which eliminates [backscatter](https://emailmarketing.net/learn/bounce-handling/backscatter-and-batv). ## Working group status (as of 2026-07-20) | Document | Version and date | State | |---|---|---| | draft-ietf-dkim-dkim2-spec | -04, 2026-07-05, 43 pp | WG document, intended for the Standards Track. Authors: R. Clayton (Yahoo), W. Chuang (Google), B. Gondwana (Fastmail). Expires 2027-01-06. | | draft-ietf-dkim-dkim2-bcp | -00, 2026-06-18, 16 pp | WG document. Author: T. Herr (GreenArrow). Replaces the individual draft-herr-dkim2-bcp (-01, expired). Expires 2026-12-20. | | draft-ietf-dkim-dkim2-dns | -00, 2026-07-20, 13 pp | WG document (the DNS specification for DKIM2). Adopted from the individual draft-chuang-dkim2-dns. | | draft-moccia-dkim2-deployment-profile | -06, 2026-07-19 | **Individual submission, not adopted by the WG.** A profile designed to be deployable as a milter (below). | | draft-ietf-dkim-replay-problem | -00, 2023-07-28 | Expired problem statement that led to the new charter. | The authors work at Yahoo, Google and Fastmail, which shows support from receivers, and receiver support is what has made or broken past email standards. The mailing list archive is at mailarchive.ietf.org/arch/browse/ietf-dkim/. ## The mechanism (per draft-ietf-dkim-dkim2-spec-04) ### Two new headers **`Message-Instance`**: one for each revision of the message, with these tags: - `m=` the revision number (the originator's version is 1, and any hop that modifies the message increases it) - `h=` the hashes for this instance, in the format `sha256::` - `r=` base64-encoded JSON "recipes" to rebuild the previous instance (see below) **`DKIM2-Signature`**: one for each hop that handles the message, with these tags: - `i=` the hop sequence number (the originator's is 1, and each signer increases it; **a gap in `i=` or `m=` invalidates the chain**) - `m=` which Message-Instance this hop signed - `t=` a Unix timestamp (reject timestamps in the future; MAY ignore signatures >14 days old) - `mf=` base64 of the RFC 5321 `MAIL FROM` reverse-path used at this hop (`<>` for DSNs) - `rt=` base64 of the RFC 5321 `RCPT TO` forward-paths used at this hop - `nd=` "next domain", which links internal hand-offs where no real SMTP transaction takes place - `n=` an optional nonce (≤64 characters), and `f=` flags - `d=` and `s=`, the domain and selector as in DKIM1, with the signature value written as `::` ### Chain of custody and replay resistance - Each hop records the envelope it used. Verifiers check that the `mf=` domain of hop i aligns with its `d=` (relaxed match), and that the `rt=` of the hop before it (i−1) links to the `mf=` of hop i. - The recipient's server checks that the actual `RCPT TO` of the transaction that delivers the message matches the final `rt=`. **A replayed message carries the original recipient in the signed `rt=`, so sending it to new RCPT TOs breaks the chain.** This is the replay fix that DKIM1 has no way to express. - Legitimate distribution from one sender to many recipients must be declared openly. `f=exploded` marks deliberate distribution to many recipients (mailing lists), `f=donotexplode` asks for delivery to a single recipient, and `f=donotmodify` forbids changes to the content (a violation is a FAIL and blocks further forwarding). ### Recipes: records of changes that can be reversed An intermediary that modifies a message (adding a list footer or a subject tag) increases `m=` and publishes in `r=` a JSON description of the difference, so that the previous instance can be rebuilt: - `"h"` maps header names to steps, and `"b"` holds the body steps. - Steps are either `{"c":[start,end]}`, which copies ranges (headers are numbered from the bottom up, and body lines from the top down starting at 1), or `{"d":[...]}`, which inserts literal values. - `"b": null` declares a change to the body that cannot be reversed. The final verifier works back through the recipes to instance 1 and checks the originator's signature. This solves the problem of mailing lists and DMARC without the blind trust that ARC requires. The BCP raises a privacy concern: recipes can put back content that an intermediary deliberately removed, such as data loss prevention (DLP) redactions or malware attachments that were stripped. Null recipes are the way out, and guidance for jurisdictions under the GDPR is still an open item. ### Simpler cryptography and canonicalization - Hashing: SHA-256 is mandatory. Signing: `rsa-sha256` (PKCS#1 v1.5, e=65537, ≥1024-bit keys; verifiers support 1024–2048) and `ed25519-sha256` (RFC 8032 PureEdDSA). The BCP says to sign with **both** algorithms. - A single canonicalization replaces DKIM1's choice between simple and relaxed. For the signature input, header names are lowercased, headers are unfolded, and **all whitespace is deleted**. The header hash sorts headers alphabetically (headers with the same name keep their order from the bottom up). The body hash works like simple canonicalization (trailing empty lines are reduced to one CRLF). Hashing is done on the form sent on the wire (after content-transfer-encoding, before dot-stuffing). - These headers are left out of the header hash: `Received`, `Return-Path`, `Delivered-To`, `DKIM-Signature`, `ARC-*`, `Authentication-Results`, `X-*`, `Message-Instance`, `DKIM2-Signature`. - There is no `v=` tag, because the new header name identifies the version. Key records live at the **same location**, `._domainkey.`, with `k=` matching the algorithm. DKIM1 and DKIM2 can therefore share key infrastructure and coexist on one message, in any order. ### Verification results and authenticated DSNs - Results (compatible with RFC 8601) are PASS, FAIL, PERMERROR and TEMPERROR, with standard error messages that people can read (for example, `FAIL: Message Instance m= body hash mismatch`). - **Delivery status notifications (DSNs) go to the `mf=` of the DKIM2-Signature with the highest number**, which is the hop that actually handed you the message, never a forged stranger. No DSN is sent when `mf=<>`. Each forwarder passes the DSN back one hop, after checking that the embedded message matches what it signed earlier and removing its own DKIM2 headers. - As a result, bounces are authenticated from end to end, and [backscatter](https://emailmarketing.net/learn/bounce-handling/backscatter-and-batv) cannot happen for mail that stays within the DKIM2 ecosystem. The flags `feedback` and `feedhere` outline a channel for delivery feedback (details not yet defined). ## BCP guidance (draft-ietf-dkim-dkim2-bcp-00) - **Senders:** sign with both DKIM1 and DKIM2 "until deployment is effectively ubiquitous", with both RSA and Ed25519. Sign only at the point where mail leaves your systems, and rotate keys following M3AAWG practice. - **Forwarders:** verify messages when they arrive, and sign every message when it leaves (modified or not) to keep the chain intact. Add your signature only to messages that arrived with a valid DKIM2 chain. Messages that arrive with only DKIM1 need to be checked against local policy before you add them to your chain. - **Receivers:** for mail entirely within the DKIM2 ecosystem, a broken chain **may be safely rejected**, because the DSN is proven to reach a responsible party. For partial or missing chains, fall back to DKIM1 and local policy during the transition. - The draft itself lists open questions: limits on the number of Message-Instance headers and signatures, the future role of DMARC and SPF, and the meaning of feedback. Several sections literally say "Need some text." ## The deployment profile debate (draft-moccia-dkim2-deployment-profile-06) This individual draft, not adopted by the WG, argues that the full specification is too heavy for small operators and proposes a profile with two tiers. It stands out because it uses **different header layouts** (`DKIM2-Sig-mf`, `DKIM2-Sig-rt` and `DKIM2-Mod`) from the WG specification, which shows how unsettled the wire format still is: - **DKIM2-core** (the mandatory tier): binding to the envelope, chain of custody, declarations of header changes and authentication of DSNs. All of it is stateless and can be implemented as a **milter, with no changes to the core of the mail transfer agent (MTA)**. WG co-chair M. Kucherawy agreed, and a working prototype has been published. Limits: at most `i≤20` hops (~15–16 in a realistic worst case), ≤500 recipients per hop, and relaxed domain matching limited to removing 2 labels. - **DKIM2-extended** (optional): full body recipes and rebuilding from Message-Instance headers. It needs persistent state, will take longer to adopt, and carries a heavier privacy burden. - Rule for several algorithms: if any one signature at a hop fails, the whole hop is invalid (this prevents downgrade attacks). ## Realistic timeline and what an ESP should do - No RFC exists yet, and the core specification is at -04 with substantial open issues. Even after it is published, DKIM2 delivers its guarantees only when every hop on a path takes part. Expect a **transition lasting several years**, during which signing with both DKIM1 and DKIM2 is the norm, and DKIM1 with DMARC remains what mailbox providers enforce. For comparison, ARC (RFC 8617, 2019) is still only partly deployed. - What an email service provider (ESP) should do now: nothing in production. Follow the draft revisions and the ietf-dkim list. Make sure your signing pipelines can add a second type of signature and envelope data for each message, which is the main architectural demand of DKIM2. Keep using today's replay mitigations ([oversigning, selectors for each stream](https://emailmarketing.net/learn/authentication/dkim-replay)). - What to watch for: the WG last call on dkim2-spec, announcements of pilots on the receiving side at Gmail, Yahoo and Fastmail (the co-authors' employers), and whether the simplifications in the milter profile are merged. ## Related articles - [DKIM](https://emailmarketing.net/learn/authentication/dkim), the current standard that DKIM2 would eventually replace - [DKIM Replay Attacks](https://emailmarketing.net/learn/authentication/dkim-replay) - [ARC](https://emailmarketing.net/learn/authentication/arc), the interim mechanism for intermediaries that DKIM2 aims to make obsolete - [Backscatter & BATV](https://emailmarketing.net/learn/bounce-handling/backscatter-and-batv) # DMARC (Domain-based Message Authentication, Reporting, and Conformance) > What DMARC does and doesn't do, how it builds on SPF and DKIM, domain alignment, the DNS record, and choosing a handling policy. Source: emailmarketing.net — https://emailmarketing.net/learn/authentication/dmarc ## Why domain owners publish DMARC Anyone can put your domain in the From line that recipients see. DMARC gives you, the owner of that domain, a way to show receivers which of that mail you authorized. It does so by checking the results of [SPF](https://datatracker.ietf.org/doc/html/rfc7208) (Sender Policy Framework) and [DKIM](https://datatracker.ietf.org/doc/html/rfc6376) (DomainKeys Identified Mail) against the domain in the RFC5322.From header, which people also call the "Friendly From". For a domain that sends in volume, DMARC is no longer optional. Google and Yahoo both require bulk senders to publish a DMARC record before their mail is considered for acceptance and delivery. The sections below explain the ideas behind DMARC and the general shape of a setup. They are not a complete step-by-step guide. ## Which specification applies RFC 7489 first described DMARC in 2015, as an Informational document. In May 2026 its successor, known as DMARCbis, became a **Proposed Standard** in three parts: [RFC 9989](https://emailmarketing.net/learn/authentication/dmarc-standard) for the core protocol, [RFC 9990](https://emailmarketing.net/learn/authentication/dmarc-aggregate-reports) for aggregate reports and [RFC 9991](https://emailmarketing.net/learn/authentication/dmarc-failure-reports) for failure reports. Together they obsolete RFC 7489 and RFC 9091. The concepts on this page hold under both specifications, and the few details that changed since RFC 7489 are noted where they come up. For every record tag, and for the DNS Tree Walk that takes the place of the Public Suffix List, see the [DMARC standard reference](https://emailmarketing.net/learn/authentication/dmarc-standard). For rollout in depth, including subdomain policy, the new `np` and `t` tags and report processing, see [DMARC deployment in depth](https://emailmarketing.net/learn/authentication/dmarc-deployment). ## The three jobs DMARC does A DMARC record lets a domain owner: - stop other people from using the domain in the RFC5322.From header without permission, which is what spoofing is - ask mailbox providers for reports on the mail that shows the domain in that header - ask receivers to handle in a particular way any message that shows the domain there but fails the DMARC check ## What DMARC leaves unsolved DMARC answers a single question: did the domain owner authorize this use of the From domain? A message that passes can still be spam. Two common impersonation tricks also get past it: - **Lookalike domains.** A DMARC policy on "example.com" has no effect on mail from a near copy such as "ex4mple.com". The copy is a different domain, with its own DNS. - **Display-name attacks.** The attacker sends from a domain they control and writes a trusted name in the display name, which is the part many mail apps show first: > From: "Your Bank Security Team" \ ## SPF and DKIM in brief **SPF** checks the path a message took. The owner of a domain lists in DNS the servers and networks allowed to send mail whose RFC5321.MailFrom address, also called the "Envelope From", uses that domain. Mail servers rely on this address when they pass mail between them. It ends up in the `Return-Path` header, and most recipients never see it. **DKIM** checks the message itself. The domain that takes responsibility for a message adds a `DKIM-Signature` header. The header carries two cryptographic hashes of the message and the details a receiver needs to verify them. Adding the header is called signing the message, and the domain named in it is the "DKIM d= domain". When verification succeeds, the receiver knows that the signed parts of the message have not changed since signing. ## Organizational Domain and alignment DMARC adds two terms of its own: - **Organizational Domain**: the registered domain behind a business, a brand or any other organization's presence on the internet, such as "example.com". - **Domain Alignment**: two domains are aligned when they share an Organizational Domain. So "billing.example.com" is aligned with "sales.example.com", and also with "example.com" itself. By contrast, "example.net" fails to align with "sales.example.com", even when a single company owns both. This is relaxed alignment, which receivers apply by default. A domain owner can ask for strict alignment instead, where the two domains must be identical. ## How a message passes A receiver starts by looking up a DMARC record for the RFC5322.From domain. When one exists, the message passes if at least one of these is true: - a DKIM signature **verifies**, and its d= domain is **aligned** with the From domain - SPF **passes** for the RFC5321.MailFrom domain, and that domain is **aligned** with the From domain One aligned pass is enough, so you do not need both. Even so, the [Messaging, Malware and Mobile Anti-Abuse Working Group (M3AAWG) Email Authentication Recommended Best Practices](https://www.m3aawg.org/sites/default/files/m3aawg-email-authentication-recommended-best-practices-09-2020.pdf) ask senders to get an aligned pass from **both**. If you can manage only one, choose **DKIM**. Mailbox providers give it more weight than SPF, in DMARC and also when they decide who may join feedback loops and other programs for senders. ## Publishing the record You take part in DMARC by adding a **TXT** record to your domain's DNS. Its format was first set out in [RFC 7489](https://datatracker.ietf.org/doc/html/rfc7489) and is now defined by the standards-track [RFC 9989](https://emailmarketing.net/learn/authentication/dmarc-standard). The record is a list of tag and value pairs separated by semicolons. Every record needs the first two tags below, and the third is strongly recommended: | Tag | What it holds | |---|---| | `v=` | The version. Today it has one valid value, `DMARC1`, and it must open the record as `v=DMARC1;` | | `p=` | What you ask receivers to do with mail that fails DMARC. `none` asks them to handle it as if DMARC had not failed, `quarantine` asks them to deliver it to the spam folder, and `reject` asks them to refuse it. Make your **first** record `p=none;` and tighten it later, unless the domain is brand new or sends no mail at all. | | `rua=` | The mailbox that receives **aggregate reports**, for example `rua=mailto:dmarc-reports@example.com`. Providers that check DMARC usually send these reports once a day. Each one is an XML file of statistics about mail that used your domain in the From header, grouped by sending IP address, authentication result and other fields. Software reads them, not people, so give them a mailbox of their own. | ## Moving to enforcement For most domains, `p=none` is the right place to start. A domain that wants strong protection against spoofing, or that may later want its logo shown through [BIMI](https://bimigroup.org/), will then move on to `p=quarantine` or `p=reject`. Each of those policies counts as **Enforcement**: mail that uses the domain without authorization no longer reaches the inbox. M3AAWG goes further and treats the monitoring policy as a transitional state to leave as soon as you can. Let the **aggregate reports** set the timing. For each source that sends with your domain, they show whether it authenticates with DKIM, SPF or both. Once every legitimate source does, tighten the policy. ## Doing it yourself or hiring a specialist A domain owner with enough technical skill can do all of the DMARC work in-house. Many find it easier to bring in an outside provider. [dmarcvendors.com](https://dmarcvendors.com/) keeps a list of DMARC service providers, along with material for learning about DMARC. ## Related articles - [DMARC standard reference](https://emailmarketing.net/learn/authentication/dmarc-standard) (RFC 9989 and DMARCbis) - [DMARC deployment in depth](https://emailmarketing.net/learn/authentication/dmarc-deployment) - [DMARC aggregate reports](https://emailmarketing.net/learn/authentication/dmarc-aggregate-reports) (RFC 9990) - [DMARC failure reports](https://emailmarketing.net/learn/authentication/dmarc-failure-reports) (RFC 9991) - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability) # DMARC Aggregate Reports (RFC 9990) > The XML aggregate feedback format — report structure, transport, filename and subject conventions, external-destination verification, and policy-override reasons. Source: emailmarketing.net — https://emailmarketing.net/learn/authentication/dmarc-aggregate-reports When your domain's DMARC record lists a `rua=` address, receivers send that address regular XML summaries of the mail that uses your domain. These aggregate reports are the main evidence for deciding when a domain is ready to move to Enforcement (see [DMARC](https://emailmarketing.net/learn/authentication/dmarc)). RFC 9990 defines the report format. It is a Standards Track specification published in May 2026, and one of the three DMARCbis documents that together obsolete RFC 7489, with [RFC 9989](https://emailmarketing.net/learn/authentication/dmarc-standard) and [RFC 9991](https://emailmarketing.net/learn/authentication/dmarc-failure-reports). ## What a report contains A report is an XML document with the root element `feedback` and the namespace `urn:ietf:params:xml:ns:dmarc-2.0`. It has three parts: | Section | Contents | |---|---| | **Report metadata** | The reporting organization's name, a contact email address, a unique report ID, and the start and end of the reporting period, in Unix seconds. | | **Policy published** | The DMARC record the receiver found: the domain, `p`, `sp` and `np`, `adkim` and `aspf`, and how the record was discovered (exact match or Tree Walk). | | **Records** (one or more) | The results for each source IP address: the row, the identifiers, and the raw authentication results described below. | ### Per-record elements | Element | Fields | |---|---| | `row` | The source IP address (IPv4 or IPv6); the message **count** for that combination of IP address and disposition; the **disposition** applied (`none`, `pass`, `quarantine`, `reject`); and the DKIM and SPF **alignment** results, pass or fail, as DMARC evaluates them. | | `identifiers` | `header_from`, the RFC5322.From domain (required); `envelope_from`, the RFC5321.MailFrom domain (optional); and the `envelope_to` domain (optional). | | `auth_results` | The raw result for each mechanism. DKIM entries give the domain, the **selector** (reporting it is mandatory in 9990), the result, and an optional note for people to read. SPF entries give the domain, the scope (`mfrom`) and the result. | When a message carries many DKIM signatures, the receiver reports them in this order of priority: a strict aligned pass, then a relaxed aligned pass, then other passing signatures, then failing signatures. The specification recommends reporting at most about 100 signatures per row. ### Policy-override reasons When the disposition the receiver applied differs from the published policy, the record gives the reason: | Reason | Meaning | |---|---| | `local_policy` | A local exemption at the receiver, often based on ARC (see [ARC](https://emailmarketing.net/learn/authentication/arc)) | | `mailing_list` | The receiver's heuristics detected a mailing list | | `policy_test_mode` | The record's `t=y` test mode was in effect | | `trusted_forwarder` | An exemption for a known forwarder | | `other` | Any other reason, with an optional comment | ## Timing and transport - The reporting period is typically **one UTC day, starting at 00:00 UTC**. Periods SHOULD NOT overlap. - Reports are delivered **by email** to each `rua=` mailto URI. The receiver first discards any malformed URI, and must then attempt delivery to every URI that remains. - The payload SHOULD be **GZIP-compressed XML** (`application/gzip`). Otherwise it is sent as `text/xml`. - The attachment filename follows the pattern `receiver!policy-domain!begin-timestamp!end-timestamp[!unique-id].extension`, for example `mail.receiver.example!example.com!1013662812!1013749130.xml.gz`. - The subject line follows the pattern `Report Domain: Submitter: Report-ID: `. - The mail stream that carries the reports **must itself pass DMARC** with an aligned pass. Secure transport (STARTTLS or TLS) is recommended. ## External report destinations If a `rua=` address is outside the Organizational Domain of the policy domain, the receiver first confirms that the destination has agreed to receive the reports. It queries this record: ``` ._report._dmarc. (TXT) ``` The record must contain `v=DMARC1`, and it may override the report URI. If the record is missing, the receiver does not send reports to the external address. This is why third-party DMARC monitoring vendors either ask you to publish this "external destination verification" record on their domain's behalf, or already publish it on their own domain. ## Changes from RFC 7489 - The XML schema (XSD) is tightened and clarified, and report identifiers are structured more rigorously. - **Reporting the DKIM selector is mandatory.** Reporters under 7489 often left it out. With the selector, it is far easier to identify which system produced a failing signature. - Awareness of Public Suffix Domains is built in, and an extension mechanism is added. - The single RFC 7489 document was split into three: 9989 (core), 9990 (aggregate) and 9991 (failure). ## Working with aggregate reports - Reports are machine-readable XML and arrive daily from every major receiver. Nobody reads them by hand at scale, so route `rua=` to a dedicated mailbox or to a DMARC analytics service. - Use them to answer one question: which sources send mail as my domain, and does that mail produce an aligned pass? Rows that fail both mechanisms from IP addresses you recognize point to a legitimate source that is misconfigured; fix [SPF](https://emailmarketing.net/learn/authentication/spf), [DKIM](https://emailmarketing.net/learn/authentication/dkim) or alignment. Rows from IP addresses you do not recognize point to spoofing or to shadow IT. - When every legitimate source shows aligned passes for a sustained period, the domain is ready for `p=quarantine` or `p=reject`. ## Related articles - [DMARC](https://emailmarketing.net/learn/authentication/dmarc) - [DMARC standard reference](https://emailmarketing.net/learn/authentication/dmarc-standard) - [DMARC failure reports](https://emailmarketing.net/learn/authentication/dmarc-failure-reports) - [Authentication-Results header](https://emailmarketing.net/learn/authentication/authentication-results-header), the same data for a single message # DMARC Deployment in Depth > Operational DMARC deployment — full tag reference, subdomain policy, pct sampling, alignment strictness, report processing, forwarding/mailing-list failure modes, and the none→quarantine→reject rollout. Source: emailmarketing.net — https://emailmarketing.net/learn/authentication/dmarc-deployment Once you understand what DMARC does, moving a domain to enforcement safely means getting many details right: the full set of tags, subdomain policy, percentage sampling, alignment strictness, report handling, the common failure scenarios, and the order of the rollout. For the concepts, alignment and the basic record, start with [DMARC](https://emailmarketing.net/learn/authentication/dmarc). The material below is drawn from dmarc.org, the home of the DMARC specification. ## Specification status | Document | Role | Status | |---|---|---| | RFC 7489 (March 2015) | Original DMARC specification (Informational) | Obsoleted | | RFC 9989 (May 2026) | Core DMARC protocol ("DMARCbis", Standards Track) | Current | | RFC 9990 (May 2026) | Aggregate reporting | Current | | RFC 9991 (May 2026) | Failure reporting | Current | The main changes in the new RFCs do not break existing records, which still begin with `v=DMARC1`: - **Removed tags**: `pct`, `rf` and `ri`. `pct` was removed because its definition in RFC 7489 was ambiguous from the start ("percentage of messages from the Domain Owner's mail stream to which the DMARC policy is to be applied"). - **New tags**: `np` (policy for non-existent subdomains), `psd` (a flag for public suffix domains), and `t` (a testing flag, which replaces the `pct=0`-style use of "monitor but don't enforce"). - **Discovery of the Organizational Domain**: the Public Suffix List is replaced by a **DNS Tree Walk**. The receiver queries `_dmarc.`, then `_dmarc.`, and so on up the tree, up to a limit of eight queries. Most deployed records and receivers still use the semantics of RFC 7489, so the tag reference below covers both. ## Full tag reference DMARC records use the extensible tag-value syntax taken from DKIM. All tags other than `v` and `p` are optional. | Tag | Purpose | Example | Notes | |---|---|---|---| | `v` | Protocol version. Must be first | `v=DMARC1` | Only valid value | | `p` | Policy for the Organizational Domain | `p=quarantine` | `none`, `quarantine` or `reject` | | `sp` | Policy for subdomains of the Organizational Domain | `sp=reject` | Defaults to the `p` value when absent | | `pct` | Percentage of failing messages to which the `p` policy is applied | `pct=20` | RFC 7489 only. Removed in RFC 9989 | | `rua` | One or more URIs for aggregate reports | `rua=mailto:aggrep@example.com` | Separate multiple URIs with commas | | `ruf` | One or more URIs for failure ("forensic") reports on individual messages | `ruf=mailto:authfail@example.com` | | | `adkim` | DKIM alignment mode | `adkim=s` | `r` (relaxed, default) or `s` (strict) | | `aspf` | SPF alignment mode | `aspf=r` | `r` (relaxed, default) or `s` (strict) | | `fo` | Failure-report options | `fo=1` | `0` both fail (default), `1` either fails, `d` DKIM fail, `s` SPF fail | | `rf` | Failure report format | `rf=afrf` | RFC 7489 only. Removed in RFC 9989 | | `ri` | Requested interval between aggregate reports (seconds) | `ri=86400` | RFC 7489 only. Removed in RFC 9989 | | `np` | Policy for **non-existent** subdomains | `np=reject` | New in RFC 9989 | | `psd` | Marks a record published at a public suffix domain | `psd=y` | New in RFC 9989 | | `t` | Testing flag: evaluate but do not enforce | `t=y` | New in RFC 9989. Replaces the sampling role of `pct` | Example record: ``` _dmarc.example.com. IN TXT "v=DMARC1; p=reject; pct=100; rua=mailto:postmaster@example.com" ``` ## Subdomain policy (`sp=`) Without `sp=`, subdomains inherit the `p=` policy of the Organizational Domain. Publishing `sp=` lets you enforce differently in different parts of the organization, for example: - `p=none; sp=reject`: the apex domain is still being monitored, while spoofed mail on subdomains that send no mail is rejected. - `p=reject; sp=none`: the apex is locked down while the mail streams of a subdomain are still being brought into alignment. Attackers can exploit this weak spot, so close it as soon as possible. To be eligible for BIMI, **both** must be at enforcement: `p=quarantine|reject`, with no `sp=none` (see [BIMI](https://emailmarketing.net/learn/authentication/bimi)). RFC 9989 also adds `np=`, so that non-existent subdomains can be rejected even while real subdomains have a looser policy. ## Percentage sampling (`pct=`, RFC 7489) `pct` sets the percentage of failing messages to which the `p=` policy is applied. The **remaining messages receive the next lower policy**: - `p=reject; pct=60` means that 60% of failing traffic is rejected and 40% is quarantined. - `p=quarantine; pct=25` means that 25% is quarantined and 75% is treated as `none`. This built-in control allows gradual enforcement: raise `pct` in steps at each policy level, and watch the reports before going to 100. Under RFC 9989, `pct` no longer exists. The `t=y` testing flag covers the case of publishing an intention to enforce without any effect, and a gradual rollout moves from one policy level to the next. ## Alignment strictness (`adkim=` / `aspf=`) Both alignment tags accept: - **`r` (relaxed, default)**: the authenticated domain (DKIM `d=` or the SPF RFC5321.MailFrom) only needs to share the Organizational Domain with the RFC5322.From domain. `news.example.com` aligns with `example.com`. - **`s` (strict)**: the domains must match **exactly**. Relaxed mode is the right default for almost all senders. Strict mode is for domain owners who want to stop even sibling subdomains from authenticating mail for each other, for example to isolate business units, or to defend against a compromised third party that signs as a delegated subdomain. Do not set `s` until aggregate reports confirm that every legitimate stream authenticates with the exact From domain. ## Report processing ### Aggregate reports (`rua=`) - XML documents, usually generated **daily** by each receiver that reports. Expect the first reports 24+ hours after you publish the record. - They contain counts for each source IP address, with the raw SPF and DKIM results, the alignment evaluation, and the disposition applied. - They are delivered gzip-compressed to `mailto:` URIs. Use a dedicated mailbox and automated parsing, never a person's inbox. - This is the main dataset for deployment decisions. It reveals every source that uses your domain in the RFC5322.From, including forgotten third parties. ### Failure reports (`ruf=`) - Sent **immediately, for each failing message**. If the domain is being spoofed at scale, the volume "could be several times the volume of your legitimate emails". - They allow forensic analysis of individual messages, but many receivers do not send them (for privacy reasons), and they require capacity planning. Deploy `ruf=` only after you understand your traffic from aggregate reports, or not at all. ### External report destinations If `rua=` or `ruf=` points to a domain other than the one that publishes the DMARC record, receivers check that the destination is authorized. The **domain that receives the reports** must publish: ``` example.com._report._dmarc.thirdparty.com. IN TXT "v=DMARC1" ``` This means that `thirdparty.com` agrees to accept reports about `example.com`. A wildcard form accepts reports for any domain, but opens a route for abuse: ``` *._report._dmarc.thirdparty.com. IN TXT "v=DMARC1" ``` Services that process DMARC reports rely on this mechanism. It is why pointing `rua=` at a vendor's address works without the vendor controlling your DNS. ### Tooling dmarc.org maintains directories of [deployment tools](https://dmarc.org/resources/deployment-tools/) and of [code and libraries](https://dmarc.org/resources/code-and-libraries/). Commercial report processors are listed under [products and services](https://dmarc.org/resources/products-and-services/). - Record generators and wizards: dmarcian, EasyDMARC, DMARCLY, Fortra (Agari), Kitterman, Proofpoint, Global Cyber Alliance. - Record checkers: the same vendors, plus Sendmarc, Valimail and Mimecast. - Message reflectors and validators: `autoreply@dmarctest.org`, aboutmy.email, Red Sift Investigate. - Code and libraries: the OpenDMARC milter, Mail::DMARC in Perl, mail-auth in Rust, the rddmarc scripts for parsing reports, dmarc-report-processor for conversion to CSV, and Lafayette for storing reports, among others. ## Common failure scenarios ### Forwarding Simple forwarding rewrites the RFC5321.MailFrom (or keeps the original but sends from a new IP address), so **SPF alignment is lost**. DKIM survives forwarding **only if the forwarder does not modify the signed content**. Adding new headers is usually safe, but changing the Subject or body breaks the signature. This is a core reason to authenticate with **both** protocols, and to rely on aligned DKIM above all. A message that keeps its DKIM signature intact passes DMARC after forwarding, even though SPF fails. ### Mailing lists Traditional lists modify messages (subject tags, footers), which breaks DKIM, and send from their own infrastructure, which breaks SPF alignment. Posts from a domain at `p=reject` then bounce for all subscribers. The known mitigations are: | Mitigation | Mechanism | Trade-off | |---|---|---| | Strict forwarding | The list passes the message on untouched, so the original DKIM signature validates | Loses the subject tags and footers that list users expect | | Original Authentication Results (OAR) or ARC | The list records the authentication state it saw when the message arrived, so that receivers can trust it | Requires adoption by receivers, which is limited but growing (ARC is the modern successor) | | From rewriting (ownership transfer) | The list rewrites the RFC5322.From to its own domain and signs with DKIM as itself | The message is now "from" the list, which affects replies and address books | From rewriting is what most large list software does today when the author's domain is at enforcement. If your users post to mailing lists, expect this behavior once you move beyond `p=none`. ## The rollout path: none, quarantine, reject dmarc.org describes a deployment process for senders in five steps: 1. **Deploy DKIM and SPF** on every legitimate mail stream: corporate mail, the marketing platform, the CRM, the billing system, the support desk, all of them. 2. **Ensure alignment**: check that the identifiers of each stream align with the RFC5322.From domain (the DKIM `d=` and/or the RFC5321.MailFrom). 3. **Publish `p=none`**, with `rua=` pointing at a dedicated report mailbox or processor. This has no effect on delivery. You are only collecting data. 4. **Analyze the reports and fix the streams.** Every source that fails is either (a) a legitimate sender to bring into alignment, or (b) abuse that enforcement will stop. Repeat until the aggregate reports show all legitimate mail passing. 5. **Escalate**: move to `p=quarantine`, at first with low `pct` sampling (for RFC 7489 receivers), and raise it toward `pct=100`. Watch the reports for legitimate mail being quarantined. When there is none, move to `p=reject`, again optionally raising `pct` in steps. Operational guidance for each phase: - **The `p=none` phase**: plan for weeks, not days. Third-party senders (billing, HR, event platforms) appear slowly in reports, because some of them send rarely. - **The `p=quarantine` phase**: failing legitimate mail goes to spam instead of disappearing, so recipients can still recover it. This safety net is what makes quarantine the mandatory intermediate step. Watch for forwarded and mailing-list traffic (see above), which will fail by design. - **The `p=reject` phase**: move to it only after aggregate reports show no legitimate messages being quarantined. The sending party sees a rejection (as a bounce), which helps detect broken streams, but anything you missed is lost. - Remember `sp=` at every step. Changing the policy on the apex does not protect, or break, subdomains you have excluded. Enforcement (`quarantine` or `reject` at 100%) is also the entry requirement for [BIMI](https://emailmarketing.net/learn/authentication/bimi). ## Related articles - [DMARC](https://emailmarketing.net/learn/authentication/dmarc), on concepts, SPF and DKIM basics, alignment and the basic record - [BIMI](https://emailmarketing.net/learn/authentication/bimi), logo display, which requires DMARC enforcement - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability) # DMARC Failure Reports (RFC 9991) > Per-message DMARC failure ("forensic") reports — ARF format, required fields, the ruf/fo tags, privacy constraints, and why few providers send them. Source: emailmarketing.net — https://emailmarketing.net/learn/authentication/dmarc-failure-reports When your aggregate DMARC reports show a source failing, a failure report can show you a single failing message, so you can see why it failed. When your domain's DMARC record lists an address for failure reports, receivers can send that address a report each time a specific message fails DMARC. These **failure reports** are often called "forensic reports", and they differ from the daily statistical [aggregate reports](https://emailmarketing.net/learn/authentication/dmarc-aggregate-reports). RFC 9991 defines them. It is a Standards Track specification published in May 2026, and one of the DMARCbis documents, with [RFC 9989](https://emailmarketing.net/learn/authentication/dmarc-standard) and [RFC 9990](https://emailmarketing.net/learn/authentication/dmarc-aggregate-reports). It updates RFC 6591 and replaces the part of RFC 7489 that covered failure reporting. Failure reports serve two purposes: diagnosing individual authentication failures first seen in aggregate data, and revealing quickly when someone is actively abusing your domain directly. ## Triggering: the `ruf` and `fo` tags These tags are set in the domain's DMARC record (see the [tag registry](https://emailmarketing.net/learn/authentication/dmarc-standard)): | Tag | Role | |---|---| | `ruf=` | A comma-separated list of `mailto:` URIs that receive failure reports. The receiver must attempt delivery to every destination listed. External destinations must be verified in the same way as for aggregate reports (`._report._dmarc.`). | | `fo=` | When to report. `0` (the default) means only when **no** mechanism produced an aligned pass. `1` means when **any** mechanism failed. `d` means on any DKIM failure, whatever the alignment. `s` means on any SPF failure, whatever the alignment. Values can be combined, separated by colons (for example, `fo=1:d:s`). | Reports are "normally generated and sent almost immediately after the Mail Receiver detects a DMARC failure". They arrive almost in real time, unlike the daily aggregate reports. ## Report format Failure reports use the **Abuse Reporting Format (ARF)** of RFC 6591 (`message/feedback-report`, with the feedback type `auth-failure`), with fields added for DMARC: | Field | Required? | Contents | |---|---|---| | `Identity-Alignment` | Required | A comma-separated list of the mechanisms that failed alignment: `dkim`, `spf`, or `none`. | | `DKIM-Domain`, `DKIM-Identity`, `DKIM-Selector` | Required for DKIM failures | Which signature failed (`d=`, `i=`, `s=`). | | `SPF-DNS` | Required for SPF failures | The SPF DNS record involved. | | `Delivery-Result` | Optional | What the receiver did with the message. | | `DKIM-Canonicalized-Header`, `DKIM-Canonicalized-Body` | Optional | The canonicalized forms, for debugging broken signatures. | The report usually includes the headers of the failed message, and possibly its body. That is what makes this format both useful and sensitive for privacy. ## Privacy considerations Failure reports can expose **personal data**: sender and recipient addresses, message content and, for mailing list traffic, who belongs to the list. RFC 9991 tells report generators to: - limit reports to targeted diagnosis rather than sending everything; - validate reporting URIs carefully (verification of external destinations); - redact message content and identifiers; - use secure transmission channels. **In practice, most large mailbox providers do not send failure reports at all**, or send heavily redacted ones, precisely because of these privacy risks. Publishing `ruf=` costs nothing, but expect few reports. Aggregate reports are the reliable signal, and failure reports add detail when you get them. ## Security considerations Failure reporting can be used for a **denial-of-service attack that floods a mailbox with reports**. An attacker who sends large volumes of mail spoofed "from" a victim's domain can make receivers bombard the victim's `ruf` mailbox. Generators are required to reduce this risk by grouping related events (the ARF `Incidents` field) and by rate limiting (a maximum number of reports per unit of time). ## Operational use - Use failure reports to find out why a source that fails in aggregate data is failing: a wrong selector, a signature broken by a gateway that adds a footer (compare the canonicalized fields), a bounce domain that is not aligned, and so on. - Send `ruf=` reports to a mailbox with restricted access, because the reports may contain the content of other people's messages. - Do not build monitoring on failure reports alone. Coverage depends on the receiver, and the reports come mostly from smaller providers. ## Related articles - [DMARC](https://emailmarketing.net/learn/authentication/dmarc) - [DMARC standard reference](https://emailmarketing.net/learn/authentication/dmarc-standard) - [DMARC aggregate reports](https://emailmarketing.net/learn/authentication/dmarc-aggregate-reports) - [DKIM](https://emailmarketing.net/learn/authentication/dkim), for interpreting the DKIM-* diagnostic fields # DMARC Standard Reference (RFC 9989 / DMARCbis) > The standards-track DMARC spec that obsoletes RFC 7489 — full record tag registry, the DNS Tree Walk replacing the Public Suffix List, alignment rules, policy discovery, and what changed. Source: emailmarketing.net — https://emailmarketing.net/learn/authentication/dmarc-standard When you write a DMARC record, or need to know exactly how a receiver will find and apply it, the rules now come from DMARCbis. Below are its tags, its alignment rules, how a receiver discovers the policy for a message, and what changed from the earlier specification. RFC 9989 (Standards Track, May 2026) is the current DMARC specification, and obsoletes RFC 7489 and RFC 9091. It splits DMARC into three documents: **RFC 9989** (core protocol), **[RFC 9990](https://emailmarketing.net/learn/authentication/dmarc-aggregate-reports)** (aggregate reporting) and **[RFC 9991](https://emailmarketing.net/learn/authentication/dmarc-failure-reports)** (failure reporting). For an introduction to what DMARC does, the basics of alignment and rollout strategy, see [DMARC](https://emailmarketing.net/learn/authentication/dmarc). ## Complete tag registry The record is published as a TXT record at `_dmarc.`. Tags are `key=value` pairs separated by semicolons, and `v=` must come first. | Tag | Values | Default | Meaning | |---|---|---|---| | `v` | `DMARC1` | required, first tag | Version. | | `p` | `none` \| `quarantine` \| `reject` | `none` if absent | Requested handling for messages from the domain that fail DMARC. | | `sp` | same as `p` | inherits `p` | Policy for **existing subdomains** of the record's domain. | | `np` | same as `p` | inherits `sp`, then `p` | **New in 9989.** Policy for **non-existent subdomains** (no A, AAAA or MX records). For example, you can set `p=none; np=reject` to stop spoofing of invented subdomains while you are still moving the main domain toward enforcement. | | `adkim` | `r` \| `s` | `r` | DKIM alignment mode: relaxed (same Organizational Domain) or strict (identical domain). | | `aspf` | `r` \| `s` | `r` | SPF alignment mode. | | `rua` | comma-separated `mailto:` URIs | none | Destinations for [aggregate reports](https://emailmarketing.net/learn/authentication/dmarc-aggregate-reports). | | `ruf` | comma-separated `mailto:` URIs | none | Destinations for [failure reports](https://emailmarketing.net/learn/authentication/dmarc-failure-reports). | | `fo` | `0` \| `1` \| `d` \| `s` (combinations separated by colons) | `0` | When to send failure reports: `0` means report only if **all** mechanisms fail to produce an aligned pass; `1` means report if **any** mechanism fails; `d` means report DKIM failures whatever the alignment; `s` means report SPF failures whatever the alignment. | | `psd` | `y` \| `n` \| `u` | `u` | **New in 9989.** Whether this domain is a Public Suffix Domain (`y`), definitely not one (`n`), or unknown (`u`). Used by the Tree Walk. | | `t` | `y` \| `n` | `n` | **New in 9989.** Test mode: `t=y` asks receivers to treat the policy as advisory (evaluate and report, but do not enforce the disposition). Replaces `pct`. | **Removed from RFC 7489:** `pct` (percentage sampling, replaced by the `t` tag, which applies to all messages or none) and `ri` (report interval). Receivers that still find old records simply ignore tags that are unknown or retired. If a record has no valid `p` tag but has a valid `rua`, receivers treat it as `p=none` (monitoring only) instead of discarding it. ## Alignment An **Authenticated Identifier** is the DKIM `d=` domain of a passing signature, or the RFC5321.MailFrom domain validated by SPF. - **Relaxed** (default): the From: domain and the Authenticated Identifier have the same **Organizational Domain**. - **Strict**: the domains must be identical. - The comparison is not case-sensitive. An aligned pass from **either** DKIM or SPF gives a DMARC pass. ## The DNS Tree Walk (replaces the Public Suffix List) RFC 7489 relied on the Public Suffix List, a list maintained for web browsers, to find a domain's Organizational Domain. RFC 9989 replaces it with a **Tree Walk** within DNS, limited to **8 queries** per walk: 1. Query `_dmarc.` for the exact domain. Discard anything that does not start with `v=DMARC1`. 2. If the name has more than 8 labels, go straight to its last (rightmost) 7 labels for the following steps. 3. Remove the leftmost label, and query `_dmarc.` at each shorter name in turn. 4. Stop early when a record with `psd=n` or `psd=y` is found. These records mark the boundary between the organization and the public suffix. 5. The walk ends when a suitable record is found or no labels are left. The **Organizational Domain** is determined from the results of the walk: it is the domain just below the point where `psd=y` appears, or the longest name that has a record or `psd=n`. This changes the behavior in edge cases compared with the PSL, for deeply delegated zones. For typical setups such as `example.com` and `mail.example.com`, the outcome is the same. ## Policy discovery for a message 1. Query `_dmarc.`. If a valid DMARC record exists, use it. 2. Otherwise, perform the Tree Walk upward. The first valid record found applies. 3. When the record that applies was found **above** the From: domain (that is, the From: domain is a subdomain), use `sp` if the subdomain exists in DNS, and `np` if it does not. Otherwise, fall back to `p`. 4. If there is no valid record anywhere, DMARC does not apply to the message (disposition `none`, result "none" in [Authentication-Results](https://emailmarketing.net/learn/authentication/authentication-results-header)). ## Operational implications - **Publish `psd=n`** in the record of an organizational domain if you delegate deep trees of subdomains. It fixes the point where the Tree Walk stops, and prevents mail from being attributed to the wrong domain. - **Use `np=`** to protect against spoofing of non-existent subdomains, even while the main policy is still `p=none` during rollout. - **`t=y` replaces raising `pct=` in steps.** Under RFC 7489, `pct=25` gave partial enforcement. Under 9989, you either enforce or test. Plan rollouts in stages, first `p=none`, then `t=y` with `p=quarantine/reject`, then enforcement, guided by the data in aggregate reports as described in [DMARC](https://emailmarketing.net/learn/authentication/dmarc). - Receivers adopt DMARCbis gradually. Expect a long period in which both the semantics of RFC 7489 (PSL, `pct`) and those of RFC 9989 (Tree Walk, `t`, `np`, `psd`) are in use. Records that contain only the tags common to both (`v`, `p`, `sp`, `adkim`, `aspf`, `rua`, `ruf`, `fo`) behave identically under both. ## Related articles - [DMARC](https://emailmarketing.net/learn/authentication/dmarc), on concepts, alignment basics and rollout strategy - [DMARC aggregate reports](https://emailmarketing.net/learn/authentication/dmarc-aggregate-reports) (RFC 9990) - [DMARC failure reports](https://emailmarketing.net/learn/authentication/dmarc-failure-reports) (RFC 9991) - [SPF](https://emailmarketing.net/learn/authentication/spf) - [DKIM](https://emailmarketing.net/learn/authentication/dkim) - [ARC](https://emailmarketing.net/learn/authentication/arc) # SPF (Sender Policy Framework) > RFC 7208 reference — record syntax (mechanisms, qualifiers, modifiers, macros), the check_host() evaluation algorithm, DNS lookup limits, result codes, and common pitfalls. Source: emailmarketing.net — https://emailmarketing.net/learn/authentication/spf SPF lets you publish, in DNS, which hosts may send mail using your domain. Receivers compare the IP address of the connecting client with that list. SPF checks the **RFC5321.MailFrom** identity (the "Envelope From", or `Return-Path`) and, separately, the identity given in **HELO or EHLO**. SPF is defined in RFC 7208. It authenticates the path the message took, through a DNS TXT record published by the domain. For how SPF feeds into DMARC alignment, see [DMARC](https://emailmarketing.net/learn/authentication/dmarc). ## Identities checked - Verifiers **MUST** check the `MAIL FROM` identity if a HELO check was not performed or did not reach a definite result. - It is **RECOMMENDED** that verifiers also check the `HELO` identity separately. When `MAIL FROM` is empty (bounces, `MAIL FROM:<>`), the HELO domain is used as the MAIL FROM domain (`postmaster@`). ## The record - The record is published as a DNS **TXT** record at the domain being checked. It **must begin exactly** with `v=spf1` (e.g., `v=spf10` does not match and is discarded). RFC 7208 deprecated the separate SPF record type in DNS (type 99), so publish TXT only. - If **no** `v=spf1` record exists, the result is **none**. If **more than one** exists, the result is **permerror**. - Terms are evaluated **from left to right**, and the **first mechanism that matches** decides the result through its qualifier. If nothing matches and there is no `redirect=`, the default result is **neutral** (an implicit `?all`). ## Qualifiers | Qualifier | Result when the mechanism matches | |---|---| | `+` (default if omitted) | pass | | `-` | fail | | `~` | softfail | | `?` | neutral | ## Mechanisms | Mechanism | Syntax | Meaning | DNS lookup? | |---|---|---|---| | `all` | `all` | Always matches. Placed last as the explicit default (`-all`, `~all`, …). Anything after `all` is ignored. | No | | `include` | `include:` | Evaluates the SPF record of `` recursively. If the recursive result is **pass**, the mechanism matches. If it is **fail**, **softfail** or **neutral**, the mechanism does not match and evaluation continues. **temperror** and **permerror** are passed up. A recursive **none** gives **permerror**. | Yes | | `a` | `a[:][/][//]` | Matches if the client IP address equals an A (IPv4) or AAAA (IPv6) record of the target domain (by default, the current domain), optionally within a CIDR prefix. | Yes | | `mx` | `mx[:][/][//]` | Looks up the target's MX records, then the address records of each MX name, and matches if the client IP address is among them. | Yes | | `ptr` | `ptr[:]` | A validated reverse DNS check. **"This mechanism SHOULD NOT be published"**: it is slow, unreliable and deprecated in practice. | Yes | | `ip4` | `ip4:[/]` | The client IP address is within the IPv4 network. The default prefix is `/32`. | No | | `ip6` | `ip6:[/]` | The client IP address is within the IPv6 network. The default prefix is `/128`. | No | | `exists` | `exists:` | Expands macros in the domain and does an **A** lookup (even for IPv6 connections). Matches if any A record is returned. This allows a policy for each IP address through macros. | Yes | CIDR prefix lengths: `/0`–`/32` for IPv4 (default `/32`), and `/0`–`/128` for IPv6 (default `/128`). Only the given number of high-order bits is compared. ## Modifiers Modifiers are pairs of a name and a value (name=value). Each may appear at most once, anywhere in the record. | Modifier | Syntax | Meaning | |---|---|---| | `redirect` | `redirect=` | If **no mechanism matched**, evaluation continues with the SPF record of ``, and its result is used unchanged. If the redirect target has no SPF record, the result is **permerror** (not none). It counts toward the 10-lookup limit. It is ignored when the record also contains `all` (since `all` always matches first). | | `exp` | `exp=` | On a **fail** result, a TXT record is looked up at the domain, its macros are expanded, and it is returned as the explanation for people to read. It does not count toward the 10-lookup limit. | ## Macros Macros (`%{x}`) can be expanded in `domain-spec` fields and in `exp` text: | Macro | Expands to | |---|---| | `%{s}` | Sender (the full MAIL FROM address) | | `%{l}` | Local part of the sender | | `%{o}` | Domain of the sender | | `%{d}` | Current domain being checked | | `%{i}` | Client IP address (dotted quad for IPv4; nibbles separated by dots for IPv6) | | `%{p}` | Validated reverse DNS domain of the client IP address (SHOULD NOT be used, for the same reasons as `ptr`) | | `%{v}` | `in-addr` for IPv4, `ip6` for IPv6 | | `%{h}` | The domain given in HELO or EHLO | | `%%` / `%_` / `%-` | Literal `%` / space / URL-encoded space (`%20`) | Transformers: a digit limits how many labels are kept, counting from the right (`%{d2}` keeps the last two labels), `r` reverses the order of labels, and other delimiter characters may follow. ## Result codes | Result | Meaning (RFC 7208 §2.6) | Recommended handling by the receiver (§8) | |---|---|---| | **none** | No valid domain was extracted, or no SPF record was found | No information; inconclusive | | **neutral** | The domain explicitly says nothing about the IP address (`?`) | **MUST** be treated exactly like `none` | | **pass** | The client is authorized to send mail for the domain | The domain is accountable; proceed | | **fail** | The client is explicitly **not** authorized (`-`) | Local policy. If rejecting, use SMTP **550** with enhanced status **5.7.1** | | **softfail** | The host is probably not authorized (`~`), and the domain is in transition | **SHOULD NOT** reject on this alone; **MAY** look more closely | | **temperror** | A temporary error (usually DNS) during evaluation | Accept or defer. If deferring, use SMTP **451** with status **4.4.3** | | **permerror** | The published record could not be interpreted correctly (the DNS operator must fix it) | If rejecting, use SMTP **550** with status **5.5.2** | A note for DMARC: `fail`, `softfail`, `neutral`, `none` and both errors all count as "not pass". Only **pass** (with alignment) can satisfy the SPF side of DMARC. ## DNS lookup limits (§4.6.4) | Limit | Value | When exceeded | |---|---|---| | Terms that query DNS in one evaluation (`include`, `a`, `mx`, `ptr`, `exists`, `redirect`) | **10 total**, counted across all recursion through `include` and `redirect` | **permerror** | | "Void lookups" (NXDOMAIN or an empty answer) | SHOULD be limited to **2** | **permerror** | | Address lookups for each `mx` mechanism | **10** MX names | **permerror** | | Address lookups for each `ptr` evaluation | **10** PTR names | Records beyond the first 10 are **ignored** | `all`, `ip4`, `ip6` and `exp` do **not** count toward the 10-term limit. ## Common pitfalls - **More than 10 lookups.** Nested `include` chains from ESPs, CRMs and ticketing tools add up fast. The result is permerror, which DMARC treats as having no SPF at all. Flatten includes or remove vendors you no longer use, and prefer `ip4` or `ip6` (which cost no lookups) to `a` or `mx` where practical. - **Several `v=spf1` records** at one name give permerror. Merge them into a single record. - **`+all` (or a missing or permissive default)** authorizes the entire internet, which is worse than having no record. End records with `-all` or `~all`. - **An `include` of a domain with no SPF record** gives permerror (a recursive none). Check vendor includes when you stop using a service. - **The `ptr` mechanism and the `%{p}` macro** are deprecated, slow and unreliable. Do not publish them. - **Forwarding breaks SPF.** The forwarder's IP address is not in the original domain's record, so SPF fails after any hop that keeps the original MAIL FROM. This is built into authentication by path. It is why DKIM, which authenticates the content, is preferred for passing DMARC after forwarding, and why [ARC](https://emailmarketing.net/learn/authentication/arc) exists. - **An SPF pass is not a DMARC pass.** Many ESPs use their own bounce domain in MAIL FROM, so SPF passes but is not aligned with the From: domain. For alignment, use a custom Return-Path (bounce) subdomain of the From: domain. See [DMARC](https://emailmarketing.net/learn/authentication/dmarc). - **TXT strings longer than 255 characters** must be split into several quoted strings within the single record (they are joined together). Large records may also force DNS over TCP. - **A `redirect=` after `all`** never takes effect, because `all` matches first. ## Related articles - [DKIM](https://emailmarketing.net/learn/authentication/dkim), which authenticates the content instead - [DMARC](https://emailmarketing.net/learn/authentication/dmarc), on how SPF results and alignment feed into policy - [ARC](https://emailmarketing.net/learn/authentication/arc), on preserving authentication results across forwarding # The Authentication-Results Header > RFC 8601 reference — syntax of the header receivers use to record SPF/DKIM/DMARC/iprev results, ptypes and properties, method result codes, and how to read one. Source: emailmarketing.net — https://emailmarketing.net/learn/authentication/authentication-results-header To see exactly how a receiver judged your authentication, open a message it delivered and read its `Authentication-Results:` header. This is the fastest way to find out. RFC 8601 defines the header. A receiving system adds it at the top of the message to record the outcome of the authentication checks it performed ([SPF](https://emailmarketing.net/learn/authentication/spf), [DKIM](https://emailmarketing.net/learn/authentication/dkim), [DMARC](https://emailmarketing.net/learn/authentication/dmarc), iprev, SMTP AUTH and others). Filters and mail clients (MUAs) later in the path, and people troubleshooting, can then use those results without running the checks again. ## Syntax ``` Authentication-Results: [version]; = [reason="..."] [.=] ... ; = ... ; ``` - **authserv-id** identifies the system that performed the checks, typically by a DNS domain (for example, `mx.google.com`). It tells you whose verdict you are reading. - Each **resinfo** clause, separated from the others by semicolons, reports the result of one method. It can include a free-text `reason` and one or more `ptype.property=value` pairs that identify what was evaluated. - `Authentication-Results: example.com; none` means the receiver performed no checks. - Several methods can appear in one header, or the receiver can add several headers (one for each method or each hop). ## Property types (ptypes) | ptype | Values drawn from | |---|---| | `smtp` | SMTP protocol commands (for example, `smtp.mailfrom`, `smtp.helo`, `smtp.auth`) | | `header` | Message header fields or parts of them (for example, `header.d`, `header.i`, `header.b`, `header.from`) | | `body` | Message body content (no properties are registered at present) | | `policy` | Local policy information that adds to or overrides the raw results (for example, `policy.iprev`) | ## Common methods and their result codes | Method | Result codes | Key properties | |---|---|---| | `spf` | pass, fail, softfail, neutral, none, policy, temperror, permerror | `smtp.mailfrom` (the domain or full MAIL FROM address checked), `smtp.helo` | | `dkim` | pass, fail, none, neutral, policy, temperror, permerror | `header.d` (signing domain), `header.i` (AUID), `header.s` (selector), `header.b` (the first bytes of the signature, to tell several signatures apart) | | `dmarc` (registered by RFC 7489) | pass, fail, none, temperror, permerror | `header.from` (the RFC5322.From domain evaluated), often with `policy.dmarc` comments giving the disposition applied | | `iprev` | pass, fail, temperror, permerror | `policy.iprev` (the client IP address whose reverse DNS was validated) | | `auth` (SMTP AUTH) | pass, fail, none, temperror, permerror | `smtp.auth` (the authenticated identity), `smtp.mailfrom` | | `arc` (registered by RFC 8617) | none, pass, fail | See [ARC](https://emailmarketing.net/learn/authentication/arc) | When `policy` appears as a result, the check completed but local policy suppressed or overrode the normal result. ## Reading one: a worked example ``` Authentication-Results: mx.google.com; dkim=pass header.i=@example.com header.s=s2048 header.b=Kx4pR2; spf=pass (google.com: domain of bounce.example.com designates 203.0.113.5 as permitted sender) smtp.mailfrom=news@bounce.example.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=example.com ``` Google's MX server checked the message: - A DKIM signature by `example.com` (selector `s2048`) verified. - SPF passed for the bounce domain `bounce.example.com` at IP 203.0.113.5. - DMARC passed for the From: domain `example.com`. Its published policy is reject, and the disposition applied was none, which means the message was delivered. DKIM is aligned, because d= is the same as the From: domain. SPF passes, and `bounce.example.com` is aligned with `example.com` under relaxed alignment. Both paths to a DMARC pass succeeded. ## Trust and the removal rule A sender can forge this header easily, so its security depends on **careful handling at the trust boundary**: - An MTA that conforms to RFC 8601 **MUST delete** any instance of the header that claims (through its authserv-id) to have been added inside the receiver's own trust boundary but did not actually come from a trusted internal MTA. Border MTAs remove or rename incoming instances that carry their own authserv-id before they add their genuine one. - Filters and MUAs should only trust headers whose authserv-id belongs to their own ADMD. Anything else is untrusted data from outside. - So when you diagnose deliverability, read the **topmost** Authentication-Results header whose authserv-id matches the final receiving provider. Lower ones may be out of date (from earlier hops) or forged. ## Relationship to other headers - `Received-SPF:` is SPF's own, older header for recording the result at each hop (RFC 7208). In practice, Authentication-Results has replaced it as the single way to report results. - `ARC-Authentication-Results:` reuses exactly this format to record a snapshot of the results at each forwarding hop (see [ARC](https://emailmarketing.net/learn/authentication/arc)). ## Related articles - [SPF](https://emailmarketing.net/learn/authentication/spf) - [DKIM](https://emailmarketing.net/learn/authentication/dkim) - [DMARC](https://emailmarketing.net/learn/authentication/dmarc) - [DMARC aggregate reports](https://emailmarketing.net/learn/authentication/dmarc-aggregate-reports), the same results collected across all receivers # Backscatter and BATV > Misdirected bounces to forged return-paths — why accept-then-bounce causes it, how Backscatterer.org listings work, BATV prvs= tagging mechanics (draft-levine-smtp-batv-01) with operational pros/cons, and modern alternatives. Source: emailmarketing.net — https://emailmarketing.net/learn/bounce-handling/backscatter-and-batv If your domain is receiving bounces for mail it never sent, or your own servers have been listed for sending such bounces, you are dealing with backscatter. As an ESP you face it from both sides: your MTAs must not generate it, and your return-path domains receive floods of it. **Backscatter** is bounce traffic delivered to people who never sent the original message. It includes delivery status notifications (DSNs) and, by extension, autoresponders and challenge messages. Spammers and viruses forge real addresses into `MAIL FROM`. When the spam cannot be delivered, the bounce goes to the person whose address was forged. At the scale of a spam campaign, an innocent domain can receive a flood of misdirected non-delivery reports (NDRs), and the systems that send those bounces get blocklisted as sources of backscatter. ## The cause: accept-then-bounce A bounce is only misdirected if it is generated after the SMTP transaction has ended. The accepted practice follows from that: - **Reject during the SMTP transaction (with a 5xx) whenever you can.** A rejection goes back over the live connection to the host that actually submitted the message. No new message is created, so a forged `MAIL FROM` address receives nothing. Any verdict you can reach before `DATA` completes, whether on an unknown recipient, policy, size or content, should be a rejection within the session. - **Accept-then-bounce** means returning 250 and later generating a DSN to the `MAIL FROM` address. That creates a new message aimed at an address nobody has verified, and for forged mail that DSN is backscatter. The usual causes are gateways and store-and-forward relays that accept mail for backend servers without knowing the list of valid recipients ("accept all, bounce later"), spam and antivirus filters that run after acceptance and are set to "notify sender", and challenge-response systems. - Several rules follow. Validate recipients at the edge (with a real-time check against the backend, or a synchronized list of recipients). If you must deal with spam after acceptance, **discard or quarantine it, and never bounce it**. Never send an automatic reply to mail that fails authentication. Any DSN you legitimately generate always uses `MAIL FROM:<>` (see [DSNs](https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications)). ### Blocklisting for backscatter (Backscatterer.org and UCEPROTECT) - The zone is `ips.backscatterer.org`. It lists IP addresses seen sending **misdirected bounces, misdirected autoresponders, and sender callouts**. Probes for sender address verification (SAV) are treated as abuse too. - It is explicitly **not a spam list** ("It's a Backscatterer list!!!"). The recommended use is **SAFE MODE**: query it only when `MAIL FROM` is `<>` or `postmaster`, that is, only to filter traffic that looks like bounces, because listed IP addresses also send plenty of legitimate mail. Sites that query it for all mail cause the collateral damage its operators warn against. - Historically, listings expire on their own after a period with no new detections (roughly four weeks), and a paid "express delisting" option exists, which is a controversial practice. The details of expiry and fees were not on the usage page consulted as a source. They are given here from the operator's widely documented policy, so verify the current terms before you advise anyone to pay for delisting. The fix is always the same: find and stop the accept-then-bounce or callout behavior, then let the listing expire. - A listing has limited practical impact, since few large providers use the zone, and only in safe mode. It is still a reliable sign that your infrastructure is misconfigured. ## BATV: Bounce Address Tag Validation BATV lets a domain tell bounces of mail it really sent apart from bounces of forgeries, by signing the local parts of its own `MAIL FROM` addresses. It is specified in **draft-levine-smtp-batv-01** (Levine, Crocker, Silberman, Finch; 2008-05-13, expired 2008-11-14). The draft was **never published as an RFC**, but many MTAs and appliances have implemented it since. ### Meta-syntax and the prvs= scheme The form of a tagged local part: ``` local-part = tag-type "=" tag-val "=" loc-core ``` The one defined scheme is **prvs** ("private signature", with a simple private key): ``` prvs=KDDDSSSSSS=jsmith@example.com │ │ └── SSSSSS: first 3 bytes (6 hex digits) of an HMAC-SHA1 │ └───── DDD: low 3 digits of days-since-1970 (expiry anchor) └─────── K: single key-number digit (rotation) ``` - The HMAC input is `K DDD `, keyed with a secret that the domain's outbound signers and inbound validators share. - Outbound MTAs rewrite `MAIL FROM:` to the tagged form at the boundary of the administrative management domain (ADMD). They never tag the addresses of other domains. The `From:` header of the message is not touched: BATV works on the envelope only. - Inbound MTAs, for mail addressed to a `prvs=` local part (in practice, traffic that looks like bounces), verify the HMAC and check that the day count is within the window. The draft requires a **7-day lifetime**, to allow for delayed bounces. If the tag is valid, the MTA strips it (everything up to and including the second `=`) and delivers to `loc-core`. If a bounce has an invalid tag or none, the MTA rejects it during the SMTP session. - The meta-syntax allows other schemes, including "public tagging" with public keys that third parties could verify. Only prvs was ever defined and deployed. ### What BATV gives an ESP - **It stops floods of forged bounces.** A DSN to your return-path domain with no tag, or a bad tag, is provably not a response to your mail, so you can reject it. This protects bounce processing from poisoning (fake bounces that suppress good addresses) and from floods of volume. - It gives only weak protection against replay, by design, as the draft itself says. The HMAC is cut to 6 hexadecimal digits and the window is 7 days, which stops guessing but not a determined replay of a tagged address harvested recently. It does not protect against a change of content, and the protection exists only at the delivery domain (because the key is private), not along the path. ### Operational problems (from the draft's deployment considerations) | Problem | Detail | |---|---| | Greylisting | Retried deliveries must present the **same** tagged `MAIL FROM`. The tag must be computed once for each message, not for each attempt, or greylisting defers the message forever. | | Mailing lists | Lists that identify subscribers or posters by the envelope sender see a different address each time the day count changes, so subscription and posting checks fail. | | Challenge-response systems and whitelists | Whitelists of sender addresses and challenge-response systems treat each variant of the tag as a new sender. The result is repeated challenges and allowlists that stop working. | | Duplicate detection and sorting | Systems that key on the envelope sender treat the variants as different addresses. | | Split administration | If different parties run the inbound and outbound mail servers (common in hosting), sharing the HMAC key is awkward. The draft's fallback, signing in the mail user agent (MUA), is impractical. | | Address length | The tag adds 16 characters to the local part, which can exceed the 64-octet limit on local parts for addresses that are already long. | | Third-party senders | Anyone who legitimately sends "from" your domain without your key (an ESP, a partner) produces untagged mail, and you now reject its bounces. BATV must cover every legitimate sending point, or those streams must be excluded. | ### BATV and VERP: complementary, and largely converged An ESP that already uses **VERP** (a return path encoded for each recipient, for example `bounce-c123-user=example.com@bounces.esp.com`) gets most of the benefit of BATV if the VERP token includes an HMAC. Any inbound "bounce" whose local part does not decode to a real outbound send is rejected or dropped. This approach, **signed and validated VERP**, is what most large ESPs actually run instead of literal `prvs=` tagging. It validates bounces against outbound sends and identifies the exact recipient and campaign. It also avoids the problems BATV causes with lists and whitelists, because the return-path domain is a dedicated bounce domain that no person corresponds with. ## Current practice 1. **Never send backscatter.** Reject during the SMTP session, discard spam found after acceptance, make no SAV callouts, and send DSNs only from `<>`. 2. **Validate inbound bounces** against your own outbound mail, with signed VERP (or BATV where all of the domain's mail flows through one ADMD). Drop anything at a bounce address that cannot be verified before it reaches your suppression logic. 3. **Authentication reduces the supply of forgeries.** As more domains enforce [DMARC](https://emailmarketing.net/learn/authentication/dmarc), less forged mail is accepted in the first place, so less backscatter is generated toward those domains. 4. **The structural fix is under development.** [DKIM2](https://emailmarketing.net/learn/authentication/dkim2) routes DSNs back hop by hop along an authenticated chain of custody, which makes misdirected bounces impossible for mail that takes part. This is one of its explicit design goals. It is still at the draft stage, so do not rely on it yet. 5. If you are listed on `ips.backscatterer.org`, audit for accept-then-bounce paths and callouts, fix the source, then wait for the listing to expire. Treat the listing as a warning about your configuration rather than as a deliverability emergency. ## Related articles - [Delivery Status Notifications](https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications), including the null-sender rule and parsing VERP - [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus) - [DKIM2](https://emailmarketing.net/learn/authentication/dkim2), on authenticated bounce routing # Delivery Status Notifications — DSN Format (RFC 3464) > How bounce messages are structured: the multipart/report DSN format, per-message and per-recipient fields (Action, Status, Diagnostic-Code), and how senders should parse them. Source: emailmarketing.net — https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications To process bounces automatically, you need to read the machine-readable bounce message that mail servers send back. When a message cannot be delivered (or its delivery is delayed, or a positive notification you requested is triggered), the reporting MTA sends a **Delivery Status Notification (DSN)** back to the envelope sender. RFC 3464 defines the standard format of that message. Every automated bounce processor is, at its core, a parser of this format plus heuristics for the bounces that do not follow it. ## Envelope rules - A DSN sent over SMTP **MUST use a null return path**: `MAIL FROM:<>`. This prevents mail loops, because no DSN is ever generated for a DSN. - It follows that bounces arrive at whatever address you put in `MAIL FROM` on the original message. A return path that encodes each recipient (**VERP**, for example `bounces+user=example.com@sender.com`) lets you identify the failed recipient even when the body of the DSN is malformed. It also lets a [feedback loop processor](https://emailmarketing.net/learn/list-management/complaint-feedback-loops) reuse the same suppression pipeline. - Each recipient the sender specified SHOULD produce **at most one** "delivered" or "failed" DSN. When a message reaches a mailing list alias, the forwarding MTA SHOULD issue an "expanded" DSN for the original recipient, and should not pass the DSN request on to the expanded addresses. ## Overall structure: multipart/report A DSN is a MIME message with `Content-Type: multipart/report; report-type=delivery-status`. It contains: | Part | Content-Type | Purpose | |---|---|---| | 1 | `text/plain` (typically) | An explanation of what happened, for people to read | | 2 | `message/delivery-status` | The status in a form machines can parse. This is the part bounce processors read | | 3 | `message/rfc822` or `text/rfc822-headers` | The returned original message (or its headers). Optional | The `message/delivery-status` part is a set of groups of fields written like headers: one **per-message** group, then one **per-recipient** group for each recipient reported. A blank line separates the groups. ## Per-message fields | Field | Required? | Syntax and meaning | |---|---|---| | `Reporting-MTA` | **Required** | `mta-name-type; mta-name`: the MTA reporting the result, for example `dns; mail.example.net` | | `Original-Envelope-Id` | Optional | Transaction ID supplied at submission, for matching the DSN with the original send | | `DSN-Gateway` | Conditional | Present only when the DSN was translated from a foreign (non-Internet) reporting system | | `Received-From-MTA` | Optional | Name of the MTA the message was received from | | `Arrival-Date` | Optional | RFC 822 date-time the message arrived at the reporting MTA | MTA names are case-sensitive, and their spelling must be preserved exactly. ## Per-recipient fields | Field | Required? | Syntax and meaning | |---|---|---| | `Final-Recipient` | **Required** | `address-type; generic-address`: the recipient address as the reporting MTA saw it | | `Action` | **Required** | One of five values, below | | `Status` | **Required** | Enhanced status code, `DIGIT.1*3DIGIT.1*3DIGIT` (for example `5.1.1`) | | `Original-Recipient` | Optional | The address as the sender originally specified it (before forwarding or rewriting) | | `Remote-MTA` | Optional | The next-hop MTA involved in the reported delivery attempt | | `Diagnostic-Code` | Optional | `diagnostic-type; text`: the actual transport-level error, for example the remote server's full SMTP reply | | `Last-Attempt-Date` | Optional | RFC 822 date-time of the final delivery attempt | | `Final-Log-ID` | Optional | Index into the reporting MTA's delivery log | | `Will-Retry-Until` | Optional | For `delayed` only: when the MTA will give up | ### Action values (exactly five, case-insensitive) | Action | Meaning | How a bounce processor handles it | |---|---|---| | `failed` | Could not be delivered, and delivery has been abandoned for good | This is the bounce. Classify it using `Status` and `Diagnostic-Code` | | `delayed` | Not yet delivered; retries continue (check `Will-Retry-Until`) | Informational. Do not suppress, because a `failed` DSN may or may not follow | | `delivered` | Successfully delivered to the recipient address | A positive DSN (sent only if requested); not a bounce | | `relayed` | Forwarded into an environment that does not take responsibility for DSNs | Final as far as DSNs are concerned, but not proof of delivery | | `expanded` | Delivered to the address the sender specified, which was an alias or list with several recipients that sent the message on | Not final; used only for aliases with several recipients | ### Status vs Diagnostic-Code - `Status` carries the [enhanced status code](https://emailmarketing.net/learn/bounce-handling/smtp-enhanced-status-codes), which does not depend on the transport. It is the main key for classification (`4.x.x` soft, `5.x.x` hard). - `Diagnostic-Code` keeps the raw transport error. When its type is `smtp`, the text is the remote server's SMTP reply. The RFC notes that it is "somewhat redundant" with `Status`, but is provided to keep the original information. When `Remote-MTA` is present, the diagnostic came from that MTA; otherwise it came from the reporting MTA. In practice, the diagnostic text often carries details specific to the provider (blocklist names, policy URLs, "user unknown") that the numeric `Status` lacks, so parse both. ### Type conventions - The values of `address-type`, `mta-name-type` and `diagnostic-type` are case-insensitive atoms. The standard values are `rfc822` (addresses), `dns` (MTA names) and `smtp` (diagnostics). `unknown` is used when the type cannot be determined, the `X-` prefix marks experimental types, and new types are registered with IANA. - The content after the type may be case-sensitive (the local parts of mailboxes, for example) and must be preserved exactly. ## Example (from the RFC) ``` Reporting-MTA: dns; cs.utk.edu Original-Recipient: rfc822;louisl@larry.slip.umd.edu Final-Recipient: rfc822;louisl@larry.slip.umd.edu Action: failed Status: 4.0.0 Diagnostic-Code: smtp; 426 connection timed out Last-Attempt-Date: Thu, 7 Jul 1994 17:15:49 -0400 ``` ## Parsing guidance for senders 1. **Identify the recipient.** Prefer `Original-Recipient`, and fall back to `Final-Recipient`. Strip the `rfc822;` type prefix. If the body cannot be parsed, fall back to the return path encoded with VERP. 2. **Filter on `Action`.** Only `failed` should lead to suppression. Ignore `delayed` for list hygiene, but log it for delivery monitoring. Treat `delivered`, `relayed` and `expanded` as not being bounces. 3. **Classify on `Status`.** Send `5.x.x` to your hard-bounce logic and `4.x.x` to your soft-bounce counters. Use the [table of detail codes](https://emailmarketing.net/learn/bounce-handling/smtp-enhanced-status-codes) to separate codes for bad addresses (suppress them) from codes for policy or reputation (investigate them). A wave of `5.7.1` is a problem with the sender, not with the list. 4. **Refine on `Diagnostic-Code`.** Rules based on regular expressions or keywords, applied to the raw SMTP text, catch conditions specific to a provider that the numeric code hides (named blocklists, "spam content", notices of rate limits). 5. **Expect several recipient groups in one DSN.** One bounce message can report several recipients, so process each group separately. 6. **Expect bounces that do not follow the format.** Plenty of real-world bounces are free-form text with no `message/delivery-status` part at all. Parsing RFC 3464 is the fast path; keep a heuristic fallback, with VERP as the safety net. 7. **Never auto-reply to a DSN**, and never send bounces of your own with a return path that is not null. The `MAIL FROM:<>` rule is what keeps the email ecosystem free of loops. # SMTP Enhanced Status Codes (RFC 3463) > The X.Y.Z enhanced mail system status code taxonomy — classes, subjects, and the full detail-code table — and how to use it for bounce classification. Source: emailmarketing.net — https://emailmarketing.net/learn/bounce-handling/smtp-enhanced-status-codes When a message is refused or bounces, the reply usually carries a code such as `5.1.1` or `4.2.2`. These codes tell you whether the failure is permanent and which part of the mail system failed, which makes them the most useful single input for classifying bounces automatically. RFC 3463 defines these **enhanced mail system status codes**. The `X.Y.Z` codes appear in SMTP replies and in the `Status:` field of [delivery status notifications](https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications). They exist because the basic 3-digit SMTP reply codes (250, 450, 550…) mix up transport results with the meaning of the delivery outcome. Enhanced codes give a reason that machines can parse and that does not depend on the transport. ## Structure ``` status-code = class "." subject "." detail ``` Each component is numeric, without leading zeros. ### Class (first number): is it permanent? | Class | Meaning | Bounce-handling implication | |---|---|---| | `2.X.X` | Success: a positive delivery action | Not a bounce | | `4.X.X` | Persistent transient failure: the message is valid, but a temporary condition caused a delay or made the server give up | **Soft bounce**: retry, and suppress only after repeated failures | | `5.X.X` | Permanent failure: resending the message in its current form is not likely to resolve it | **Hard bounce**: do not retry unchanged, and suppress the address when the cause concerns the address | ### Subject (second number): what part of the system failed? | Subject | Category | |---|---| | `X.0.X` | Other or undefined | | `X.1.X` | Addressing status | | `X.2.X` | Mailbox status | | `X.3.X` | Mail system (destination host) status | | `X.4.X` | Network and routing status | | `X.5.X` | Mail delivery protocol status | | `X.6.X` | Message content or media status | | `X.7.X` | Security or policy status | ## Complete detail-code table ### X.1.X: Addressing | Code | Meaning | |---|---| | X.1.0 | Other address status | | X.1.1 | Bad destination mailbox address | | X.1.2 | Bad destination system address | | X.1.3 | Bad destination mailbox address syntax | | X.1.4 | Destination mailbox address ambiguous | | X.1.5 | Destination address valid | | X.1.6 | Destination mailbox has moved, no forwarding address | | X.1.7 | Bad sender's mailbox address syntax | | X.1.8 | Bad sender's system address | ### X.2.X: Mailbox | Code | Meaning | |---|---| | X.2.0 | Other or undefined mailbox status | | X.2.1 | Mailbox disabled, not accepting messages | | X.2.2 | Mailbox full | | X.2.3 | Message length exceeds administrative limit | | X.2.4 | Mailing list expansion problem | ### X.3.X: Mail system | Code | Meaning | |---|---| | X.3.0 | Other or undefined mail system status | | X.3.1 | Mail system full | | X.3.2 | System not accepting network messages | | X.3.3 | System not capable of selected features | | X.3.4 | Message too big for system | | X.3.5 | System incorrectly configured | ### X.4.X: Network and routing | Code | Meaning | |---|---| | X.4.0 | Other or undefined network or routing status | | X.4.1 | No answer from host | | X.4.2 | Bad connection | | X.4.3 | Directory server failure | | X.4.4 | Unable to route | | X.4.5 | Mail system congestion | | X.4.6 | Routing loop detected | | X.4.7 | Delivery time expired | ### X.5.X: Mail delivery protocol | Code | Meaning | |---|---| | X.5.0 | Other or undefined protocol status | | X.5.1 | Invalid command | | X.5.2 | Syntax error | | X.5.3 | Too many recipients | | X.5.4 | Invalid command arguments | | X.5.5 | Wrong protocol version | ### X.6.X: Message content or media | Code | Meaning | |---|---| | X.6.0 | Other or undefined media error | | X.6.1 | Media not supported | | X.6.2 | Conversion required and prohibited | | X.6.3 | Conversion required but not supported | | X.6.4 | Conversion with loss performed | | X.6.5 | Conversion failed | ### X.7.X: Security or policy | Code | Meaning | |---|---| | X.7.0 | Other or undefined security status | | X.7.1 | Delivery not authorized, message refused | | X.7.2 | Mailing list expansion prohibited | | X.7.3 | Security conversion required but not possible | | X.7.4 | Security features not supported | | X.7.5 | Cryptographic failure | | X.7.6 | Cryptographic algorithm not supported | | X.7.7 | Message integrity failure | ## Using the codes for bounce classification These are the combinations that carry the most information for a suppression engine: | Observed status | Interpretation | Typical action | |---|---|---| | `5.1.1`, `5.1.2`, `5.1.3`, `5.1.6` | The address does not exist, cannot be routed, or has gone | Hard bounce: suppress immediately. Repeated 5.1.1s are also how providers detect stale lists | | `5.2.1` | Mailbox disabled | Suppress. The account has been abandoned or closed | | `4.2.2` | Mailbox full | Soft bounce: retry, and suppress if it keeps recurring (often an abandoned account) | | `5.2.2` | Mailbox full, reported as permanent | Treat like a 4.2.2 that keeps recurring | | `4.3.x`, `4.4.x` | Trouble with the destination system or network | Retry. Not a sign of list quality | | `4.4.7` | Delivery time expired (retries exhausted) | The sending side gave up. Investigate which underlying condition persisted | | `5.3.4` / `X.2.3` | Message too big, or exceeds an administrative limit | Fix the message, not the list | | `5.7.1` and other `5.7.x` | Refusal for policy or security reasons | **A reputation or authentication problem, not a bad address.** Do not suppress the recipient on a policy refusal; see [Status codes and the M3AAWG removal rule](#status-codes-and-the-m3aawg-removal-rule) for the one-address exception. Check blocklists, [DMARC, SPF and DKIM](https://emailmarketing.net/learn/authentication/dmarc), and volume and warm-up (see [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up)) | | `4.7.x` | Temporary deferral for policy reasons (greylisting, rate limiting, "unusual volume") | Slow down. This is the classic throttling signal during warm-up | Caveats: - The class digit decides how to retry, even when the subject and detail seem to contradict it. In the model of RFC 3463, the first number's judgment of whether the failure is permanent wins. - Many receivers return only a generic code (`5.0.0`) or nonstandard text. Reliable classifiers combine the enhanced code with the free-text `Diagnostic-Code` (see [Delivery Status Notifications](https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications)). - Later RFCs and IANA registrations extend this list. For example, RFC 7372 registers additional 5.7.x codes for SPF and DMARC failures. The codes above are the base set from RFC 3463 that every implementation shares. ## Status codes and the M3AAWG removal rule The Messaging, Malware and Mobile Anti-Abuse Working Group (M3AAWG) sets the industry baseline for removing addresses that bounce, in its *Sender Best Common Practices* (Version 4.0, August 2026, section 2.2). Its advice has three parts: - When the receiver says there is no one at that address ("user unknown"), do not retry, and suppress the address from future mailings. - The numeric codes were not designed to say whether an address should be removed, so senders **must** read the descriptive text to decide how to handle the address. The text can point to a problem with the sender's infrastructure or content, or show that the sender's IP address is on a blocklist. Senders **should** try to diagnose and fix delivery problems for addresses that appear to be valid. - As a general best practice, remove an address that bounces at least twice in a row, across a span of two weeks or more, whatever the code or text. Each sender chooses the exact number of campaigns and the time span, and the time span allows for server problems at the receiver that can cause a bounce in error. The table above says not to suppress the recipient on a `5.7.x` policy refusal, with one exception for a single address (case 4 below). The reason is what those codes usually report. A `5.7.x` is a refusal for security or policy reasons: a blocklisting, failed authentication, a reputation block. Those causes belong to the sender, and they usually hit many recipients at the same provider at once. Suppressing every address that received one removes real subscribers because of a problem on your side, and leaves the problem in place. Apply both rules together: 1. **Failures about the address** (`5.1.1`, `5.1.2`, `5.1.3`, `5.1.6` and `5.2.1`): suppress, as the table says. They are the "user unknown" case in M3AAWG's advice. 2. **Other failures that repeat for one address** (a recurring mailbox full, or a generic `5.0.0` whose text does not name a policy): count one bounce per campaign, not one per retry. Remove the address when the count reaches your threshold and the bounces span at least two weeks. Two campaigns is M3AAWG's minimum; a higher count still follows its rule. 3. **Policy and reputation refusals** (`5.7.x`): investigate instead of suppressing. Read the text, check blocklists and authentication, and fix the cause. Bounces received while you were blocked say nothing about the addresses, so do not count them toward any address's removal count. 4. **A `5.7.x` that repeats for one address only**, over at least two campaigns and two weeks, while other addresses at the same domain accept your mail: this points to the recipient, not to your reputation (for example, a mailbox that refuses your mail by its owner's choice). Treat it like case 2, under the M3AAWG removal rule. For the suppression mechanics a platform applies, see [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring#suppression-lists-as-a-reputation-defense). # APAC Email Marketing Laws — Japan, New Zealand, Singapore, South Korea > Per-country reference: Japan's opt-in Specified Electronic Mail Act and APPI, NZ's Unsolicited Electronic Messages Act (express/inferred/deemed consent), Singapore's Spam Control Act (, 10-business-day unsubscribe) + PDPA, and Korea's Network Act Art. 50 opt-in with the (광고) label and night-time rule. Source: emailmarketing.net — https://emailmarketing.net/learn/compliance/apac-email-laws If you send marketing email to recipients in Japan, New Zealand, Singapore or South Korea, plan on needing their consent. All four countries are effectively **opt-in for email marketing**. Singapore's Spam Control Act works by opt-out for each message, but its Personal Data Protection Act (PDPA) adds a requirement for opt-in consent to use personal data for direct marketing. A summary table comes first, followed by the details for each country. | Country | Law | Consent standard | Label | Unsubscribe deadline | Maximum penalty (email) | Regulator | |---|---|---|---|---|---|---| | Japan | Act on Regulation of Transmission of Specified Electronic Mail (2002, opt-in since 2008) and the Act on the Protection of Personal Information (APPI) | Opt-in. Exceptions: the recipient gave their own address, a business relationship exists, or the business address was published | Labeling of "specified electronic mail" as set by the order of the Ministry of Internal Affairs and Communications (MIC) | Immediately on opt-out (no further sends) | ≤1 yr in prison or ¥1M (individual); ¥30M (corporation) | MIC and the Consumer Affairs Agency; the Personal Information Protection Commission (PPC) for the APPI | | New Zealand | Unsolicited Electronic Messages Act 2007 | Express, inferred, or deemed (conspicuous publication) | None | 5 working days; the facility must work for ≥30 days | NZ$200,000 (individual) / NZ$500,000 (organisation) | Department of Internal Affairs (DIA) | | Singapore | Spam Control Act 2007 and PDPA 2012 | Spam Control Act (SCA): opt-out for each message (bulk senders). PDPA: express opt-in for direct marketing that uses personal data | `` in the subject | 10 business days; the facility must be valid for ≥30 days | Civil: $25 per message, up to $1M in total. Fines from the Personal Data Protection Commission (PDPC) of up to 10% of turnover in Singapore under the PDPA | PDPC (and civil actions under the SCA) | | South Korea | Network Act Art. 50 (and the Personal Information Protection Act (PIPA)) | Express prior opt-in. Exception: contacts from the sender's own transactions, for the same goods, within a period set by decree (6 months) | "(광고)" ("advertisement") at the start | Sending must stop immediately after a refusal; the result must be notified | Administrative fine ≤ ₩30M; ≤1 yr in prison or a fine of ₩10M for evasion tactics | Korea Communications Commission (KCC) and Korea Internet & Security Agency (KISA) for spam; the Personal Information Protection Commission (PIPC) for PIPA | --- ## Japan: Act on Regulation of Transmission of Specified Electronic Mail **特定電子メール法** (Act No. 26 of 2002) is known as the "Anti-Spam Law." It was enacted in 2002 as an opt-out regime based on labeling. It was amended in 2005 (stronger penalties) and in **2008 (Act No. 54), when it became opt-in** and was extended to spam sent from outside Japan. > Sources: the official Japanese Law Translation (JLT) portal has an English translation that is current only to the **2005 version**, before opt-in, with the old numbering of articles. It still shows the opt-out "labeling" scheme of Art. 3. The statements below about the current law follow MIC's English "Overview of Japanese Anti-Spam Law", published through Dekyo, the Anti-Spam Consultation Center. Use the JLT text only for definitions. - **Scope.** "Specified electronic mail" means email sent **as a means of advertisement** for the sales activities of the sender or of another party, by a for-profit organisation or by an individual engaged in business. - **Opt-in (current Art. 3).** Advertising mail may not be sent without the recipient's **prior consent**. The exceptions are people who gave notice of a request or consent; who **gave their own email address** to the sender (for example, in writing or on a business card); who have a **business relationship** with the advertiser; or, for business senders, who **published their address** in connection with their business. Senders must **keep records of consent** (Art. 3(2)). Breaking an administrative order about record-keeping carries its own fine. - **Prohibition after opt-out** (current Art. 3(3)). Once the recipient gives notice of refusal, no further advertising mail may be sent. - **Labeling duty (current Art. 4).** As set by MIC order, the message must show the sender's **name and address**, the **email address for opt-out notices**, and other prescribed information. Before 2008, messages had to be tagged "未承諾広告※" ("unsolicited advertisement"); the opt-in scheme replaced that with these disclosure requirements. - **False sender information is prohibited** (Art. 5), and this is a **direct criminal offence**. Sending to **fictitious addresses generated by a program** is also prohibited (Art. 6). ISPs may refuse service to such senders (Art. 11). - **How enforcement works.** MIC and the **Consumer Affairs Agency** issue administrative orders (Art. 7), and can carry out on-site inspections and collect reports (Art. 28), ask ISPs for information about their contractors (Art. 29), and share information with enforcement agencies abroad (Art. 30). Recipients and ISPs report spam through the registered organisation (Dekyo's Anti-Spam Consultation Center). - **Penalties.** Breaking Art. 5 (false sender information) or an administrative order is punished by **up to 1 year in prison or a fine of up to ¥1,000,000**. The employing **corporation can be fined up to ¥30,000,000** (Arts. 34–35). - A separate opt-in regime for e-commerce advertising email exists in the **Specified Commercial Transactions Act**, overseen by the Ministry of Economy, Trade and Industry (METI). Advertisers must comply with both. ### APPI touchpoints for marketers The **Act on the Protection of Personal Information** (APPI), enforced by the **PPC** (Personal Information Protection Commission), governs the address data itself. The PPC publishes English translations. The consolidated PDF used here is the text as amended in June-2020, and a version consolidated to 1 Apr 2023, with renumbered articles, is on the PPC legal page. Only the Japanese text has legal effect. The duties that matter for marketing: - Specify and publish the **purpose of use**, and stay within it. - **Providing personal data to a third party requires prior consent**, or the notified **opt-out mechanism**, which is filed with the PPC and cannot be used for sensitive data. This is what restricts selling and sharing lists. - Keep records of what data was provided. - Obtain consent for transfers to third parties **outside Japan**, with information about the destination country, unless the country is on the approved list (the EU and the UK have mutual adequacy decisions with Japan). - Stop using the data on request where it is being handled unlawfully. The 2020 amendment (in force from Apr 2022) raised corporate fines to **up to ¥100M** for certain violations, such as ignoring PPC orders or providing a database unlawfully. --- ## New Zealand: Unsolicited Electronic Messages Act 2007 The Electronic Messaging Compliance Unit of the **Department of Internal Affairs (DIA)** administers and enforces the Act. It covers **commercial electronic messages** (email, SMS or TXT, fax, instant messages, image messages) with a **New Zealand link**: messages sent to, from or within New Zealand, not only to .nz addresses. Pop-ups and voice calls are excluded. The regime deliberately mirrors Australia's ([Spam Act](https://emailmarketing.net/learn/compliance/australia-spam-act)), and DIA presents it as three steps: 1. **Consent** - **Express**: a direct indication, such as a form, a checkbox or a spoken agreement. Keep records, because the sender must prove consent. - **Inferred**: from conduct and an ongoing business relationship, where the recipient can reasonably expect messages. DIA describes its use as "limited". A **single purchase does not create ongoing inferred consent**. A business card supports only messages relevant to the relationship in which it was exchanged. A tertiary institution messaging its enrolled students about campus services qualifies. - **Deemed (conspicuous publication)**: an address **conspicuously published in a business or official capacity** (on a website, in a brochure or in a directory) counts as consent, **unless** it is published with a statement that unsolicited messages are not wanted. It covers only messages **relevant to the person's business, role, functions or duties**. 2. **Identify**: clearly identify the business that authorised the message and how to contact it. The contact details must stay accurate for **30 days** after sending. 3. **Unsubscribe**: every message needs a working unsubscribe facility that is clear and conspicuous, **free**, and uses the **same medium** as the message. An SMS campaign must accept a reply of STOP, and offering an email-only unsubscribe for SMS breaches the Act. The facility must keep working for **≥ 30 days**, and requests must be honoured within **5 working days**, counted from the day after the request. **Address-harvesting software**, and lists of harvested addresses used to send unsolicited commercial messages, are also prohibited. **Penalties.** DIA escalates from formal warnings and civil infringement notices to court proceedings. Failure to comply risks fines of up to **NZ$500,000 for organisations**. DIA states the $500K figure; the Act, in s 45, sets NZ$200,000 for individuals. Recipients forward spam complaints to DIA (to 7726 for TXT messages). --- ## Singapore: Spam Control Act 2007 and PDPA There are two layers. The **Spam Control Act (SCA)** regulates the sending of unsolicited commercial electronic messages **in bulk**: email and mobile messages, including messages to instant-messaging accounts, with a Singapore link. The **Personal Data Protection Act 2012 (PDPA)** regulates the use of the address, and the PDPC requires **opt-in** consent for direct marketing. > Sources: the SCA text comes from Wikisource's transcription and from Wayback Machine captures of Singapore Statutes Online, because sso.agc.gov.sg loads its content late and blocks automated retrieval. The PDPC Advisory Guidelines on Key Concepts (PDF, revised 29 Apr 2026) were retrieved through the Wayback Machine from the pdpc.gov.sg URL listed in the sources. ### Spam Control Act mechanics - **"Sending in bulk"** (s 6) means more than **100** messages on the same or a similar subject in **24 hours**, **1,000** in **30 days**, or **10,000** in **1 year**. - **Dictionary attacks and address-harvesting software** (s 9). Messages may not be sent to addresses generated or obtained by either method, whatever the consent or the content. - **Requirements of the Second Schedule** for unsolicited commercial messages sent in bulk (s 11): - **Unsubscribe facility**: an email address (and, for mobile messages, a number that can receive text messages) that is valid and can receive requests for **at least 30 days** after sending, at no more than the usual cost. After an unsubscribe request, no further messages may be sent once **10 business days** have passed. - **Labeling**: an `` marking, so that the message is clearly identified as an advertisement. Under the Act and its regulations, it goes in the subject line or, if there is no subject line, prominently in the message. - **Accurate header and sender information**: no false or misleading subject line or header, and an accurate, working email address or telephone number for the sender. - **Enforcement is by civil action, not by a regulator.** Anyone who suffers loss may sue (ss 13–14). **Statutory damages are up to $25 per message, with a total cap of $1 million**, unless the actual loss is greater. Aiding or abetting a breach can also be sued over (s 12). The First Schedule excludes some messages, such as government or emergency messages in the public interest. ### PDPA layer (PDPC Advisory Guidelines on Key Concepts) - **Business contact information is excluded** from the Data Protection Provisions: a name, title, business phone number, business address or business email address that was not provided only for personal purposes. Prospecting to corporate addresses in B2B does not need consent under the PDPA, although the SCA still applies to bulk sends. - **Direct marketing needs express opt-in consent.** The Personal Data Protection Regulations 2021 state that **deemed consent by notification does not apply to sending direct marketing messages** (¶12.27), and the PDPC "does not consider the opt-out method (e.g., a pre-checked box) appropriate" for consent to marketing (¶12.28). - Deemed consent by conduct covers only purposes that are objectively obvious from the transaction. Booking a taxi is not consent to be marketed a limousine service. - **Lists from third parties.** An organisation that buys data must take care to confirm that the seller validly obtained consent to disclose it, through contractual undertakings, written confirmation, or copies of the evidence of consent (¶¶12.33–12.34). - **Withdrawal of consent** (s 16 PDPA) must be allowed and made easy. The PDPC's rule of thumb for "reasonable notice" is that a withdrawal takes effect within **10 business days** (¶12.41). When consent is withdrawn, the organisation must also make its **data intermediaries and agents** stop processing the data (¶12.52). A general "unsubscribe" click is read as withdrawing consent only for the **channel the message was sent through** (¶¶12.47–12.48). - **ESPs are "data intermediaries".** An intermediary that processes data on behalf of another organisation, for that organisation's purposes and under a written contract, is subject only to the **Protection, Retention Limitation and Data Breach Notification** obligations (for the last one, it must notify its customer). The customer organisation remains fully liable, as if it had processed the data itself (s 4(3), ¶¶6.15–6.27). Processing overseas triggers the customer's **Transfer Limitation Obligation**. - Singapore's **Do Not Call Registry** covers telephone numbers (voice, SMS and fax), not email. --- ## South Korea: Network Act Article 50 (and PIPA) Article 50 of the **Act on Promotion of Information and Communications Network Utilization and Information Protection** (the "Network Act") governs the "transmission of advertising information for profit" through any electronic medium. The **Personal Information Protection Act (PIPA)**, overseen by the PIPC, governs the underlying data. The **Korea Communications Commission (KCC)** enforces the spam rules, with operational support from the Illegal Spam Response Center of **KISA**. > Sources: the text of the provisions comes from the official English translation of the Network Act by the Korea Legislation Research Institute (KLRI), consolidated up to the amendments of 23 Jan 2024. The law.go.kr page listed in the sources (a partial amendment in 2026, lsiSeq=282481) works only with JavaScript and could not be read directly, so the KLRI translation was used instead. - **Opt-in (Art. 50(1)).** The addressee's **express prior consent** is required. Exception 1: a sender that **collected the contact details directly in a transaction** may advertise **the same kind of goods or services it deals in** to that customer within a period set by Presidential Decree. The Enforcement Decree sets **6 months** from the end of the transaction (a figure from the decree; the Act delegates it). Exception 2 covers telemarketers under the Door-to-Door Sales Act (voice calls). - **Refusal or withdrawal (Art. 50(2)).** Once the addressee refuses or withdraws consent, sending is prohibited, even where the transaction exception applied. - **Night-time rule (Art. 50(3)).** Sending between **21:00 and 08:00** the next day requires **separate express consent**, except for media set by Presidential Decree. The Decree **exempts electronic mail**, so the rule applies to SMS and push notifications, not to email (a detail from the decree). - **Mandatory disclosures (Art. 50(4)).** The advertisement must state the **sender's name and contact details** and the **means by which the addressee can easily refuse or withdraw consent**. For email, the Enforcement Decree requires the **"(광고)"** ("advertisement") marking at the **start of the subject line** (a detail from the decree). - **Prohibited evasion tactics (Art. 50(5), amended Jan 2024).** Blocking or evading opt-out; **generating addresses automatically** by combining characters (dictionary attacks); **registering** phone numbers or email addresses **automatically** for sending; hiding the sender's identity or the source of the transmission; and using deceptive tricks to get responses. - **Free opt-out (Art. 50(6)).** The addressee must not pay any cost (for example, call charges) to refuse or withdraw consent. - **Notice of the result (Art. 50(7)).** The sender must tell the addressee the **outcome of processing** their consent, refusal or withdrawal. Under the Decree this is done within 14 days, as commonly implemented (a detail from the decree). - **Regular reconfirmation (Art. 50(8)).** Senders must **regularly check** that the addressee still consents. The Enforcement Decree sets a **2-year** cycle (a figure from the decree). - **Outsourced sending (Art. 50-3).** A business that has a third party send its advertisements must **control and supervise** that party. For liability for damages, the contracted sender is **treated as an employee of the business**. This is the Korean equivalent of "you cannot outsource your risk", and it applies directly to ESPs. - ISPs may refuse service used for sending in breach of the rules (Art. 50-4). Programs that display advertisements or collect data need the user's consent (Art. 50-5). Posting advertisements on websites needs the operator's consent (Art. 50-7). - **Penalties.** - Breaches of Art. 50(1)–(3) (sending without consent, after a refusal, or at night), (4) (missing or false disclosures), (6) (passing costs to the addressee) and (8) (no reconfirmation) carry an **administrative fine of up to ₩30,000,000** (Art. 76(1)7–9-2). - The evasion tactics in Art. 50(5) are **criminal**, punished by up to **1 year** in prison or a fine of up to **₩10,000,000** (Art. 74(1)4), and the corporation is jointly liable (Art. 75). - PIPA adds separate, heavier sanctions for collecting or using the personal data itself unlawfully. --- ## ESP triage view - All four countries punish **unsubscribe failures** separately from consent. The same one-click, free, no-login flow built for [Australia](https://emailmarketing.net/learn/compliance/australia-spam-act) and [CASL](https://emailmarketing.net/learn/compliance/casl) satisfies New Zealand (5 working days), Singapore (10 business days), Japan (stop on refusal) and Korea (stop immediately and send a notice of the result). - Labels are the trap specific to these countries. `` (Singapore, for unsolicited bulk mail) and **(광고)** (Korea) go in the subject line. Korea also restricts channels other than email at night. - Korea and Japan both make **falsifying the sender** and **lists of automatically generated addresses** criminal offences. Refuse such lists at onboarding (see [Spam Traps](https://emailmarketing.net/learn/reference/spam-traps) and [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods)). - Japan (APPI), Singapore (PDPA) and Korea (PIPA) each add a data protection layer with its own rules on consent and transfers for the address data. For an ESP acting as a processor, Singapore's PDPA model of the "data intermediary" states the split of responsibilities most clearly. This is not legal advice. See the [compliance notice](https://emailmarketing.net/learn/compliance). # Australia — Spam Act 2003 and ACMA Enforcement > Australia's opt-in regime: express/inferred consent, sender ID and unsubscribe rules (5 business days, 30 days, no login), ACMA penalties incl. Commonwealth Bank's record AU$3.55M, plus OAIC APP 7 and tracking-pixel guidance. Source: emailmarketing.net — https://emailmarketing.net/learn/compliance/australia-spam-act If you send marketing email to people in Australia, you need their consent, you must identify yourself, and your unsubscribe must work without a login. Australia is an **opt-in** jurisdiction, and its regulator is one of the most active enforcers in the world. The **Spam Act 2003** (Cth) and the Spam Regulations govern **commercial electronic messages** (email, SMS, MMS, instant messages). The **Australian Communications and Media Authority (ACMA)** enforces them, and it routinely issues infringement notices of seven figures against mainstream brands. The most common reason is an **unsubscribe failure**, including requiring a login to unsubscribe, which directly constrains how an email service provider (ESP) designs its unsubscribe flows. > Sources: the text of the Act below comes from the consolidated compilation C2012C00030, retrieved through the Internet Archive, because legislation.gov.au serves the current compilation through a JavaScript application. ACMA pages were also retrieved through the Internet Archive (2026 snapshots), because acma.gov.au blocks clients that are not browsers. ## Scope - A message is **commercial** if it offers, advertises or promotes goods or services (or land, or business or investment opportunities), even if only **part** of the message is commercial (ACMA fact sheet). Messages that are purely **factual** are exempt (Schedule 1, see below). - The Act applies to messages with an **Australian link** (s 7): messages sent from Australia, sent to it, or accessed in it. Foreign senders who mail Australian recipients are therefore covered. - The Act **applies outside Australia** (to acts done outside Australia) and is enforced through civil penalty provisions, not criminal law (s 27). - Defences: the sender did not know, and could not have found out with reasonable diligence, that the message had an Australian link; or the message was sent **by mistake**. The sender bears the **evidential burden** (ss 16(3)–(5)). ## The three obligations ### 1. Consent (s 16 and Schedule 2) A commercial electronic message with an Australian link must not be sent without the **consent of the relevant electronic account-holder**. Consent means (Sch 2 cl 2): - **Express consent.** ACMA considers it best practice. It can be given through a form, a checkbox on a website, by phone, or face to face. **You cannot send an electronic message to ask for consent**, because that request is itself a marketing message. Keep records of who consented, when and how, because **the sender must prove consent**. - **Inferred consent.** Consent reasonably inferred from the **conduct and the business or other relationships** of the recipient. ACMA reads this narrowly. It requires a provable, **ongoing relationship**, and the marketing must be **directly related** to that relationship. A bank may tell a savings customer about another savings account, but may *not* use that relationship to sell insurance to the same customer. A single purchase does **not** create inferred consent. - **Conspicuous publication** (Sch 2 cl 4). Consent may be inferred for a **work-related electronic address** that has been conspicuously published: the address of an employee, director, officer, partner, office-holder or self-employed individual, or the address of a role or position. The publication must reasonably appear to have the agreement of the person or organisation. This does **not** apply if the publication comes with a statement that unsolicited commercial messages are not wanted, and it covers only messages **relevant to the work-related business, functions or duties** of the addressee. Otherwise, publishing an address is **not** consent (Sch 2 cl 4(1)). This is Australia's only allowance for B2B mail; otherwise, business addresses follow the same consent rules as consumer addresses. - **Withdrawal of consent** takes effect at the end of **5 business days** from the day the unsubscribe message is sent (Sch 2 cl 6). Business days are counted according to where the recipient is. - Purchased or rented lists: the advertiser is still responsible for proving consent for every address used. ### 2. Sender identification (s 17) Every commercial electronic message, including exempt ("designated") messages, must: - **clearly and accurately identify** the individual or organisation that **authorised** the sending (use the legal business name, or the name and the Australian Business Number (ABN)); - include **accurate contact information**; and - that information must be **reasonably likely to be valid for at least 30 days** after sending. If a third party, such as an agency or an ESP, sends on a brand's behalf, the message must still identify the **authorising business**, and that business remains liable ("you cannot outsource your risk", ACMA fact sheet). ### 3. Functional unsubscribe (s 18 and ACMA 2024 fact sheet) Every commercial message, except designated ones, must contain a clear and conspicuous unsubscribe statement and a facility that meets these requirements: | Requirement | Detail | |---|---| | Clear instructions | Presented in a clear and conspicuous way (s 18(1)(d)) | | Working for ≥ 30 days | The unsubscribe address must be able to receive the recipient's message, and a reasonable number of similar messages from other recipients, for **at least 30 days** after sending (s 18(1)(e)) | | Acted on within 5 working days | ACMA fact sheet; the same period as the withdrawal of consent in Sch 2 cl 6 | | No fee | Must not require payment, and must not cost more than the usual cost of using the address (for example, a standard SMS charge) | | **No login, no account and no extra personal information** | The recipient must not have to log in to an account, create one, or provide more personal information in order to unsubscribe | | Legitimately obtained address | The unsubscribe address itself must have been obtained legitimately (s 18(1)(f)) | Large brands keep breaking the no-login rule (see enforcement below). An ESP's unsubscribe flow for Australian recipients must work without any authentication. ## Other prohibited conduct - **Address-harvesting software and lists of harvested addresses** must not be supplied, acquired or used in connection with sending in breach of s 16 (ss 20–22). - **Ancillary liability.** Aiding, abetting or inducing a contravention, being knowingly involved in one, or conspiring to commit one is itself a contravention (ss 16(9), 17(5), 18(6)). This matters for platforms and agencies. Merely supplying a carriage service is excluded. - Messages must not be sent to addresses that the sender has no reason to believe exist (s 16(6)). ## Exemptions: designated commercial electronic messages (Schedule 1) These messages are exempt from the **consent** (s 16) and **unsubscribe** (s 18) rules, but they are still subject to **sender identification** (s 17): | Category | Conditions | |---|---| | Factual information messages | Contain no more than factual information, with directly related comment and permitted identifying information (the name, logo and contact details of the author, employer or sponsor). The message would not be commercial without that added information (Sch 1 cl 2) | | Government bodies, registered political parties, religious organisations, charities | The message relates to goods or services, and the body is the supplier (Sch 1 cl 3) | | Educational institutions | The recipient, or a member of their household, is or was enrolled, and the institution supplies the goods or services (Sch 1 cl 4) | ## Penalties and enforcement ### Statutory maxima (ss 24–25) Penalties are expressed in **penalty units** for each contravention, and the Federal Court imposes them. A single day's sending can contain many contraventions: | Person | No prior record: for each contravention / daily cap | Prior record: for each contravention / daily cap | |---|---|---| | Body corporate, breach of s 16 | 100 units / 2,000 units | 500 units / **10,000 units** | | Body corporate, other civil penalty provisions | 50 units / 1,000 units | 250 units / 5,000 units | | Individual, breach of s 16 | 20 units / 400 units | 100 units / 2,000 units | | Individual, other provisions | 10 units / 200 units | 50 units / 1,000 units | The Court may also order **compensation** for victims and the **surrender of financial benefits** (ss 28–29). Actions may be brought up to **6 years** after the contravention (s 26). ACMA can also issue **infringement notices** (Schedule 3: payable within 28 days, and given within 12 months of the alleged contraventions), give **formal warnings**, and accept **undertakings that courts can enforce**. A Commonwealth penalty unit is indexed from time to time. It was AU$330 in late 2024, so the daily cap of 10,000 units for a repeat corporate offender is more than AU$3M per day. ### Enforcement practice: the record ACMA publishes the outcome of every investigation. Unsubscribe failures and sending without consent account for most of them. Selected actions that involve email: | Company | Breach | Outcome | Date | |---|---|---|---| | Commonwealth Bank of Australia | 61M+ emails that required a **login to unsubscribe**; 4M+ without a working unsubscribe; 5,000+ sent after an unsubscribe | **AU$3,552,000** infringement notice and a 3-year enforceable undertaking (the largest ever at the time) | Jun 2023 | | Commonwealth Bank of Australia (again) | Email and SMS without consent, unsubscribe not working | **AU$7,502,610** infringement notice and an enforceable undertaking (EU) | Aug 2024 | | Tabcorp (TAB) | SMS and WhatsApp: inadequate sender information, no working unsubscribe, no consent | **AU$4,003,270** + EU | Apr 2025 | | Pizza Hut Australia | Emails without consent, contact details or a working unsubscribe | AU$2,502,500 + EU | May 2024 | | Sportsbet | Email and SMS without consent or unsubscribe | AU$2,508,600 + EU | Mar 2022 | | DoorDash | Email and SMS without consent or unsubscribe | AU$2,011,320 + EU | Aug 2023 | | Binance Australia | Emails without consent or unsubscribe | AU$2,000,220 + EU | Oct 2022 | | Latitude Finance | Email and SMS without consent or unsubscribe | AU$1,549,560 + EU | Jul 2022 | | Luxottica | Emails without consent or unsubscribe | AU$1,512,500 + EU | Apr 2024 | | Kmart | Emails without consent | AU$1,303,500 + EU | Sep 2023 | | Woolworths | Emails **after consent was withdrawn** and without unsubscribe | AU$1,003,800 + EU | Jun 2020 | | Lululemon Australia | 370,000+ emails with commercial content and **no unsubscribe** | AU$702,900 | Mar 2026 | | Betfair | Emails and SMS to **VIP customers** without consent or unsubscribe | AU$871,660 + EU | May and Jul 2025 | | Telstra | SMS without consent or unsubscribe | AU$626,000 + EU | Dec 2024 | | Singtel Optus | Marketing emails and SMS **after consent was withdrawn** and without unsubscribe | AU$504,000 + EU | Jan 2020 | | Ticketek | Email and SMS without consent | AU$515,040 + EU | Oct 2023 | | Uber Australia | Emails without consent or unsubscribe | AU$412,500 | Sep 2023 | | Kogan | Emails without a **working** unsubscribe | AU$310,800 + EU | Jan 2021 | In the 18 months to mid-2023 alone, businesses paid **AU$11M** in penalties for spam and telemarketing, and gave 12 court-enforceable undertakings and received 1 formal warning. The patterns an ESP should design against are unsubscribe links that require a login (CBA), "transactional" messages with promotional content and no unsubscribe (Lululemon, Kogan), sending after consent is withdrawn (Woolworths, Optus, Ticketek), and treating VIP or loyalty segments as exempt from consent (Betfair). ## Interaction with the Privacy Act: OAIC APP 7 (direct marketing) Australian Privacy Principle 7, overseen by the Office of the Australian Information Commissioner (OAIC), restricts the use of personal information for direct marketing. However, **APP 7 does not apply to the extent that the Spam Act (or the Do Not Call Register Act) applies**. For marketing by email, SMS or MMS, the Spam Act governs. APP 7 covers the other channels (mail, door-to-door, targeted online advertising, in-app marketing), and applies where an organisation is exempt from those Acts. It is still relevant to email programs: - **APP 7.2.** Information collected **directly** from the individual may be used for direct marketing if the individual **would reasonably expect** it (an objective test), a **simple way to opt out** is provided, and the individual has not opted out. - **APP 7.3.** For information from **third parties**, or where the individual would not reasonably expect the marketing, you need consent (unless it is impracticable to obtain), a simple opt-out, **and a prominent opt-out statement in each communication** (in plain English, placed prominently, in a readable font). - **APP 7.4.** **Sensitive information** may be used for direct marketing only with **explicit consent**, and there is no exception for impracticability. - On request, an organisation must tell the individual **where it got their personal information** (unless that is unreasonable or impracticable), within about 30 days. It must also honour requests to opt out of list "facilitation", which means providing data for other organisations' marketing. - A "simple means" of opting out has clear instructions, takes little effort, is free or costs very little, and is available through the channel the marketing used. ## OAIC guidance on tracking pixels The OAIC's guidance on tracking pixels is aimed at third-party pixels. It focuses on pixels on websites, while noting that pixels are also used in emails and apps. Its main positions relevant to open tracking and click tracking: - Data such as **IP addresses, URLs or hashed email addresses** can be **personal information** when it can be linked with a third-party platform's data, even if the individual is not directly identified. The OAIC advises organisations to "err on the side of caution." - The obligations involved are: - **APP 1**: the privacy policy must disclose the use of third-party pixels. - **APP 3**: collection must be reasonably necessary, and pixels should be configured for **data minimisation**. Sensitive information requires express opt-in consent and should generally be blocked from disclosure through pixels. - **APP 5**: notify people at or before collection, including about third-party recipients and transfers overseas. - **APP 6**: disclosure to the pixel provider must match the purpose of collection or have a valid basis for secondary use. - **APP 7**: a simple opt-out from targeted marketing driven by pixels. - **APP 8**: reasonable steps for disclosure overseas. - Before deployment, check how the pixel works, review the provider's terms, carry out a **Privacy Impact Assessment**, configure the pixel so that it cannot collect sensitive data, and review it regularly. **The organisation that deploys the pixel is responsible** for configuring it in a compliant way. ## ESP checklist for Australian traffic - A one-click unsubscribe that needs no authentication ([List-Unsubscribe and RFC 8058](https://emailmarketing.net/learn/list-management/list-unsubscribe)) satisfies the no-login rule. Suppress the address within 5 business days; doing it immediately is best practice. - Keep the unsubscribe endpoint working for ≥ 30 days after each campaign, and keep the sender's contact information valid for ≥ 30 days. - Store evidence of consent (who, when and how), because the sender must produce it if ACMA asks. - Identify the **authorising customer** (legal name or ABN) in every message sent on their behalf. The customer is liable, but ancillary liability can reach anyone knowingly involved. - Do not treat "the recipient once bought something" as enough. Inferred consent needs an ongoing, directly related relationship. See [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods) for how the quality of consent varies. - Never accept lists built with harvesting software. Supplying or using them is a separate contravention. This is not legal advice. See the [compliance notice](https://emailmarketing.net/learn/compliance). # Brazil — LGPD for Email Marketing > LGPD legal bases for email marketing (consent vs. legitimate interest per the ANPD guide), controller/operator roles as they hit ESPs, international transfer state (Resolução 19/2024, EU adequacy), children's-data position, and sanctions up to R$50M. Source: emailmarketing.net — https://emailmarketing.net/learn/compliance/brazil-lgpd-email If you send email marketing to recipients in Brazil, the rules come from a data protection law, not from an anti-spam law. Brazil has **no dedicated anti-spam statute**. Email marketing to Brazilian recipients is governed by the **Lei Geral de Proteção de Dados (LGPD, Lei nº 13.709/2018)**, a law in the style of the GDPR. The **ANPD** enforces it. MP 1.317/2025 and Lei 15.352/2026 renamed it from Autoridade to **Agência Nacional de Proteção de Dados**, giving it the status of a regulatory agency. Unlike CASL, PECR or the Spam Act, the LGPD has no opt-in rule for each message. Instead, every processing of an email address (a piece of personal data, Art. 5 I) needs a **legal basis**, transparency, and respect for the rights of the data subject. The sources were read in the original Portuguese. ## Legal bases for marketing (Art. 7) Art. 7 lists ten legal bases. These two matter for marketing: | Basis | Text | Marketing implications | |---|---|---| | **Consent** (Art. 7 I) | A free, informed and unambiguous expression of will for a **determined purpose** (Art. 5 XII) | Written or otherwise demonstrable (Art. 8). If written, it must be in a **clause highlighted** from the other contract terms (Art. 8 §1). **Generic authorisations are void** (Art. 8 §4). **The controller bears the burden of proof** (Art. 8 §2). Consent can be revoked at any time through a **free and facilitated procedure** (Art. 8 §5). Sharing with **other controllers** requires **specific consent** (Art. 7 §5), so a purchased list needs consent that names the buyer. | | **Legitimate interest** (Art. 7 IX) | Processing necessary to serve the legitimate interests of the controller or a third party, **except where the data subject's fundamental rights and freedoms prevail** | Art. 10 expressly names "**support and promotion of the controller's activities**" (Art. 10 I) as a possible legitimate purpose, which is the basis for first-party marketing. The conditions: only data that is **strictly necessary** (Art. 10 §1), transparency measures (Art. 10 §2), and the ANPD may demand a data protection impact report (RIPD, Art. 10 §3). | The other bases (performing a contract, a legal obligation, credit protection and so on) rarely support promotional email. Data that is public, or that the data subject has made manifestly public, still requires a purpose, good faith and respect for the data subject's rights (Art. 7 §§3–4). Public data is not free to use for marketing. ### The ANPD legitimate-interest guide (Guia de Legítimo Interesse, Feb 2024) The ANPD's guide sets out how Art. 7 IX and Art. 10 work in practice: - An interest is legitimate when it is (i) **compatible with the legal order**, (ii) grounded in **concrete situations** (not abstract or speculative ones), and (iii) tied to **legitimate, specific and explicit purposes**. - A **balancing test (teste de balanceamento)** must come before any reliance on legitimate interest, for each specific purpose. It weighs legitimacy, necessity, the impact on the data subject, and the data subject's **legitimate expectations** (Art. 10 II). If the test is inconclusive, or if adequate safeguards cannot be identified, **use another legal basis**. - Factors for legitimate expectations: a prior direct relationship with the controller; the source and manner of collection (directly, or from a third party or public source); context and timing; and whether the marketing purpose is compatible with the purpose of collection. - **Example 5 is the reference case for marketing.** A private university emailed students and staff promotions for books and cultural products from its own press, and this was accepted as legitimate interest. There was a prior relationship, the promotion supported the controller's own activities (Art. 10 I), the data was not shared with third parties, and every message carried an **unsubscribe (descadastramento) mechanism** as a safeguard. In practice, **first-party marketing to your own customer base, with a working opt-out, can rest on legitimate interest**. Cold email to strangers cannot, because there is no prior relationship and no legitimate expectation. - **Legitimate interest of a third party** (Example 6: promoting a partner language school to employees) is possible, but it is harder to justify. Prior notice, an easy way to refuse, and a balancing test are expected. - Legitimate interest is generally **inappropriate for using data about children and adolescents for advertising**. In Example 3, an educational app that shows ads for ultra-processed food to children fails the test, because there is no legitimate expectation and the principle of the child's best interest is violated. - Record-keeping duty: keep the balancing test and the processing records (Art. 37 highlights records "especially when based on legitimate interest"). High-risk processing calls for a RIPD. ### Data-subject rights that shape list management (Arts. 18–19) - Confirmation that processing exists, and access to the data (in a simplified format **immediately**, or as a complete statement within **15 days**). - Correction; anonymisation, blocking or **deletion** of data that is unnecessary or non-compliant; deletion of data processed on the basis of consent (Art. 18 VI); information about sharing (Art. 18 VII); **revocation of consent** (Art. 18 IX); and **opposition** to processing that is not based on consent (Art. 18 §2). Legally, an unsubscribe is a revocation or an opposition, and it must be free of charge (Art. 18 §5). - After a correction, deletion or blocking, the controller must notify the parties it shared the data with, so they do the same (Art. 18 §6). Suppression must therefore propagate. ## Agents of treatment: controller vs. operator, and where the ESP sits Definitions (Art. 5): the **controlador** (VI) makes the decisions about processing; the **operador** (VII) processes **on behalf of** the controller. Together they are the **agentes de tratamento** (IX). The ANPD's Guia Orientativo on agents (May 2021) explains how the roles apply: - What distinguishes them is **decision power**. The controller sets the purpose and the "essential elements" (types of data, duration). The operator may decide only **non-essential elements** (software, technical security measures). An advertising or marketing **agency that runs a campaign to the brand's specification is an operator**, and the brand is the controller (guide ¶¶10–11, Example 5). - **An ESP is an operator** for its customers' lists. It must process data **only according to the controller's instructions** (Art. 39), and should set out the arrangement in a written contract covering the object, duration, nature and purpose, types of data, and responsibilities. The guide recommends this contract but does not mandate it (¶¶53–54). - A **suboperator** is a party the operator engages to help process data for the controller. This is the guide's own concept; examples are the ESP's cloud or storage vendor, or a subcontractor for delivery. The operator should obtain the controller's **formal authorisation** to subcontract, which may be generic or specific. Towards the ANPD, the suboperator is treated as an operator (¶¶61–66, Examples 11–12). - **Joint controllership** exists when two or more controllers make common or converging decisions on the purposes and essential elements. In Example 5, two brands that share customer bases for a co-branded campaign are joint controllers, while their marketing agency remains an operator. Controllers directly involved are **jointly and severally** liable (Art. 42 §1 II). - **Liability (Art. 42)**: a controller or operator that causes damage must repair it. **The operator is jointly and severally liable**, just like the controller, **when it breaches the LGPD's obligations or fails to follow the controller's lawful instructions** (Art. 42 §1 I). Courts may reverse the burden of proof in the data subject's favour (Art. 42 §2). The practical consequence for an ESP: sending beyond the customer's instructions, or ignoring suppression, makes the ESP liable alongside the customer, as if it were a controller. - Both agents must keep **records of processing operations** (Art. 37). The controller (and the operator) must appoint an **encarregado** (a data protection officer, DPO, Art. 41) and publish their contact details. The ANPD may waive this for small agents. Resolução CD/ANPD 2/2022 also classes the use of children's data as "high risk", even for small agents. ## International transfers (Arts. 33–36, Resolução CD/ANPD nº 19/2024) Art. 33 permits transfers: - (I) to countries or international organisations with an **adequate** level of protection; - (II) with guarantees provided by the controller: **specific contractual clauses, standard contractual clauses (SCCs), global corporate norms, or seals, certificates and codes of conduct**; - (V) with authorisation from the ANPD; - (VIII) with **specific and highlighted consent**, after the data subject has been told the operation is international; - and in narrow cases of public interest, vital interest or legal obligation (IX). The current state, according to the ANPD's international affairs page (fetched Jul 2026): - **Regulation**: Resolução CD/ANPD nº 19 of 23 Aug 2024 approved the transfer regulation, **including Brazilian SCCs**. Existing contracts had a **12-month deadline** from publication to incorporate the SCCs (that is, by Aug 2025). - **Adequacy decisions**: the ANPD has recognised the **European Union** as adequate (Resolução CD/ANPD nº 32 of 26 Jan 2026). No other country is listed. This decision is separate from the transfer regulation above. **Resolução 19/2024** is Brazil's domestic transfer framework (the Brazilian SCCs), while **Resolução 32/2026** is the ANPD's recognition of the EU as adequate for data leaving Brazil. It is the Brazilian half of a **mutual** recognition: on the same date (26 Jan 2026), the European Commission adopted its own Art. 45 adequacy decision for Brazil (Implementing Decision (EU) 2026/179). Transfers between the EU and Brazil now flow in both directions without SCCs (see [ESP Processor Obligations](https://emailmarketing.net/learn/compliance/esp-processor-obligations#international-transfers-gdpr-chapter-v)). - **Equivalent foreign SCCs, specific clauses and BCRs (global corporate norms)**: the mechanism exists, but **none has been approved to date**. Requests go through the ANPD's SEI system. - The consequence for ESPs: a non-Brazilian ESP that processes Brazilian lists abroad should include the Brazilian SCCs in its data processing agreement (DPA) with Brazilian customers, or use another Art. 33 mechanism. ## Children and adolescents (Art. 14 and the ANPD's interpretation) - Art. 14: processing of data about children and adolescents must serve their **best interest**. Art. 14 §1 requires **specific, highlighted consent from at least one parent or legal guardian** for children's data. The controller must make reasonable efforts to verify the adult who consents (§5), must not make participation in games or apps conditional on providing more data than needed (§4), and must publish what it collects and how (§2). Data may be collected without consent only to contact the parents (for a single use, without storage) or to protect the child (§3), and it may never be transferred onward (§3). - The ANPD document listed in the sources is the 2022 normative process (Nota Técnica nº 34/2022/CGN and Estudo Preliminar). It examined whether parental consent is the **only** legal basis. Its conclusion, interpretation 3, became **Enunciado CD/ANPD nº 1 (22 May 2023)**: data about children and adolescents **may be processed on any legal basis in Art. 7 (or Art. 11 for sensitive data), provided the best interest of the child prevails, assessed case by case** under the main text of Art. 14. - According to the legitimate-interest guide, however, **advertising to children on the basis of legitimate interest will normally fail the balancing test**. Processing children's data is a designated **high-risk** criterion that requires a RIPD. For email marketing, in practice, treat lists of under-18 recipients as requiring parental consent. ## Sanctions (Art. 52) The ANPD applies sanctions after administrative proceedings, progressively, one at a time or combined: | Sanction | Detail | |---|---| | Warning | With a deadline for corrective measures | | **Fine** | Up to **2% of the revenue in Brazil of the private entity or its group** in the last fiscal year (net of taxes), **capped at R$ 50,000,000 per infraction** | | Daily fine | Within the same R$50M cap | | Publicising the infraction | After confirmation | | Blocking or deletion | Of the personal data involved | | Partial suspension of the database | Up to 6 months, extendable once | | Suspension of the processing activity | Up to 6 months, extendable once | | Partial or total prohibition of data-processing activities | The most severe. Suspension or prohibition applies only after a previous fine, blocking or deletion sanction for the same case (§6) | The factors for setting a sanction (§1) include gravity, good faith, the advantage obtained, economic condition, **repeat offences**, the degree of damage, cooperation, adoption of good-practice and governance policies, and prompt correction. Civil liability (Art. 42) and sanctions under consumer law apply in parallel (§2). ## ESP checklist for Brazilian traffic - Map each list to a legal basis: consent records (who, when, how, and for which specific purpose), or a documented legitimate-interest balancing test with evidence of a prior relationship. - Include a working, free unsubscribe in every message. It is both the revocation route under Art. 8 §5 and the safeguard that the ANPD's own marketing example relies on. - Propagate suppression and deletion to all sharing partners (Art. 18 §6), and answer access requests within 15 days. - Contract as an operator: a written DPA, processing bound by instructions, the controller's authorisation for subprocessors, and Brazilian SCCs for processing outside Brazil. - Refuse third-party lists that lack consent specific to the purchaser (Art. 7 §5). Not legal advice: see [Compliance](https://emailmarketing.net/learn/compliance). To compare consent rules across jurisdictions, see [CASL](https://emailmarketing.net/learn/compliance/casl), [UK PECR](https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing) and [Australia](https://emailmarketing.net/learn/compliance/australia-spam-act). # CAN-SPAM Act (United States) > FTC compliance requirements for commercial email in the US: the seven core rules, the commercial vs. transactional distinction, sender liability, and penalties. Source: emailmarketing.net — https://emailmarketing.net/learn/compliance/can-spam If you send commercial email to people in the United States, the CAN-SPAM Act applies to you. It sets requirements for commercial messages, gives recipients the right to make a sender stop emailing them, and sets out the penalties for violations. The Federal Trade Commission (FTC) enforces the Act and the CAN-SPAM Rule that goes with it. Not legal advice. Check penalties and thresholds against the primary source (below) and with counsel before you rely on them. See [compliance/README.md](https://emailmarketing.net/learn/compliance). What the Act covers: - Despite its name, CAN-SPAM does **not** apply only to bulk email. It covers **all commercial messages**, defined as *"any electronic mail message the primary purpose of which is the commercial advertisement or promotion of a commercial product or service,"* including email that promotes content on commercial websites. - There is **no exception for business-to-business mail**. A message to former customers announcing a new product line must comply. - CAN-SPAM is an **opt-out** regime. You do not need prior consent to send commercial email, but you must offer and honor opt-outs. Compare this with the opt-in regimes of [Canada's CASL](https://emailmarketing.net/learn/compliance/casl) and the [UK's PECR](https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing). ## Penalties | Exposure | Detail | |---|---| | Civil penalty | Up to **$53,088 per separate email** in violation. This is the maximum under FTC Act §5(m)(1)(A), adjusted for inflation. **$53,088 took effect on 17 January 2025**, replacing the earlier figure of $51,744, and is still current: the annual adjustment for 2026 was cancelled after the lapse in the CPI-U index, so verify it against [16 CFR 1.98](https://www.ecfr.gov/current/title-16/chapter-I/subchapter-A/part-1/subpart-L/section-1.98) | | More than one liable party | More than one person can be liable for the same message: both the company whose product is promoted **and** the company that originated or sent the message | | Deceptive claims | Misleading claims about a product or service may also violate the law on deceptive advertising (Section 5 of the FTC Act) | | Consumer redress | Under Section 19 of the FTC Act, redress may include what consumers paid **plus the value of their lost time** | | Aggravated violations | Certain violations carry additional fines | | Criminal penalties | Including imprisonment (see below) | Criminal penalties, including imprisonment, apply to: - accessing someone else's computer without permission to send spam; - using false information to register several email accounts or domain names; - relaying or retransmitting many spam messages through a computer to mislead others about where the message came from; - harvesting email addresses, or generating them with a dictionary attack (sending to addresses made of random letters or numbers in the hope of hitting valid ones); - using open relays or open proxies without permission. ## The seven main requirements | # | Requirement | Detail | |---|---|---| | 1 | No false or misleading header information | "From," "To," "Reply-To," and routing information, including the originating domain name and email address, must be accurate and identify the person or business that initiated the message | | 2 | No deceptive subject lines | The subject line must accurately reflect the content of the message | | 3 | Identify the message as an ad | Disclose clearly and conspicuously that the message is an advertisement (the law allows some freedom in how) | | 4 | Include a valid physical postal address | A current street address, a P.O. box registered with the U.S. Postal Service, or a private mailbox registered with a commercial mail receiving agency established under Postal Service regulations | | 5 | Tell recipients how to opt out | A clear and conspicuous explanation that an ordinary person can easily recognize, read and understand. Give a return email address or another easy way over the Internet to communicate the choice | | 6 | Honor opt-out requests promptly | See the detailed rules below | | 7 | Monitor what others do on your behalf | You cannot hand legal responsibility to an email marketing vendor by contract. Both the promoted company and the sending company may be held responsible | ## Opt-out mechanics - The opt-out mechanism must be able to **process requests for at least 30 days** after the message is sent. - Opt-out requests must be honored **within 10 business days**. - A sender may **not** charge a fee, require any personally identifying information beyond an email address, or require any step other than sending a reply email or visiting a **single** web page. - A preference menu (for opting out of certain types of message) is allowed, but it **must include an option to stop all marketing messages**. - Make sure your own spam filter does not block incoming opt-out requests. - Once someone opts out, you may **not sell or transfer** their address, even as part of a mailing list. The only exception is a transfer to a company hired to help you comply with CAN-SPAM. - **Subscribers and members can opt out too.** A subscription or membership does not remove the right to opt out of marketing email. Before you send a message with no unsubscribe link to subscribers or members, check that its primary purpose fits one of the five transactional or relationship categories below. Otherwise, you must include an opt-out. ## Commercial vs. transactional or relationship messages What the Act covers depends on the **primary purpose** of the message. An email can contain three kinds of content: 1. **Commercial content**, which advertises or promotes a commercial product or service, including content on a website operated for a commercial purpose; 2. **Transactional or relationship content**, which facilitates a transaction already agreed or updates a customer about an ongoing transaction; 3. **Other content**, which is neither of the above. If the message contains only commercial content, it is commercial, and all the requirements of CAN-SPAM apply. If it contains **only** transactional or relationship content, it is exempt from most provisions, but it **still must not contain false or misleading routing information**. ### The five transactional or relationship categories A message's primary purpose is transactional or relationship only if it consists **only** of content that: 1. facilitates, completes or confirms a commercial transaction the recipient already agreed to; 2. gives warranty, recall, safety or security information about a product or service the recipient bought; 3. notifies the recipient of a change in the terms or features of a membership, subscription, account, loan or other ongoing commercial relationship, or of a change in the recipient's standing in that relationship, or provides regular, periodic information about an account balance; 4. provides information about an employment relationship or employee benefits; 5. delivers goods or services as part of a transaction the recipient already agreed to. The FTC reads these categories **narrowly**. Do not assume that every message to subscribers or members is transactional. The test is whether a reasonable consumer reading the email would understand its primary purpose as fitting one of the five categories. ### Mixed commercial and transactional content The message is **commercial** for the purposes of CAN-SPAM if either: - a recipient reasonably interpreting the **subject line** would likely conclude that it contains an advertisement or promotion; **or** - the transactional or relationship content does **not appear mainly at the beginning** of the message. An example from the FTC guide: an account statement that gives shipping and payment details first, with a one-line mention of a website at the end, is most likely transactional. The same subject line on a message that opens with promotions and leaves the delivery notice until the end is most likely commercial. ### Mixed commercial and "other" content The primary purpose is commercial if: - a recipient reasonably interpreting the subject line would likely conclude that the message advertises or promotes a product or service; **or** - a recipient reasonably interpreting the **body** would likely conclude that its primary purpose is to advertise or promote. The relevant factors are where the commercial content is placed (for example, at the beginning?), how much of the message is commercial, and the use of color, graphics, type size and style to highlight the commercial content. ## Who is the "sender" when multiple marketers appear in one message? When one email advertises the goods, services or websites of more than one marketer, the marketers can **designate a single "sender"** to be responsible for compliance, provided that the designated marketer: 1. meets the Act's definition of "sender" (it initiates a commercial message that advertises or promotes its own goods, services or website); 2. is specifically identified in the **"From" line**; and 3. complies with the provisions that apply to the **initiator**: no deceptive transmission information or deceptive subject heading, a valid postal address, a working opt-out link, and proper identification of the message as commercial or sexually explicit. If the designated sender fails in these duties, **all the marketers in the message may be held liable as senders**. ## Forward-to-a-friend messages Whether the seller or the person forwarding is the "sender" or "initiator" depends on the facts, and above all on whether the seller **pays or offers a benefit** for forwarding. If the seller offers money, coupons, discounts, awards, sweepstakes entries or something similar in exchange for forwarding, or pays or rewards anyone for generating web traffic or any kind of referral, the seller probably has compliance obligations. The UK reaches a similar result through the concept of "instigation" (see [UK PECR](https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing)). ## Sexually explicit email An FTC rule under CAN-SPAM adds requirements for messages with sexually oriented material: - The subject line must begin with the warning **"SEXUALLY-EXPLICIT:"**. - The message body must use the electronic equivalent of a "brown paper wrapper". When the message is opened, the only content visible may be the words "SEXUALLY-EXPLICIT:" and the standard disclosures for commercial email (identification as an ad, physical postal address, opt-out procedure). **No graphics** are allowed on the wrapper, and the recipient must take a deliberate action (scrolling, clicking) to see the explicit content. - The wrapper requirement does not apply if the recipient gave prior **affirmative consent** to receive the sender's sexually oriented messages. ## Deliverability relevance CAN-SPAM is a legal minimum, not a strategy for reaching the inbox. The filtering standards of mailbox providers (complaint rates, engagement) are far stricter than opt-out law. Mail that is legal but that recipients never asked for still produces the complaints and low engagement that destroy a sender's reputation. See [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability) and [Two Worlds of Email Deliverability](https://emailmarketing.net/learn/strategy/two-worlds-of-email-deliverability). # CAN-SPAM Rulemaking (16 CFR Part 316) > The FTC's regulatory detail behind CAN-SPAM: the codified definitions of sender, primary purpose, and valid physical postal address; the multi-sender designation test; forward-to-a-friend liability; the 10-business-day opt-out; and aggravated violations. Source: emailmarketing.net — https://emailmarketing.net/learn/compliance/can-spam-rulemaking Whether CAN-SPAM covers a particular message, who is legally its "sender", and whether a forward-to-a-friend button creates liability are all settled by rules the Federal Trade Commission (FTC) wrote under the Act. Those rules are codified in **16 CFR Part 316**. They define the terms that decide whether a message is covered and who the liable sender is. They also resolve the edge cases: mail that advertises several companies, forward-to-a-friend features, and postal addresses that are PO boxes. Start with [CAN-SPAM (US)](https://emailmarketing.net/learn/compliance/can-spam), which summarizes the Act's seven main rules in plain English. Those rules are not repeated below. ## How the rules were made The CAN-SPAM Act was signed on 16 December 2003 and took effect on 1 January 2004. It gave the FTC discretionary authority to define its terms and to issue rules that implement it. The FTC published the definitions in several Federal Register actions: | Action | Date | What it did | |---|---|---| | Advance notice of proposed rulemaking (ANPR) | 11 Mar 2004 | Asked for public comment on "primary purpose" and the definitions | | **Primary Purpose Final Rule** | 19 Jan 2005 (70 FR 3110) | Codified the **§316.3 primary-purpose criteria** | | **Notice of proposed rulemaking (NPRM)**, the source document for this reference | 12 May 2005 (70 FR 25426) | Proposed §316.2 definitions of *person*, *sender* and *valid physical postal address*. Proposed shortening the opt-out period to 3 business days. Proposed a ban on opt-out fees. Analysed forward-to-a-friend features | | **Final Rule** | 21 May 2008 (73 FR 29654) | Adopted the definitions and the ban on fees. **Declined to shorten** the 10-business-day opt-out period | **What "reporting requirements" in the title means.** The source document is titled "Definitions, Implementation, and Reporting Requirements." The reporting in that title refers to reports the Act required the FTC itself to make to Congress, such as the study of a Do-Not-E-mail registry. It does **not** refer to any recordkeeping or reporting burden on senders. The NPRM states that the rule imposes no new information collection on industry under the Paperwork Reduction Act. ## How the rule is organized The adopted numbering of 16 CFR Part 316 differs from the numbering the NPRM proposed, because the proposed section on a 3-business-day opt-out was dropped: | Section | Subject | |---|---| | § 316.1 | Scope: implements 15 U.S.C. 7701–7713 | | § 316.2 | Definitions | | § 316.3 | Primary purpose | | § 316.4 | Warning labels for sexually oriented material | | § 316.5 | Prohibition on opt-out fees and extraneous requirements | | § 316.6 | Severability | ## The primary-purpose tests (§316.3) Whether the Act covers a message depends on its **primary purpose** (summarized in [CAN-SPAM](https://emailmarketing.net/learn/compliance/can-spam#commercial-vs-transactional-or-relationship-messages)). The Rule turns that concept from the Act into mechanical tests. A message's primary purpose is deemed **commercial** if: **(1) The content is only commercial.** The message consists only of the commercial advertisement or promotion of a commercial product or service. **(2) The content is commercial plus transactional or relationship content** (dual-purpose). The message is commercial if **either**: - (i) a recipient reasonably interpreting the **subject line** would likely conclude that the message contains a commercial advertisement or promotion; **or** - (ii) the transactional or relationship content does **not** appear **in whole or in substantial part at the beginning of the body** of the message. **(3) The content is commercial plus "other" content**, meaning content that is neither transactional or relationship content nor commercial. The message is commercial if **either**: - (i) the same subject-line test is met; **or** - (ii) a recipient reasonably interpreting the **body** would likely conclude that the primary purpose is commercial. Factors that illustrate this include placing the commercial content at the beginning of the body, the proportion of the message that is commercial, and the use of color, graphics, type size and style to highlight the commercial content. A message's primary purpose is **transactional or relationship** only if it consists **exclusively** of the five categories of transactional or relationship content in §316.3(c): 1. Facilitate, complete or confirm a commercial transaction that the recipient previously agreed to enter into; 2. Provide warranty, recall, safety or security information about a product or service the recipient used or purchased; 3. For an ongoing subscription, membership, account, loan or comparable relationship: notify the recipient of a change in terms or features, or of a change in the recipient's standing or status; **or** provide account-balance information or another type of account statement at regular periodic intervals; 4. Provide information directly related to an employment relationship or related benefit plan in which the recipient is currently involved, participating or enrolled; 5. Deliver goods or services, including product updates or upgrades, that the recipient is entitled to receive under the terms of a previously agreed transaction. In its NPRM analysis, the FTC reads these categories **narrowly**, so that they do not erode the opt-out protection: - The "commercial transaction" in category 1 does **not** require an exchange of consideration. Registering for a free service, such as event invitations, can be a commercial transaction the recipient agreed to. But an **initial, unsolicited message that merely proposes** a transaction is commercial, not transactional. - A **standard of reasonableness** governs how many confirmation messages one transaction supports. Hourly "confirmations" that contain promotions would read as commercial. - Under category 3, billing and account statements sent at regular intervals qualify even if they contain some advertising. If the advertising **overwhelms** the transactional content, however, the dual-purpose test in §316.3(a)(2) reclassifies the message as commercial. - A message that a third party sends to employees **with the employer's permission**, promoting the third party's own goods, is **not** transactional under category 4. Only genuine information about the employment relationship qualifies. - The FTC **declined** repeated industry requests to expand the categories, for example with a blanket exemption for mail from associations to their members, or for business-to-business (B2B) mail. The Act allows the categories to be changed only when a change is necessary to accommodate changes in email technology or practices, and the FTC found that this test was not met. Mail from associations to their members and B2B mail therefore get **no special exemption**. Each message is classified on its content by the primary-purpose test. ## Who the sender is when a message advertises several companies (§316.2) The Act defines a **sender** as a person who initiates a commercial message and whose product, service or website is advertised or promoted in it. Both "initiate" and "sender" can apply to **more than one person** in a single message. The Rule resolves the case of several advertisers in §316.2(m). When the products or services of **more than one person** are advertised or promoted in a single message, **each** of them is a "sender". There is one exception: if only one of them both meets the Act's definition of "sender" **and** meets **one or more** of the following criteria, only that person is the "sender" of the message: 1. The person **controls the content** of the message; 2. The person **determines the electronic mail addresses** to which the message is sent; **or** 3. The person is **identified in the "From" line** as the sender. This lets several advertisers **designate a single sender** to handle compliance: a working opt-out, a valid physical address, and honoring opt-outs. Otherwise each advertiser would have to provide its own suppression, address and opt-out. Commenters argued that this would force advertisers to reveal customer lists to competitors, and would confuse recipients with several opt-out mechanisms and postal addresses. **Worked example from the NPRM.** Sellers X, Y and Z are all advertised in one message, and they designate X as the single sender. This works **only if**, of the three, **only X** controls the content, controls the recipient list, or appears in the "From" line. X may use third parties for the criteria it does not meet itself, but **neither Y nor Z** may meet any of them. The same example is summarized in [CAN-SPAM](https://emailmarketing.net/learn/compliance/can-spam#who-is-the-sender-when-multiple-marketers-appear-in-one-message). **The "From" line and "materially false" headers.** This rule connects to CAN-SPAM's ban on materially false or misleading header information (15 U.S.C. 7704(a)(1)). A "From" line does not need to carry the initiator's full legal name, but it must give the recipient enough information to know who is sending. A "From" of "John Doe" on a message from XYZ Company would not accurately identify the initiator. A "From" line is "materially" false when it impairs the ability of a recipient, an internet service provider (ISP) or a law enforcement agency to identify, locate or respond to the initiator. ## What counts as a valid physical postal address (§316.2) The Rule defines, in §316.2(p), what satisfies the Act's requirement for a physical address (15 U.S.C. 7704(a)(5)(A)(iii)). A valid physical postal address is **any** of: 1. The sender's **current street address**; 2. A **Post Office box** the sender has registered with the U.S. Postal Service (USPS); **or** 3. A **private mailbox** the sender has registered with a **commercial mail receiving agency (CMRA)** established under USPS regulations. The FTC accepted PO boxes and CMRA mailboxes for two reasons. Both have a physical presence recognized by the USPS, and USPS registration verifies the renter's street address at signup. Allowing them therefore "creates no greater risk that a sender will falsify information to thwart the purposes of the Act" than a street address does, since a rogue sender can lie about a street address just as easily. ## The 10-business-day opt-out: 3 days proposed, 10 kept The Act (15 U.S.C. 7704(a)(4)) bars initiating a commercial message **more than 10 business days** after receiving the recipient's opt-out. The Act allowed the FTC to change this period. The NPRM **proposed shortening it to 3 business days**. Its reasoning was that near-instant opt-out processing is technically feasible, since some senders and Go Daddy reported processing opt-outs "within seconds", and that a shorter window better serves the Act's privacy purpose. Commenters were split three ways: keep 10 days, shorten the period, or lengthen it to 15–30 days for complex arrangements involving several parties. **In the 2008 Final Rule, the FTC declined to shorten the period. The 10-business-day requirement stands.** Apply the adopted rule: honor opt-outs **within 10 business days**, and keep the opt-out mechanism working for **at least 30 days** after the message is sent. See [Opt-out mechanics in CAN-SPAM](https://emailmarketing.net/learn/compliance/can-spam#opt-out-mechanics). ## No fees or extra steps to opt out (§316.5) Neither a sender nor any person acting on its behalf may require the recipient to: - **pay any fee**; - **provide any information** other than the recipient's email address and opt-out preferences; or - **take any step other than** sending a reply email message **or** visiting a **single** Internet web page, as a condition of accepting or honoring an opt-out request. Requiring a recipient to visit several web pages, log in, or disclose personal data to unsubscribe is prohibited, because it would "frustrate recipients' ability to exercise their opt-out rights." A **preference menu** is allowed only if it includes a global "opt out of all" option. ## Forward-to-a-friend features: initiate, procure and routine conveyance CAN-SPAM has no specific provision on forward-to-a-friend features. Liability follows from three related definitions that the Rule incorporates: - **Initiate** means to originate or transmit a message, **or to procure** its origination or transmission, **but not** actions that are routine conveyance. - **Procure** means intentionally to **pay or provide other consideration to, or induce**, another person to initiate a message on one's behalf. - **Routine conveyance** means the transmission, routing, relaying, handling or storing of a message through an automatic technical process for which **another person has identified the recipients or provided the recipient addresses**. Applied to forwarding, these definitions give the following results: | Scenario | Result | |---|---| | A recipient forwards a marketer's **non-compliant** commercial message to others | The **forwarder** can be liable as an initiator of that message | | The seller offers **consideration** for forwarding: money, coupons, discounts, awards, sweepstakes entries or referral payments | The seller has **procured** the forwarding, so the seller is a sender and initiator. It must make sure the forwarded message carries the opt-out and the physical address, and it must honor opt-outs | | The seller only provides a **"click-here-to-forward"** or **"Tell-A-Friend"** mechanism and offers no consideration | This is **routine conveyance**, because the forwarder identifies the recipients. The mechanism itself is de minimis persuasion and does **not** "induce", so the seller has **no CAN-SPAM liability** | "Induce" is broader than "pay": it means to lead on or to influence by persuasion. Simply offering a forwarding button is still not inducement. The UK reaches a comparable result through the concept of "instigation" (see [UK PECR](https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing)). ## Aggravated violations and treble damages A defendant who commits an **aggravated violation** in addition to a §7704(a) violation can face **treble damages** in an enforcement action. The Act (15 U.S.C. 7704(b)) lists **four** aggravated practices: 1. **Automated harvesting** of email addresses (software that scrapes addresses); 2. **Dictionary attacks**: generating addresses automatically by combining names, letters or numbers; 3. **Automated creation of multiple** email accounts to send from; 4. **Relay or retransmission** through unauthorized access to a protected computer (open relays or proxies, and botnets). The FTC **declined to add** new aggravated violations by rule. Commenters proposed adding hashbusting (random words inserted to defeat filters), manual address harvesting, inaccurate WHOIS information and the sale of open-proxy lists. The FTC found that these practices were **either already prohibited** by other parts of the Act **or lacked evidence** that they contribute substantially to unlawful commercial email. For example, hashbusting in a subject line already violates the ban on deceptive subject headings, and relaying through a virus already violates §7704(a)(1)(C). The FTC noted that it would still challenge such practices under Section 5 of the FTC Act where appropriate. ## Injunctions do not require proof of state of mind Where a CAN-SPAM provision or the Rule contains a **state-of-mind element**, that element is **waived** when a state, the FTC, the Federal Communications Commission (FCC), or a state official or agency seeks a **cease-and-desist order or an injunction** to enforce compliance. Enforcers do not need to allege or prove the defendant's state of mind to obtain injunctive relief. The NPRM proposed codifying this as §316.4(b), following sections 7706(e) and (f)(2) of the Act. The adopted Rule contains no such provision, and today's § 316.4 is the warning-label rule, so the waiver rests on the Act itself. ## Practical takeaways for an email service provider (ESP) - The **primary-purpose tests are content tests, applied to each message**. An ESP cannot classify a whole account or stream as "transactional". Dual-purpose mail with promotions above the fold is commercial and must meet every CAN-SPAM requirement. - For sends that are **multi-advertiser, affiliate or co-branded**, make sure that exactly **one** designated sender meets the test (it controls the content, determines the addresses, or is named in the "From" line) and appears in the "From" line. Otherwise every advertiser becomes a sender with full obligations. For the operational side, see [Customer Domain Authentication](https://emailmarketing.net/learn/esp-operations/customer-domain-authentication) and [Suppression-List Architecture](https://emailmarketing.net/learn/esp-operations/suppression-list-architecture). - **Forward-to-a-friend** features are safe when they are plain routine conveyance. As soon as the platform or the customer offers an incentive for forwarding, the brand that originated the message becomes a sender of the forwarded mail. - Any of the four **aggravated practices** in a customer's acquisition history is both a legal red flag and a severe deliverability problem. Check for them in [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting), [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods) and [Spam-Trap Incident Response](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response). # CASL — Canada's Anti-Spam Legislation > CRTC rules for commercial electronic messages sent to Canada: express vs. implied consent (with time limits), CEM identification and unsubscribe requirements, exemptions, and penalties up to $10M. Source: emailmarketing.net — https://emailmarketing.net/learn/compliance/casl If you send commercial email, text messages or other electronic messages to people in Canada, you need their consent before you send. Canada's Anti-Spam Legislation (CASL) governs these commercial electronic messages (CEMs). Unlike the US [CAN-SPAM Act](https://emailmarketing.net/learn/compliance/can-spam), which is an opt-out law, CASL is an **opt-in** regime. Consent, express or implied, is required **before** sending, and the sender bears the burden of proving it. This is not legal advice. Check penalties and thresholds against the primary source (below) and with counsel before relying on them. See [Compliance](https://emailmarketing.net/learn/compliance). ## What CASL regulates CASL sets out four core prohibitions and obligations: 1. **Commercial electronic messages**: a sender must obtain prior consent from the recipient (express or implied), provide identification and contact information, and include a working unsubscribe mechanism. 2. **Installing computer programs**: installing software on someone's system requires express consent from the owner or an authorized user, and a clear and simple description of what the program does and why. 3. **Message transmission data**: routing information must not be altered so that a message is delivered to a destination other than the one specified (or in addition to it) without appropriate consent. 4. **Aiding violations**: organizations must not help others breach these requirements (liability for "aiding" under section 9). ## What is a CEM? A commercial electronic message is one where **any one of its purposes** is to encourage the recipient to take part in a commercial activity. Examples include offers to purchase, sell or lease products or services, business or investment opportunities, and promotion of a person's commercial activities. This is broader than the "primary purpose" test in CAN-SPAM: one commercial purpose among several is enough. ### Covered and excluded messages | Covered | Excluded or exempt | |---|---| | Email | Live voice and automated telemarketing calls (regulated separately) | | SMS and text messages | One-way social media broadcasts (tweets, wall posts) | | Instant messaging | Political messages whose main purpose is to ask for contributions | | Social media direct messages | Business-to-business (B2B): messages between employees of organizations that have an existing relationship | | Push notifications (if commercial) | Membership communications to members of clubs or associations | | | Messages within secure accounts with limited access (for example, banking portals) | | | Fundraising by registered charities (where that is the main purpose) | ## Consent ### Express consent - The person has **clearly agreed** to receive CEMs, in writing or orally, by taking an active step to opt in. - **Pre-checked boxes, silence or inactivity are not valid.** A positive action is required. - Express consent **does not expire**. It remains valid until the recipient withdraws it. - The **burden is on the sender** to prove that consent was obtained. ### Implied consent categories and time limits | Category | Basis | Valid for | |---|---|---| | Existing business relationship (EBR) | Purchase or lease of goods, services, or land | **2 years** from the transaction | | EBR | Accepted business, investment, or gaming opportunity | **2 years** | | EBR | Written contract (in existence or expired) | **2 years** from expiry | | EBR | Inquiry or application about products or services | **6 months** | | Existing non-business relationship (charities, political parties and candidates, clubs and associations) | Donation or gift | **2 years** | | Existing non-business relationship | Volunteer work or meeting attendance | **2 years** | | Existing non-business relationship | Membership | Duration of membership (no fixed time limit while current) | | Conspicuous publication | The address is published publicly (for example, on a website) with **no statement** discouraging CEMs, and the message relates to the recipient's business role, functions or official duties | While published | | Business card or disclosed address | The recipient gave their address (for example, on a business card) and the message relates to their business role | No time limit stated | | Referral | One person refers another | **One CEM only**, and it must identify the person who made the referral | | Transitional (historical) | An EBR or non-business relationship that existed before July 1, 2014, with a history of CEMs | 3 years, from July 1, 2014 to July 1, 2017 (now lapsed) | ### Records and burden of proof The sender must be able to demonstrate consent. Keep records of the electronic address, the date consent was obtained, the method (a form, verbally, a purchase and so on), and the context (purchase history, volunteer work, an exchange of business cards). The CRTC has issued an enforcement advisory specifically on keeping records of consent. ## CEM content requirements Every CEM must: 1. **Identify the sender**, and any person on whose behalf the message is sent. If it is impractical to include this in the body of the message, the information may be provided through a link to a web page that is **clearly and prominently set out** and free to access. 2. **Provide contact information**, including a valid mailing address (a P.O. box is acceptable). The contact information must remain **valid for a minimum of 60 days** after the message is sent. 3. **Include an unsubscribe mechanism** that can be "readily performed", meaning simple, quick and easy (for example, an unsubscribe link, or replying "STOP" or "Unsubscribe" by SMS). The mechanism must: - keep working for **at least 60 days** after the message is sent; - be processed **without delay, and no later than 10 business days** after the request. ## Penalties and liability | Exposure | Detail | |---|---| | Administrative monetary penalty (individual) | Up to **$1,000,000 per violation** | | Administrative monetary penalty (organization) | Up to **$10,000,000 per violation** | | Directors and officers | Personally liable if they **directed, authorized, assented to, acquiesced in, or participated in** the violation | | Aiding | Liability under section 9 for helping others commit violations | | Third-party marketers and affiliates | Shared liability: both the brand and the party sending on its behalf are responsible for compliance | A documented corporate compliance program (due diligence) reduces the risk. The Canadian Radio-television and Telecommunications Commission (CRTC) handles enforcement, and its site describes its compliance and enforcement processes and publishes its enforcement actions. Spam can be reported to the Spam Reporting Centre (fightspam.gc.ca). ## Deliverability relevance Because CASL's consent expires, it effectively requires the list-hygiene practices that also protect sender reputation. Mail only addresses with a recent relationship you can prove, and remove addresses as they age out (after 6 months for an inquiry, and 2 years for a purchase). Senders who respect those windows naturally avoid the stale, unengaged addresses that cause complaints and spam-trap hits. See [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability). # Consent Guidance Updates: Recent Regulator Positions to Track > A running digest of recent consent guidance and enforcement the KB should track — NZ DIA spam case studies (real outcomes), ACMA's 2024 statement on what 'consent' now requires in Australia, and CNIL's rules for sharing B2C data with marketing partners — each with the operational lesson. Source: emailmarketing.net — https://emailmarketing.net/learn/compliance/consent-guidance-updates If you collect consent for email marketing, what regulators accept changes more often through their published interpretations than through new laws. Below are recent guidance and enforcement outcomes that clarify what consent requires in practice, each with the lesson for your operations. These positions come after, or sharpen, the laws themselves. For the underlying law, see [Australia Spam Act](https://emailmarketing.net/learn/compliance/australia-spam-act), [France CNIL](https://emailmarketing.net/learn/compliance/france-cnil-email) and, for New Zealand, [APAC Email Laws](https://emailmarketing.net/learn/compliance/apac-email-laws). That material is not repeated here. Not legal advice. See [compliance/README.md](https://emailmarketing.net/learn/compliance). ## New Zealand: DIA spam case studies The Department of Internal Affairs (DIA) publishes worked case studies under the **Unsolicited Electronic Messages Act 2007** (for the details of the law, see [APAC Email Laws](https://emailmarketing.net/learn/compliance/apac-email-laws#new-zealand--unsolicited-electronic-messages-act-2007)). They are useful because they show the low end of the enforcement ladder, formal warnings and infringement notices, which is where most real situations involving ESP customers end up, rather than the headline penalties. | Case | Conduct | Finding | Outcome | |---|---|---|---| | **Purchased database** | The sender bought a database from a broker and mailed it, and could not show that the recipients had consented. The addresses were not "conspicuously published," and the messages were not relevant to the recipients' business roles. | **11 breaches** of the Act. Buying the database did **not** establish consent: the burden of proof is on the sender. | **Written formal warning** (the lowest end of the range, with no financial penalty) | | **Broken unsubscribe** | The sender kept sending a substantial amount of commercial email with **no working unsubscribe** facility (s 11), even after a formal warning in 2010 for breaches of s 9 and s 11. | A continuing failure under s 11 despite the earlier warning. | **Civil infringement notice** (Sept 2011), escalated because the warning was ignored | | **Assumed inferred consent** | The sender relied on consent inferred from a Trade Me transaction and sent marketing **months after** the transaction. | "Inferred consent did not exist in this instance, as a business relationship did not exist." | **Formal warning** (May 2011) | **Lessons for an ESP:** - A purchased list is not consent, even under New Zealand's relatively permissive regime. The sender must be able to prove consent for each address. Screen customers who arrive with bought databases (see [Address Acquisition Integrity](https://emailmarketing.net/learn/list-management/address-acquisition) and [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting)). - The DIA escalates when conduct is **repeated**: an ignored warning becomes an infringement notice. When a customer has a first spike in complaints, respond on the assumption that the regulator will treat a second one far more harshly. - **Inferred consent fades.** A single past transaction, followed by marketing months later, is not an "ongoing business relationship". Australia applies the same narrow reading (below). ## Australia — ACMA's 2024 statement on consent expectations On **1 July 2024**, the Australian Communications and Media Authority (ACMA) issued *"Consumer consent: expectations for businesses conducting telemarketing and e-marketing"*. The statement focuses on outcomes and clarifies what the ACMA will accept as valid consent under the [Spam Act 2003](https://emailmarketing.net/learn/compliance/australia-spam-act). It does not change the law. It tells senders how the regulator reads "express" and "inferred" consent in practice. **Express consent (the ACMA's strong preference)** is "a clear and unambiguous decision by a customer to receive direct marketing," given through a form, a checkbox on a website, by phone or face to face. For the consent to be valid, its terms must be **accessible at the point of collection** and must state four things: 1. **what** the marketing is for, 2. **who** will use the consent (which businesses), 3. **how long** it will be relied on, and 4. **how** the customer can withdraw it. Explicit prohibitions and cautions: - **No pre-ticked boxes.** - Consent must **not be buried** in fine print or long privacy policies. It has to be transparent at the time of collection. - Rely only on **current** consent, and refresh it periodically. The ACMA states that **telemarketing** consent goes "stale" after **3 months** unless the terms specify a longer period. This is a useful indication of how the regulator thinks about the freshness of consent in general, even though it did not set a fixed figure for email. **Inferred consent (use with caution)** is allowed only where there is a **clear, current or ongoing relationship** and the product or service marketed is **directly related** to that relationship. If either answer is "no", do not rely on inferred consent. A **one-off purchase does not create inferred consent**, which is consistent with the ACMA's long-standing narrow reading and with the New Zealand Trade Me case above. **Record-keeping.** The sender must keep reliable records of the **method** of consent, its **terms**, and the **date and time** it was obtained. Outsourcing to a marketing provider or an ESP does **not** transfer this responsibility: "you remain responsible for ensuring... your outsourced service provider" keeps those records too. This reinforces the Spam Act principle that you cannot outsource your risk ([australia-spam-act.md](https://emailmarketing.net/learn/compliance/australia-spam-act#2-sender-identification-s-17)). **Lessons for an ESP:** - Consent forms for Australian traffic should show the four required disclosures **at the checkbox**, not in a linked policy. That is the design constraint the ACMA is pointing to. - Build for **consent expiry**: treat old consents as stale, and ask for permission again rather than mailing indefinitely. The 3-month figure for telemarketing is the clearest number the **ACMA** has put on freshness, but it applies specifically to **telemarketing consent in Australia** and is not a universal benchmark. How often to refresh consent depends on the jurisdiction and the channel (ICO ~2 years, CNIL ~6 months, ACMA ~3 months). [Consent Record-Keeping](https://emailmarketing.net/learn/compliance/consent-record-keeping#manage-keep-consent-under-review) compares the figures. - Store consent metadata (method, terms and timestamp) in a form the customer can produce for the ACMA. The ESP holds the records on the customer's behalf, but the customer remains liable. This goes with the acquisition metadata described in [Address Acquisition Integrity](https://emailmarketing.net/learn/list-management/address-acquisition#acquisition-metadata-to-capture-at-signup). ## France: CNIL rules for sharing B2C data with partners The CNIL has published guidance on **passing consumers' personal data to partners for the partners' own marketing**. It answers a question that [France CNIL](https://emailmarketing.net/learn/compliance/france-cnil-email) raises but does not detail: whether and how a French company may give a subscriber's data to third parties. The rule depends on the **channel the partner will use**, because the legal basis differs. ### Partner will use postal mail: legitimate interest The transmitting company may share data for a partner's **postal** marketing on the basis of its **legitimate interest**, provided that: - individuals were **informed at collection** of the transmission, its objectives and the **categories of partners**; and - a **simple, free opt-out** is offered both at collection and at any time afterwards. The CNIL recommends as best practice giving an **exhaustive, up-to-date list of the partners** by identity, with links to their privacy policies. At a minimum, give their sector of activity, the types of contact and the approximate number of partners. ### Partner will use email, SMS or automated calls: prior consent Electronic prospecting requires opt-in ([Art. L.34-5 CPCE](https://emailmarketing.net/learn/compliance/france-cnil-email#b2c-prior-consent-required)), so sharing data for a partner's **electronic** marketing requires **prior explicit consent**. Two structures are allowed. **Scenario 1: the collecting company obtains consent for the partners' marketing at the start.** The individual must clearly know **which partners** will contact them, so an **exhaustive list of partners** is given at the moment of consent. A **single checkbox** can cover both the transmission of the data and the partners' prospecting, for example: *"I accept that my email address be shared with the partners [link] of company X for commercial prospecting."* **Scenario 2: the company transmits the data without collecting consent to prospecting.** In this case, each **partner must obtain its own consent** before prospecting. The partner's first contact may rely on **legitimate interest** only if the individual had received enough information beforehand about the scope of the solicitation and the categories of partners, and the partner **limits how often it makes contact** to avoid being a nuisance. **Two hard limits:** - **Consent does not cascade.** Consent obtained by one partner does **not** extend to that partner's own partners. Each party must collect consent separately for any further sharing. This is the principle that "consent is not transferable", from [address acquisition](https://emailmarketing.net/learn/list-management/address-acquisition#the-core-principle-consent-is-not-transferable), applied to a chain. - **The receiving partner must inform the individual within one month** of first contact, including the **identity of the source company** and the individual's rights to consent or object (the transparency requirement of GDPR Art. 14). **Lessons for an ESP:** - Wording such as "shared with our partners" is valid for electronic marketing **only** if the list of partners is exhaustive and shown at the moment of consent. The affiliate and co-registration pattern criticized in [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods) is exactly what the CNIL is restricting. - An ESP onboarding a French list built from data shared by partners should check **which scenario** produced it: evidence of consent under Scenario-1, or a Scenario-2 chain in which this sender collected its own consent. A general claim of "partner consent", without a record that an exhaustive list was shown at collection, cannot be defended. - The receiving partner's duty to **disclose the source within one month** is a concrete task that the ESP's welcome or first-contact flow must handle for French contacts that came from partners. ## Related articles - [Australia Spam Act](https://emailmarketing.net/learn/compliance/australia-spam-act), including the unsubscribe rules and the ACMA's full penalty record - [France CNIL](https://emailmarketing.net/learn/compliance/france-cnil-email), including the rules for B2C and B2B prospecting and the 2026 recommendation on tracking pixels - [APAC Email Laws](https://emailmarketing.net/learn/compliance/apac-email-laws), on consent under New Zealand's Unsolicited Electronic Messages Act and its penalties - [Enforcement Cases](https://emailmarketing.net/learn/compliance/enforcement-cases), on enforcement of CASL and CAN-SPAM, the liability of intermediaries, and harvesting as an aggravated violation - [Address Acquisition Integrity](https://emailmarketing.net/learn/list-management/address-acquisition) - [Consent Methods and the List-Quality Spectrum](https://emailmarketing.net/learn/list-management/consent-methods) - [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting), on screening customers whose acquisition or consent practices are undocumented # Consent Record-Keeping and the Burden of Proof > What to capture and retain to prove consent to a regulator or blocklist: the ICO's obtain/record/manage data points, the emerging record structure standards (Kantara Consent Receipt → ISO/IEC 29184 → ISO/IEC TS 27560 → W3C DPV), and an ESP-implementable consent-record schema with retention and evidence-production guidance. Source: emailmarketing.net — https://emailmarketing.net/learn/compliance/consent-record-keeping > **Not legal advice.** A summary of guidance and standards on keeping consent records, for deliverability practitioners. Consult qualified counsel for compliance decisions. If you rely on consent as the lawful basis for a send, or as your defence when deliverability is questioned, **you carry the burden of proof.** GDPR Art. 7(1) says: "the controller shall be able to demonstrate that the data subject has consented." The question is not only whether the person consented. It is whether you can prove it, for each address, years later, to a regulator or to a blocklist analyst who assumes the worst. The sections below set out the specific data points to capture, the standards for record structure that are converging on a common schema, and a consent record that an ESP can implement. [EU ePrivacy + GDPR](https://emailmarketing.net/learn/compliance/eu-eprivacy-and-gdpr-email-marketing) explains when consent is required and the quality standard of the European Data Protection Board (EDPB), including the "Demonstrable" row. [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods) ranks the ways addresses are acquired. [GDPR and Suppression Lists](https://emailmarketing.net/learn/compliance/gdpr-and-suppression-lists) covers the record of withdrawal and erasure. The **proof record** described here sits under all three. ## Why the proof matters twice A consent record is tested in two very different settings: - **A regulatory challenge.** A data protection authority (DPA) such as the ICO or the CNIL, or a complainant, asks the controller to show its lawful basis. Without a record, there is effectively no consent. The EDPB states explicitly that pointing to the current configuration of the website is not enough (Guidelines 05/2020 ¶108): you must reproduce what the person actually saw and did at the time. - **A blocklist or deliverability challenge.** A [spam-trap hit](https://emailmarketing.net/learn/reference/spam-traps), a [spike in feedback loop (FBL) complaints](https://emailmarketing.net/learn/list-management/complaint-feedback-loops) or a Spamhaus listing raises the question "where did this address come from?" A record of how each address was acquired (source, timestamp, IP address, form version, opt-in event) often makes the difference between a fast [delisting](https://emailmarketing.net/learn/reference/spamhaus-listings-deep-dive) and a stalled one. It is also the first thing a [spam-trap incident](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response) investigation asks for. The same record answers both. Build it once. ## ICO: obtain, record, manage The UK Information Commissioner's Office (ICO) guidance *How should we obtain, record and manage consent?* is the most concrete statement by a regulator of what to keep. The ICO notes that this guidance is under review following the Data (Use and Access) Act 2025. ### The five data points to record The ICO says: "you must have an effective audit trail of how and when consent was given." The record must show all five of the following: | # | Data point | What the ICO says to keep | |---|---|---| | 1 | **Who consented** | The individual's name, or another identifier (an online username, a session ID). | | 2 | **When they consented** | A dated copy of the document, or online records that include a **timestamp**. For oral consent, a note of the time and date made at the time. | | 3 | **What they were told at the time** | A **master copy** of the document or data-capture form containing the consent statement in use at that time, together with any separate privacy policy or privacy information, **with version numbers and dates matching the date consent was given**. For oral consent, a copy of the script used at the time. | | 4 | **How they consented** | For written consent, a copy of the relevant form. For online consent, **the data submitted** and a timestamp linking it to the relevant version of the capture form. For oral consent, a note made at the time. | | 5 | **Whether they have withdrawn consent** | And if so, **when**. | Two further points apply. Consent must be specific and granular, so "your records also need to be specific and granular to demonstrate exactly what the consent covers": keep one record for each purpose, not a single blanket flag. For online consent, the ICO suggests "an appropriate cryptographic hash function to support data integrity", which makes any tampering with the stored record detectable. The item that matters most, and is most often missed, is **#3**. You must be able to reproduce the exact wording, form layout and privacy notice version that the person saw, with versions and dates. A live form is not evidence of a signup from three years ago. ### Manage: keep consent under review The ICO describes consent as "a dynamic part of your ongoing relationship," not something you collect once and file away: - **Preference management tools and privacy dashboards** are good practice. They let people see and update their own consent settings. - **Keep consents under review, and refresh them when anything changes.** A new purpose or a change in processing can mean the original consent is no longer specific or informed. - **Refresh interval:** "If in doubt, we recommend you consider refreshing consent **every two years**." A longer interval may be justifiable. Parental consent may need refreshing more often, as children grow old enough to consent for themselves. - If you are not in regular contact with people, send **occasional reminders** of their right to withdraw and of how to do it. This default of "every two years" sets a basis for how often to ask for permission again, or to apply a [sunset policy](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies), for consent-based lists in the **EU and UK**. **How long consent stays fresh depends on the jurisdiction and the channel. There is no single universal number.** The regulators' figures differ by roughly 8x because they answer different questions: | Regulator | Figure | What it actually measures | |---|---|---| | **ICO** (UK and EU) | refresh **every ~2 years** if in doubt | how long a consent record stays reliable before you ask for permission again | | **ACMA** (Australia) | consent goes stale after **~3 months** unless the terms say longer | how **telemarketing** consent decays, specifically. See [Consent Guidance Updates](https://emailmarketing.net/learn/compliance/consent-guidance-updates#australia--acmas-2024-statement-on-consent-expectations) | | **CNIL** (France) | **~6 months** without asking again, as good practice | the gap before asking again after someone does not respond, in the recommendation on tracking pixels. See [France CNIL](https://emailmarketing.net/learn/compliance/france-cnil-email#collecting-pixel-consent) | Set your cadence for the jurisdiction and channel in question. Do not treat any one of these figures as the universal freshness number. ### Manage withdrawal (Art. 7(3)) Withdrawing consent must be **as easy as giving it**, "at any time" and on the individual's own initiative, not only by replying to a message. The ICO asks for an "easily accessible one-step process," ideally using the same method the person used to consent. Good practice is to offer both a mechanism available at any time (such as a dashboard) **and** a way to opt out in every message (the [unsubscribe link](https://emailmarketing.net/learn/list-management/list-unsubscribe) or the one-click header). The ICO notes that a third party may withdraw consent on the individual's behalf if authorised, which opens the way to sector-wide opt-out registers such as the Fundraising Preference Service. Every withdrawal event feeds data point #5 and the [suppression list](https://emailmarketing.net/learn/esp-operations/suppression-list-architecture). ## The standards for record structure Ten years of work have produced a common, machine-readable structure for a consent record. Knowing how the standards developed tells you which fields there is consensus on. | Layer | Document | Role | |---|---|---| | Predecessor | **Kantara Consent Receipt Specification v1.1.0** (Kantara Initiative CISWG, 2017; archived rev. 13 Jun 2018) | The first open JSON schema for a human-readable "receipt" for consent given. Now archived, but the direct input to the ISO work. | | Baseline for notices and consent | **ISO/IEC 29184:2020**, *Online privacy notices and consent* | Requirements for the content of notices and for obtaining and withdrawing consent. | | Record structure | **ISO/IEC TS 27560:2023**, *Privacy technologies — Consent record information structure* | A Technical Specification that defines the field structure of a consent **record** and **receipt**. It replaces Kantara as the reference schema. | | Interoperable implementation | **W3C DPV** (Data Privacy Vocabulary), guide *Consent Records and Receipts as per ISO/IEC TS 27560:2023* | A machine-readable vocabulary that puts 27560 into practice. It maps each field to a concrete term, so that records can be exchanged between systems. | **ISO/IEC TS 27560:2023** is a *Technical Specification*, not yet a full International Standard. It organizes a consent record into four kinds of information: (1) the processing of personal data; (2) the privacy notice or notices through which that information was provided; (3) how the data or consent was obtained; and (4) events related to consent (given, renewed, withdrawn). It distinguishes two documents: - **Consent record** (internal): "documentation of information about a data subject's consent… the details about the processing as well as the interactions related to consent." The organisation keeps it to show that consent is valid. This is the record that meets your burden of proof. - **Consent receipt** (external): "an authoritative document used to communicate the existence of a consent record or to provide information contained within it," given to the individual. It may contain all, some or none of the record's content. 27560 requires only a minimal header for the receipt (the record ID and the schema version) and says to reuse record fields for the rest. ### ISO/IEC 27560 field structure According to the W3C DPV implementation guide, the fields fall into three groups: **header**, **processing** and **consent event**. Bold marks a mandatory field. The standard allows profiles or schemas to change which fields are mandatory, for example a profile for the EU GDPR. | Group | Mandatory fields | Optional fields | |---|---|---| | **Header and metadata** | **Schema version** (which profile applies) · **Record identifier** (unique, UUID-4) · **Data subject identity** (the identifier of the individual) | Creator or publisher, creation and modification timestamps, origin of the record | | **Processing** | **Purpose(s)** · **Personal data categories** · **Data controller(s)** · **Recipients** · **Storage condition(s)** (where and for how long) · **Jurisdiction(s)** · **Privacy notice** (a reference to the notice shown) · **Notice language** | Legal basis (other than consent), data sources and collection methods, processing operations, processing locations, geographic restrictions, information on rights, codes of conduct, data protection impact assessment (DPIA), service description | | **Consent event** | **Event type** (given, renewed or withdrawn) · **Event state or status** · **Event timestamp** · **Validity duration** (how long consent is valid) · **Entity ID** (who expressed consent) | Method of withdrawal or change, method of expression | The mandatory set maps almost one to one onto the ICO's five data points. "Who" is the data subject identity and the entity ID. "When" is the event timestamp. "What they were told" is the privacy notice and its language. "How" is the collection method and the event type. "Withdrawn" is the event type, status and timestamp. The standard adds the processing detail (purpose, data categories, controller, recipients, retention, jurisdiction) that makes the record specific and granular. ### The Kantara receipt fields (the earlier reference) The Kantara v1.1.0 JSON schema is still the most concrete list of fields that many tools implement. It records the authority that a **PII Principal** grants to a **PII Controller**: | Field | Captures | |---|---| | `version` | Schema version, e.g. `KI-CR-v1.1.0` | | `jurisdiction` | Applicable jurisdiction(s) | | `consentTimestamp` | When consent was obtained (Unix time) | | `collectionMethod` | How consent was gathered | | `consentReceiptID` | Unique receipt ID (SHOULD be UUID-4) | | `publicKey` | Key for verifying the receipt's integrity | | `language` | Receipt language (ISO 639-1) | | `piiPrincipalId` | Identifier of the person consenting | | `piiControllers[]` | Controller identity: `piiController`, `contact`, `address` (streetAddress, addressCountry), `email`, `phone` | | `policyUrl` | Link to the privacy policy in force | | `services[]` → `purposes[]` | For each purpose: `purpose`, `purposeCategory`, `consentType` (EXPLICIT, IMPLICIT or N/A), `piiCategory`, `primaryPurpose` (bool), `termination` (when consent ends), `thirdPartyDisclosure` (bool), `thirdPartyName` | | `sensitive` / `spiCat[]` | Whether special-category data is involved, and which categories | ### What the research says (arxiv 2405.04528) Pandit, Lindquist & Krog, *Implementing ISO/IEC TS 27560:2023 Consent Records and Receipts for GDPR and DGA* (2024), is the reference study on implementation. Its relevant findings: - The abstract structure of 27560 does not, on its own, make records machine-interoperable. Two organisations can produce records that conform to 27560 and still cannot exchange them. The paper closes that gap by mapping every field to the **W3C DPV** vocabulary, which produces records and receipts that are truly interoperable and can be validated. - It aligns 27560 (the record structure) with **ISO/IEC 29184** (the content of notices and consent) and with GDPR obligations. This shows that the reference to the notice version (ICO data point #3) is a core field, not an afterthought. - It applies the same approach to the EU **Data Governance Act (DGA)**, which shows that the record structure works beyond marketing consent, for data sharing and data altruism. In practice for an ESP: adopt the **27560 field set as your record schema, and DPV terms as the exchange format**, if your records must survive a handoff between controller and processor or be read by a regulator's tools. If you only need proof for internal use, the field set alone is enough. ## A consent record schema an ESP can implement Combining the ICO's five points, the mandatory fields of 27560 and what deliverability work needs, an ESP (or its customer, the controller) should store this record for each consent event: | Field | Source of requirement | Example | |---|---|---| | `record_id` | 27560 header (UUID-4) | `a6f58318-72e6-46a2-bfd7-f36d795e30cd` | | `schema_version` | 27560 header | `esp-consent-v1` | | `subject_id` | ICO #1, 27560 | email hash or account ID, plus the raw email address | | `consent_event` | 27560 event type | `given` \| `renewed` \| `withdrawn` | | `consent_status` | 27560 event state | `active` \| `withdrawn` \| `expired` | | `timestamp` (UTC) | ICO #2, 27560 | `2026-01-14T09:31:07Z` | | `purpose` (one row per purpose) | ICO granularity, 27560 | `newsletter`, `product_updates`, `third_party_offers` | | `consent_type` | Kantara, EDPB | `explicit` \| `soft-opt-in` | | `collection_method` | ICO #4, 27560 | `web_form_double_opt_in` \| `checkout_checkbox` \| `api` | | `source_url` or form ID | deliverability | `https://…/signup` | | `notice_ref`, `notice_version` and `notice_date` | ICO #3 (essential) | `privacy-policy@v7`, `2025-11-02` | | `form_snapshot_ref` | ICO #3 | a hash of, or pointer to, the stored HTML of the exact form and consent wording | | `submitted_data` | ICO #4 | the field values the user actually submitted | | `ip_address` and `user_agent` | proof for deliverability | `203.0.113.9` | | `double_opt_in_confirmed_at` and the confirming IP address | defence against [subscription bombing](https://emailmarketing.net/learn/esp-operations/subscription-bombing) | `2026-01-14T09:44:12Z` | | `controller_identity` | 27560, Kantara | the ESP customer's legal name and contact details | | `jurisdiction` | 27560 | `GB`, `DE`, … | | `withdrawn_at` and `withdrawal_method` | ICO #5, Art. 7(3) | `2026-06-01T…`, `one_click_unsubscribe` | | `integrity_hash` | ICO (cryptographic hash) | SHA-256 over the frozen record | Design notes: - **Keep one record per combination of subject, purpose and event.** A renewal or a withdrawal adds a new event row. Never overwrite a row, because the history is the audit trail. The consent state at any moment is the latest event for that subject and purpose. - **Freeze the notice instead of referring to the live one.** Store the versioned snapshot of the form and notice (or a hash of its content) so that data point #3 can be reproduced. Keep versions of privacy policies and consent wording as documents that never change. - **Double opt-in produces the strongest record.** The confirmation click gives a second timestamp and IP address, which prove that the holder of the address acted. The same step defeats [subscription bombing](https://emailmarketing.net/learn/esp-operations/subscription-bombing), keeps [spam traps](https://emailmarketing.net/learn/reference/spam-traps) off the list, and is the [consent method](https://emailmarketing.net/learn/list-management/consent-methods) that regulators accept as proof (Germany effectively requires it). - **Multi-tenant platforms:** the ESP holds the record on behalf of the controller, its customer. Under GDPR the customer is the controller and must be able to retrieve or export the record. Align this with the [processor obligations](https://emailmarketing.net/learn/compliance/esp-processor-obligations) and with the handoff at the end of the contract described in [GDPR and Suppression Lists](https://emailmarketing.net/learn/compliance/gdpr-and-suppression-lists). ## Retention - **Keep the proof for as long as you process data on that consent** (ICO), and for a defensible period afterwards to answer late complaints and claims within limitation periods, but "no longer than needed" (EDPB). Set an explicit retention rule for each class of record rather than keeping everything forever. - **Withdrawal does not mean deleting the record.** After a withdrawal you stop processing for that purpose, but you need the record of consent and withdrawal itself, to prove that you honoured the withdrawal and to keep the address suppressed. [GDPR and Suppression Lists](https://emailmarketing.net/learn/compliance/gdpr-and-suppression-lists) resolves this tension between erasure and suppression: the suppression or withdrawal record is kept on a separate legal basis (compliance and accountability), apart from the marketing consent. - **Keep the two clocks separate.** One is how long you keep proof of active consent (while you process). The other is how long you keep the withdrawal or suppression record (indefinitely, until the address no longer exists, to prevent mailing it again). ### Consent-record retention by jurisdiction This is different from how long consent stays fresh (the cadence for asking permission again, compared above). It is about how long to keep the **proof of consent itself**. No regime sets a fixed period for the record. Each ties retention to the duration of processing, plus a further period for defence or limitation. Follow the rule for the jurisdiction in question: | Regime | What it implies for how long to keep proof of consent | |---|---| | **GDPR / UK ICO** ([EU ePrivacy + GDPR](https://emailmarketing.net/learn/compliance/eu-eprivacy-and-gdpr-email-marketing), [UK PECR](https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing)) | Keep proof for as long as you process data on that consent, and for a defensible period afterwards to answer late complaints and claims within limitation periods, but "no longer than needed." No fixed number. | | **France / CNIL** ([France CNIL](https://emailmarketing.net/learn/compliance/france-cnil-email)) | The same principle (Art. 7(1)): keep evidence for the whole period the data are used, and long enough afterwards to respond to an audit. No fixed number. | | **Canada / CASL** ([CASL](https://emailmarketing.net/learn/compliance/casl)) | No prescribed period. The burden of proof is on the sender, and express consent does not expire. The record-keeping advisory of the Canadian Radio-television and Telecommunications Commission (CRTC), together with the **3-year limitation period** for proceedings, means you should keep records while you rely on the consent and for at least ~3 years after you last rely on it. | | **US / CAN-SPAM** ([CAN-SPAM](https://emailmarketing.net/learn/compliance/can-spam)) | An opt-out regime: there is no consent to prove, so no consent record to keep. Keep the **opt-out or suppression** record instead, indefinitely, so that the address stays suppressed (see [GDPR and Suppression Lists](https://emailmarketing.net/learn/compliance/gdpr-and-suppression-lists)). | The common thread is that retention of consent records follows a principle (keep them while you process, plus a period for limitation or defence), not a fixed duration. The 3-year limitation period under CASL is the one concrete figure. ## Producing evidence on demand When a DPA, a complainant or a blocklist asks you to prove consent for `x@example.com`: 1. Look up the `subject_id` and retrieve the full event history for that address (given, renewals, withdrawal). 2. For the relevant event, return **who** (subject_id), **when** (the timestamp, and the timestamp of the double opt-in confirmation), **what they were told** (the frozen `notice_version` and `form_snapshot`), **how** (collection_method, submitted_data, IP address and user agent), and the **withdrawal status**. 3. For a blocklisting or a trap hit, add the context of acquisition: source_url, the campaign, the opt-in and confirmation IP addresses, and where the address stands in the [suppression](https://emailmarketing.net/learn/esp-operations/suppression-list-architecture) and hygiene lifecycle. 4. Verify the `integrity_hash` to show that the record was not altered. If any of who, when, what they were told, how, or withdrawal is missing, you cannot meet the burden of proof. That is the practical reason to capture all five at signup rather than reconstruct them when challenged. A record you have to rebuild after the fact is not evidence. ## Related articles - [EU ePrivacy + GDPR — Email Marketing](https://emailmarketing.net/learn/compliance/eu-eprivacy-and-gdpr-email-marketing), including the EDPB standards "Demonstrable" (Art. 7(1)) and "Withdrawable" (Art. 7(3)) - [Consent Methods and the List-Quality Spectrum](https://emailmarketing.net/learn/list-management/consent-methods), including why double opt-in gives the strongest record - [GDPR and ESP Suppression Lists](https://emailmarketing.net/learn/compliance/gdpr-and-suppression-lists) - [ESP Processor Obligations](https://emailmarketing.net/learn/compliance/esp-processor-obligations), on records held for a customer - [Right to Object & Erasure](https://emailmarketing.net/learn/compliance/right-to-object-and-erasure) - [Suppression-List Architecture](https://emailmarketing.net/learn/esp-operations/suppression-list-architecture) - [Spam-Trap Incident Response](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response) # Email-Law Enforcement: CASL Cases and CAN-SPAM Statutory Detail > Digest of CRTC CASL enforcement — penalties, undertakings, the section 9 intermediary-liability bulletin, compliance-program guidance, and program statistics — plus the CAN-SPAM statute itself (15 U.S.C. 7704 prohibitions, aggravated violations incl. harvesting, and 7705 promoted-business liability), each with the lesson for an ESP. Source: emailmarketing.net — https://emailmarketing.net/learn/compliance/enforcement-cases To judge your real exposure under Canada's Anti-Spam Legislation (CASL) or the US CAN-SPAM Act, you need to know how the rules are enforced as well as what they say. [CASL](https://emailmarketing.net/learn/compliance/casl) and [CAN-SPAM](https://emailmarketing.net/learn/compliance/can-spam) set out the rules themselves. This page covers what happens in enforcement: the tools of the Canadian Radio-television and Telecommunications Commission (CRTC), decided cases with names and amounts, and the guidance the CRTC issued on the liability of intermediaries such as ESPs. It also covers the statutory text of CAN-SPAM's prohibitions, which goes further than the Federal Trade Commission's (FTC) business guide. ## CASL enforcement: who does what Three agencies share responsibility for CASL (according to the ISED Performance Measurement Report 2024-25): - The **CRTC** enforces sections 6–9 (spam, altered transmission data, malware, aiding) as a civil administrative regime with administrative monetary penalties (AMPs), and runs the **Spam Reporting Centre**. - The **Competition Bureau** pursues false or misleading electronic representations (about the sender, subject, message, or locator such as a URL) under the Competition Act. - The **Office of the Privacy Commissioner (OPC)** handles address harvesting and unlawful collection under PIPEDA. It has no power to impose AMPs, and relies on voluntary commitments or Federal Court orders. The National Coordinating Body at Innovation, Science and Economic Development Canada (ISED) runs policy, and fightspam.gc.ca is the outreach site. The CRTC has memoranda of understanding (MOUs) with the FTC, FCC, ICO, ACMA (Australia), Japan's MIC and New Zealand's DIA, and works with the FBI, the RCMP and the AFP. ### The CRTC's enforcement instruments | Instrument | What it is | Key mechanics | |---|---|---| | **Notice of Violation (NOV)** | A formal finding by investigation staff of violations of s.6–9, with an AMP sized by severity and number of violations | 30 days to pay, or to file written representations for review by the CRTC. No response means the violation is deemed committed. Payment is suspended during review. Decided on the balance of probabilities, and published | | **Undertaking** | A voluntary settlement, negotiated | Usually admits the acts, and includes a payment and a compliance program. It ends the case and cancels any NOV for those violations. Refusing one usually leads to an NOV. A summary is published | | **Warning letter or citation** | An alternative for less serious violations | No formal duty to respond, and not published. Failing to apply corrective measures invites escalation | | **Notice to Produce** | A demand for records relevant to an investigation | 30 days to respond. Suspended while the CRTC reviews an objection (that the demand is unreasonable, or covers privileged material) | | **Preservation Demand** | An order, usually to telecom or Internet providers, to preserve transmission data | Up to 21 days, with one 21-day extension. Telecommunications service providers (TSPs) get 5 business days to seek review, but must preserve the data in the meantime | Practical tips from the CRTC's own guidance: put everything into your first written representations, because reviews normally allow no later submissions, and take warning letters seriously, because they are the cheap way out. ### Bulletin 2014-326: corporate compliance programs (the due-diligence defence) Compliance and Enforcement Information Bulletin CRTC 2014-326 (June 19, 2014) tells businesses how to build a program that can support a **due-diligence defence**, and persuade the Commission that a violation was isolated rather than systemic. The required elements are: - ownership by senior management (a designated compliance officer or point person); - an assessment of the activities at risk of violations; - a **written policy** covering procedures, training (with written acknowledgments by employees, and refresher training), auditing and monitoring, compliance by third parties, record-keeping, and feedback from employees; - CASL record-keeping, specifically of **unsubscribe requests and the actions taken, evidence of consent, logs of recipients' consent, and message scripts**; - regular audits, with documented follow-up; - a system for handling complaints, with defined times for resolution; - a disciplinary code, with documented corrective actions. A program in place beforehand is not a complete defence, but it shows that reasonable precautions were taken. A well-run ESP should be able to produce this checklist for itself, and demand it of its customers. ### Bulletin 2018-415: section 9 liability for intermediaries (the ESP bulletin) Compliance and Enforcement Information Bulletin CRTC 2018-415 (November 5, 2018) interprets **section 9**, which makes it a violation to aid, induce, procure, or cause to be procured a violation of sections 6–8. The categories at risk that the CRTC names are **advertising brokers, electronic marketers, software and app developers and distributors, telecommunications and Internet service providers, and payment processors**. That is the whole delivery chain, and ESPs are clearly included. The assessment factors are: (1) **level of control**, meaning the ability to prevent or stop the activity; (2) **degree of connection** between the acts that helped and the underlying violation; and (3) **reasonable steps**, meaning the precautions and safeguards actually put in place. The bulletin's first example applies directly to ESPs. A marketing company that supplies email templates **without sender identification or unsubscribe mechanisms**, together with contact lists **without verification of consent**, aids its client's s.6 violation by "providing the tools." Other examples are a web host that ignores a reported phishing campaign, and an app store that distributes software with hidden functions behind a pre-checked consent box. The expected due diligence includes: - regular assessments of threats and risks; - **validation of client identity** (incorporation records, government ID, tax documents); - flagging discrepancies in location, and clients who seek anonymity (aliases, P.O. boxes, payment in cryptocurrency); - researching the client's reputation and the legality of its products; - **written contracts that bind clients to CASL**; - auditing how existing clients use the service; - monitoring for suspected violations and reporting them; - resources for prompt takedown and remediation; - documenting all of it. The bulletin warns that "simply following industry standards may be insufficient". Static policies without active oversight do not meet the s.9 obligation. ### CASL case digest The formal CRTC actions below come from the CRTC's list of enforcement actions as fetched in July 2026, supplemented by the CRTC's CASL enforcement report for October 2020–March 2021. The public list is split across pages, so earlier cases that predate it, such as the 2015–2018 undertakings, are not reproduced here. **Notices of Violation (AMPs)** | Date | Party | AMP | Violation | ESP lesson | |---|---|---|---|---| | 2025-08-13 | Jimmy Genesse | $50,000 | s.7(1)(a) (altering transmission data) | Redirecting or altering routing data is a separate type of violation, distinct from consent | | 2023-07-11 | Sami Medouni | $40,000 | s.6 (CEMs without consent) | Individuals, not only companies, are named and fined personally | | 2022-01-17 | Marc-Anthony Younes | $50,000 | s.6(1)(a) (no consent) | Same | | 2021-03 | Scott William Brewer | $75,000 | s.6: 670,000+ affiliate-marketing emails using a "hailstorm" technique (bursts sent quickly to evade anti-spam detection) | Sending in bursts to outrun filtering is treated as an aggravating tactic. The list of actions also records a 2022-01-04 undertaking by Brewer ($7,500 and a compliance program) | | 2019-12-12 | John Paul Revesz & Vincent Leo Griebel / Orcus Technologies | $115,000 | s.9 (aiding) | Section 9 is enforced, with real money, against those who supply the means of a violation | | 2019-04-23 | Brian Conley | $100,000 | s.6(1) and 6(2) | The requirements for consent and for content and identification were enforced together | **Undertakings (negotiated settlements)** | Date | Party | Payment | Notes and ESP lesson | |---|---|---|---| | 2024-06-10 | Hudson's Bay Company | $120,000 | A major mainstream retailer, plus a compliance program. CASL enforcement is not only about spammers: marketing programs of household brands settle too | | 2023-02-10 | NortonLifeLock Inc. | None (compliance program) | A commitment to a program alone can be the price of settlement | | 2021-12-06 | Gap Inc. | $200,000 | Plus a compliance program. Brands headquartered abroad that mail Canadians can be reached | | 2020-09-21 | Notesolution Inc. / OneClass | $100,000 | Plus a compliance program | | 2022-08-24 | Christos Tyrone Dracos | $40,000 | An individual, with conditions | | 2022-05-10 | Souhail Amaarak / Moustapha Sabir | $10,000 / $17,000 | Individuals in the same investigation, each separately liable | | 2022-01-04 | Scott William Brewer | $7,500 | Plus a compliance program (see the NOV above) | **Confirmation by the courts.** According to the CRTC's 2020-21 enforcement report, in March 2021 the Supreme Court of Canada declined to hear **CompuFinder's** appeal. That left in place the Federal Court of Appeal ruling that upheld **CASL's constitutionality** and clarified the consent provisions on existing business relationships and conspicuous publication. The report also used CompuFinder as its example of a violation involving an unsubscribe mechanism that did not work. Challenging CASL on constitutional grounds leads nowhere, and the categories of implied consent in [CASL](https://emailmarketing.net/learn/compliance/casl) are read as written. ### Program statistics: what the regulator actually does **CRTC CASL enforcement report, 1 Oct 2020 – 31 Mar 2021 (six months).** The CRTC issued 143 Notices to Produce, 17 Preservation Demands, 10 warning letters and 1 NOV, with $75,000 in penalties. The cumulative total since 2014 was then **over $1.4M payable** ($805K in AMPs and $668K in undertakings). The Spam Reporting Centre received 144,560+ complaints (~5,560/week). Only 3% came through the web form, and the rest were sent to spam@fightspam.gc.ca. **93% of complaints alleged lack of consent**, 34% problems with identification, 30% deceptive marketing, and 3% software or malware. **76% of the mail complained about was affiliate marketing or legitimate business email**, not criminal spam. The top affiliate categories were food, drugs and health; surveys and sweepstakes; casinos; online shopping; and technology. The top commercial categories were marketing services, technology, online shopping, updates and notifications, and newsletters. In November 2020, the CRTC, the OPC and the Competition Bureau jointly warned 36 mobile-app companies about keeping apps compliant with CASL (no false claims, no keylogging without consent, no hidden functions, no spamming of users' contacts). **ISED CASL Performance Measurement Report 2024-25.** The Spam Reporting Centre (SRC) received 414,630 complaints, only ~2.1% of them through the online form. The CRTC's totals for the year were **260 Notices to Produce, 33 warning letters, 14 Preservation Demands, 2 undertakings, and over $137,000 in AMPs**. Cumulative CRTC AMPs since 2014 reached **over $3.6 million**. In **November 2024, the CRTC analyzed ~25 companies with noticeably high complaint volumes**, checked their consent and unsubscribe practices, and sent warning letters where potential violations appeared. In other words, the volume of complaints at the Spam Reporting Centre directly selects the targets of enforcement. This is the regulatory counterpart of the loop between complaint rates and reputation described in [Foundations](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability). The Competition Bureau's CASL-related actions that year included a settlement with **SiriusXM Canada** over subscription offers with drip pricing, promoted "on its website, as well as in promotional emails and direct mail"; proceedings at the Competition Tribunal against **Rogers Communications** over claims of "unlimited" data; and a second court order in an ongoing investigation of **Amazon** for misleading marketing. The OPC received 14 CASL-related complaints (unsolicited CEMs, missing unsubscribe options, and unsubscribes not honored). It reported that >90% of phishing begins with email, and cited OECD findings that more than half of spam and malicious email is now generated by AI. **Overall lessons for ESPs from the CASL record:** (1) most enforcement starts with recipients' complaints about gaps in consent at legitimate marketers, not about criminals; (2) individuals and officers are named personally; (3) an unsubscribe that does not work, or is not honored, is a recurring violation that is easy to prove; (4) an ESP's own exposure is under s.9, and its only defence is documented client vetting and active monitoring; (5) a documented compliance program is both what settlements are paid in and the basis of the due-diligence defence. ## CAN-SPAM statutory detail: 15 U.S.C. § 7704 and § 7705 The [FTC compliance guide](https://emailmarketing.net/learn/compliance/can-spam) paraphrases the Act. The statute adds structure that matters when you assign blame along a chain of advertiser, ESP and list supplier. ### § 7704(a): the core prohibitions - **(a)(1) Materially false or misleading header information.** This applies to commercial mail **and** to transactional or relationship mail. Three rules decide what counts. Headers that are technically accurate still count as misleading if the originating address, domain or IP address was **obtained by false or fraudulent pretenses**. A "from" line that accurately identifies any actual initiator is compliant. Headers are materially misleading when they fail to identify the machine that injected the message because the sender **knowingly relayed it through another protected computer to disguise its origin**. "Materially" (defined in (a)(6)) means alteration or concealment that would impair the ability of a receiving service, law enforcement or the recipient to **identify, locate, or respond to** the initiator, or to investigate. - **(a)(2) Deceptive subject headings.** These are unlawful when the sender actually knows, or when objective circumstances fairly imply that the sender knows, that the subject would likely mislead a reasonable recipient about a **material fact regarding the contents or subject matter**. - **(a)(3) A working return address or Internet-based opt-out**, displayed clearly and conspicuously, and able to receive opt-out requests for **at least 30 days after transmission**. A preference menu is allowed only if it includes an option to decline **all** commercial messages from the sender. A temporary outage beyond the sender's control is excused if it is corrected within a reasonable time. - **(a)(4) Prohibitions after an opt-out.** After **10 business days**, it is unlawful for the sender to mail within the scope of the request; for anyone acting on the sender's behalf to do so with actual or fairly implied knowledge; for anyone to **assist by providing or selecting addresses** knowing the transmission would violate the law; and for **any person who knows of the request to sell, lease, exchange, or otherwise transfer or release the address** (except to a contractor for compliance purposes). Only the recipient's later affirmative consent allows mailing again. The clause on providing addresses is the one that reaches list brokers and ESP data teams directly. - **(a)(5) Required content.** Clear and conspicuous identification as an advertisement (waived only if the recipient gave affirmative consent beforehand), clear and conspicuous notice of the opt-out, and a valid physical postal address of the sender. ### § 7704(b): aggravated violations These are added on top of violations of (a), and lead to higher penalties: 1. **Address harvesting**: sending unlawful mail (or assisting by providing or selecting addresses) to addresses **obtained by automated means from a website or online service whose operator posted a notice that it will not give, sell, or transfer addresses** for mailing purposes. Also **dictionary attacks**: addresses generated by automatically combining names, letters or numbers. The knowledge required is actual or fairly implied. (The provision expressly creates no property right in email addresses.) 2. **Automated account creation**: using scripts or other automated means to register several email or user accounts to send unlawful commercial mail, or enabling others to do so. 3. **Unauthorized relay**: knowingly relaying or retransmitting a message that violates (a) from a protected computer or network **accessed without authorization**. Under (c), the FTC has rulemaking authority to shorten or lengthen the 10-business-day window, and to designate additional aggravated practices. Subsection (d) is the regime of warnings for sexually oriented material: marks in the subject line, or a "wrapper" that shows only the marks, the (a)(5) disclosures and instructions for access. It is waived by prior affirmative consent, and knowing violations carry fines and up to **5 years' imprisonment**. ### § 7705: liability of the business being promoted This section removes the "we just hired them" defence. Under (a), it is unlawful for a person to promote its trade or business, or allow it to be promoted, in a commercial message **whose transmission violates § 7704(a)(1)** (false or misleading headers) if that person: (1) **knows, or should have known in the ordinary course of business**, that its goods or services were being promoted in such a message; (2) **received or expected to receive an economic benefit** from the promotion; and (3) **took no reasonable action (A) to prevent the transmission, or (B) to detect it and report it to the Commission**. Under (b), a third party whose goods appear in someone else's promotion is generally not liable, unless it **owns or holds >50%** of the violating trade or business, or has **actual knowledge** of the unlawful promotion **and** receives or expects an economic benefit. Under (c), §§ 7706(f) and (g) do not apply to this section. State attorneys general cannot sue, and Internet access services cannot bring private actions, under § 7705. Only the FTC (and federal regulators) enforce it. **Lessons for ESPs from the statute:** (1) the obligation to keep headers truthful applies even to transactional mail, so accurate HELO, From and Return-Path chains are a legal requirement, not only good authentication practice (see [SPF](https://emailmarketing.net/learn/authentication/spf) and [DKIM](https://emailmarketing.net/learn/authentication/dkim)); (2) the 30-day window during which the opt-out must work, and the 10-business-day window for honoring it, are legal minimums that an ESP's suppression infrastructure must beat (compare CASL's pair of 60-day and 10-business-day windows in [CASL](https://emailmarketing.net/learn/compliance/casl)); (3) accepting or supplying a **harvested list, or one generated by combining names**, turns ordinary violations into aggravated ones, and "assisting through the provision or selection of addresses" is a separate ground of liability for the ESP itself, which gives legal backing for refusing purchased lists (see [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods) and [Spam Traps](https://emailmarketing.net/learn/reference/spam-traps)); (4) advertisers cannot outsource liability, so an ESP's compliance practice is part of what its customers rely on legally, which mirrors CASL s.9 from the other direction. These summaries are drawn from the cited regulator publications and the text of the statute, and are not legal advice. Penalty figures and case lists change, so check the CRTC's enforcement-actions page and the U.S. Code for the current state. # ESP as GDPR Processor — Roles, DPA Requirements, Transfers > The ESP's own GDPR obligations: controller/processor roles per EDPB 07/2020, the Article 28 DPA clauses an ESP must offer, sub-processor rules, international transfers (SCCs 2021/914, EU-US DPF 2023/1795), and data-subject-request handling as a processor. Source: emailmarketing.net — https://emailmarketing.net/learn/compliance/esp-processor-obligations > **Not legal advice.** A reference summary, for ESP operators, of EDPB Guidelines 07/2020 (v2.1, adopted 7 July 2021), GDPR Art. 28, and the European Commission's instruments for international transfers. Consult counsel when you draft contracts. If your customers upload recipient lists to your ESP and send campaigns through it, you process personal data (email addresses, names, engagement events) **on behalf of** those customers. Under the GDPR, that makes the customer the **controller** and the ESP a **processor**. A processor has obligations that apply to it directly, not only through the contract. The duties below are the ones that apply at the level of the platform. The rules for the content and sending of marketing email are in [EU ePrivacy + GDPR](https://emailmarketing.net/learn/compliance/eu-eprivacy-and-gdpr-email-marketing). ## Roles (EDPB Guidelines 07/2020) The concepts are **functional**, because they follow the roles parties actually play rather than labels, and **autonomous**, because EU law defines them, not the contract. The definitions: - **Controller**: determines the **purposes and means** ("why and how") of the processing. It must decide both, but may leave "non-essential means" to the processor, such as the practical implementation (choice of hardware or software) and detailed security measures. **Essential means** (what data, whose data, how long, who has access) are for the controller to decide. - **Processor** (Art. 4(8)): a **separate entity** that processes personal data **on the controller's behalf**, meaning that it serves the controller's purposes under its instructions, possibly with some discretion over technical and organisational choices. Applied to an ESP: - For **customers' recipient lists and campaign and engagement data**, the customer is the controller and the ESP is the processor. The EDPB's example of a cloud service fits exactly. A standardized, worldwide service is still a processor arrangement, but the customer must be able to impose its instructions (retention periods, deletion) "regardless of what is generally offered in the standardized service." - **Art. 28(10) sets the line an ESP must never cross.** A processor that uses the data for its own purposes "infringes the GDPR by going beyond the controller's instructions" and becomes a controller for that processing. The EDPB's MarketinZ example is literally a marketing service provider that used a client's customer database "for other purposes than advertising for [the client], such as developing their own business activity". That change of role is itself an infringement. **An ESP must not mine customer lists for its own marketing, for enrichment products, or to build audiences across customers without a separate legal basis of its own as a controller.** - The ESP **is a controller** for its own customer account data (billing, users, support), its own marketing, its website analytics, and the security and abuse operations it runs for its own compliance and to protect its network. The same entity is routinely a controller for some processing and a processor for other processing, and each activity is qualified separately. - **A gray zone to analyze deliberately**: anti-abuse and reputation systems that work across all customers of the platform (aggregating complaints, [suppression lists](https://emailmarketing.net/learn/list-management/list-unsubscribe), intelligence about spam traps). Where the ESP itself determines the purposes and means of this processing, it acts as a controller for it. It must then identify its own lawful basis (typically a legitimate interest in protecting its infrastructure and other users) and disclose it, rather than pretend the processing follows a single customer's instructions. - **Joint controllership** requires the parties to participate jointly in determining purposes and means, through common decisions or converging decisions that are inextricably linked. A normal relationship between an ESP and its customer is not joint controllership, and simply using the same platform does not create it. ## Choice of processor and form of contract - Controllers must use "**only processors providing sufficient guarantees**" (Art. 28(1)). The guarantees are assessed on the processor's **expert knowledge, reliability and resources**, and its reputation in the market is relevant. Following an approved **code of conduct or certification** (Art. 28(5)) can serve as evidence. The documents exchanged typically include the privacy policy, terms of service (ToS), records of processing, security policy, external audit reports and recognised certifications (for example, the ISO 27000 series). This duty is **continuous**: the controller verifies again periodically, including through audits, and not only at signature. For an ESP, this defines the due diligence package to keep ready for enterprise customers. - The data processing agreement (DPA) must be **in writing, which includes electronic form** (Art. 28(9)), and binding. Not having one is itself an infringement by **both** parties. It may be part of a broader agreement, but the EDPB recommends that the Art. 28 elements can be found in one place (for example, an annex). - The parties may draft their own DPA or use **standard contractual clauses under Art. 28(7)**. Commission Implementing Decision **(EU) 2021/915 of 4 June 2021** publishes an official set of controller-processor SCCs for use **within** the EU and EEA. These clauses are optional, and they are **not** the same as the SCCs for international transfers described below. - **An EDPB warning that applies directly to ESPs (¶110)**: processors that provide standard terms may update them, but "any proposed modification, by a processor, of data processing agreements included in standard terms and conditions should be **directly notified to and approved by the controller**. The **mere publication of these modifications on the processor's website is not compliant** with Article 28." When an ESP changes its DPA, its process must actively notify customers. ## The Art. 28(3) clauses an ESP's DPA must contain The contract must set out the **subject-matter, duration, nature and purpose** of the processing, the **type of personal data**, the **categories of data subjects** (be specific: "subscribers or recipients of the customer's mailings", "members of contact lists"), and the **obligations and rights of the controller**. It must also cover the points in Art. 28(3)(a)–(h): | Clause | Requirement | Notes on ESP practice | |---|---|---| | (a) Documented instructions | Process only on the controller's documented instructions, **including for transfers** to third countries. Deviating is allowed only where EU or member-state law requires it, with prior notice to the controller unless the law forbids that notice. | Annex a procedure or template for instructions; put ad-hoc instructions in writing (email is enough). If the instructions do not allow transfers to third countries, no sub-processor or division of the ESP outside the EU may touch the data. | | (b) Confidentiality | People authorised to process the data are bound by contractual or statutory confidentiality. | Must cover employees and temporary workers; access is limited to staff who need it. | | (c) Security (Art. 32) | Take all the measures required under Art. 32. | The contract must include or reference the concrete measures (not restate the GDPR), an obligation to obtain the **controller's approval before changing** them, and periodic review. The detail must be enough for the controller to judge whether the measures are appropriate. | | (d) Sub-processing | Respect Art. 28(2) and (4). See the next section. | | | (e) Data-subject rights | Assist the controller, through appropriate technical and organisational measures as far as possible, in responding to requests under Chapter III. | See "Data-subject requests" below. | | (f) Assistance Art. 32–36 | Assist with security, **breach notification**, data protection impact assessments (DPIAs) and prior consultation. | The processor must notify the controller of any breach affecting its systems (or a sub-processor's) **without undue delay**. The parties may set a specific timeframe (for example, **a number of hours**), a point of contact, a method and a minimum content. The processor can be allowed to notify the authority directly, but the legal responsibility stays with the controller. A duty to assist does not shift responsibility: DPIAs remain the controller's initiative. | | (g) End of contract | At the controller's choice, **delete or return** all personal data and delete existing copies, unless EU or member-state law requires storage. | The contract should let the controller change its choice before termination, and secure deletion should be confirmed within an agreed timescale. | | (h) Information and audits | Make available all information needed to demonstrate compliance with Art. 28, and **allow and contribute to audits and inspections** by the controller or an auditor it mandates. | The information includes how systems work, security measures, how retention is handled, where data is located, transfers, access, recipients and sub-processors. The processor may suggest an auditor, but the controller decides. Clauses that impose clearly disproportionate audit fees, which deter the controller from using the right, do not comply. | In addition, the processor must **immediately inform the controller if, in its opinion, an instruction infringes** the GDPR or other EU or member-state data protection law (the final sentence of Art. 28(3)). The EDPB recommends setting out the consequences in the contract: a right to suspend carrying out the instruction, or to terminate if the controller persists. This gives the ESP a legal basis for refusing, for example, a customer's instruction to mail a purchased list where doing so would be unlawful processing. Some obligations fall directly on the processor under the law, whatever the contract says: records of processing (Art. 30(2)), security (Art. 32), notifying breaches to the controller (Art. 33(2)), designating a data protection officer (DPO) where required (Art. 37), the transfer rules of Chapter V, and, for processors outside the EU that serve data subjects in the EU, designating an EU representative under Art. 27. Processors can be fined directly for breaching these obligations or for going beyond lawful instructions. ## Sub-processors Every downstream vendor that touches list or event data on the ESP's behalf is a **sub-processor**. That includes hosting and infrastructure-as-a-service (IaaS) providers, subcontracted MTA or SMS gateways, validation services, analytics, and support tools: - The controller must give **prior written authorisation**, which may be **specific or general** (Art. 28(2)). - Under general authorisation, the workable model for a multi-tenant ESP, keep a list of sub-processors in the DPA or an annex, with the **location, function and proof of safeguards** for each vendor. **Actively inform** the controller of any addition or replacement you intend, pointing to each new vendor, not "generalized access to a list which might be updated from time to time" (¶¶152–156 and footnote 54). Give the controller a genuine opportunity and a reasonable timeframe to object, and set out in the contract the practical steps that follow an objection, including possible termination. Under general authorisation, silence within the timeframe counts as authorisation. - Under specific authorisation, a request that goes unanswered counts as **denied**. - **The same obligations flow down** (Art. 28(4)). The sub-processor's contract must impose in substance the same data protection obligations as the main DPA, including the duty to contribute to audits, adapted to the sub-processor's actual role. The whole chain must be covered by written agreements. - **Full liability remains**: "the processor remains fully liable to the controller for the performance of the sub-processors' obligations" (Art. 28(4)). Choose sub-processors that provide sufficient guarantees. ## Data-subject requests handled as a processor Requests for access, rectification, erasure, restriction, portability and objection belong to the **controller**, the ESP's customer. The processor's role (Art. 28(3)(e), EDPB ¶¶130–132): - **Forward promptly** to the relevant customer any request a recipient sends to the ESP. This happens often, when a subscriber replies to a campaign or emails the ESP's abuse desk. Do not answer on the merits without instructions. - **Assist** as the contract provides. Assistance ranges from simply enabling the controller to extract and manage the data, to specific technical duties where the processor holds the data (export tools, deletion APIs, extracts of each recipient's activity). - The **controller decides whether a request is admissible**, and bears the **one-month deadline** of Chapter III. That deadline is **not extended** because the information sits with the processor, so the DPA should set internal response times accordingly. - One practical exception: **unsubscribe and objection** signals must keep working operationally, whatever the plumbing for data-subject requests. Suppression is both an [absolute right under Art. 21](https://emailmarketing.net/learn/compliance/eu-eprivacy-and-gdpr-email-marketing) and a [deliverability requirement](https://emailmarketing.net/learn/list-management/list-unsubscribe). ## International transfers (GDPR Chapter V) Transfers outside the European Economic Area (EEA) need a mechanism under Chapter V. This includes transfers to the ESP's own infrastructure or divisions outside the EU, and to sub-processors outside the EU. These are the mechanisms relevant to processors: **1. Adequacy decisions (Art. 45)**: data can be transferred as if within the EU. The current list: Andorra, Argentina, Brazil (from 26 Jan 2026), Canada (commercial organisations under PIPEDA only), Faroe Islands, Guernsey, Isle of Man, Israel, Japan, Jersey, New Zealand, Republic of Korea, Switzerland, the United Kingdom (renewed December 2025), Uruguay, the European Patent Organisation (15 Jul 2025), and the **United States, limited to organisations certified under the EU-U.S. Data Privacy Framework**: - **Commission Implementing Decision (EU) 2023/1795 of 10 July 2023** finds the US adequate **for transfers to organisations certified under the Data Privacy Framework (DPF)**. The **US Department of Commerce** administers certification and keeps a public list, and the FTC enforces. Complaints can go to the organisation (with a 45-day response), to independent dispute resolution, to data protection authorities (DPAs), and, as a last resort, to binding arbitration. The decision rests on **Executive Order 14086**, which sets limits of necessity and proportionality on signals intelligence, and on the redress mechanism of the **Data Protection Review Court**. These were the fixes for the Schrems II ruling that invalidated Privacy Shield. - **Status of legal challenges (verified July 2026)**: the DPF survived its first court challenge. In *Latombe v Commission* (Case T-553/23), the **General Court dismissed the action for annulment on 3 September 2025** and upheld the adequacy decision. It found the Data Protection Review Court sufficiently independent and impartial, and found the US limits on bulk collection, and the redress available, substantially equivalent to EU standards. **The adequacy decision therefore remains valid as of July 2026.** Latombe appealed to the Court of Justice (CJEU) on 31 October 2025, so a further ruling is pending. A US-based ESP or sub-processor that relies on the DPF should keep monitoring its certification status and the pending appeal. **2. Standard Contractual Clauses (Art. 46(2)(c))**: **Commission Implementing Decision (EU) 2021/914 of 4 June 2021**, in force since 27 June 2021. It is a single document in four modules: | Module | Transfer | |---|---| | One | Controller to controller | | Two | Controller to processor (EU customer to non-EU ESP) | | Three | Processor to processor (EU ESP to non-EU sub-processor) | | Four | Processor to controller | How the clauses work: - The old SCC decisions (2001/497/EC and 2010/87/EU) were repealed on 27 September 2021. Contracts under them remained valid until **27 December 2022** if the processing was unchanged. - A **docking clause (Clause 7)** lets new parties join later. - **Clause 14** implements the Schrems II ruling. The parties must assess whether the law and practice of the destination country prevent compliance, document a **transfer impact assessment**, and apply **supplementary measures** (technical, organisational or contractual) where needed. - Modules Two and Three also serve as a DPA that complies with Art. 28 for the transfer relationship, so no separate DPA under 2021/915 is needed for the same relationship. **3. Other Art. 46 safeguards**: Binding Corporate Rules (within a group), approved codes of conduct, and certification mechanisms. The **derogations of Art. 49** (explicit consent, necessity for a contract and so on) are for occasional transfers that are not repeated, and are not a basis for routine ESP data flows. Chapter V binds **processors as well as controllers**. An ESP in the EU is itself the data exporter to its sub-processors outside the EU, and must have Module Three SCCs (or another mechanism) in place, consistent with the controller's documented instructions on transfers. ## Why this is deliverability-relevant The discipline of a processor and the discipline of deliverability lead to the same place: - Documented instructions, and the duty to refuse unlawful instructions, are the compliance foundation for [vetting customers](https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp) and for [refusing purchased lists](https://emailmarketing.net/learn/list-management/consent-methods). - The processes for notifying breaches overlap with the abuse desk escalation paths that providers expect. - Keeping roles clearly separate, and never mining customer lists for the ESP's own purposes, is also what keeps an ESP out of the reputation tier of data brokers, which both regulators and [Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus) police. # EU ePrivacy Directive + GDPR — Email Marketing > The EU opt-in rule for email marketing: ePrivacy Art. 13 and its soft opt-in, the GDPR consent standard per EDPB 05/2020, lawful basis (consent vs. legitimate interests), tracking pixels under Art. 5(3) per EDPB 2/2023, and the member-state divergence table. Source: emailmarketing.net — https://emailmarketing.net/learn/compliance/eu-eprivacy-and-gdpr-email-marketing > **Not legal advice.** This reference summarizes the directives, the regulation and the guidance of the European Data Protection Board (EDPB) for deliverability practitioners. Penalties, national implementations and guidance change, so consult qualified counsel for compliance decisions. If you send marketing email to people in the European Union, two instruments decide whether you may send it and how you must handle the data. Confusing them causes most of the misunderstandings: - **ePrivacy Directive 2002/58/EC** (as amended by Directive 2009/136/EC) is the **sending rule**. Its Article 13 says when marketing email may be sent at all: with prior consent, with one exception. - **The GDPR (Regulation 2016/679)** sets the **processing rules**. It defines valid consent (Art. 4(11) and 7), provides the lawful bases (Art. 6), and grants the absolute right to object to direct marketing (Art. 21(2)–(3)). "GDPR requires consent for email marketing" is an oversimplification. The requirement for consent to send comes from **ePrivacy Art. 13**, while the GDPR sets the quality standard that consent must meet. In Guidelines 05/2020 ¶7, the EDPB confirms that references to consent under Directive 95/46/EC in the ePrivacy Directive are now read as GDPR consent, and that the GDPR conditions for consent apply in ePrivacy situations. Because ePrivacy is a **directive**, each member state implemented it in national law, with real differences (see the table below). A proposed ePrivacy **Regulation** to replace the directive was negotiated for years and withdrawn by the Commission in early 2025. The directive of 2002, as amended in 2009, remains the law. ## Article 13: unsolicited communications Key provisions (the 2002 text; the 2009 amendment extended protection to "subscribers or users" and added provisions on enforcement, without changing the structure below): - **13(1): prior consent.** "The use of automated calling systems without human intervention…, facsimile machines (fax) or electronic mail for the purposes of direct marketing may only be allowed in respect of subscribers who have given their **prior consent**." Opt-in is the default rule. - **13(2): the "soft opt-in" (the existing-customer exception).** Email marketing without consent is allowed only where **all** of the following conditions hold: 1. a natural or legal person **obtains from its customers their electronic contact details** for electronic mail, 2. **in the context of the sale of a product or a service** (in accordance with data protection law), 3. **the same natural or legal person** uses those details (not a group company, a partner or a list buyer), 4. for direct marketing of **its own similar products or services**, and 5. customers are **clearly and distinctly given the opportunity to object, free of charge and in an easy manner**, both **when the details are collected** and **on the occasion of each message** (provided the customer did not refuse initially). - **13(3)**: for direct marketing by other means (for example, post or live calls), member states choose between opt-in and opt-out nationally. - **13(4)**: whatever the consent, it is **prohibited** to send marketing email "disguising or concealing the identity of the sender on whose behalf the communication is made," or **without a valid address** to which the recipient may send a request to stop. (The 2009 amendment added a ban on emails that point to websites breaking the identity rules for e-commerce.) - **13(5)**: paragraphs 1 and 3 protect **natural persons**. Member states must also ensure that the legitimate interests of **legal persons** (corporate subscribers) are "sufficiently protected", which is why the treatment of business-to-business (B2B) mail varies by country (see the table). **"Electronic mail"** (Art. 2(h)): "any text, voice, sound or image message sent over a public communications network which can be stored in the network or in the recipient's terminal equipment until it is collected by the recipient." This covers email, SMS, voicemail and, according to regulators, direct messages in apps and on social media. It is as broad as the [UK PECR definition](https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing), which is the UK's implementation of this directive. ## The GDPR consent standard (EDPB Guidelines 05/2020, v1.1, adopted 4 May 2020) Art. 4(11): consent is "any **freely given, specific, informed and unambiguous** indication of the data subject's wishes by which he or she, by a statement or by a clear affirmative action, signifies agreement to the processing of personal data relating to him or her." The EDPB puts this into practice as follows: | Element | EDPB requirements | |---|---| | **Freely given** | A real choice without detriment. Consent bundled into terms and conditions (T&Cs) is presumed not to be free (Recital 43, Art. 7(4)). Making a service conditional on consent to processing that is not necessary ("tying") is presumed invalid, and exceptions are "highly exceptional". Contexts with an imbalance of power (employer and employee, public authorities) usually rule out consent. Incentives are allowed if refusing or withdrawing costs nothing (losing a permissible perk is not a detriment). | | **Specific and granular** | Separate consent for each purpose ("granularity"): one checkbox covering both "email me marketing" and "share my details with group companies" is invalid (Example 7). Specifying the purpose guards against function creep, and a new purpose needs new consent. | | **Informed** | Minimum content: (i) the controller's identity, (ii) the purpose of each operation, (iii) which data, (iv) the right to withdraw, (v) automated decision-making where relevant, (vi) transfer risks where relevant. Every controller that relies on the consent must be **named**; processors need not be. Clear, plain language, separate and distinct from the T&Cs, and not buried in a privacy policy. | | **Unambiguous** | A statement or a clear affirmative action. **Pre-ticked boxes, silence, inactivity, or simply continuing to use a service are invalid**, and scrolling or swiping can never be consent (Example 16). Consent must come before the processing. | | **Demonstrable** (Art. 7(1)) | The burden of proof is on the controller. Keep enough data to show a link to the processing, for example session information, the consent workflow, and **a copy of the information presented at the time**. Merely pointing to the current website configuration is not enough (¶108). Consent has no statutory expiry, but the EDPB recommends refreshing it at appropriate intervals. Keep proof no longer than needed after the processing ends. | | **Withdrawable** (Art. 7(3)) | As easy to withdraw as to give, at any time, free of charge and without any degradation of service. If consent took one click, withdrawal must be equally easy **through the same electronic interface**: an unsubscribe by phone only, for an online signup, violates Art. 7(3) (Example 22, a ticket agent for a music festival). After withdrawal, stop the processing and delete the data unless another lawful basis applies. | Two rules have direct consequences for list management: - **No silent swapping of the lawful basis** (¶¶121–123): a controller cannot fall back on legitimate interests when consent turns out to be invalid or is withdrawn. The lawful basis must be decided and disclosed before collection. - **Consents given before the GDPR** (¶¶166–171) remain valid only if they already met the GDPR standard. Presumed consents with no records, and consents given through pre-ticked boxes, "will automatically be below the consent standard". They had to be renewed or the processing stopped, which is the legal reason behind the 2018 wave of re-permission campaigns. For children, Art. 8 sets the age of consent for information society services at **16**, which a member state may lower to no less than **13**. ## Lawful basis: consent vs. legitimate interests Under the GDPR alone, processing for direct marketing may rest on **consent (Art. 6(1)(a))** or on **legitimate interests (Art. 6(1)(f))**. Recital 47 says so expressly: "The processing of personal data for direct marketing purposes may be regarded as carried out for a legitimate interest." But legitimate interests **cannot override ePrivacy Art. 13**: for the act of sending email, only consent under 13(1) or the soft opt-in under 13(2) will do. The stable pattern, which the Information Commissioner's Office (ICO) guidance for [UK PECR](https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing) mirrors, is: - sending under **Art. 13(1) consent**: the GDPR basis is **consent**; - sending under the **Art. 13(2) soft opt-in**: the GDPR basis is usually **legitimate interests**, documented with a balancing assessment. Either way, **Art. 21(2)–(3)** grants an **absolute** right to object to processing for direct marketing: "the personal data shall no longer be processed for such purposes", with no balancing, no grounds required, and free of charge (Recital 70). This is the legal root of the obligation to suppress permanently. **Fines**: infringements of the conditions for consent and of the rights of data subjects fall in the upper tier of the GDPR, up to **€20 million or 4% of worldwide annual turnover**, whichever is higher (Art. 83(5)). Other obligations of controllers and processors carry fines of up to €10M or 2% (Art. 83(4)). Penalties under ePrivacy are set nationally and vary widely. ## Tracking pixels and Art. 5(3): EDPB Guidelines 2/2023 (v2.0, adopted 7 October 2024) Art. 5(3) (as amended in 2009) requires **consent**, after clear and comprehensive information, for "the storing of information, or the gaining of access to information already stored, in the terminal equipment of a subscriber or user". There are two exemptions: technical storage or access for the sole purpose of carrying out the transmission, and storage or access **strictly necessary** for a service the user explicitly requested. The rule is technology-neutral (it is not limited to cookies) and applies to "information", not only to personal data. The EDPB's three criteria for applicability are: (A) the operation concerns **information**; (B) it involves **terminal equipment** connected or connectable to a public communications network; (C) it constitutes **storage** or **gaining of access**, which need not happen in the same communication or be performed by the same party. **Email open and click tracking is clearly in scope** (§3.1, ¶¶47–51): - A **tracking pixel** in an email exists to make the client open a connection to the pixel host that would not otherwise happen, which reveals when the email is read. It may carry identifiers unique to each recipient. **Tracked links** work the same way, with the identifier appended to the URL. - Distributing pixels or links to the device "does constitute storage, at the very least through the caching mechanism of the client-side software… **even if this storage is not permanent**" (¶50). - The added tracking identifier "constitutes an instruction to the terminal equipment to send back the targeted information", that is, a **gaining of access** (¶51). As a result, the core engagement telemetry of an email service provider (ESP), which is opens through pixels and clicks through redirects with tokens unique to each recipient, requires **consent under Art. 5(3)** in the EU unless an exemption applies. The EDPB analyzes scope only, and leaves exemptions to national law and to assessment case by case (¶40), but neither exemption plausibly covers marketing analytics. Points with operational consequences: - **Who obtains consent**: the sender or controller (the ESP's customer), typically at signup alongside marketing consent, as a granular purpose that can be consented to separately under EDPB 05/2020. - The guidelines also bring **tracking based only on IP addresses** partly into scope (¶¶54–55), and note that the applicability of Art. 5(3) "does not systematically mean that consent needs to be collected", because the analysis of exemptions is separate (¶56). - **Tension with deliverability practice**: [sunset policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies) based on engagement presume open and click data. Where there is no pixel consent, the alternatives are aggregate or log-based signals that the sender controls: click activity on consented links, delivery data at the SMTP level, complaint and unsubscribe events, and activity on the site or in purchases. Apple Mail Privacy Protection already pre-fetches pixels and makes opens less useful as an individual signal, so EU consent constraints speed up an existing shift away from automation based on opens. ## Member-state divergence (Fieldfisher "Email Marketing Across Europe," January 2024) National implementations of ePrivacy differ on three points: whether B2B email is exempt from opt-in, whether the soft opt-in requires a completed **sale transaction** or only a commercial relationship (an enquiry or a quote), and whether **double opt-in** is expected as proof. Definitions: "opt-in" means an unambiguous positive action, and "soft opt-in" means the four conditions of Art. 13(2) (collected in the context of a sale; the same legal entity; similar products or services; free objection at collection and in every message). Email marketing by third parties ("partners") effectively requires an opt-in that names the sender, everywhere. | Country | B2C (first-party) | B2B (first-party) | Soft opt-in: sale needed? | Notes | |---|---|---|---|---| | Austria | Double opt-in; soft opt-in available | Double opt-in; soft opt-in available | No | DOI should be used when relying on opt-in; national opt-out list (ECG-Liste) overrides soft opt-in | | Belgium | Opt-in; soft opt-in available | Opt-in for individual B2B addresses; soft opt-in available | Yes | Royal Decree of 4 April 2003 | | Bulgaria | Opt-in; soft opt-in available | Opt-in; soft opt-in available | No | | | Croatia | Opt-in; soft opt-in available | **Opt-out** | Yes | | | Cyprus | Opt-in; soft opt-in available | Opt-in | Yes | | | Czech Republic | Opt-in; soft opt-in available | Opt-in; soft opt-in available | Yes | | | Denmark | Opt-in; soft opt-in available | Opt-in; soft opt-in available | Yes | Marketing Practices Act art. 10 | | Estonia | Opt-in; soft opt-in available | **Opt-out** | Yes | | | Finland | Opt-in; soft opt-in available | Individualised address: opt-in; non-individualised or role-related: **opt-out** | Yes | | | France | Opt-in; soft opt-in available | **Opt-out** | Yes | CPCE Art. L34-5; B2B allowed if message relates to the recipient's professional function | | Germany | **Double opt-in** (proof standard); soft opt-in exists but rarely relied on | **Double opt-in**; no B2B exemption | Yes | See [Germany: UWG §7](https://emailmarketing.net/learn/compliance/germany-uwg-email) | | Greece | Opt-in; soft opt-in available | Opt-in; soft opt-in available | No | Law 3471/2006 | | Hungary | Opt-in; **no soft opt-in** | **Opt-out** | n/a | | | Ireland | Opt-in; soft opt-in available | **Opt-out** if related to the recipient's professional role, else opt-in | Yes | S.I. 336/2011 | | Italy | Opt-in; soft opt-in available (email only, not SMS) | Opt-in | Yes | | | Latvia | Opt-in; soft opt-in available | **Opt-out** | Yes | | | Lithuania | Opt-in; soft opt-in available (email only) | Opt-in; soft opt-in available | Yes | | | Luxembourg | Opt-in; soft opt-in available | **Opt-out** | Yes | | | Malta | Opt-in; soft opt-in available | Opt-in; soft opt-in available | Yes | | | Netherlands | Opt-in; soft opt-in available | Opt-in; soft opt-in available | Yes | | | Norway | Opt-in; soft opt-in available | Individualised address: opt-in; non-individualised: opt-out | Yes | Marketing Control Act 2009 | | Poland | Opt-in; **no soft opt-in** | Opt-in | n/a | | | Portugal | Opt-in; soft opt-in available | Individualised: opt-in; non-individualised: opt-out unless on the national opt-out list | Yes | National Opt-Out List updated monthly | | Romania | Opt-in; soft opt-in available | Opt-in; soft opt-in available | Yes | | | Slovakia | Opt-in; soft opt-in available | Opt-out where business contact details were made publicly available | Yes | | | Slovenia | Opt-in; soft opt-in available | **Opt-out** | Yes | ZEKom-2 | | Spain | Opt-in; soft opt-in available | Opt-in; soft opt-in available | Yes | LSSI Law 34/2002 | | Sweden | Opt-in; soft opt-in available | **Opt-out** if related to the recipient's professional role, else opt-in | Yes | | | Switzerland (non-EU) | Opt-in; **no soft opt-in** | Opt-in | n/a | Unfair Competition Act Art. 3(1)(o) | | United Kingdom (non-EU) | Opt-in; soft opt-in available | **Opt-out** (corporate subscribers exempt) | No | See [UK PECR](https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing) | A practical reading for an ESP asked "can I email this EU list?": for lists that mix EU countries, treat the union of the rules as the baseline. **Opt-in, documented for each person, with a working unsubscribe in every message** satisfies every state. The soft opt-in is safe only within a single country, for first-party mail about similar products, with the offer to object at collection provably made. B2B exemptions are specific to each country and never cover sole traders, who are natural persons. ### Staying current The table above is a snapshot from January 2024. Check two living references before relying on any row: - **DLA Piper, *Data Protection Laws of the World*** (dlapiperdataprotection.com): 160+ jurisdictions, an "Electronic marketing" topic for each country, and side-by-side comparison. It is updated twice a year. - **IAPP Global Privacy Directory** (iapp.org/resources/global-privacy-directory): 240 jurisdictions, with links to each data protection authority (DPA) and to the underlying legislation for the long tail. ## Deliverability relevance The conditions of Art. 13 codify in law what mailbox providers reward anyway: addresses collected directly, a real commercial relationship, granular consent, an offer to object at collection, and an unsubscribe in every message ([consent methods](https://emailmarketing.net/learn/list-management/consent-methods), [foundations](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability)). The identity and valid-address requirements of 13(4) map to the sender transparency norms that every filter enforces. Law and deliverability diverge on consent for tracking: EU rules constrain the engagement telemetry that list hygiene driven by reputation assumes, so senders with mostly EU audiences should build sunset logic on clicks, conversions and complaints rather than on opens. # France — CNIL Email Prospecting Rules and the Tracking-Pixel Recommendation > CNIL's rules for commercial email (B2C opt-in, existing-customer exception, B2B professional-relevance test) and the 2026 recommendation requiring consent for most email tracking pixels — including the deliverability-measurement exemption every ESP needs to know. Source: emailmarketing.net — https://emailmarketing.net/learn/compliance/france-cnil-email If you send commercial email to people in France, or track opens on mail to French recipients, the rules you must follow come from French law and its regulator. France transposes the email marketing rule of the ePrivacy Directive through **Article L.34-5 of the Code des postes et des communications électroniques (CPCE)**, and its rule on terminal equipment (cookies and pixels) through **Article 82 of the Loi Informatique et Libertés** (the Data Protection Act). The regulator is the **CNIL**. Like [UK PECR](https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing) and [CASL](https://emailmarketing.net/learn/compliance/casl), France is an **opt-in** regime for consumers. But it has a distinctive "professional relevance" test for business-to-business (B2B) mail instead of the UK's exemption for corporate subscribers. Since 2026, it also has a headline rule for email service providers (ESPs): **most email open-tracking pixels require the recipient's consent**. **Not legal advice.** Verify thresholds and deadlines against the primary sources (below) and with counsel before relying on them. See the [compliance overview](https://emailmarketing.net/learn/compliance). ## Message taxonomy The CNIL distinguishes three types of message, and the classification determines which rules apply: | Type | Definition | Legal basis | |---|---|---| | **Commercial prospecting** | Promotes products, services, or the company's image | Consent (B2C), with exceptions below | | **Transactional** | Necessary to manage the contract or service: confirmations, alerts, password resets | Performance of a contract, or legitimate interest | | **Relational** | Follow-up without a direct promotional purpose: guidance on use, account management | Legitimate interest | Transactional and relational messages must **not contain significant promotional content**. Adding commercial content reclassifies the message as prospecting and triggers the consent rules. (This is the same principle as the primary-purpose test of CAN-SPAM, but with an opt-in consequence.) ## B2C: prior consent required Sending commercial prospecting by email or SMS to individuals (business-to-consumer, or B2C) requires **prior consent** (Art. L.34-5 CPCE) that meets the standard of GDPR Art. 4(11): free, specific, informed, unambiguous, and expressed by a **positive and specific action**. - **Pre-ticked boxes are forbidden.** The recommended mechanism is a checkbox that is unchecked by default. - Accepting the general terms and conditions cannot replace consent. - Consent can be withdrawn at any time. - Legal references: GDPR Art. 4(11) (definition), Art. 6 (lawful bases), Art. 7 (conditions of consent), Art. 21 (right to object); CPCE Art. L.32 and L.34-5. ### Exception 1: existing customers and similar products or services No prior consent is needed to prospect an **existing customer** about **similar products or services supplied by the same company**, provided that: 1. the person was told **when their address was collected** that it would be used for prospecting about similar products or services; and 2. they could object, simply and free of charge, **at collection and in every later message**. Boundary rulings the CNIL highlights: - **A completed sale or delivery of a service is required**: "the exception cannot be mobilised where no sale or service provision has taken place." Simply creating an account (for example, opening an e-commerce account without ordering) does **not** make someone a customer, so consent is required. - **Court of Justice of the European Union (CJEU), 13 November 2025 (Inteligo Media)**: the holder of a free account on a news site who receives a newsletter promoting paid subscriptions may qualify under the existing-customer exception. A free service that starts a customer relationship can count. - **Examples of similar products**: a buyer of train tickets who receives offers for similar transport services falls under the exception (with an opt-out offered). A hotel booking used to send offers from a **partner airline** does **not** fall under it (a different company and different products), so consent is required. ### Exception 2: non-commercial prospecting (charities and similar) Charities and comparable organisations may prospect on the basis of **legitimate interest** rather than consent, provided that the person was told at collection that their details would be used for "non-commercial prospecting", and has a simple, free way to object, both at collection and in each message. ## B2B: the professional-relevance test Prospecting professionals by email does **not** systematically require consent. The legal basis is **legitimate interest**, subject to three conditions: 1. the message **relates to the recipient's profession** ("en rapport avec la profession de la personne démarchée"). In the CNIL's example, pitching software to a company's IT director qualifies; 2. the person was **informed** that their details could be used for prospecting, and of the origin of the data and the purpose of the message. This happens at collection or, for data already held or acquired from third parties, in a verifiable way; 3. a **simple, free way to object** is provided. **Generic organisation addresses** (info@company.fr, contact@company.fr, commande@company.fr) relate to legal persons rather than natural persons, and fall entirely **outside** these rules on consent and objection. Under UK PECR, by contrast, role addresses at corporate subscribers are also exempt from the consent rule, but the duties to identify the sender and offer an opt-out still apply. See [Netherlands and the B2B question](https://emailmarketing.net/learn/compliance/netherlands-and-b2b-rules) for the comparison across countries. ## Universal requirements (all prospecting) - Clearly identify the sending organisation. - Provide a simple unsubscribe mechanism in every message. - Honor objections **permanently**. The CNIL recommends a **suppression list ("liste repoussoir")** to prevent further solicitation (the same architecture as in [GDPR and suppression lists](https://emailmarketing.net/learn/compliance/gdpr-and-suppression-lists)). - Answer requests from data subjects to exercise their rights (access, rectification, objection, erasure) within **one month at most**. - Provide GDPR transparency information at collection. - Non-compliance can be reported to the CNIL as a complaint, and unwanted SMS can be reported to the platform **33700**. The CNIL's compliance checklist for senders: classify the message type; check that transactional and relational messages contain no significant promotion; determine the legal basis; inform people at collection; validate consent where it is required; offer objection at collection and in every message; keep the suppression list up to date; supervise service providers; secure the data; define retention periods; and document everything. --- # The CNIL Tracking-Pixel Recommendation (2026) **Deliberation n° 2026-042, adopted 12 March 2026, published 14 April 2026** (the public consultation ran from 12 June to 24 July 2025). It is the first operational rulebook from a regulator for email open-tracking pixels, and it directly governs how ESPs that serve French recipients may run open tracking. It applies Article 82 of the Data Protection Act (the French transposition of ePrivacy Art. 5(3)), following the European Data Protection Board's **EDPB Guidelines 2/2023** on the technical scope of the ePrivacy Directive, which confirmed that those provisions apply to pixels in emails. **Why pixels are covered**: the pixel is a remotely hosted image whose URL carries individual parameters. Displaying it makes the recipient's terminal send targeted information (the pixel identifier, the IP address and so on) back to the actor that placed it. That collection is a **reading operation on the user's terminal**, which is what triggers Article 82. The recommendation covers email only; closed messaging systems such as bank inboxes use other protocols and are out of scope. It is guidance, not regulation, but the CNIL has announced webinars and **enforcement through audits**. ## Who is responsible (GDPR roles) | Actor | Qualification | |---|---| | **Email sender** (the brand that decided to send) | **Controller**, even when tracking is outsourced. In principle it is **jointly responsible** for the reading and writing operations by third parties that it accepts in its emails under contract | | **Emailing service provider** (the ESP: the technical sending solution, which usually offers the pixel feature) | **Processor**, acting on the controller's instructions | | **Provider of list rental and sending** ("turnkey" campaigns to rented lists) | Decided case by case: a **processor in principle**. If it also uses pixels for its own purposes (improving the relevance of its lists, or its own deliverability with mailbox providers) and the customer agrees in the contract, **joint controllership** applies (GDPR Art. 26, which requires a clear division of duties for information and rights) | | **Supplier of tracking technology** (a third-party pixel vendor) | A **processor** if it works only for the sender; **co-responsible** if it also uses the data for its own purposes (for example, product improvement) with the customer's agreement in the contract | | **Mailbox provider** (receives and displays the mail, and may block image loading) | **Neither controller nor processor**, because it does not use the pixel data | This is one of the few texts from a regulator that names the role of the ESP explicitly. An ESP that reuses its customers' open data for its own optimization becomes a joint controller. ## Purposes requiring consent Prior consent that is free, specific, informed and unambiguous is required for pixels used for: - **Analysis of open rates to measure and optimise campaign performance**: personalising content, adapting sending frequency, or switching channel (email, SMS, push). This includes reliability procedures such as fighting ad fraud; - **Building recipient profiles** from observed preferences and interests, to target recipients **outside email** (websites, mobile apps, other channels); - **Detection and analysis of suspected fraud** (for example, unusual or massive opens that indicate automation: mass contest entries, exfiltration attempts); - **Measurement of individual open rates for deliverability** when it is carried out **outside the exempted scope below**. ## Purposes exempt from consent Pixels used **exclusively** for the following purposes may operate without consent: 1. **Security measures in user authentication**: for example, confirming that an email carrying an authentication code was opened on a terminal known to belong to the intended user. 2. **Measurement of individual open rates for deliverability.** The CNIL accepts that managing a mailing list "almost systematically requires" opening statistics to identify deliverability issues. But the controller must show that the operations are limited to what is strictly necessary to **adjust the frequency of sends to "inactive" recipients, or stop them (database cleaning)**. Within that limit, the pixel data may also serve to: - assess and adapt the communication channel (choose other ways of contacting the person); - help demonstrate compliance with a legal obligation to transmit information (proof that information required by law before or after the contract was delivered). **Data minimisation constraint**: in principle, only the **date of the last known opening should be kept, as a day with no time, overwritten at each new opening, with the previous date deleted**. **Scope limit on the exemptions**: because the exemption in Article 82 depends on the user's "express request", the exemptions apply only to emails **requested by the recipient or related to a requested service**, that is, **transactional emails** or emails the recipient consented to receive. The recommendation defines transactional emails as messages triggered by a user action or event, that are informative or functional and necessary for the contractual relationship: welcome emails, account alerts, shipping notifications, order confirmations and invoices, reminders and password resets, replies from customer service, reminders of appointments or reservations, payment notifications, and breach notifications tied to the requested service. Pixels in **public administration** emails sent as part of a public service mission (including proactive information about rights) also fall within the exemptions. **Anonymised reuse**: once data collected through a pixel is effectively anonymised, reusing it requires no consent (the anonymisation processing itself remains subject to the GDPR). **Practical consequence for ESPs**: blanket open tracking of each recipient for engagement dashboards, send-time optimization or automation triggers requires consent for French recipients. Open tracking whose only retained output is a single last-open date, used to run [sunset and inactivity policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies), can be exempt on transactional and consented mail. The **consent regime for pixels is independent of the consent regime for the email itself**: pixel consent may be needed in emails that need no consent themselves (order confirmations, marketing of similar products, charity marketing, B2B professional prospecting). ## Collecting pixel consent - **Present purposes one by one**: each purpose should have a short title and a brief description. The CNIL supplies model wordings. For deliverability: "[Sender] and [third parties] use trackers (tracking pixels) to find out if and when you open the emails in order to compile diffusion statistics and take the necessary actions (adaptation of the frequency or stop mailings) to manage the mailing lists". For campaign performance: "…whether you open the emails, the time at which you do so, and information about the device you use to personalise content, adjust the sending frequency or the channel used". Cross-context profiling and fraud detection have similar templates. Detailed descriptions should be reachable from the consent interface, through an expand button or a hyperlink at the first level. - Good practice: disclose even the pixels that are exempt from consent in the privacy policy. - **Clear scope**: the recipient must be able to identify **which email address** the pixels will affect, and understand that the trackers will operate on **all the terminals** where they read that mailbox. - **Preferred moment**: collect pixel consent **when the email address itself is collected**, by adding the summary of purposes (with a link to the trackers policy) to the signup form. - **Collecting consent afterwards**: where consent was not collected with the address (or the address came from a third party without proof of pixel consent, or was collected orally), send an **email without pixels** that contains a link to a consent interface. The link must lead to a page that requires a **positive action** (a button click), so that the automatic pre-loading of links by some email clients cannot register a phantom consent. This is the same defence as for [one-click unsubscribe](https://emailmarketing.net/learn/list-management/list-unsubscribe) endpoints. Use a **tracking link unique to each recipient**, so that only the holder of the address can express the choice. Such links serve user security and authentication, and are themselves exempt from consent under Article 82. - **Inactivity counts as refusal.** Not responding to a request for consent must be treated as a refusal, and the request must not pressure recipients or get in the way of reading. Offer an explicit "refuse" option that is as easy as "accept", record the choice, and do not ask again for a period: **6 months without asking again is cited as good practice**. (This 6-month figure is a gap before asking again that applies specifically to pixel consent, not a general rule on how fresh consent must be. To compare it with the freshness figures of other jurisdictions, see [Consent Record-Keeping](https://emailmarketing.net/learn/compliance/consent-record-keeping#manage-keep-consent-under-review).) - **Granularity**: consent should be requested separately for each purpose. An interface with two levels (a global accept at the first level, and choices for each purpose at the second) is acceptable. A **single consent** may cover both electronic direct marketing (Art. L.34-5) and pixels that serve **related** purposes: for example, marketing expressly presented as personalised together with the pixels that personalise it, or contest emails together with anti-fraud pixels. Unrelated purposes need separate consent, and **display advertising and email prospecting are always separate purposes**. - **Caution with consent management platforms (CMPs)**: collecting pixel consent through a CMP on a website or in an app is possible but needs care. The person must understand that the choice concerns a different environment (their email), and which address is affected. ## Withdrawal - Offer withdrawal through a **tracked link in the footer of every email**. Withdrawing must be as easy as consenting. - If the link opens a web page, withdrawal must complete **without any further action**, in particular without typing the email address again. - Withdrawal must be **effective**: future emails must not trigger the operations, and for emails already sent, the sender may need to take measures so that pixels embedded earlier are no longer exploited when a message is opened again. ## Proof of consent - The controller must be able to demonstrate consent at any time (GDPR Art. 7(1)) through **individual records** of each person's consent and of the conditions under which it was obtained. - Where a third party collected the address and the consent, a **contract clause that obliges the partner to obtain valid consent is not sufficient proof**. The contract may instead govern the mechanisms for collecting consent, the availability of the evidence to the party relying on it, the conditions for keeping evidence so that it keeps its value as proof, and **regular audits of the mechanisms that collect consent**. Contractual commitments do not protect the controller from liability if the evidence cannot be produced. ## Transition for existing lists For addresses collected before publication, tracking may continue **only if clear, accessible information is sent to recipients within at most 3 months of the publication of the recommendation**, so that anyone whose consent was not validly obtained can object to the operations for future emails. Where new consent is needed anyway (for example, to transmit data to new controllers for prospecting), valid pixel consent must be obtained for the operations that are not exempt. ## Deliverability relevance France is the first jurisdiction to regulate the mechanics of open tracking in detail, and it reaches the position that deliverability practitioners had already reached for technical reasons. Open data is unreliable (Apple Mail Privacy Protection pre-fetches pixels, and Gmail proxies images), and its legitimate operational use is **list hygiene**, which is exactly the purpose the CNIL exempts. ESPs should treat open analytics for individual French recipients as a feature that requires consent, keep a minimal last-open date for [sunset policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies), and prefer click and conversion signals to measure engagement. For the UK position, see [PECR](https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing): pixels fall under its rules on storage and access too, but there is no equivalent operational recommendation there (yet). # GDPR and ESP Suppression Lists > The erasure-vs-suppression tension — M3AAWG's Dec 2024 support document on when suppressing an address keeps an ESP a Data Processor and when it makes the ESP a Data Controller, with the 13 suppression events analyzed. Source: emailmarketing.net — https://emailmarketing.net/learn/compliance/gdpr-and-suppression-lists If you run an email service provider (ESP) with clients or recipients in the EU, suppressing an address can change your role under the General Data Protection Regulation (GDPR). Depending on who decided the suppression, you remain a Data Processor or become a Data Controller. The guidance below comes from *M3AAWG Support Document: The GDPR and ESP Suppression Lists*, December 2024. The document's own caveat applies here too: **it is not legal advice**. It is background for ESPs reviewing their suppression-list practice, and specific legal questions should go to counsel. The document was fetched from the URL of its final revision (`the_gdpr_and_esp_suppression_listsfinal.pdf`). The URL originally circulated now returns 404s. ## The conflict between suppression and erasure An ESP suppresses addresses so that no mail is sent to them. The whole industry expects this, because it protects deliverability (see [List Hygiene & Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies), and the operational design in [Suppression-List Architecture](https://emailmarketing.net/learn/esp-operations/suppression-list-architecture)). Under GDPR, however, every act of processing personal data needs a legal basis, and email addresses are personal data. When an ESP suppresses an address **that its client did not instruct it to suppress**, the ESP is acting outside the client's instructions. That can turn the ESP from a **Data Processor**, with low liability, into a **Data Controller**, with all of a controller's obligations. At the same time, a "right to be forgotten" (erasure) request seems to demand that the ESP delete the very record it needs to keep in order to guarantee that the person is never mailed again. ## Definitions (GDPR Article 4) - **Data Controller**: any "body which, alone or jointly with others, determines the purposes and means of the processing of personal data…" (Art. 4(7)). - **Data Processor**: any "body which processes personal data on behalf of the controller…" (Art. 4(8)). Being a Processor carries **less risk and liability**, as long as the ESP can show that it followed the controller's instructions and did not process data for any purpose, or by any means, beyond what the controller decided. ## Are email addresses personal data? Generally, yes. There are exceptions, such as generic role addresses (`info@example.com`) or generic reply addresses (`lotteryentry@example.com`), but **design systems on the assumption that all the email addresses involved are personal data**. The domain itself can be personal data, for example `js@john-smith.example.com`. When the ESP sends mail on a client's behalf as a Processor, its legal basis is the **contract with the client (Art. 6(1)(b))**. ESPs can suppress **data that is not personal (such as known spam traps)** without the GDPR applying at all, provided the trap address really is not personal data. ## The 13 events that drive suppression M3AAWG lists the situations in which suppression arises. Each has a different character under GDPR: | # | Event | GDPR notes | |---|---|---| | 1 | **Invalid addresses** (a top-level domain that does not exist, e.g. `example.con`) | Objectively invalid. Suppressing addresses that cannot possibly be valid involves no processing of personal data outside the contract | | 2 | **Addresses likely to be invalid** (common typo domains, e.g. `hotmial.com` for `hotmail.com`) | ESPs may block the domain for all clients | | 3 | **Suppression by country code** (sanctions regimes, and rules specific to a country, e.g. on gambling) | A judgment for each ESP. `.de` (Germany) is treated differently from `.tv` (Tuvalu, widely used without any link to the country) | | 4 | **Disposable or single-use addresses** | ⚠ Suppressing these **when the client contract does not provide for it may make the ESP a Data Controller** | | 5 | **Role addresses** (`noreply@…`) that do not fit the nature of the mail | Decide case by case. Some role addresses can be attributed directly to known individuals, and are therefore personal data | | 6 | **Email delivery failures** (the server refuses: the address does not exist, the mailbox is "full", or the content is judged unacceptable) | Where the failure is very likely to recur for a given message (or type of message), stop trying | | 7 | **Bounce messages** (a failure reported later, after the message seemed to be accepted) | Analyze the reason. It may justify making no further attempts | | 8 | **Feedback-loop information** (the provider reports that the message went to spam or was marked as spam) | May indicate that further delivery should be suppressed | | 9 | **Information about opens and engagement** (mail with tracking, and long periods without engagement) | Sunsetting based on engagement is itself an act of processing | | 10 | **Requests to unsubscribe** (written by hand, link clicks, unsubscribes triggered by headers in the mail client) | Further email **needs** to be suppressed | | 11 | **Abuse complaints** (correspondence showing that mail from this sender is unwanted) | Suppress for that sender | | 12 | **Known spam-trap addresses** | Sending to them harms the reputation of the sending IP address and domain, which degrades delivery for everyone. The ESP may suppress them (they are often not personal data) | | 13 | **Requests to be forgotten** | An erasure request from a data subject in a territory covered by GDPR (or a similar law), or an instruction to stop processing their personal data | In addition, removing an address because its owner is known to have **died** involves no personal data, because **the dead do not have rights under GDPR**. ## Per-client suppression lists: safe Processor territory An ESP can run suppression lists **for each client separately**, made up of the people who marked that sender's mail as spam, unsubscribed, or whose addresses bounced, and remain "just a Data Processor". The contract between the ESP and the client should make these conditions explicit: - How suppression works in practice. After a bounce, does the ESP track it on the client's behalf, or must the client update its own list? - **The end of the contract.** How does the client (the Data Controller) learn about unsubscribe requests the ESP received? The client is **obliged to honor those requests even when it later sends through a different ESP.** ## Global suppression lists: Controller territory ESPs may consider a global suppression list, shared across clients, essential to staying in business. It is hard to serve any client well if clients keep mailing spam traps or people who complain repeatedly. However: - Using the ESP's **own** suppression list to block addresses that the client instructed it to mail goes against the contract to act "on their behalf". The ESP is then "determining the purposes and means of the processing", which means it **has become a Data Controller**. - It is "very likely" that the ESP is acting beyond the Processor role if it keeps its own suppression list to block specific addresses, for example individuals hostile to the ESP's business, role accounts, trap domains, known hard bounces, and so forth. - If an ESP operates a global suppression list, **the client contract should say how it is applied**, so that the client can meet its own obligations as Controller. Data-protection complications generally arise whenever the ESP takes actions the client did not request. - An ESP that has become a Controller must act as one. The document points to the **UK ICO controllers checklist** as a starting point: https://ico.org.uk/for-organisations/sme-web-hub/checklists/data-protection-self-assessment/controllers-checklist/ ## Handling "forget me" requests: the practical resolution The document does not state a resolution of the conflict between erasure and suppression outright, but it implies one: 1. An erasure or stop-processing request that the ESP receives concerns data the ESP processes **on behalf of clients**. Route it and record it in the way the contract provides. 2. **The contract between the ESP and their client should make clear how this type of suppression will work in practice.** This is the key sentence. The lawful way to keep a suppression record after an erasure request is for the contract to have defined that record as part of the processing the Controller instructed. 3. Distinguish the kinds of suppression. Suppressing addresses that are objectively invalid or not personal (traps) raises no problem. Suppression for each client, driven by consent, is Processor work under the contract. Global suppression started by the ESP is Controller work, and the ESP must take on a Controller's duties. ## Operational checklist for an ESP - Write the suppression behavior (for each client, and any global list) explicitly into the data processing agreement (DPA) or contract, including the suppression of disposable addresses and traps. - Define how data is handed over when the contract ends: unsubscribes and complaints must reach the client, who stays bound by them at its next ESP. - Treat all addresses as personal data by default, and make exceptions only for cases that are objectively not personal. - If you operate a global suppression list, accept that you are a Controller: document the purposes, legal basis, retention, and handling of data subjects' rights (see the ICO checklist above). - Refer questions of whether you are a Processor or a Controller in a given case to legal counsel. The document says this twice. ## Related articles - [Suppression-List Architecture](https://emailmarketing.net/learn/esp-operations/suppression-list-architecture), on how the split between per-client and global suppression is built - [CAN-SPAM](https://emailmarketing.net/learn/compliance/can-spam) - [CASL](https://emailmarketing.net/learn/compliance/casl) - [UK PECR](https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing) - [Complaint Feedback Loops](https://emailmarketing.net/learn/list-management/complaint-feedback-loops) - [List-Unsubscribe](https://emailmarketing.net/learn/list-management/list-unsubscribe) # Germany — UWG §7 Email Marketing > Germany's unfair-competition route to email consent: UWG §7(2) no. 2 express prior consent for B2C and B2B, the §7(3) exception's four cumulative conditions, the double-opt-in case law, and enforcement by competitors via cease-and-desist. Source: emailmarketing.net — https://emailmarketing.net/learn/compliance/germany-uwg-email If you send marketing email to recipients in Germany, you need their prior express consent, whether they are consumers or businesses, and you should be able to prove it with a documented double opt-in. > **This is not legal advice.** It summarizes the Act against Unfair Competition (Gesetz gegen den unlauteren Wettbewerb, UWG), quoted from the official English translation at gesetze-im-internet.de. The translation is not binding, and it includes amendments up to the Act of 6 May 2024; the German text is the one that applies. The translation was retrieved through the Internet Archive (a capture of 15 May 2026), because the official site could not be reached when this summary was written. Germany implements [ePrivacy Art. 13](https://emailmarketing.net/learn/compliance/eu-eprivacy-and-gdpr-email-marketing) not mainly through data protection law but through **unfair competition law**: UWG §7, which serves to implement Art. 13 of Directive 2002/58/EC. Two consequences make Germany the strictest major email market: 1. **There is no exception for B2B.** §7(2) no. 2 requires "the addressee's prior express consent" for advertising by electronic mail, and the addressee can be a consumer **or a business**. The UK, France and the Nordic countries have opt-out rules for corporate recipients; Germany does not, so B2B email marketing needs the same express opt-in as B2C. 2. **Competitors enforce the rules.** Violations are policed mainly not by a data protection authority but by **competitors and associations**, through the system of cease-and-desist letters (*Abmahnung*). The process is fast, started by private parties, and generates fees, so enforcement is common in practice. ## §7: the rule **§7(1):** "A commercial practice which constitutes an unacceptable nuisance to a market participant is illegal. This in particular applies to advertising in cases where it is apparent that the solicited market participant does not want this advertising." **§7(2):** an unacceptable nuisance is **always assumed** for: - **no. 1**: telephone advertising to a consumer without prior express consent (or to another market participant without at least presumed consent); - **no. 2**: "advertising using an automated calling machine, a fax machine **or electronic mail without the addressee's prior express consent**"; - **no. 3**: advertising messages (a) where the sender's identity is hidden or kept secret, (b) that violate §6(1) of the Digital Services Act or lead the recipient to a website that does, or (c) that have **no valid address** to which the recipient can send a request to stop, free of charge apart from basic transmission costs. German courts read "advertising" broadly: any communication meant to promote sales, including newsletters, satisfaction surveys used for promotion, and emails that try to win back inactive customers. ## §7(3): the exception (the German soft opt-in), with four conditions that must all be met Despite §7(2) no. 2, email advertising is not an unacceptable nuisance **only if all four** of these conditions are met: 1. "the entrepreneur has obtained from the customer the latter's electronic mail address **in connection with the sale of goods or services**; 2. the entrepreneur uses the address for direct advertising of **his or her own similar goods or services**; 3. the customer **has not objected** to this use; and 4. the customer is **clearly and unequivocally advised, when the address is collected and each time it is used**, that he or she can object to such use at any time, without costs arising by virtue thereof, other than transmission costs in accordance with the basic rates." In practice, German courts require an actual **sale**. Fieldfisher notes "transaction required": an enquiry alone does not qualify, unlike the UK's reading of "negotiations". "Similar" is interpreted narrowly. Condition 4 fails if the notice about objecting was missing when the address was collected, and that cannot be fixed afterward. Because the sender must prove all four conditions, **relying on §7(3) is rare in German practice, and the standard advice is documented double opt-in consent** (Fieldfisher, Jan 2024). ## Double opt-in case law The law says "prior express consent", and the case law makes a **documented double opt-in** the de facto standard of proof: - **BGH, judgment of 10 Feb 2011, I ZR 164/09** (*Double-opt-in-Verfahren*). The sender bears the **full burden of proving** the specific declaration of consent. A simple signup on a web form (single opt-in) is not enough, because "misuse by unauthorised persons cannot be ruled out": anyone can type in someone else's address. Consent given electronically must be stored and be printable at any time. The confirmed double opt-in (a signup followed by a click on a link in a confirmation email) is the recognised way to show that the holder of the address consented personally. - **OLG München, judgment of 27 Sep 2012, 29 U 1682/12.** The **confirmation email itself counts as advertising** if the sender cannot prove that the holder of the address asked for it. A "check your inbox" message sent to an address that never signed up is therefore already a violation of §7(2) no. 2. In practice, keep the confirmation email **strictly neutral** (no offers, no promotion, minimal branding), send only one, and log the context of the signup (time, IP address, form) so that you can prove the request itself. Since then, courts have generally accepted neutral double opt-in confirmations; a promotional one loses that protection. - The consent must also meet the **GDPR standard** ([Art. 4(11) and Art. 7: granular, informed, possible to withdraw, and with no pre-ticked boxes](https://emailmarketing.net/learn/compliance/eu-eprivacy-and-gdpr-email-marketing)). German data protection authorities and courts apply both sets of rules side by side, and consent that is invalid under the GDPR cannot be valid under the UWG. For telephone advertising, §7a also requires documenting a consumer's consent "in an adequate form" and **keeping the proof for five years** from when consent was given and after each use, ready to show the Federal Network Agency on request. No equivalent statutory retention rule exists for email consent. However, because the BGH puts the burden of proof on the sender, the practical standard is to keep consent records indefinitely (until the relationship has ended and the limitation periods have run out). ## Enforcement - **Who can sue (§8(3)).** Claims to stop and prevent the violation belong to (1) **any competitor** with a genuine presence in the market, (2) **qualified trade associations** on the §8b list (for example, the Wettbewerbszentrale), (3) **qualified consumer associations** on the list under the Injunctive Relief Act, and (4) chambers of industry and commerce, and chambers of crafts. The recipient can also bring a claim personally under general civil law (an injunction or damages, through BGB §§823, 1004 by analogy). Businesses whose staff receive spam sue as market participants. - **How an Abmahnung works.** The claimant sends a formal warning that demands a **declaration to cease and desist, backed by a contractual penalty** (typically several thousand euros for each future violation), and reimbursement of legal fees. If the sender refuses, a **preliminary injunction** follows quickly. A single unsolicited email that can be proven is enough to start this process, which is why one campaign sent to the wrong people in Germany produces legal letters in a way it does not elsewhere. §8c limits abusive series of warnings (where generating fees is the main purpose, values are inflated, or penalties are excessive), in response to the so-called *Abmahnindustrie*, but legitimate claims remain routine. - **The risk of a repeat violation** is presumed after one violation. Only the declaration backed by a penalty, or a final judgment, removes it. - **Fines.** The regulatory fines under §20 (up to **€300,000**) cover **telephone and automated call** advertising without consent, and failures to document under §7a (up to €50,000). They do **not cover email**, which is enforced through civil claims as described above. Violations of email consent can also lead to **GDPR fines** from the data protection authorities (up to €20M/4% for infringements of the basis for consent), because sending the mail means processing personal data without a lawful basis. ## Deliverability tie-in Germany's legal strictness and the strictness of its inboxes belong to one ecosystem. The main German mailbox providers ([GMX, WEB.DE and mail.com, owned by United Internet](https://emailmarketing.net/learn/providers/gmx-web-de-postmaster)) support the allowlisting program of the **Certified Senders Alliance (CSA)**. Its admission criteria mirror the legal standard: documented consent, an expectation of double opt-in, a working unsubscribe, and sender transparency as required by §7(2) no. 3. Advising a sender to mail Germany without a documented double opt-in is therefore wrong in two ways. Legally, the sender cannot meet the burden of proof and is exposed to an Abmahnung. Operationally, the sender does not meet the filtering expectations of the CSA and of United Internet. For lists that mix several EU countries, the safe baseline is the German standard (see the [table of differences between member states](https://emailmarketing.net/learn/compliance/eu-eprivacy-and-gdpr-email-marketing)). # Minors and Email Marketing — COPPA, the UK Children's Code, and GDPR Article 8 > When collecting a child's email address triggers US COPPA (under-13 rule, verifiable parental consent, the FTC six-step plan), the UK Age Appropriate Design Code's 15 standards, GDPR Article 8 age thresholds, and what all of this means for ESP signup forms and age gates. Source: emailmarketing.net — https://emailmarketing.net/learn/compliance/minors-and-email-marketing If a signup form could collect an email address from a child, the children's privacy laws apply before a single message is sent. Every one of these regimes treats an email address as **personal information about the child**, so collecting it is the act that triggers the law. An ESP and its customers are most likely to meet three frameworks: the US COPPA Rule (under 13), the UK Children's Code (under 18), and the consent ages in GDPR Article 8 (13–16, depending on the member state). General consent practice is covered in [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods), and the marketing laws that apply to adults in [CAN-SPAM](https://emailmarketing.net/learn/compliance/can-spam), [CASL](https://emailmarketing.net/learn/compliance/casl) and [UK PECR](https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing). ## COPPA (United States): the under-13 rule The Children's Online Privacy Protection Act (1998) and the Federal Trade Commission's (FTC) COPPA Rule put parents in control of what is collected online from children **under 13**. The Rule is 16 C.F.R. Part 312. It took effect on April 21, 2000, was amended with effect from July 1, 2013, and was **amended again on April 22, 2025**, so check the revised Rule for the current text. The FTC enforces the Rule, as do state attorneys general and sector regulators. Civil penalties run up to **$53,088 per violation**. They are set on factors that include how egregious the violation was, prior violations, the number of children, the type of information, sharing with third parties, and the size of the company. Some cases settle with no penalty, and others for millions. COPPA applies if any of these is true: 1. the site or service is **directed to children under 13** and collects personal information from them; 2. it is directed to children under 13 and **lets others collect** personal information from them (ad networks, plug-ins: the operator is liable for collection by third parties on its property); 3. it is a **general-audience** service with **actual knowledge** that it is collecting personal information from a child under 13; or 4. it runs an ad network or plug-in with actual knowledge that it collects personal information directly from users of a service directed to children. "Online service" has a broad meaning: mobile apps, gaming platforms, plug-ins, ad networks, voice over IP (VoIP), connected toys and other Internet of Things (IoT) devices, and smart speakers. Foreign services directed to US children, or that knowingly collect from them, are covered, and so are US services that collect from foreign children. Nonprofits outside Section 5 of the FTC Act are generally exempt. Congress deliberately stopped at 13, so teenagers are outside COPPA. ### "Personal information" includes the email address The Rule lists: first and last name; a physical address (street and city or town); **online contact information, meaning an email address or any identifier that allows direct contact** (instant messaging, VoIP or video chat identifiers, mobile numbers); a screen name or user name that works as online contact information; a telephone number; government-issued identifiers (Social Security number, state ID, birth certificate, passport); **persistent identifiers** (a cookie ID, an IP address, a device serial number or unique device ID); a photo, video or audio file that contains a child's image or voice; geolocation precise enough to identify a street and city or town; biometric identifiers; and any information about the child or parent combined with one of these. "Collect" includes requesting or prompting a child to submit information **even if it is optional**, allowing a child to post it publicly, and **passive tracking**. ### When collecting a child's email address triggers COPPA, and when it does not The points in the FAQ that concern email, in short: | Scenario | Outcome under COPPA | |---|---| | A newsletter or other **repeated email contact** that the child requested | Allowed under the **multiple-contact exception** (§ 312.5(c)(4)). Collect the online contact information of the child and of a parent, and give the parent **direct notice and an opportunity to opt out** before the ongoing contact starts. Use it for no other purpose, do not disclose it, and do not combine it with other data. If the notice bounces, you have not made "reasonable efforts", and the exception does not apply | | A **one-time response** to a child's specific request (answering a question, "Ask the Author") | The one-time contact exception (§ 312.5(c)(3)). Respond once, then **delete the address promptly**. Do not contact the child again, disclose the address or use it for anything else. If you choose not to respond, you must still delete it immediately | | A contest entry | The one-time exception works only if you collect **only** online contact information, contact the child once (to say whether they won), and then delete it. If you expect to contact the child several times, the multiple-contact exception applies (notice to the parent, and an opportunity to opt out). If you collect a mailing address for a prize, you need full notice to the parent and verifiable consent, or you can send the prize through the **parent's** contact information | | A **password reminder** at registration | The multiple-contact exception (notice, and an opt-out for the parent) if you keep the address in a form you can retrieve. **No notice is needed** if you collect nothing else, the child cannot disclose personal information on the service, and you immediately and permanently hash the address so that it cannot be reconstructed or used to contact the child | | Collecting the **parent's** online contact information to ask for consent | Allowed (§ 312.5(c)(1)). If you do not obtain consent within a reasonable time, delete it. A mobile phone number is **not** "online contact information" and cannot be collected from the child to start the consent process (although an exception in the Rule allows collecting a mobile number used only to text the parent to ask for consent) | | E-cards or forward-to-a-friend features on a service directed to children | The one-time exception applies only if the system collects the recipient's email address (with first names at most), sends the message immediately, deletes the data immediately, and has **no free-text** fields. Delayed sending follows the multiple-contact exception (notice to the parent and an opt-out first). If the feature gives any opportunity to reveal other personal information, full verifiable parental consent is needed ("email plus" is not allowed) | | **Push notifications** from an app directed to children | The device token is online contact information. The multiple-contact exception can apply (notice to the parent and an opt-out) if the child asked for the notifications and they relate to the app's content | | Information collected **from parents or other adults** about children | Not covered: COPPA only covers information collected online from children | | A general-audience service receives an email from a user who says he is under 13 | The service may reply once under the one-time exception and then delete the email. But the message may give the service **actual knowledge** about data it collected earlier (for example, an address given at registration), which then requires consent or deletion | Persistent identifiers used only for **support for internal operations** (network communication, authentication, contextual ads, frequency capping, security, compliance, analytics, spam protection, debugging) need no notice or consent. Behavioral advertising and building profiles are explicitly outside that definition. ### The FTC's six-step compliance plan 1. **Determine whether COPPA covers you** by applying the four triggers above. Whether a service is "directed to children" depends on its subject matter, its visual and audio content, animated characters, activities and incentives aimed at children, the age of models, child celebrities, ads directed at children, and empirical evidence about the audience. A clause in the terms of service that bans under-13s does not stop the service from being directed to children. 2. **Post a privacy policy that complies with COPPA.** Put a clear and prominent link on the homepage and at every point where information is collected. List **all operators** that collect information through the service (name, and address, phone or email; one operator may answer inquiries, but all must be listed). Describe the types of information collected, how they are used, and what is disclosed to third parties. State a **data retention policy with a timeframe for deletion** (keeping data indefinitely is prohibited, a point the 2025-amendment emphasizes). Describe parents' rights. 3. **Give parents direct notice before collection.** The notice must contain the key facts in the notice itself. A link to the privacy policy on its own does not comply, although a link must also be included. The notice says that you collected the parent's contact information to ask for consent, what you want to collect, how it will be used and disclosed, how to consent, and that you will delete the parent's contact information if consent does not arrive within a reasonable time. Any material change requires a new notice and new consent. 4. **Obtain verifiable parental consent** before collecting, using or disclosing information. The approved methods are: a signed consent form (by mail, fax or scan); a credit card, debit card or online payment **with a notification of the transaction** to the account holder; a toll-free call or video conference with trained staff; a check of a government ID against a database (delete the ID after verification); knowledge-based challenge questions; and a photo ID matched by facial recognition to a second photo the parent submits (delete both after matching). If the data is used **only internally** (no disclosure, nothing made public), **"email plus"** is enough: consent by return email, followed by a confirming step, such as a follow-up call, fax or letter, or a delayed confirmation message that repeats the notice and explains how to revoke consent. Entering an app store password on its own does not give enough assurance that the parent is the one consenting. Disclosure to third parties needs separate consent, unless it is integral to the service. 5. **Honor parents' ongoing rights.** On request, let parents review the child's data, revoke consent or refuse further collection, and delete the data. Verify that you are dealing with the parent (a PIN or password issued when consent was given helps). You may end the child's use of the service after a revocation only if the data is reasonably necessary for taking part. 6. **Secure, retain and delete data properly.** Keep a written information security program with safeguards in proportion to the sensitivity of the data and the size of the business. Release data only to parties that can protect it, with written assurances. Keep a written policy on retention and deletion. Collect as little as possible, keep it only as long as reasonably necessary, and then dispose of it securely. ### Age gates under COPPA - A **general-audience** service does not have to ask for ages, and **may block** under-13s entirely. If it screens for age, the screen must be **neutral**. Let users enter their month and year of birth freely. Do not use drop-down menus that only allow birth years for ages 13+, "I am over 12" checkboxes, or warnings that under-13s cannot take part or should ask a parent (that coaches children to lie). FTC staff recommend a **cookie that stops users from going back** to enter a different age. A service that asks for age and then fails to screen out children or get consent creates liability (FTC cases: Path, Playdom, Sony BMG, Yelp). - A **mixed-audience** service (directed to children under the factors above, but children are not its primary audience) may screen for age, but **may not block** under-13s. It must either not collect information from them or get parental consent. It must collect no personal information before the age question. A math problem in place of an age question is not adequate (it is allowed only in addition to one). - A service **directed to children** (where children are the primary audience) may not screen for age at all: every visitor gets the protections of COPPA. - Operators may rely on the age that users enter on a neutral screen, even if it is false. Actual knowledge can arise later (for example, from a parent's complaint, or a monitored post that reveals a user's age or school grade), and it then requires consent or deletion. ## UK Children's Code (Age Appropriate Design Code) The Information Commissioner's Office (ICO) issued this statutory code under the Data Protection Act (DPA) 2018. It applies to **"information society services likely to be accessed by children"**, where children means anyone **under 18**, a much wider group than COPPA's under-13s. "Likely to be accessed" covers services that children use even when they are not the target audience. The code reaches apps, games, search engines, social platforms, marketplaces, streaming services, news and educational sites, and connected toys, as well as **companies outside the UK** that process the data of UK children. It does not apply to schools, although education technology providers that serve schools can be in scope. The ICO judges compliance with UK GDPR and the DPA 2018 for children's data by conformance with the code, so breaches are enforced with the normal UK GDPR powers. The 15 standards (those relevant to email and marketing are in bold): | # | Standard | Requirement in one line | |---|---|---| | 1 | Best interests of the child | The primary consideration in design and development | | 2 | DPIAs | Assess and reduce risks to children, by age and stage of development, in a data protection impact assessment | | 3 | **Age appropriate application** | Establish users' ages with a certainty in proportion to the risk of the data processing, **or apply the code's standards to all users** | | 4 | Transparency | Concise, prominent privacy information suited to the child's age, with "bite-sized" explanations at the moment they are needed | | 5 | **Detrimental use of data** | No uses shown to harm wellbeing, or that breach industry codes, regulatory provisions or government advice | | 6 | Policies and community standards | Actually uphold your published terms, age restrictions and policies | | 7 | **Default settings** | "High privacy" by default, unless there is a compelling reason based on the child's best interests | | 8 | **Data minimisation** | Collect and keep only the minimum needed for the elements the child actively uses, with a separate choice for each element | | 9 | **Data sharing** | No disclosure of children's data without a compelling reason based on the child's best interests | | 10 | Geolocation | Off by default, with an obvious sign when it is on. Visibility to others switches back to off at the end of each session | | 11 | Parental controls | Information suited to the child's age, and an obvious sign to the child when they are being monitored | | 12 | **Profiling** | Off by default, and only with measures that protect the child from harmful effects | | 13 | **Nudge techniques** | No nudging children into providing unnecessary data or weakening their privacy protections | | 14 | Connected toys and devices | Include effective tools for conformance | | 15 | Online tools | Prominent tools for children to exercise their rights and report concerns | For email marketing, standards 3, 7, 8, 12, and 13 have the most effect. A signup flow "likely to be accessed" by under-18s cannot pre-tick marketing options, nudge minors toward opting in, profile them for targeting by default, or collect an email address beyond what the requested feature needs. If the service will not assess users' ages, it must apply those defaults for children **to everyone**. ## GDPR Article 8: consent ages for information society services Article 8 applies where an information society service is offered **directly to a child** and relies on **consent** (Art. 6(1)(a)), which is the lawful basis that email marketing normally uses. The child's own consent is valid only **from age 16**. Below that age, "processing shall be lawful only if and to the extent that consent is given or authorised by the holder of parental responsibility over the child." Member states may lower the threshold by law, **but not below 13**, so the age of digital consent ranges from 13 to 16 across the EU. The UK set 13 in the Data Protection Act 2018, which is why the ICO's marketing guidance treats 13 as the minimum age for a minor's own consent. The controller must make **"reasonable efforts to verify"** that consent was given or authorised by the holder of parental responsibility, "taking into consideration available technology." What this means for a signup form that serves Europe: below the national age that applies, a child's own opt-in is not valid consent. At or above that age, a plain opt-in works, but the rules on the quality of consent in [PECR](https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing) and ePrivacy still apply. ## What this means for ESP policy Taken together, the three regimes have these consequences for an ESP's own platform rules and for its customers' forms: - **Age gates on signup forms.** Hosted forms for general audiences that want to exclude minors should use a neutral date-of-birth field. Never use a picker that only offers ages 13+ or 16+, never use an "I am over N" checkbox, and add no discouraging text. Store the answer (in a cookie) so that users cannot go back and try again. Blocking respondents under the age limit is lawful for general-audience properties under every regime. The risk is asking for age and then ignoring the answer, which turns ignorance into actual knowledge. - **Customers whose audience is children are a separate risk class.** They need the COPPA process (direct notice, verifiable parental consent, and an opt-out for parents under the multiple-contact exception for newsletters), which a standard flow of subscribing and confirming does not provide. An ESP should either support consent collected through the parent (the parent's address collected with the child's, a notice sent to the parent, and the opt-out honored before ongoing sends) or prohibit lists directed to children in its acceptable use policy (AUP). - **Consent records must show whose consent it is.** For minors, the [proof-of-consent record](https://emailmarketing.net/learn/list-management/consent-methods) needs the parent's identity or contact details and the verification method used. A timestamped opt-in from the child's own address proves nothing under any of these regimes. - **Deletion is part of the lifecycle.** COPPA's one-time exceptions and the parent's right to revoke consent, the Children's Code standards on data minimisation and retention, and erasure under GDPR all mean that children's addresses need prompt deletion that you can prove, not just suppression. - **Watch for actual knowledge.** Support tickets, replies and complaints that reveal a subscriber is a child give the sender actual knowledge (and arguably the ESP that processes data on the sender's behalf). The compliant responses are parental consent or deletion. Continuing to send mail is the violation. - **Marketing law still applies as well.** Nothing above replaces [CAN-SPAM](https://emailmarketing.net/learn/compliance/can-spam), [CASL](https://emailmarketing.net/learn/compliance/casl) or [PECR](https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing). A children's newsletter with parental consent still needs truthful headers, identification of the sender and a working unsubscribe. These summaries follow guidance published by the regulators (the FTC's guidance as of its May 2026 revision of the six-step plan and the April 22, 2025 amendment to the COPPA Rule, and the text of the ICO code as published). They are not legal advice. # Netherlands (ACM) and the B2B Email Question Across Jurisdictions > Dutch spam rules under Telecommunicatiewet Art. 11.7 (ACM), the ICO's B2B marketing guidance, and a cross-jurisdiction answer to 'can I email business addresses without consent?' for UK, France, Germany, and the Netherlands. Source: emailmarketing.net — https://emailmarketing.net/learn/compliance/netherlands-and-b2b-rules If you send marketing email to business addresses in Europe, whether you need consent depends on the country each recipient is in. "B2B email doesn't need consent" is one of the most dangerous generalisations in email compliance. The ePrivacy Directive's opt-in rule (Art. 13) protects **natural persons**, and lets each member state decide how far to protect **legal persons**, so the answer for business-to-business (B2B) email changes at every border. Below are the Dutch rules, enforced by the Authority for Consumers and Markets (ACM), the UK's B2B guidance from the Information Commissioner's Office (ICO), and a worked comparison of the UK, France, Germany and the Netherlands. A campaign to a mixed European B2B list must satisfy the **strictest rule that applies to each recipient**. The recipient's country determines the rule, not the sender's. ## Netherlands: Telecommunicatiewet Article 11.7 (regulator: ACM) The Dutch prohibition on spam is in **Article 11.7 of the Telecommunicatiewet**, and the **Autoriteit Consument en Markt (ACM)** enforces it. The ACM regulates consumers and markets; it is not the data protection authority, which is the Autoriteit Persoonsgegevens (AP) and handles the GDPR side. **The core rule is opt-in.** Unsolicited electronic commercial messages (email, SMS, and explicitly also channels such as **WhatsApp**) require the recipient's prior consent. Consent cannot be obtained through: - pre-checked boxes; - pressure tactics; - burial in general terms and conditions. The consent request must clearly refer to **promotional or solicitation messages**. A requirement particular to the Netherlands is that the sender must be able to **prove the consent for up to 5 years after sending**. This is the most concrete retention period for consent that any EU regulator publishes, so design consent records to meet it. **B2B scope.** Since **1 October 2009**, the prohibition also covers **legal persons**. Dutch law extended the opt-in to business recipients and ended the earlier opt-out regime for B2B. The ACM's current guidance makes no distinction between B2B and business-to-consumer (B2C) mail: the rules apply in the same way to all recipients. The ACM page no longer describes this history, so the 2009 extension date is confirmed from legal commentary: CMS's "Dutch new law prohibits B2B spam" and summaries by Dutch law firms. **Exception for existing customers.** Unsolicited messages may be sent to existing customers about **products or services related to earlier purchases**, provided that: - recipients can easily unsubscribe; and - the sender's identity is clearly disclosed. **Sender identification.** The sender must be clearly identifiable by business name or email address. **Aliases are not allowed.** **Unsubscribe.** Every message must include an opt-out that is: - **fast**, with no complex questionnaires; - **free**, with no payment and no demand for more personal data. **Tell-a-friend campaigns** are lawful only if all five of these conditions are met: 1. the person sharing forwards the message voluntarily, and **no incentives** may be offered; 2. the forwarded message shows contact information for complaints; 3. the person sharing can see the complete message before it is sent; 4. personal data used for the forwarding is **deleted afterward** and not reused; 5. the website is protected against automated abuse for spam. Compare the UK, where the ICO concludes that refer-a-friend email with an incentive generally cannot be sent lawfully at all (see [UK PECR](https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing)). **Scope and liability.** The rules apply to sends throughout the **European Economic Area (EEA)**: the EU plus Iceland, Norway and Liechtenstein. Outside the EEA, local rules apply. Liability falls not only on the party that transmits the message but also on the **instigator** and on third-party service providers that help distribute it. PECR and CASL cast the same net over senders and instigators, which is why ESP terms of service must bind customers to these rules. ## United Kingdom: ICO guidance on business-to-business marketing The ICO's dedicated B2B guidance is under review following the changes made by the Data (Use and Access) Act. It rests on the distinction in the Privacy and Electronic Communications Regulations (PECR) between **corporate subscribers** and **individual subscribers**, introduced in [UK PECR — Electronic Mail Marketing](https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing) and developed here for B2B mail. ### Who is a corporate subscriber Corporate subscribers are bodies with their own legal personality: companies, corporations sole, **limited liability partnerships**, **Scottish partnerships**, some government bodies, and any other body corporate separate from its members. **An employee's work email address or phone number at a corporate body counts as the corporate subscriber's**, because the subscriber is the employer. Some businesses are treated as **individual subscribers**: **sole traders**, partnerships that are not limited liability partnerships (LLPs) in England, Wales and Northern Ireland, and other unincorporated groups of individuals. They receive the full protections given to individuals. ### The PECR email rule for B2B | Recipient | Does marketing email need consent under PECR? | |---|---| | Corporate subscriber (any employee address at a company or LLP) | **No**, but you must not disguise or hide your identity, and you must give a valid address for opting out or unsubscribing | | Sole trader, or partnership that is not an LLP | **Yes**: consent or the soft opt-in | For corporate subscribers, PECR does not literally require you to honor the opt-out. The ICO's position is that the required opt-out address clearly means corporate subscribers should be able to unsubscribe, so **you should comply with a corporate subscriber's opt-out**. Where personal data is involved, you may be required to, under the right to object. Keep a "do not email" list of corporate opt-outs and screen new B2B lists against it. **The soft opt-in for sole traders and partnerships** requires all four conditions: the details were obtained during a sale or the negotiation of a sale; you market only your own similar products or services; you offered a clear opt-out when you collected the details; and you offer an opt-out in every message. The ICO gives the example of an online building supplies company whose customers are mostly sole traders. It uses the soft opt-in for **all** customers at checkout, with an explanation, an opt-out tick box and an unsubscribe link in every email. That uniform design is the safe one. **If you do not know the subscriber type, treat the recipient as an individual.** If you cannot tell whether an address belongs to a corporate or an individual subscriber, assuming it is corporate risks breaching PECR, and the ICO says to apply the rules for individual subscribers. In practice, guessing from the domain ("it looks like a company domain") cannot tell a limited company from a sole trader. That is another reason why B2B lists built on consent are better than scraped ones. ### The UK GDPR on top of PECR - A named business contact (a name and number on file, or an address such as firstname.lastname@company.com) is **personal data**, even in a business capacity. The UK GDPR applies in full, including the **absolute right to object** to direct marketing. Unnamed contacts ("the IT department", info@company.com) are not personal data. - **Business cards.** A card left in a drawer is outside the UK GDPR. Once its details are added to a contacts database, the UK GDPR applies. - **Lawful basis.** Where PECR requires consent, use consent. Where it does not, **legitimate interests** usually fits, subject to the three-part test: identify the interest, show necessity, and balance it against the individual's interests. - **Transparency.** Tell business contacts when you collect their details that you will send them marketing. For details obtained from public sources or third parties, provide privacy information within a reasonable period, at most **one month**. - **Using data for a new purpose.** The ICO's example of a conference organiser shows that emailing delegates' verified corporate addresses afterward can pass an assessment of compatibility and of what delegates would expect. **Selling** delegates' details without having told them fails the fairness test. Buyers of such lists would breach PECR for any individual subscribers, because consent must name the sender. - **Publicly available data** (company websites, Companies House, social media, the press). Being publicly available is not consent. PECR still applies to calls, email and fax sent using scraped details, and the UK GDPR applies whenever the data identifies an individual. People on **professional networking sites** are generally there in a personal capacity, even if a professional one. Messaging them is not "B2B marketing", and both the UK GDPR and PECR apply to direct messages. - **Objections.** Honor opt-outs and withdrawals of consent. Put people who object on a **suppression list rather than deleting them**, so that future lists can be screened (see [Right to Object and Erasure](https://emailmarketing.net/learn/compliance/right-to-object-and-erasure)). In the ICO's example, a recruitment firm emailing a named HR director at a limited company needs no consent under PECR. When the director asks it to stop, it stops and suppresses the address, because the named address is personal data and the objection is absolute. ## The cross-jurisdiction B2B table "Can I email a business address without prior consent?" in the four main markets: | | **UK** | **France** | **Germany** | **Netherlands** | |---|---|---|---|---| | Law and regulator | PECR, enforced by the ICO | CPCE Art. L.34-5, enforced by the CNIL | UWG §7, enforced through the courts (competitors and consumer bodies sue; data protection authorities handle the GDPR side) | Telecommunicatiewet Art. 11.7, enforced by the ACM | | Email to an employee at a corporation | **Allowed without consent** (corporate subscriber); identity and an opt-out address required | **Allowed without consent** if the message **relates to the recipient's profession**, the recipient was informed, and they can object simply and free of charge | **Consent required**: §7(2) demands prior express consent for email advertising, with no exception for B2B | **Consent required**: opt-in extended to legal persons on 1 Oct 2009 | | Generic role address (info@, contact@) | PECR still applies (the rule depends on the subscriber type, not the form of the address), but with no personal data the UK GDPR does not | **Outside the consent and objection rules** (a legal person, no natural person) | Consent still required (§7(2) protects market participants in general) | Opt-in applies (legal persons are covered) | | Sole traders | **Individual subscribers**: consent or the soft opt-in | Individuals: consent (or the exception for existing customers) | Consent | Consent (natural persons are always covered) | | Exception for existing customers | Soft opt-in: details obtained in a sale or negotiation, your own similar products, an opt-out when collected and in every message | The same idea; requires an actual completed sale or service; an opt-out when collected and in every message | §7(3): address obtained **in connection with a sale**, your own **similar** goods or services (courts: interchangeable, or meeting the same need), no objection, a notice that objecting costs nothing, given when collected **and in every use** | Products or services related to an earlier purchase; easy unsubscribe; clear sender identity | | Notable extras | Absolute right to object where the address names a person | Pixels used for deliverability need consent outside the exempted scope (see [France (CNIL)](https://emailmarketing.net/learn/compliance/france-cnil-email)) | Documented **double opt-in** is the de facto standard of evidence (Federal Court of Justice (BGH) case law on proving consent), and the Certified Senders Alliance (CSA) certification builds it in (see [GMX and WEB.DE](https://emailmarketing.net/learn/providers/gmx-web-de-postmaster)) | Consent provable **5 years** after sending; WhatsApp in scope | For Germany, the statutory conditions summarized above for §7(2) and §7(3) are checked against the official English translation at gesetze-im-internet.de, which is not binding and is quoted in [Germany — UWG §7 Email Marketing](https://emailmarketing.net/learn/compliance/germany-uwg-email). The German text is the one that applies. The practical consequence is that the claim "B2B cold outreach is fine in Europe" is **false in two of the four largest markets**, because Germany and the Netherlands require opt-in even for corporate addresses. It is **true only under conditions in France** (the message relates to the recipient's profession, the recipient was informed, and they can object). It is **true only for genuine corporate subscribers in the UK**, where sole traders cannot be told apart in any bought list. Deliverability adds another layer. Corporate mail passes through gateways and business tenants with their own reputation systems, and cold mail produces the complaints and trap hits described in [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods). Collecting consent remains the only strategy that works in every one of these markets. # Right to Object and Right to Erasure in Marketing Operations > How GDPR/UK GDPR objection, opt-out, consent withdrawal, and erasure requests interact with marketing lists and suppression — ICO operational guidance plus enforcement patterns from the EDPB one-stop-shop case digest (551 Art. 17 and 80 Art. 21 decisions). Source: emailmarketing.net — https://emailmarketing.net/learn/compliance/right-to-object-and-erasure When someone asks you to stop marketing to them or to delete their data, what you must do depends on which right they are using. Under GDPR, UK GDPR and the ePrivacy rules, a recipient has four distinct ways to stop marketing: **objection** (GDPR Art. 21), **opt-out or unsubscribe** (the mechanism from the ePrivacy rules), **withdrawal of consent** (Art. 7(3)) and **erasure** (Art. 17). They differ in scope and in what the sender must then do with the data. They also seem to conflict: honoring an opt-out forever means keeping the address, while erasure means deleting it. The **suppression list** resolves that conflict. The guidance below combines the operational guidance of the UK Information Commissioner's Office (ICO) with the enforcement record in the one-stop-shop case digest of the European Data Protection Board (EDPB). For how to build the suppression list itself (hashing, the legal basis for keeping it, suppression at the ESP level), see [GDPR and Suppression Lists](https://emailmarketing.net/learn/compliance/gdpr-and-suppression-lists). ## The right to object (Art. 21) - For **direct marketing purposes**, the right is **absolute**. There are no exemptions and no grounds for refusal, it can be used **at any time**, and it covers **profiling related to direct marketing**, including inferring interests for targeting and disclosing data to third parties for marketing. - For processing based on a **public task or legitimate interests**, objection is not absolute. The individual gives reasons tied to their situation, and the controller may continue only if it has **compelling legitimate grounds that override** the individual's interests, or for legal claims. Marketing based on legitimate interests still falls under the absolute rule for marketing. - **Duty to inform:** the right to object must be brought to people's attention **at the latest at the time of the first communication**, clearly and **separately from other information**, and also at collection, under the right to be informed. ### How to handle an objection (ICO) | Aspect | Rule | |---|---| | Form | Spoken or written. **Any part of the organisation** can receive it, and no special wording is needed: "I ask for a guarantee that this will not repeat itself" counts | | Deadline | Without undue delay, and at the latest **one calendar month** after receipt. The month runs from the day of receipt to the same date in the next month, or to the last day of the month if there is no such date, or to the next working day if that date falls on a weekend or holiday. Setting yourself a fixed 28-day deadline guarantees compliance | | Extension | **+2 months** for complex or numerous requests. Tell the individual within the first month, with the reasons | | Fee | None, except a reasonable administrative fee (or a refusal) for **manifestly unfounded or excessive** requests. Assess each case on its own, never through a blanket policy. Repeated requests are not automatically excessive | | Identity checks | Only what is **necessary and proportionate** to confirm identity (for example, confirming the email address to be suppressed). See the digest below on demands for ID documents | | Refusal | Only for unfounded or excessive requests, or under an exemption (never for objections to marketing). Within one month, tell the individual the reasons, their right to complain to the supervisory authority, and their right to a judicial remedy | | Staff readiness | Train staff who deal with customers to recognise objections, and keep a log of spoken objections | ## Objection, opt-out and withdrawal compared (ICO, "respect people's preferences") - **An opt-out or unsubscribe** works like an objection **limited to one channel or activity**. In the ICO's example, a customer texts STOP. SMS marketing must stop, but email marketing may continue, because the customer did not opt out of that channel. Make clear at collection which channels an opt-out covers. - **Withdrawal of consent** must be **as easy as giving consent**. Stop the marketing that the consent covered immediately, or as soon as possible. You must **not switch to another lawful basis** (for example, legitimate interests) to keep marketing after consent is withdrawn, because that would be unfair. - **No win-back after an objection.** Contacting someone later to ask whether they have changed their mind is itself direct marketing to a person who objected. Their most recent indication applies. An objection is overridden only if they specifically withdraw it or later agree to marketing. Failing to opt out again never overrides it. - **Contact that is allowed:** an immediate **confirmation message** after an unsubscribe (with instructions for subscribing again) is fine, as long as the opt-out takes effect without any further action. **Reminders of preferences** are allowed only as a minor, incidental addition to a message sent anyway for another purpose (for example, a line at the end of an annual statement), with no marketing content and no encouragement to change the choice. ## Suppression lists According to the ICO, the suppression list is the concept everything else depends on: - When someone objects or opts out, **suppress their data instead of deleting it.** Keep just enough information to make sure their preference is respected, and mark it clearly so that it is not used for the purposes they objected to. - **A suppression list is not processing "for direct marketing purposes".** It exists to comply with a legal obligation. This ends the circular argument that keeping an objector's address is itself unlawful marketing, and it means there is **no automatic right to have one's entry on a suppression list erased**. - What goes wrong if you delete instead, in the ICO's example: a company deletes the phone number of someone who objected, later buys a list screened against the Telephone Preference Service (TPS) that still (lawfully) contains that number, and calls again. That breaches PECR, and a suppression screen would have prevented it. The same thing happens with email lists that are purchased or imported again. - **Data minimisation** applies: keep only the minimum needed to suppress the address. - **A suppression list is not a screening list.** Screening out people who do not fit a campaign is itself processing for direct marketing purposes. Only suppression for compliance gets the special status. (Other channels have statutory suppression registers: TPS and CTPS for calls, MPS for post.) ## Erasure requests (Art. 17) in marketing Erasure is **not absolute**. In marketing, it applies when consent is withdrawn, when the data is no longer needed for its purpose, or when the person has objected to marketing. The ICO's guidance: - You do not have to treat a withdrawal or an objection **automatically as a request for erasure**. In practice, though, once you can no longer use the data you will probably delete it, **except for the minimal suppression entry**. - The model case: a customer objects and asks for deletion. The company stops marketing and deletes everything **apart from a small amount of data kept on its suppression list**, and the customer's rights are satisfied. Erasure may also be refused for data needed for other purposes, in which case the data must be clearly marked as not for marketing use. - Under Art. 17(1), when consent is withdrawn or an objection succeeds, the controller has an **independent obligation to delete** the data that is not suppressed. The data subject does not need to make a specific request for erasure (EDPB digest, citing EDPB Opinion 39/2021). ## Enforcement patterns in the EDPB one-stop-shop case digest The digest was written for the EDPB's Support Pool of Experts by Prof. Alessandro Mantelero (first version December 2022, updated May 2026). It analyses the final one-stop-shop decisions under Article 60 in the EDPB's public register: **551 decisions on Art. 17 and 80 on Art. 21**, adopted from 2018 through January 2026. Cases under Art. 17 peaked in 2022–2023, mostly led by the Irish authority (84 in 2022, 150 in 2023, 35 in 2024), and then declined. The number of cases under Art. 21 stayed flat. In practice the two rights arrive together: **most Art. 21 cases concern direct marketing**, often combined with a request to erase the data collected earlier. One German decision (DEBE:OSS:D:2018:9) holds that an objection to marketing triggers a **deletion obligation under Art. 17(1)(c), to be applied "immediately"**. Recurring findings that apply directly to running marketing systems: **Failures of design and information** - No information was given about the right to object, which violates Art. 13(2)(b) (ES:2021:263). A bank sent marketing emails with **no opt-out option at registration**, and preferences could only be changed inside its online banking service or through customer service (NO:2021:292, which led to a reprimand, ordered measures, and compliance with the deadlines of Art. 12(3)). - **No-reply sender addresses:** if replies are impossible, the body of the email must say so clearly, and say that objections sent by reply will not work (FR:2019:8). On the other hand (NL:2022:376), the GDPR does not require that people can unsubscribe by replying, but marketing emails must include a **clear link to a page where unsubscribing is possible**. - **Unsubscribe links that lead to a customer account page do not work for prospects** who have no account. A link that unsubscribes directly is required (FR:2020:84). Design the flows for exercising rights for every type of recipient you mail. - Cumbersome procedures and language barriers: giving a contact address for rights requests, but replying automatically with a redirect to a "Contact us" form on a website, was itself a violation (FR:2022:326). - Acknowledgment emails must state when the request will be carried out, and the outcome must be communicated (EE:2019:55; FR:2019:41). **Process failures** - Backlogs and a lack of capacity in customer service (NO:2021:292). An objection recorded against **only one of several accounts** the person held (EE:2019:55). Technical errors in systems that delayed compliance (CZ:2021:312). Databases that were not synchronised, and old contact addresses that nobody monitored (MT:2021:212: an automatic reply or forwarding is required when a contact address is retired; FR:2023:999: an old support address that still works and is still listed on the web must not go unread). Requests forwarded to the wrong department (UK:2019:31), and requests classified incorrectly. - **The controller answers for its employees' mistakes.** Individual fault makes no difference to accountability under GDPR (DEBE:2021:184). - Requests made manually or outside the usual channels must be treated in the same way as automated ones (SE:2021:178: a request sent by post missed the notifications that the digital system would have sent). Semi-automated intake that discards requests that do not follow the instructions is unlawful (DK:2020:151). However, **informal requests** (a tweet) may be disregarded when formal channels exist (SE:2021:276, confirmed by SE:2024:1550: every official channel of the controller must work, but requests sent to random or incorrect addresses need not be honored). - Keep records of objection requests and their outcomes, for accountability. **Identity verification** - **Demanding an official ID document by default is not acceptable**, and it violates data minimisation (Art. 5(1)(c)). Examples are Groupon's blanket policy of requiring an ID card (IE:2020:166), and FR:2019:3 (an online customer relationship does not in itself create reasonable doubt). Authentication must be "relevant, appropriate and proportionate" to the data, the request, the context and the risk of disclosure (FR:2024:1286). - Requests sent from the email address used at registration normally need no further proof (CY:2024:1120). Alternatives to ID documents include unique identifiers issued at registration, a policy of accepting only the email address linked to the account, password hotlines, online calls, and knowledge questions (nicknames, registration date; EE:2021:294). Where sharing an ID is justified, protect the transfer (NO:2024:1126: an ID card sent by unencrypted email). - For objections specifically, the Swedish supervisory authority notes that there is normally **no reason to authenticate the person objecting at all**, and sometimes not even to identify them (SE:2025:1757). - Controllers are expected to comply even if their process is imperfect. Continuing to process data after a valid erasure request infringes Art. 6(1), since the data could have been deleted at the time of the request. **Erasure in particular** - Most erasure cases come from objections to marketing (including unsolicited email; NO:2022:314) and from cleaning up unused accounts. **Self-service deletion tools** are highlighted because they reduce both errors and the workload of regulators. - **Proof of erasure:** the controller must be able to show that it complied, for example with a screenshot showing that the database returns no result for the person who made the request (DE:2023:929). - Tell the data subject what action was taken within the deadlines of Art. 12(3). When you grant the request, it is enough to state that erasure has started and how long it will take at most. You do not need to confirm completion unless the person asks (SE:2021:303). - **Overriding grounds** can prevent erasure: keeping payment identifiers to prevent fraud (SE:2021:196); statutory retention periods (DK:2021:210, although keeping an active account for two years only because the person has the right to complain was unnecessary, since complaints can be made by email or phone); obligations under anti-money-laundering and banking law (MT:2022:340; MT:2021:272, where the **specific legal source must be cited to the person making the request**); debts; storage of passenger name records (PNR); and public registers. Legal obligations must be interpreted in line with the principles of data protection, not abused, and data beyond what the obligation requires must still be deleted ("intermediate storage" has limits; FR:2021:279, FR:2021:310). - Most cases end in **amicable settlements and reprimands**. Fines are rare, and usually reflect wider infringements. It is common for controllers to comply of their own accord once a supervisory authority opens an investigation. ## Operational checklist for a marketing platform 1. Treat an unsubscribe as an objection on that channel: suppress the address immediately, apply the suppression to all of the recipient's accounts and records, and never require a login or an account. 2. Send objections written in free text (replies, support tickets, phone calls) into the same suppression pipeline as link clicks. Train support staff, and log spoken requests. 3. Acknowledge each request with a timeframe, complete it within one month, and confirm the outcome. 4. When a marketing contact asks for erasure, delete the profile data, keep a minimal suppression entry, and be able to prove both (evidence of deletion and a suppression record). 5. Do not demand ID documents by default. Treat requests sent from the subscribed address as proof of identity in themselves. 6. Keep suppression permanent, and screen every list import against it, including imports of lists you already had and lists you bought. 7. When you refuse erasure because of a retention obligation, cite the specific legal basis. These duties match good deliverability practice. Unsubscribes that are instant and effortless reduce the spam complaints that drive [reputation](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability). [One-click unsubscribe under RFC 8058](https://emailmarketing.net/learn/list-management/list-unsubscribe), which Gmail, Yahoo and Microsoft require of bulk senders, is exactly the direct mechanism, with no account needed, that data protection authorities keep ordering senders to build. # UK PECR — Electronic Mail Marketing > ICO guidance on direct marketing by electronic mail under PECR and UK GDPR: consent standard, the two soft opt-ins, individual vs. corporate subscribers, bought-in lists, and refer-a-friend. Source: emailmarketing.net — https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing If you send marketing email or SMS to people in the UK, you generally need their consent, unless one of two "soft opt-in" exceptions applies. The rules are set by the Privacy and Electronic Communications Regulations (PECR). Where personal information is used, the UK GDPR and the Data Protection Act 2018 also apply. The Information Commissioner's Office (ICO), the UK regulator, publishes and enforces this guidance. Like [Canada's CASL](https://emailmarketing.net/learn/compliance/casl), and unlike [CAN-SPAM](https://emailmarketing.net/learn/compliance/can-spam) in the US, PECR is an **opt-in** regime for individual subscribers, with the two soft opt-in exceptions. This is not legal advice. Check penalties and thresholds against the primary source (below) and with a lawyer before you rely on them. See the [compliance notice](https://emailmarketing.net/learn/compliance). ## Key definitions **Direct marketing.** The Data (Use and Access) Act added this definition to PECR from the Data Protection Act (DPA), with effect from 20 August 2025: "the communication (by whatever means) of advertising or marketing material which is directed to particular individuals." It covers commercial marketing **and the promotion of aims and ideals**. Messages that are purely about service or administration are not direct marketing, but adding any promotional material to a service message makes it direct marketing. **Electronic mail**: "any text, voice, sound or image message sent over a public electronic communications network which can be stored in the network or in the recipient's terminal equipment until it is collected by the recipient and includes messages sent using a short message service." It covers: - email and SMS; - picture and video messages; - voicemail messages; - in-app messages; - direct (private) messages on social media. It does **not** cover online display or banner ads, or ads in social media feeds (even targeted ones), because those are public and not stored for a specific recipient. Other PECR rules, such as those on storage and access technologies, may apply to them. **Solicited and unsolicited marketing.** Marketing is *solicited* only when someone specifically asks for a particular message or type of information (for example, "email me your summer brochure"). Everything else, including follow-up messages to that person, is *unsolicited*. Solicited marketing needs no consent and no soft opt-in. **Subscriber**: the person or organisation named on the bill for the phone line, internet connection or other communications service. There are two types: - **individual subscribers**: people, sole traders and ordinary partnerships; - **corporate subscribers**: organisations with their own legal personality (limited companies, limited liability partnerships (LLPs), Scottish partnerships). PECR applies **even to generic or role-based addresses**, so you do not need to know the recipient's name for it to apply. If personal information is used, data protection law applies as well. ## Which rules apply to whom (B2B vs. B2C) | Message | Individual subscriber | Corporate subscriber | |---|---|---| | Solicited marketing | Allowed without consent | Allowed without consent | | Unsolicited marketing | Requires **consent** or a **soft opt-in** | Allowed without consent or a soft opt-in | | Identity disclosure | Must not disguise or hide the sender's identity | Same | | Contact address for opting out | Required | Required | Be careful with "B2B". Sole traders and ordinary partnerships count as **individual** subscribers, so the consent rules apply to them. Employees' business addresses at limited companies are still personal data, so the UK GDPR, including the absolute right to object, applies even where PECR does not require consent. ## Who must comply PECR applies to anyone who **sends or instigates** electronic mail marketing. Instigating includes encouraging, inciting, offering an incentive to, or asking someone else to send it. If another organisation sends marketing on a brand's behalf, **both** are responsible: the instigator and the sender. A webmail service or bulk email platform that only provides technical delivery is normally **not** responsible. If a third party sends marketing that uses personal information on a sender's behalf, a written contract is required, along with appropriate compliance checks. A subscriber must also not let others use its line or connection to break the rules. ## Consent PECR takes its standard of consent from the UK GDPR: "any freely given, specific, informed and unambiguous indication of the data subject's wishes by which he or she, by a statement or by a clear affirmative action, signifies agreement." When you ask for consent, it must be: - **Freely given.** A free choice that people can refuse without any disadvantage, kept separate from the terms and conditions. Making agreement to marketing a condition of a purchase or donation is unlikely to be valid. - **Specific and informed.** The request must name the organisation and make clear that it covers electronic mail marketing. "I would like to receive marketing", without naming the channel, is not specific enough. Ask separately for each channel (email and SMS). - **Unambiguous, through a clear affirmative action.** Pre-ticked boxes, silence and inactivity do not count. - **Recorded.** Keep a record of who consented, when and how, so that you can show the consent is valid. - **Not transferable.** Consent applies to the particular address or number given, and does not extend to the person's other addresses. - **Possible to withdraw.** It must be easy to withdraw at any time; consent lasts only "for the time being." ## The soft opt-ins Two limited exceptions allow unsolicited electronic mail marketing to individual subscribers without consent. ### 1. Products and services soft opt-in (any organisation, including charities) All five conditions must be met: 1. **You obtained the recipient's contact details** directly: not through a third party, and not even through another company in your own group. "There is no such thing as a third-party marketing list that is compliant with the soft opt-in." 2. **You obtained them while selling, or negotiating to sell, a product or service.** A purchase is not required. "Negotiations" means the person actively showed an interest in buying (signing up for a free trial, asking for a quote, asking about a product). Merely browsing a website, or asking a question unrelated to buying, does not qualify. 3. **You market only your own similar products and services.** The test is whether, based on earlier interactions, people would reasonably expect this marketing. Someone who buys groceries can be sent marketing for other supermarket products, but not for the chain's banking or insurance products. It never covers other organisations' products. Charities, political parties and other not-for-profit organisations must **not** use this soft opt-in for campaigning or fundraising, even to existing supporters. 4. **You gave people a chance to refuse, or opt out, when you collected the details.** A prominent opt-out box on the form, or an opt-out offered verbally, qualifies. An opt-out buried in a privacy policy, or offered only in a later confirmation email, does not. 5. **You offer an opt-out in every later message.** This means a clear unsubscribe link or a direct reply, or for SMS "text STOP to [code number]", free of charge apart from the normal cost of a message. Requiring a phone call, the creation of an account, or a login to a preference centre is not acceptable. ### 2. Charitable purposes soft opt-in (charities only), in force from 5 February 2026 All six conditions must be met: 1. **You are a charity**, as defined by law in each UK nation. 2. **You obtained the contact details directly**, not through a trading subsidiary, a third-party fundraising platform or any other intermediary. 3. **You obtained them because the person expressed an interest in, or offered or gave support for, your charitable purposes**: for example, by asking for information about the charity's work, donating money or property, or volunteering. Interactions that show nothing about an interest in the charitable purposes do not qualify, such as signing up for guest wifi, buying a coffee at a charity café, or asking for emergency support. Some purchases clearly made by a supporter, in that capacity, can qualify (an annual membership, sponsoring an animal, a charity raffle, paid fundraising events). Purchases made incidentally or for convenience do not. 4. **The only purpose of the marketing is to further your charitable purposes**: asking for donations (money or property), recruiting volunteers, or informing people about programmes, projects and campaigns related to the mission. It must not promote other organisations, including other charities or commercial sponsors. 5. **You offered an opt-out when you collected the details** (to the same standard as above). 6. **You offer an opt-out in every later message** (to the same standard as above). **Timing.** This soft opt-in applies only to contact details obtained **on or after 5 February 2026**. Details collected earlier without consent cannot be used under it, unless they are collected again after that date with a compliant opt-out. ### Using both soft opt-ins together A charity may rely on both. To do so, it must: - show **separate opt-out boxes** for each one when it collects the details (and only where the collection conditions for that soft opt-in are met); - provide a way to opt out of each type in every message; - include only the marketing content that the soft opt-ins it relies on allow; - keep records (flags or preference fields) of which legal basis applies to each person. ## Bought-in lists To send electronic mail marketing to a list you bought, rented or licensed, everyone on it must have given valid consent that **names your organisation specifically** (not "trusted partners" or similar). The consent must cover the specific channel (email or SMS), and must be freely given, specific, informed, unambiguous and recorded (who, when and how). If it is not, do not send. The soft opt-ins can **never** be used with bought lists, because they require the details to be collected directly. ## Publicly available contact details The fact that an address is publicly available (on websites, social media or directories) is **not** consent. Unsolicited marketing to individual subscribers, including sole traders and ordinary partnerships, still requires consent or a soft opt-in. Scraping personal information also brings in data protection law. By contrast, CASL has a category of implied consent for "conspicuous publication"; PECR does not. ## Refer-a-friend / viral marketing An organisation that encourages people to forward its marketing becomes an **instigator**. No incentive is needed: active encouragement is enough. The soft opt-ins cannot be used for these messages. Valid consent from the friend or family member who receives the message would be required, and that is unlikely to be obtainable in practice, so refer-a-friend email schemes with incentives generally breach PECR. An organisation is not responsible for messages that people choose to send without its encouragement, such as spontaneous recommendations, sharing a promotion, linking to a site, or personal requests for sponsorship. ## Changing minds: withdrawal and opt-out - Consent can be withdrawn at any time. After that, further marketing requires new consent. - Opting out of a soft opt-in also stops further marketing under it, and only new consent restores it. - An opt-out applies to one channel if its wording makes that clear (unsubscribing from email does not have to stop SMS). - Under data protection law, people have an **absolute right to object** to direct marketing. It cannot be refused on any grounds, and not having opted out of a soft opt-in does not override it. - Keep a **"do not contact" list (a suppression list)** and check it before sending. - A reply confirming an unsubscribe and explaining how to subscribe again is fine. Reminders about preferences may be small additions to messages you are already sending, provided they do not encourage people to change their choice. ## How PECR and the UK GDPR interact Where personal information is used, both sets of rules apply. Processing must be fair, lawful and transparent, so tell people when you collect their details that you intend to send marketing. Of the seven lawful bases in the UK GDPR, **consent** and **legitimate interests** are usually the relevant ones: - If you rely on consent under PECR, your lawful basis is likely to be consent. - If you rely on a soft opt-in, your lawful basis is likely to be **legitimate interests**. Carry out a legitimate interests assessment (purpose, necessity, balancing). Where recipients may be in vulnerable situations, the balancing test may fail and the soft opt-in should not be used. The ICO's example is people receiving support after domestic abuse, who could be harmed if a partner saw the email. **Tracking pixels.** The electronic mail marketing rules apply to the email itself, not to tracking pixels (which record the time of opening, the location and the operating system). Pixels fall under PECR's separate rules on **storage and access technologies**, which you must also comply with. ## Deliverability relevance PECR's conditions for consent and the soft opt-in match deliverability best practice closely. Addresses collected directly from people with a recent purchase, granular consent for each channel, prominent opt-outs, one-click unsubscribes and suppression lists all reduce complaints and keep lists engaged, and those are the core inputs to reputation described in [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability). The ICO's plain statement that no bought list can satisfy the soft opt-in mirrors the deliverability rule that purchased lists destroy a sender's reputation. # ActiveCampaign: DKIM and DMARC setup > How to set up your sending domain in ActiveCampaign — add the domain in Advanced Settings, verify it, add the DKIM, Mailserver Domain and DMARC records, and confirm the Authenticated status — with each step linked to ActiveCampaign's current help center. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-guides/activecampaign This guide follows ActiveCampaign's own help center, checked on 2026-09-11. Each step links to the page it comes from. Menu names and record values can change: if the app shows something different, the app and ActiveCampaign's current help page win. For the protocols themselves, see [SPF](https://emailmarketing.net/learn/authentication/spf) and [DMARC](https://emailmarketing.net/learn/authentication/dmarc). ## Before you start - You need access to your domain's DNS settings, usually at your registrar or hosting provider. - Send from a domain you own. ActiveCampaign's help says: "make sure to use an established sending domain that you own. In addition, your domain should be older than 30 days, and point to a valid website, not a blank page." ([SPF, DKIM, and DMARC Authentication](https://help.activecampaign.com/hc/en-us/articles/206903370-SPF-DKIM-and-DMARC-Authentication)) ## What ActiveCampaign asks you to publish | Purpose | Record type | Count | Where the values come from | |---|---|---|---| | DKIM | `CNAME` | As listed | Name like `acdkim1._domainkey`; value shown in ActiveCampaign | | Mailserver Domain (return path) | `CNAME` | 1 | Shown in ActiveCampaign | | DMARC | `TXT` | 1 | Basic record shown in ActiveCampaign | ActiveCampaign: authenticating "involves publishing DNS records (DKIM, Mailserver Domain/SPF, and DMARC)", each of type "CNAME or TXT" ([Set up your sending domain](https://help.activecampaign.com/hc/en-us/articles/360015584680-Set-up-your-sending-domain)). The help center shows the full record list as an image, so copy the rows from the table in your account. ## Step 1 — Add the sending domain 1. Click **Settings** (gear icon). 2. In the Settings menu, click **Advanced**. 3. In the **Sending Domain** section, choose **Configure Domain** or **Set up manually**. **Configure Domain** connects to supported DNS providers and sets up the records for you after you log in to your DNS provider. The rest of this guide follows **Set up manually**. 4. Type the domain of the address you will send from (for `sales@mycompany.com`, enter `mycompany.com`, without `https://`). Source: [Set up your sending domain](https://help.activecampaign.com/hc/en-us/articles/360015584680-Set-up-your-sending-domain). ## Step 2 — Verify the domain Verification is required: "You must verify your domain and subdomains before you send any emails". 1. In the **Verify your domain** modal, type an email address at the domain, then click **Continue**. 2. Open the verification email (it expires after seven days) and click the link. If it did not arrive, click **Resend verification email** in the Sending Domains table. 3. Back in ActiveCampaign, click **Set up DNS records**. Source: [Set up your sending domain](https://help.activecampaign.com/hc/en-us/articles/360015584680-Set-up-your-sending-domain). ## Step 3 — Add the DKIM and Mailserver Domain records A modal shows a table of record names and values. At your DNS provider, create each `CNAME` record from the table: - **Type**: the type shown for the row. - **Name or Host**: the **Name** from ActiveCampaign, such as `acdkim1._domainkey`, or the full name `acdkim1._domainkey.mydomain.com` if your DNS provider does not add the domain automatically. - **Value or Record**: the **Value** from ActiveCampaign. - **TTL**: your DNS host's default; if there is none, ActiveCampaign recommends `300`. DKIM uses `CNAME` records: "As of February 23, 2023, ActiveCampaign updated DKIM from a TXT record to a CNAME record" ([Troubleshooting issues with domain authentication](https://help.activecampaign.com/hc/en-us/articles/12372243669404-Troubleshooting-issues-with-domain-authentication)). The Mailserver Domain `CNAME` points your domain to ActiveCampaign so that it can use your domain as the return path domain ([Domains and domain alignment](https://help.activecampaign.com/hc/en-us/articles/360014290939-Domains-and-domain-alignment)). Source: [Set up your sending domain](https://help.activecampaign.com/hc/en-us/articles/360015584680-Set-up-your-sending-domain). ## Step 4 — Add the DMARC record Create the DMARC `TXT` record from the same table. ActiveCampaign describes it as "a basic DMARC record as a bare minimum" ([SPF, DKIM, and DMARC Authentication](https://help.activecampaign.com/hc/en-us/articles/206903370-SPF-DKIM-and-DMARC-Authentication)). If your domain already has a DMARC record, do not add a second one: when a receiver finds more than one DMARC record, it applies no DMARC processing ([RFC 7489 §6.6.3](https://www.rfc-editor.org/rfc/rfc7489#section-6.6.3)). See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) before changing an existing policy. Source: [Set up your sending domain](https://help.activecampaign.com/hc/en-us/articles/360015584680-Set-up-your-sending-domain). ## Step 5 — Wait for propagation and check the status "Typically, the DNS record propagates in 5 to 10 minutes, but in rare cases, it can take up to 24 hours". To check, return to the Advanced Settings page, click the down caret at the far right of the domain, then click **Recheck Authentication** or **View DNS Records**. When the records have propagated, the domain shows the status **Authenticated** with a green indicator. If they have not, a **Resolve Issues** button appears; it launches the **Configure Domain** flow. Source: [Set up your sending domain](https://help.activecampaign.com/hc/en-us/articles/360015584680-Set-up-your-sending-domain). ## SPF ActiveCampaign's sending-domain setup has no SPF record step. Its help says the Mailserver Domain `CNAME` "allows ActiveCampaign to serve the necessary SPF record for you" and "you don't need to create an SPF record or modify an existing one to work with ActiveCampaign" ([SPF, DKIM, and DMARC Authentication](https://help.activecampaign.com/hc/en-us/articles/206903370-SPF-DKIM-and-DMARC-Authentication)). Separately, ActiveCampaign documents an optional SPF step for your From domain, adding `include:emsd1.com` to your SPF record, which it says "isn't required for SPF to pass" ([How to merge or update existing SPF records](https://help.activecampaign.com/hc/en-us/articles/13063110494364-How-to-merge-or-update-existing-SPF-records)). Checked on 2026-09-11: the ActiveCampaign help pages listed in this guide's sources. ## How alignment works here DMARC passes when a message passes DKIM or SPF **and** the domain that passed is in alignment with the domain in the visible From address; one aligned pass is enough. Send from an address at the domain you set up. See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) for how alignment is evaluated. ## Check your setup Once ActiveCampaign shows **Authenticated**, run the free [domain health check](https://emailmarketing.net/tools/domain-check) on your domain to see what receivers find in DNS for SPF, DKIM and DMARC. The check looks for DKIM under a fixed list of common selectors, so it may not find your ActiveCampaign DKIM record on its own. Give it your selector through the check's API: `https://emailmarketing.net/api/domain-check?domain=yourdomain.com&selector=`. The selector is the part of the DKIM record name before `._domainkey`. For ActiveCampaign, it is the start of the DKIM record **Name** shown in your account; ActiveCampaign's help uses `acdkim1` as its example (`acdkim1._domainkey`). # Brevo: DKIM and DMARC setup > How to authenticate your sending domain in Brevo — add the domain, add the Brevo code, DKIM and DMARC records, and confirm the Authenticated status — with each step linked to Brevo's current help center. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-guides/brevo This guide follows Brevo's own help center, checked on 2026-09-11. Each step links to the page it comes from. Menu names and record values can change: if the app shows something different, the app and Brevo's current help page win. For the protocols themselves, see [SPF](https://emailmarketing.net/learn/authentication/spf) and [DMARC](https://emailmarketing.net/learn/authentication/dmarc). ## Before you start - You need access to your domain's DNS settings, usually at your registrar or hosting provider. - Send from an address on a domain you own. Brevo's help says: "You can only authenticate a domain that you or your business own and control. Domains from free email services, such as Gmail or Yahoo (e.g., @gmail.com or @yahoo.com), cannot be authenticated." ([Authenticate your domain with Brevo](https://help.brevo.com/hc/en-us/articles/12163873383186)) - Brevo is gradually rolling out a new domain setup flow. If your account has it, follow [Set up your domain in Brevo](https://help.brevo.com/hc/en-us/articles/35337929909778) instead; this guide covers the current flow. ## What Brevo asks you to publish | Purpose | Record type | Count | Where the values come from | |---|---|---|---| | Domain ownership (Brevo code) | `TXT` | 1 | Name and value shown in Brevo | | DKIM | `TXT` or `CNAME` | 1 `TXT` or 2 `CNAME` | Shown in Brevo as DKIM record, or DKIM 1 and DKIM 2 | | DMARC | `TXT` | 1 | Name and value shown in Brevo | Brevo: "Depending on your Brevo account, you may need to add three or four records." ([Authenticate your domain with Brevo](https://help.brevo.com/hc/en-us/articles/12163873383186)) ## Step 1 — Add the domain 1. Click the account dropdown and select **Settings > Senders, Domains, IPs > Domains**. 2. Click **Add a domain**. If the domain is already listed, click **Authenticate** next to it instead. 3. Enter the domain, the part of your email address after the `@`, and click **Add domain**. Source: [Authenticate your domain with Brevo](https://help.brevo.com/hc/en-us/articles/12163873383186). ## Step 2 — Choose automatic or manual authentication **Authenticate the domain automatically** is Brevo's default and recommended option: you log in to your domain provider from Brevo, and "Brevo will detect your provider, add the required DNS records (Brevo code, DKIM, DMARC), and verify the configuration." If your domain already has a DMARC record, this flow asks whether to replace it with Brevo's; to keep yours, authenticate manually instead. For the manual path, select **Authenticate the domain yourself**. Brevo shows the records to copy into your domain provider's account. **Ask someone else to authenticate the domain** sends the instructions to another person instead. Source: [Authenticate your domain with Brevo](https://help.brevo.com/hc/en-us/articles/12163873383186). ## Step 3 — Add the Brevo code and DKIM records At your DNS provider, create the `TXT` record for the **Brevo code** with the name and value Brevo shows, using its copy buttons. Then add the DKIM record type your account shows: either **DKIM 1 record** and **DKIM 2 record** (`CNAME`), or one **DKIM record** (`TXT`). If you use Cloudflare with `CNAME` DKIM records, deactivate CNAME flattening and the proxy toggle. Brevo: "If CNAME flattening is activated, Cloudflare converts the record to a TXT record, and DKIM authentication will fail." Source: [Authenticate your domain with Brevo](https://help.brevo.com/hc/en-us/articles/12163873383186). ## Step 4 — Add the DMARC record Create one `TXT` record with the DMARC name and value Brevo shows. If your domain already has a DMARC record, do not add a second one: when a receiver finds more than one DMARC record, it applies no DMARC processing ([RFC 7489 §6.6.3](https://www.rfc-editor.org/rfc/rfc7489#section-6.6.3)). Brevo also says "Your domain should have only one DMARC record." See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) before changing an existing policy. Source: [Authenticate your domain with Brevo](https://help.brevo.com/hc/en-us/articles/12163873383186). ## Step 5 — Verify and check the status In Brevo, click **Authenticate this email domain** at the bottom of the page with the DNS records. "It can sometimes take up to 48 hours for DNS changes to propagate and for your domain to appear as authenticated in Brevo." The status shows **Authenticated**, or a pop-up says "The domain is not authenticated yet"; you can repeat the check over the next 48 hours. After that, see Brevo's [troubleshooting article](https://help.brevo.com/hc/en-us/articles/16045394674066) or contact its support. Source: [Authenticate your domain with Brevo](https://help.brevo.com/hc/en-us/articles/12163873383186). ## Step 6 — Keep the records in place "Keep the DNS records as they are in your domain provider as long as you are using Brevo to send emails. Modifying or deleting these DNS records may lead to email delivery problems or your emails being marked as spam." Source: [Authenticate your domain with Brevo](https://help.brevo.com/hc/en-us/articles/12163873383186). ## SPF Brevo's help does not give an SPF record step for domain authentication. It says: "The SPF and MX records are not required to authenticate a domain. We only provide these records when setting up a dedicated IP." ([Authenticate your domain with Brevo](https://help.brevo.com/hc/en-us/articles/12163873383186)) This guide does not give one either. ## How alignment works here DMARC passes when a message passes DKIM or SPF **and** the domain that passed is in alignment with the domain in the visible From address; one aligned pass is enough. Send from an address at the domain you authenticated. See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) for how alignment is evaluated. ## Check your setup Once Brevo shows **Authenticated**, run the free [domain health check](https://emailmarketing.net/tools/domain-check) on your domain to see what receivers find in DNS for SPF, DKIM and DMARC. The check looks for DKIM under a fixed list of common selectors, so it may not find your Brevo DKIM record on its own. Give it your selector through the check's API: `https://emailmarketing.net/api/domain-check?domain=yourdomain.com&selector=`. The selector is the part of the DKIM record name before `._domainkey`. For Brevo, take it from the name of the DKIM record (or DKIM 1 record) shown in your account; Brevo's help does not list a fixed value. # Cakemail: DKIM and DMARC setup > How to authenticate your sending domain in Cakemail — verify the sender, add the DKIM and DMARC TXT records and the tracking and bounce CNAME records, and confirm the Authenticated status — with each step linked to Cakemail's current help center. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-guides/cakemail This guide follows Cakemail's own help center, checked on 2026-09-11. Each step links to the page it comes from. Menu names and record values can change: if the app shows something different, the app and Cakemail's current help page win. For the protocols themselves, see [SPF](https://emailmarketing.net/learn/authentication/spf) and [DMARC](https://emailmarketing.net/learn/authentication/dmarc). ## Before you start - You need access to your domain's DNS settings, usually at your registrar or hosting provider. - Send from an address on a domain you own. Cakemail's help says: "Authentication works only for a private domain that you control" and a public webmail domain such as `gmail.com` cannot be authenticated ([Authenticating Your Domain](https://docs.cakemail.com/en/docs/senders/authenticating-domains)). ## What Cakemail asks you to publish | Purpose | Record type | Count | Where the values come from | |---|---|---|---| | DKIM | `TXT` | 1 | Name `c[CID]._domainkey.[DOMAIN].`; value shown in **Settings ▸ Domains** | | DMARC | `TXT` | 1 | Name `_dmarc.[DOMAIN]`; value `v=DMARC1; p=none;` | | Tracking and bounce | `CNAME` | 2 | `link.[DOMAIN]` and `em.[DOMAIN]`, shown in **Settings ▸ Domains** | `[DOMAIN]` is your sending domain and `[CID]` your Client ID ([Adding DNS Records](https://docs.cakemail.com/en/docs/senders/adding-dns-records)). ## Step 1 — Verify the sender A sender must be verified before it can send: "You can only send campaigns from a sender that has been verified". 1. In the left menu, go to **Settings ▸ Senders**. 2. Click **+**, fill in **Sender Name (Public)** and **Email**, and click **Confirm**. 3. Open the verification email sent to that address and click the link. The sender then shows as **VERIFIED**. Source: [Adding a Sender](https://docs.cakemail.com/en/docs/senders/managing-senders). ## Step 2 — Start authentication 1. In the left menu, go to **Settings ▸ Domains**. 2. In **Sender Domains**, find your sending domain. If it shows **Unauthenticated**, click **Authenticate Domain**. (If the domain is not listed yet, click **Create Sender and Domain** first.) 3. On the first step of the wizard, open your DNS provider in a new tab, or click **Copy instructions** to send the setup to whoever manages your DNS. Source: [Authenticating Your Domain](https://docs.cakemail.com/en/docs/senders/authenticating-domains). ## Step 3 — Add the DKIM record At your DNS provider, create the `TXT` record Cakemail shows. Copy the **Name** and **Value** with the **Copy to clipboard** buttons rather than retyping them. The value is offered in four variants: copy **Variant 1**, which Cakemail says "covers the majority of cases". If your DNS provider only accepts a prefix (for example `..._domainkey` instead of `..._domainkey.yourdomain.com`), that is fine. Source: [Authenticating Your Domain](https://docs.cakemail.com/en/docs/senders/authenticating-domains). ## Step 4 — Add the DMARC record Cakemail checks for a DMARC record. If your domain has none, create a `TXT` record with **Name** `_dmarc.yourdomain.com` and **Value** `v=DMARC1; p=none;`. If your domain already has a DMARC record, do not add a second one: when a receiver finds more than one DMARC record, it applies no DMARC processing ([RFC 7489 §6.6.3](https://www.rfc-editor.org/rfc/rfc7489#section-6.6.3)). See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) before changing an existing policy. Source: [Authenticating Your Domain](https://docs.cakemail.com/en/docs/senders/authenticating-domains). ## Step 5 — Wait for verification and check the status Click **Continue**. "DNS changes usually take a few hours to apply, and sometimes up to 24–48 hours." Cakemail then checks the DKIM and DMARC records, and the domain shows as **Authenticated**. If it still shows **Unverified** after 48 hours, re-copy the records and check for extra spaces, or contact Cakemail support. Source: [Authenticating Your Domain](https://docs.cakemail.com/en/docs/senders/authenticating-domains). ## Step 6 — Align the tracking and bounce domains Cakemail describes this as "not mandatory, but strongly recommended". 1. In **Settings ▸ Domains**, scroll to **Tracking and Bounce domain alignment** and select your domain. 2. Add the two `CNAME` records shown, a **Tracking** record (`link.yourdomain.com`) and a **Bounce** record (`em.yourdomain.com`), exactly as shown. 3. After propagation, each record's **Status** changes from **Not valid** to valid. The tracking domain carries the links in your campaigns; the bounce domain "receives delivery-status notifications for bouncing emails". Source: [Tracking and Bounce Domains](https://docs.cakemail.com/en/docs/senders/tracking-and-bounce-domains). ## SPF Cakemail's current help pages on domain authentication list the DKIM, DMARC, tracking and bounce records. They do not document an SPF record step, so this guide does not give one. Checked on 2026-09-11: every English page of [Cakemail's help center](https://docs.cakemail.com/en/llms.txt); the legacy support.cakemail.com article on sender-domain branding could not be retrieved. ## How alignment works here DMARC passes when a message passes DKIM or SPF **and** the domain that passed is in alignment with the domain in the visible From address; one aligned pass is enough. Send from an address at the domain you authenticated. See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) for how alignment is evaluated. ## Check your setup Once Cakemail shows **Authenticated**, run the free [domain health check](https://emailmarketing.net/tools/domain-check) on your domain to see what receivers find in DNS for SPF, DKIM and DMARC. The check looks for DKIM under a fixed list of common selectors, so it may not find your Cakemail DKIM record on its own. Give it your selector through the check's API: `https://emailmarketing.net/api/domain-check?domain=yourdomain.com&selector=`. The selector is the part of the DKIM record name before `._domainkey`. For Cakemail, it is `c` followed by your Client ID, from the DKIM record Name `c[CID]._domainkey.[DOMAIN].`. # Constant Contact: DKIM and DMARC setup > How to self-authenticate your sending domain in Constant Contact — choose DKIM CNAME or TXT records, add the DKIM and DMARC records, and activate self-authentication — with each step linked to Constant Contact's current knowledge base. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-guides/constantcontact This guide follows Constant Contact's own knowledge base, checked on 2026-09-11. Each step links to the page it comes from. Menu names and record values can change: if the app shows something different, the app and Constant Contact's current help page win. For the protocols themselves, see [SPF](https://emailmarketing.net/learn/authentication/spf) and [DMARC](https://emailmarketing.net/learn/authentication/dmarc). ## Before you start - You need access to your domain's DNS settings. Constant Contact's help says: "In order to self-authenticate your emails, you'll need to be able to access the DNS records for your domain, usually through your hosting provider." ([Self-authenticate your emails using your own domain](https://knowledgebase.constantcontact.com/email-digital-marketing/tutorials/KnowledgeBase/5932-Self-authenticate-your-emails-using-your-own-domain)) - Send from an address on a domain you own. From a free webmail address, Constant Contact rewrites your From address "with our shared ccsend.com domain" ([Understanding email authentication](https://knowledgebase.constantcontact.com/email-digital-marketing/tutorials/KnowledgeBase/5865-Understanding-email-authentication)). - "You can only authenticate one domain in your account" (same page as the first bullet). ## What Constant Contact asks you to publish | Purpose | Record type | Count | Where the values come from | |---|---|---|---| | DKIM, CNAME option | `CNAME` | 2 | Generated in Constant Contact; names `ctct1._domainkey` and `ctct2._domainkey`, values point to `ccsend.com` | | DKIM, TXT option | `TXT` | 1 | Host name and value generated in Constant Contact; value starts with `k=rsa;` | | DMARC | `TXT` | 1 | Name and value generated in Constant Contact | Constant Contact: "Constant Contact generates the CNAME or TXT record information, as well as the DMARC policy information, you'll need to publish in your domain's DNS settings" ([Self-authenticate your emails using your own domain](https://knowledgebase.constantcontact.com/email-digital-marketing/tutorials/KnowledgeBase/5932-Self-authenticate-your-emails-using-your-own-domain)). Its example CNAME names are `ctct1._domainkey.halfmoonyogastudio.com` and `ctct2._domainkey.halfmoonyogastudio.com` ([Update your DNS records through your hosting provider](https://knowledgebase.constantcontact.com/email-digital-marketing/articles/KnowledgeBase/39520-Update-your-DNS-records-through-your-hosting-provider-to-finish-setting-up-self-authentication)), and its troubleshooting page gives the CNAME values as `100._domainkey.dkim1.ccsend.com` or `200._domainkey.dkim2.ccsend.com` ([Troubleshooting DKIM self-authentication](https://knowledgebase.constantcontact.com/email-digital-marketing/articles/KnowledgeBase/49735-Troubleshooting-DKIM-self-authentication-using-CNAME-TXT-and-DMARC)). ## Step 1 — Start self-authentication 1. Click the profile name in the upper-right and select **Settings** from the drop-down. 2. Click the **Advanced settings** tab, then **Add self-authentication**. 3. Select **Self-authenticate using DKIM CNAME records** or **Self-authenticate using DKIM TXT record**, and click **Continue**. Constant Contact calls CNAME records "the simplest and most secure way to authenticate your domain email address"; the TXT record "is the best option if you have multiple Constant Contact accounts using the same domain." Source: [Self-authenticate your emails using your own domain](https://knowledgebase.constantcontact.com/email-digital-marketing/tutorials/KnowledgeBase/5932-Self-authenticate-your-emails-using-your-own-domain). ## Step 2 — Choose the domain 1. From the drop-down, select the domain to self-authenticate. If it isn't listed, choose **Select another domain** to add and verify a new email address. 2. Click **Continue**. If you see "This domain is already authenticated in another Constant Contact account," use the TXT record option instead. 3. With the TXT option, click **Generate key**. Constant Contact warns: "You won't be able to send emails until your DNS records fully propagate, which can take up to 48 hours." Source: [Self-authenticate your emails using your own domain](https://knowledgebase.constantcontact.com/email-digital-marketing/tutorials/KnowledgeBase/5932-Self-authenticate-your-emails-using-your-own-domain). ## Step 3 — Add the DKIM records Use the copy symbols to copy each record name and value into your DNS provider, or click **Copy information** to send them to whoever manages your DNS. For the TXT option, create a `TXT` record "using the Host name as the name of the TXT record and the Value as the content of the TXT record." Click **OK** when done (with the CNAME option, then **Got it**). "Some DNS providers may automatically add your domain to the CNAME, TXT, or DMARC record by default." With those providers, enter only the first part of the name: "For CNAME, the record name should be input as "ctct1._domainkey" and "ctct2_domainkey" instead of "ctct1._domainkey.halfmoonyogastudio.com" and "ctct2._domainkey.halfmoonyogastudio.com"." (The second short name is missing a dot in the source; the full name `ctct2._domainkey` shows the correct form.) ([Update your DNS records through your hosting provider](https://knowledgebase.constantcontact.com/email-digital-marketing/articles/KnowledgeBase/39520-Update-your-DNS-records-through-your-hosting-provider-to-finish-setting-up-self-authentication)) Source: [Self-authenticate your emails using your own domain](https://knowledgebase.constantcontact.com/email-digital-marketing/tutorials/KnowledgeBase/5932-Self-authenticate-your-emails-using-your-own-domain). ## Step 4 — Add the DMARC record Create one `TXT` record with the DMARC name and value Constant Contact shows. For the CNAME option, Constant Contact says to publish the DMARC policy record along with the CNAME records to be able to activate self-authentication; for the TXT option, to publish it "to ensure you comply with the latest authentication requirements." For either option, activation can fail with the DMARC error "Host name was not found or has incorrect value" ([Troubleshooting DKIM self-authentication](https://knowledgebase.constantcontact.com/email-digital-marketing/articles/KnowledgeBase/49735-Troubleshooting-DKIM-self-authentication-using-CNAME-TXT-and-DMARC)). Constant Contact's recommended minimal record is host `_dmarc.yourdomain.com`, value `v=DMARC1; p=none;` ([What is a DMARC policy and why do I need one?](https://knowledgebase.constantcontact.com/email-digital-marketing/articles/KnowledgeBase/7644-What-is-a-DMARC-policy-and-why-do-I-need-one)). If your domain already has a DMARC record, do not add a second one: when a receiver finds more than one DMARC record, it applies no DMARC processing ([RFC 7489 §6.6.3](https://www.rfc-editor.org/rfc/rfc7489#section-6.6.3)). See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) before changing an existing policy. Source: [Self-authenticate your emails using your own domain](https://knowledgebase.constantcontact.com/email-digital-marketing/tutorials/KnowledgeBase/5932-Self-authenticate-your-emails-using-your-own-domain). ## Step 5 — Activate and test "About 24 to 48 hours after you've pasted the CNAME and DMARC records into your DNS settings, click **Check status** or **Activate** to finish activating your self-authentication." If ready, click **Activate**. If an error appears (**Host name was not found**, **Please enter expected host name**, **Please enter correct value for host name**), see Constant Contact's [troubleshooting article](https://knowledgebase.constantcontact.com/email-digital-marketing/articles/KnowledgeBase/49735-Troubleshooting-DKIM-self-authentication-using-CNAME-TXT-and-DMARC). Before your next send, verify an email address at the authenticated domain: "Once you've self-authenticated, you can only use a "From Address" with your authenticated domain, or your emails are likely to bounce." Constant Contact suggests a test send to a small list of your own addresses first. Source: [Self-authenticate your emails using your own domain](https://knowledgebase.constantcontact.com/email-digital-marketing/tutorials/KnowledgeBase/5932-Self-authenticate-your-emails-using-your-own-domain). ## Step 6 — Keep the records in place Constant Contact rewrites your From address with its shared ccsend.com domain if "The authentication records in your DNS have been changed or removed", or if you've "self-authenticated your emails, but haven't published a DMARC policy yet" ([How the industry email sender requirements impact your "From" address](https://knowledgebase.constantcontact.com/email-digital-marketing/articles/KnowledgeBase/51400-How-your-From-email-address-may-be-impacted-by-the-latest-email-authentication-requirements)). To authenticate a different domain, first click **Remove self-authentication** under **Advanced settings** ([Self-authenticate your emails using your own domain](https://knowledgebase.constantcontact.com/email-digital-marketing/tutorials/KnowledgeBase/5932-Self-authenticate-your-emails-using-your-own-domain)). ## SPF Constant Contact's self-authentication has no SPF record step. Its help says: "Receiving mail servers check our domain's SPF record, not yours, so you do not need to add Constant Contact IP addresses to your SPF record if you have one." ([Understanding email authentication](https://knowledgebase.constantcontact.com/email-digital-marketing/tutorials/KnowledgeBase/5865-Understanding-email-authentication)) This guide does not give one either. Checked on 2026-09-11: a search of Constant Contact's knowledge base for "SPF" returned only that article and [What is a DMARC policy and why do I need one?](https://knowledgebase.constantcontact.com/email-digital-marketing/articles/KnowledgeBase/7644-What-is-a-DMARC-policy-and-why-do-I-need-one), neither of which gives an SPF step. ## How alignment works here DMARC passes when a message passes DKIM or SPF **and** the domain that passed is in alignment with the domain in the visible From address; one aligned pass is enough. Send from an address at the domain you authenticated. See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) for how alignment is evaluated. ## Check your setup Once Constant Contact shows self-authentication as active, run the free [domain health check](https://emailmarketing.net/tools/domain-check) on your domain to see what receivers find in DNS for SPF, DKIM and DMARC. The check looks for DKIM under a fixed list of common selectors, so it may not find your Constant Contact DKIM record on its own. Give it your selector through the check's API: `https://emailmarketing.net/api/domain-check?domain=yourdomain.com&selector=`. The selector is the part of the DKIM record name before `._domainkey`. For Constant Contact's CNAME option, the selectors are `ctct1` and `ctct2`, from the record names `ctct1._domainkey` and `ctct2._domainkey` ([Update your DNS records through your hosting provider](https://knowledgebase.constantcontact.com/email-digital-marketing/articles/KnowledgeBase/39520-Update-your-DNS-records-through-your-hosting-provider-to-finish-setting-up-self-authentication)). For the TXT option, the selector is a number: take it from the host name shown in your account; Constant Contact's example is `10008432` ([Self-authenticate your emails using your own domain](https://knowledgebase.constantcontact.com/email-digital-marketing/tutorials/KnowledgeBase/5932-Self-authenticate-your-emails-using-your-own-domain)). # HubSpot: SPF, DKIM and DMARC setup > How to connect your email sending domain in HubSpot — start the connection, add the two DKIM CNAME records and the SPF and DMARC TXT records, and confirm the Authenticated status — with each step linked to HubSpot's current knowledge base. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-guides/hubspot This guide follows HubSpot's own knowledge base, checked on 2026-09-11. Each step links to the page it comes from. Menu names and record values can change: if the app shows something different, the app and HubSpot's current knowledge base page win. This guide covers only connecting the domain you send marketing email from. For the protocols themselves, see [SPF](https://emailmarketing.net/learn/authentication/spf) and [DMARC](https://emailmarketing.net/learn/authentication/dmarc). ## Before you start - You need access to your domain's DNS settings, usually at your registrar or hosting provider. - Send from a domain you own. HubSpot's knowledge base says: "You will need to own and have access to each domain." It also notes you "can only authenticate an email sending domain that's not currently in use for another purpose, such as hosting your website"; a subdomain such as `info.domain.com` can be used instead ([Manage your email authentication](https://knowledge.hubspot.com/marketing-email/manage-email-authentication-in-hubspot)). - If you use Cloudflare for DNS, HubSpot asks that "domain-wide CNAME flattening and proxy settings are turned off". ## What HubSpot asks you to publish | Purpose | Record type | Count | Where the values come from | |---|---|---|---| | DKIM | `CNAME` | 2 | **Host** and **Required data** shown in HubSpot | | SPF | `TXT` | 1 | **Host** and **Required data** shown in HubSpot | | DMARC | `TXT` | 1 | **Host** and **Required data** shown in HubSpot | HubSpot: "DKIM requires two CNAME records, while SPF records and DMARC each require a TXT record." ([Manage your email authentication](https://knowledge.hubspot.com/marketing-email/manage-email-authentication-in-hubspot)) HubSpot's intro mentions MX among the record types ("four separate DNS record types: MX, DKIM, SPF, and DMARC"), but its setup steps list no MX record. ## Step 1 — Start connecting the sending domain 1. In your HubSpot account, click the **settings** icon in the top navigation bar. 2. In the left sidebar menu, navigate to **Content > Domains & URLs**. 3. Click the **Email Sending** tab. 4. In the top right, click **Connect sending domain**. Source: [Manage your email authentication](https://knowledge.hubspot.com/marketing-email/manage-email-authentication-in-hubspot). ## Step 2 — Confirm the domain and choose a method 1. On the domain connection screen, enter an email address you use to send marketing emails, then click **Next**. 2. Verify that the email sending domain is correct, then click **Next**. 3. If available for your DNS provider, click **Sign in with [provider]**, or click **No, I'll set it up manually** to add the DNS records yourself. Source: [Manage your email authentication](https://knowledge.hubspot.com/marketing-email/manage-email-authentication-in-hubspot). ## Step 3 — Add the DKIM records At your DNS provider, create the two `CNAME` records HubSpot shows. For each record, click **Copy** next to the value in the **Host** and **Required data** columns, then paste the values in your DNS provider. Source: [Manage your email authentication](https://knowledge.hubspot.com/marketing-email/manage-email-authentication-in-hubspot). ## Step 4 — Add the SPF record Create the `TXT` record HubSpot shows, copying **Host** and **Required data** the same way. If you already have an SPF record, HubSpot says to add HubSpot to it "rather than creating a new one": 1. Add the string in the **Required data** column after `include:` to the end of the existing SPF record. 2. Check that the SPF version and the `-all` flag appear only once. HubSpot's example: `v=spf1 include:anotherprovider.com include:123456.spf03.hubspotemail.net -all`. Source: [Manage your email authentication](https://knowledge.hubspot.com/marketing-email/manage-email-authentication-in-hubspot). ## Step 5 — Add the DMARC record Create the `TXT` record HubSpot shows for DMARC, copying **Host** and **Required data** the same way. If your domain already has a DMARC record, do not add a second one: when a receiver finds more than one DMARC record, it applies no DMARC processing ([RFC 7489 §6.6.3](https://www.rfc-editor.org/rfc/rfc7489#section-6.6.3)). See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) before changing an existing policy. HubSpot notes that "a subdomain will be considered authenticated if there's a DMARC record configured at the root domain level, due to DMARC policy inheritance." Source: [Manage your email authentication](https://knowledge.hubspot.com/marketing-email/manage-email-authentication-in-hubspot). ## Step 6 — Wait for verification and check the status "DNS records usually take between 10 and 70 minutes to update, but can take as long as 48 hours in some cases." HubSpot recommends waiting at least 20 minutes before checking. In **Content > Domains & URLs**, **Email Sending** tab, each domain shows one of three statuses: - **Not authenticated**: none of the three methods has been fully set up or verified yet. - **Partially authenticated**: DKIM is set up and verified, but SPF or DMARC still needs to be verified. - **Authenticated**: DKIM, SPF and DMARC are all set up and verified. If a record has an issue, click **Continue setup** to review the values to add at your DNS provider. Source: [Manage your email authentication](https://knowledge.hubspot.com/marketing-email/manage-email-authentication-in-hubspot). ## SPF HubSpot's help gives an SPF step (Step 4) for your From address domain. It also explains that SPF "is traditionally required for the envelope return path domain" and that "HubSpot already has this configured for marketing emails sent through its shared servers"; dedicated IP customers must configure SPF on their return path domain as part of their IP setup ([Overview of email authentication](https://knowledge.hubspot.com/marketing-email/overview-of-email-authentication)). If a domain publishes more than one SPF record, SPF evaluation returns a permerror; see [SPF](https://emailmarketing.net/learn/authentication/spf). ## How alignment works here DMARC passes when a message passes DKIM or SPF **and** the domain that passed is in alignment with the domain in the visible From address; one aligned pass is enough. Send from an address at the domain you connected. See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) for how alignment is evaluated. ## Check your setup Once HubSpot shows **Authenticated**, run the free [domain health check](https://emailmarketing.net/tools/domain-check) on your domain to see what receivers find in DNS for SPF, DKIM and DMARC. The check looks for DKIM under a fixed list of common selectors, so it may not find your HubSpot DKIM record on its own. Give it your selector through the check's API: `https://emailmarketing.net/api/domain-check?domain=yourdomain.com&selector=`. The selector is the part of the DKIM record name before `._domainkey`. For HubSpot, it is the start of the **Host** of each DKIM CNAME record HubSpot shows; check each of the two. # Kit: DKIM and DMARC setup > How to set up a verified sending domain in Kit (formerly ConvertKit) — add the domain, add the CNAME records and the DMARC TXT record, and validate — with each step linked to Kit's current help center. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-guides/kit This guide follows the help center of Kit (formerly ConvertKit), checked on 2026-09-11. Each step links to the page it comes from. Menu names and record values can change: if the app shows something different, the app and Kit's current help page win. For the protocols themselves, see [SPF](https://emailmarketing.net/learn/authentication/spf) and [DMARC](https://emailmarketing.net/learn/authentication/dmarc). ## Before you start - You need access to your domain's DNS settings. Kit's help says: "If you need help adding to your DNS settings, please ask your DNS provider for help." ([Verify your domain to optimize your deliverability](https://help.kit.com/en/articles/2502558-verify-your-domain-to-optimize-your-deliverability)) - Send from an address on a domain you own. Kit's help says: "All marketing emails should be sent from a domain you own, not from a personal account at a provider domain" ([Why do I need my own domain to send email?](https://help.kit.com/en/articles/2502505-why-do-i-need-my-own-domain-to-send-email)). - A verified sending domain means "you are relying more heavily on your own sender domain reputation"; Kit recommends starting with your most engaged subscribers and not making other major changes at the same time ([What you should know before setting up a verified sending domain](https://help.kit.com/en/articles/9176509-what-you-should-know-before-setting-up-a-verified-sending-domain)). ## What Kit asks you to publish | Purpose | Record type | Count | Where the values come from | |---|---|---|---| | Verified sending domain (including DKIM) | `CNAME` | As shown | Shown on the **Verify your sending domain** screen; Kit's examples are `ckespa` and `cka._domainkey` | | DMARC | `TXT` | 1 | Shown in the **Verified Sending Domain** section; if none is listed, Kit says your domain already has one | Kit: "The manual setup involves a basic understanding of CNAME records." ([Verify your domain to optimize your deliverability](https://help.kit.com/en/articles/2502558-verify-your-domain-to-optimize-your-deliverability)) Adding the DMARC record means creating a new `TXT` record for your verified sending domain with the values Kit provides ([How to add a DMARC record to your verified sending domain](https://help.kit.com/en/articles/8540237-how-to-add-a-dmarc-record-to-your-verified-sending-domain)). ## Step 1 — Add the domain 1. Click your account name at the top right of the Kit dashboard, then **Settings**, then **Email** in the left sidebar. 2. Under **Verified Sending Domains**, click **Set up your Verified Sending Domain** (or **Add a Verified Sending Domain** if you added one before). 3. Enter the domain or subdomain you want to verify for sending, and click **Next**. Kit accepts top-level domains and subdomains; you don't need to set up a subdomain. Source: [Verify your domain to optimize your deliverability](https://help.kit.com/en/articles/2502558-verify-your-domain-to-optimize-your-deliverability). ## Step 2 — Choose automatic or manual setup Kit recommends "trying the automatic setup process first". **Set this up for me** opens Entri: after **Continue**, Entri analyzes your domain to detect your DNS provider and prompts you to log in to it, then configures the domain; you may need to click **Validate** afterwards. If that doesn't work, use the manual setup, which shows the records to add yourself. Source: [Verify your domain to optimize your deliverability](https://help.kit.com/en/articles/2502558-verify-your-domain-to-optimize-your-deliverability). ## Step 3 — Add the CNAME records On the **Verify your sending domain** screen, copy the DNS records and add them in your DNS provider's record manager, then click **Validate**. If the records are correct, Kit shows a message that your sending domain is verified. "Some DNS providers require truncated versions of the host values (for example, just ckespa instead of ckespa.yourdomain.com, and just cka._domainkey instead of cka._domainkey.yourdomain.com)." If neither the full nor the truncated version works, Kit suggests contacting your DNS provider. Source: [Verify your domain to optimize your deliverability](https://help.kit.com/en/articles/2502558-verify-your-domain-to-optimize-your-deliverability). ## Step 4 — Add the DMARC record 1. In **Settings ▸ Email**, find the **Verified Sending Domain** section and copy the DMARC record. If the DNS records are hidden, click **Show DNS records**. If no DMARC record is listed, "this means you already have a DMARC record added to your domain." 2. At your DNS provider, create a `TXT` record for your verified sending domain with the copied values. Kit's default record uses `p=none`, "the most permissive". If your domain already has a DMARC record, do not add a second one: when a receiver finds more than one DMARC record, it applies no DMARC processing ([RFC 7489 §6.6.3](https://www.rfc-editor.org/rfc/rfc7489#section-6.6.3)). See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) before changing an existing policy. Source: [How to add a DMARC record to your verified sending domain](https://help.kit.com/en/articles/8540237-how-to-add-a-dmarc-record-to-your-verified-sending-domain). ## Step 5 — Validate "Your DMARC record may take 24 to 48 hours to take effect." On the **Email** page of your Kit settings, click **Validate** for your verified sending domain. A success icon appears next to the domain once Kit has validated the DMARC record. Source: [How to add a DMARC record to your verified sending domain](https://help.kit.com/en/articles/8540237-how-to-add-a-dmarc-record-to-your-verified-sending-domain). ## Step 6 — Keep the records in place "Once you've added your DMARC record, please do not remove it—whether from Kit or from your domain. Doing so may cause deliverability issues." ([How to add a DMARC record to your verified sending domain](https://help.kit.com/en/articles/8540237-how-to-add-a-dmarc-record-to-your-verified-sending-domain)) Kit's DMARC overview adds: "please do not remove your Verified Sending Domain—or DMARC record—from either Kit or your DNS records" ([DMARC: what is it and should you use it?](https://help.kit.com/en/articles/4534360-dmarc-what-is-it-and-should-you-use-it)). With a verified sending domain, "DKIM and SPF can sometimes fail if the CNAME records have been changed or deleted from your host" ([Inbox placement tests: how to analyze the results](https://help.kit.com/en/articles/4478092-inbox-placement-tests-how-to-analyze-the-results)). ## SPF Kit's verified sending domain setup has no separate SPF record step. Its help says a verified sending domain will "Put your from-address in the return-path" and "Authenticate with SPF using your domain" ([Verify your domain to optimize your deliverability](https://help.kit.com/en/articles/2502558-verify-your-domain-to-optimize-your-deliverability)). This guide does not give one either. Checked on 2026-09-11: every Kit help article on domains, deliverability and authentication in Kit's help-center sitemap and Deliverability collection was searched for "SPF", and none gives an SPF record step. ## How alignment works here DMARC passes when a message passes DKIM or SPF **and** the domain that passed is in alignment with the domain in the visible From address; one aligned pass is enough. Send from an address at the domain you authenticated. See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) for how alignment is evaluated. ## Check your setup Once Kit shows the domain as verified, run the free [domain health check](https://emailmarketing.net/tools/domain-check) on your domain to see what receivers find in DNS for SPF, DKIM and DMARC. The check looks for DKIM under a fixed list of common selectors, so it may not find your Kit DKIM record on its own. Give it your selector through the check's API: `https://emailmarketing.net/api/domain-check?domain=yourdomain.com&selector=`. The selector is the part of the DKIM record name before `._domainkey`. For Kit, take it from the host of the `_domainkey` CNAME record Kit shows; Kit's help uses `cka` as its example (`cka._domainkey`). # Klaviyo: DKIM and DMARC setup > How to set up a branded sending domain in Klaviyo — generate the records, add the NS or CNAME records, the verification TXT record and the DMARC TXT record, then verify and activate the domain — with each step linked to Klaviyo's current help center. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-guides/klaviyo This guide follows Klaviyo's own help center, checked on 2026-09-11. Each step links to the page it comes from. Menu names and record values can change: if the app shows something different, the app and Klaviyo's current help page win. For the protocols themselves, see [SPF](https://emailmarketing.net/learn/authentication/spf) and [DMARC](https://emailmarketing.net/learn/authentication/dmarc). ## Before you start - You need access to your domain's DNS settings. Klaviyo's help says: "You also need to own the domain you are using to send email." Only the Owner, Admin, Manager and Campaign Coordinator roles can set up a branded sending domain ([How to set up a branded sending domain](https://help.klaviyo.com/hc/en-us/articles/115000357752)). - For a first marketing branded sending domain, or one that replaces the active one, Klaviyo asks you to "pause all sending before applying changes" (same page). ## What Klaviyo asks you to publish | Purpose | Record type | Count | Where the values come from | |---|---|---|---| | Sending subdomain and DKIM, Dynamic routing | `NS` | 4 | Generated in Klaviyo; host is your sending subdomain | | Sending subdomain and DKIM, Static routing | `CNAME` | 3 | Generated in Klaviyo; the sending subdomain plus two `_domainkey` records | | Domain ownership | `TXT` | 1 | Host is your root domain; value `klaviyo-site-verification=…` | | DMARC (optional) | `TXT` | 1 | Offered only if your domain has no DMARC record; value `v=DMARC1; p=none;` | Klaviyo: "Klaviyo requires up to 3 CNAME or 4 NS records for email authentication, and one TXT record for domain ownership verification." Static service domains also need an `MX` record, which Klaviyo generates ([How to set up a branded sending domain](https://help.klaviyo.com/hc/en-us/articles/115000357752)). ## Step 1 — Add the domain 1. Click your company name in the bottom left corner, select **Settings**, then choose **Domains**. 2. Select **Add Domain** and choose the send type: **Marketing**, **Transactional** or **Service**. 3. Check the root domain Klaviyo pulled from your account and select **Next**. 4. Under **Sending domain**, enter an unused subdomain (for example `send`). Source: [How to set up a branded sending domain](https://help.klaviyo.com/hc/en-us/articles/115000357752). ## Step 2 — Choose routing, DMARC and setup method 1. Select the **Routing** type. **Dynamic** generates `NS` records; **Static** generates `CNAME` records. Klaviyo recommends Dynamic, and says Static "is the right choice if your DNS provider does not support NS records." 2. Choose whether to add a DMARC record. Only domains currently missing a DMARC record see this option. 3. Choose to connect with Entri or to set up manually. With Entri, Klaviyo detects your DNS provider and asks you to log in so it can publish the records. Only domains eligible for Entri see this option. The manual path shows the generated records for you to add yourself. Source: [How to set up a branded sending domain](https://help.klaviyo.com/hc/en-us/articles/115000357752). ## Step 3 — Add the sending-domain records On the manual path, choose your DNS provider on the **Find your DNS zone file** page and select **Next**. Copy each generated record into your zone file: the four `NS` records (Dynamic) or three `CNAME` records (Static), plus the `TXT` verification record. "You do not need to create your subdomain within your DNS settings." If your DNS provider proxies records (Cloudflare, for example), disable it for your Klaviyo records: "Proxying blocks Klaviyo from verifying the record" ([DNS and SPF setup troubleshooting](https://help.klaviyo.com/hc/en-us/articles/50941715515675)). Source: [How to set up a branded sending domain](https://help.klaviyo.com/hc/en-us/articles/115000357752). ## Step 4 — Add the DMARC record If you turned on **Add DMARC record**, add the record Klaviyo generates: `v=DMARC1; p=none;`. Klaviyo's general DMARC steps use a `TXT` record with **Host** `_dmarc` ([Understanding email authentication](https://help.klaviyo.com/hc/en-us/articles/4402601857307)). If your domain already has a DMARC record, do not add a second one: when a receiver finds more than one DMARC record, it applies no DMARC processing ([RFC 7489 §6.6.3](https://www.rfc-editor.org/rfc/rfc7489#section-6.6.3)). See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) before changing an existing policy. Source: [How to set up a branded sending domain](https://help.klaviyo.com/hc/en-us/articles/115000357752). ## Step 5 — Verify and activate the domain Select **Verify** once the records are in DNS; at first, it is expected that they are not verified yet. "It can take up to 48 hours for DNS records to update after they are published in your DNS settings." You then see a verification success, a verification error, or a conflict notice if campaigns are "actively sending or scheduled to go out soon". Once the records are verified, select **Activate** on the domain row. Use your root domain in your from-address (for example `@yourbusiness.com`), not the sending subdomain, or you will not receive replies. Source: [How to set up a branded sending domain](https://help.klaviyo.com/hc/en-us/articles/115000357752). ## Step 6 — Keep the records in place "Branded sending domains become disconnected when the required DNS records are removed." Klaviyo sends an alert to your notification inbox so you can fix the records. Source: [How to set up a branded sending domain](https://help.klaviyo.com/hc/en-us/articles/115000357752). ## SPF Klaviyo's help does not give an SPF record step for a branded sending domain. It says: "When sending emails with Klaviyo, you do not need to add your own SPF and DKIM records" ([Understanding email authentication](https://help.klaviyo.com/hc/en-us/articles/4402601857307)). This guide does not give one either. ## How alignment works here DMARC passes when a message passes DKIM or SPF **and** the domain that passed is in alignment with the domain in the visible From address; one aligned pass is enough. Send from an address at the domain you authenticated. See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) for how alignment is evaluated. ## Check your setup Once Klaviyo shows the domain as active, run the free [domain health check](https://emailmarketing.net/tools/domain-check) on your domain to see what receivers find in DNS for SPF, DKIM and DMARC. The check looks for DKIM under a fixed list of common selectors, so it may not find your Klaviyo DKIM record on its own. Give it your selector through the check's API: `https://emailmarketing.net/api/domain-check?domain=yourdomain.com&selector=`. The selector is the part of the DKIM record name before `._domainkey`. With Static routing, Klaviyo's example record is `km1._domainkey.helloworld.com`: marketing domains use `km1`/`km2`, transactional `kt1`/`kt2`, service `ks1`/`ks2`, and older static domains `kl1`/`kl2`. A second domain of the same send type uses the next selector pair, for example `km3`/`km4` for a second marketing domain ([How to set up a branded sending domain](https://help.klaviyo.com/hc/en-us/articles/115000357752)). With Dynamic routing, "Klaviyo serves the DKIM records on your behalf" and its help names no selector; read it from the `s=` tag of the DKIM signature on a message you sent (see [DKIM](https://emailmarketing.net/learn/authentication/dkim)). # Mailchimp: DKIM and DMARC setup > How to authenticate your sending domain in Mailchimp — verify the domain, add the two DKIM CNAME records and the DMARC TXT record, and confirm the Authenticated status — with each step linked to Mailchimp's current help center. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-guides/mailchimp This guide follows Mailchimp's own help center, checked on 2026-09-11. Each step links to the page it comes from. Menu names and record values can change: if the app shows something different, the app and Mailchimp's current help page win. For the protocols themselves, see [SPF](https://emailmarketing.net/learn/authentication/spf) and [DMARC](https://emailmarketing.net/learn/authentication/dmarc). ## Before you start - You need access to your domain's DNS settings, usually at your registrar or hosting provider. - Send from an address on a domain you own. Mailchimp's help says: "if you use a free email service like Gmail or Yahoo for your From email address, we strongly recommend you switch to an email address from a private domain" ([About Email Domain Authentication](https://mailchimp.com/help/about-email-authentication/)). ## What Mailchimp asks you to publish | Purpose | Record type | Count | Where the values come from | |---|---|---|---| | DKIM | `CNAME` | 2 | Shown in Mailchimp as CNAME 1 and CNAME 2 | | DMARC | `TXT` | 1 | Host `_dmarc`; value shown in Mailchimp | Mailchimp: "your domain's DNS records need to be updated with 2 CNAME records (for DKIM) and 1 TXT record (for DMARC)" ([About Email Domain Authentication](https://mailchimp.com/help/about-email-authentication/)). ## Step 1 — Verify the domain Verification confirms you have access to the domain. It comes before authentication: "Before you authenticate your email domain, you need to verify it." ([Set Up Email Domain Authentication](https://mailchimp.com/help/set-up-email-domain-authentication/)) 1. Click your profile icon and choose **Account & billing**, then **Domains**. 2. In the **Email Domains** section, click **Add & Verify Domain**. 3. Enter an email address at the domain and click **Send Verification Email**. 4. In that email, click **Verify Domain Access**, or enter the verification code in your account and click **Verify**. Source: [Verify an Email Domain](https://mailchimp.com/help/verify-a-domain/). ## Step 2 — Start authentication 1. Click your profile icon and choose **Account & billing**, then the **Domains** tab. 2. Click **Start authentication** next to the verified domain. 3. Choose a method: **Continue** starts automatic authentication with Entri: Entri analyzes your domain, may detect your DNS provider, and prompts you to log in to your DNS provider. **Or manually authenticate your domain** shows the records to add yourself. For the manual path, select your DNS provider (or **Other**) and click **Next**. Source: [Set Up Email Domain Authentication](https://mailchimp.com/help/set-up-email-domain-authentication/). ## Step 3 — Add the DKIM records At your DNS provider, create the two `CNAME` records Mailchimp shows. Copy the **Name (Host)** and **Value** for **CNAME 1** and **CNAME 2** exactly as shown, then go back to Mailchimp and click **Next**. If your DNS provider appends the domain automatically, enter only the host part (for example `k2._domainkey`, not `k2._domainkey.example.com`), or the record ends up as `k2._domainkey.example.com.example.com`. Source: [Set Up Email Domain Authentication](https://mailchimp.com/help/set-up-email-domain-authentication/). ## Step 4 — Add the DMARC record Create one `TXT` record with the **Host** `_dmarc` and the **Value** Mailchimp shows, then go back to Mailchimp and click **Next**. If your domain already has a DMARC record, do not add a second one: when a receiver finds more than one DMARC record, it applies no DMARC processing ([RFC 7489 §6.6.3](https://www.rfc-editor.org/rfc/rfc7489#section-6.6.3)). See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) before changing an existing policy. Source: [Set Up Email Domain Authentication](https://mailchimp.com/help/set-up-email-domain-authentication/). ## Step 5 — Wait for validation and check the status Mailchimp validates the records. "Most records update within a few minutes, but this could take up to 48 hours." You receive an email when validation is complete. While it runs, the Domains page shows **Authentication in progress**; when it succeeds, the **Authenticated** label appears next to the domain. If it fails, the Domains page offers **Resolve** or **Restart authentication**. Source: [Set Up Email Domain Authentication](https://mailchimp.com/help/set-up-email-domain-authentication/). ## Step 6 — Keep the records in place Do not edit the DKIM CNAME records after authentication. Mailchimp stores the authentication; to change the records, disable authentication on the Domains page first, then re-authenticate once the DNS change is done. Source: [Set Up Email Domain Authentication](https://mailchimp.com/help/set-up-email-domain-authentication/). ## SPF Mailchimp's current help pages on domain authentication list the DKIM and DMARC records only. They do not document an SPF record step, so this guide does not give one. ## How alignment works here DMARC passes when a message passes DKIM or SPF **and** the domain that passed is in alignment with the domain in the visible From address; one aligned pass is enough. Send from an address at the domain you authenticated. See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) for how alignment is evaluated. ## Check your setup Once Mailchimp shows **Authenticated**, run the free [domain health check](https://emailmarketing.net/tools/domain-check) on your domain to see what receivers find in DNS for SPF, DKIM and DMARC. The check looks for DKIM under a fixed list of common selectors, so it may not find your Mailchimp DKIM record on its own. Give it your selector through the check's API: `https://emailmarketing.net/api/domain-check?domain=yourdomain.com&selector=`. The selector is the part of the DKIM record name before `._domainkey`. For Mailchimp, it is the host of the DKIM CNAME records Mailchimp shows; Mailchimp's help uses `k2` as its example (`k2._domainkey`). # MailerLite: SPF, DKIM and DMARC setup > How to authenticate your sending domain in MailerLite — add the domain, add the DKIM CNAME record and the SPF and domain verification TXT records, add a DMARC record, and confirm the domain is authenticated — with each step linked to MailerLite's current help center. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-guides/mailerlite This guide follows MailerLite's own help center, checked on 2026-09-11. Each step links to the page it comes from. Menu names and record values can change: if the app shows something different, the app and MailerLite's current help page win. For the protocols themselves, see [SPF](https://emailmarketing.net/learn/authentication/spf) and [DMARC](https://emailmarketing.net/learn/authentication/dmarc). ## Before you start - You need access to your domain's DNS settings. MailerLite's help says: "Access the DNS settings of your domain located in the account of your hosting provider" ([Domain authentication](https://www.mailerlite.com/help/how-to-verify-and-authenticate-your-domain)). - Send from an address on your own paid domain: MailerLite's setup asks for "an email address that includes your paid domain" ([How to use automatic domain authentication](https://www.mailerlite.com/help/automatic-domain-authentication)). MailerLite: "In light of Google and Yahoo's new sender requirements for email senders, it is required to authenticate your domain if you are using a custom domain for sending." ([Domain authentication](https://www.mailerlite.com/help/how-to-verify-and-authenticate-your-domain)) ## What MailerLite asks you to publish | Purpose | Record type | Count | Where the values come from | |---|---|---|---| | DKIM | `CNAME` | 1 | Name and value shown in MailerLite; the name is `litesrv._domainkey` | | SPF | `TXT` | 1 | Value shown in MailerLite; includes `include:_spf.mlsend.com` | | Domain verification | `TXT` | 1 | Name and value shown in MailerLite; name is your root domain | | DMARC | `TXT` | 1 | Not generated by MailerLite; see Step 4 | MailerLite: "Add the DKIM as a CNAME record, the SPF as a TXT record, and a Domain verification as a TXT record." ([Domain authentication](https://www.mailerlite.com/help/how-to-verify-and-authenticate-your-domain)) ## Step 1 — Add the domain 1. Go to the **Account settings** page and select the **Domains** tab. 2. Click **Add domain**. 3. Enter the email address you want to send from and click **Save**. Source: [Domain authentication](https://www.mailerlite.com/help/how-to-verify-and-authenticate-your-domain). ## Step 2 — Choose automatic or manual authentication When a popup offers to start authentication, click **Continue** to use the automatic setup: it scans your domain, detects your DNS provider, and asks you to log in to that provider and authorize MailerLite to add the records. If you do not have the login, **Forward login to someone else** shares a link with someone who does. For the manual path, choose **Or manually authenticate your domain**, select your DNS provider from the dropdown (or **Other**), and click **Continue**. MailerLite shows the **Name** and **Value** fields for the DKIM, SPF and domain verification records. If you log in to your DNS provider with a social login such as Gmail, use the manual path: "this type of login is not supported." Sources: [Domain authentication](https://www.mailerlite.com/help/how-to-verify-and-authenticate-your-domain), [How to use automatic domain authentication](https://www.mailerlite.com/help/automatic-domain-authentication). ## Step 3 — Add the DKIM, SPF and verification records At your DNS provider, add the DKIM record as a `CNAME`, and the SPF and domain verification records as `TXT` records, using the **Name** and **Value** MailerLite shows. "These records cannot be modified within MailerLite, so they have to be an exact match." - **DKIM:** the name is `litesrv._domainkey`; most DNS providers add your domain to the end of it. If yours also appends the domain to the value, enter the value with a trailing period: `litesrv._domainkey.mlsend.com.` - **SPF and domain verification:** the name is your root domain. Depending on your provider, leave it blank or enter `@`. - **An existing SPF record:** a domain can have only one. MailerLite: "It is only possible to have one SPF record in the DNS zone of your domain." Merge MailerLite's `include:_spf.mlsend.com` into your existing record instead of adding a second one ([How to merge SPF records](https://www.mailerlite.com/help/how-to-merge-spf-records)). Sources: [Domain authentication](https://www.mailerlite.com/help/how-to-verify-and-authenticate-your-domain), [Troubleshooting domain authentication](https://www.mailerlite.com/help/troubleshooting-domain-authentication). ## Step 4 — Add the DMARC record MailerLite's authentication flow does not generate a DMARC record. Its help describes DMARC as a record "set up on the DNS settings of a domain as a TXT record", gives `v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com` as an example of a basic record, and recommends DMARC "if you frequently send high volumes of emails (around 5k+)" ([The basics of DMARC](https://www.mailerlite.com/help/the-basics-of-dmarc)). The record goes at `_dmarc.yourdomain.com` ([RFC 7489 §6.1](https://www.rfc-editor.org/rfc/rfc7489#section-6.1)). If your domain already has a DMARC record, do not add a second one: when a receiver finds more than one DMARC record, it applies no DMARC processing ([RFC 7489 §6.6.3](https://www.rfc-editor.org/rfc/rfc7489#section-6.6.3)). See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) before changing an existing policy. Source: [The basics of DMARC](https://www.mailerlite.com/help/the-basics-of-dmarc). ## Step 5 — Check the records and the status 1. Go back to the **Domains** tab and click **Authenticate** next to the domain. 2. Click **Check DNS Records**. If the records match, they are approved and the domain is authenticated. "It can take the servers up to 24 hours to completely update this information. Most of the time, however, it is approved and updated in a matter of minutes." With the automatic setup, the domain shows **Pending** until then. If a record is not approved, follow MailerLite's [troubleshooting article](https://www.mailerlite.com/help/troubleshooting-domain-authentication): when it finds more than one SPF record, **Check DNS records** shows a merged SPF value to publish in place of the existing ones. Sources: [Domain authentication](https://www.mailerlite.com/help/how-to-verify-and-authenticate-your-domain), [How to use automatic domain authentication](https://www.mailerlite.com/help/automatic-domain-authentication). ## Step 6 — Optionally, set up domain alignment MailerLite's **domain alignment** puts a subdomain of yours in the email headers and tracked links. It is "not mandatory, but it is highly recommended." Your domain must be authenticated first. 1. On the **Domains** tab, under **Sending domains**, click **Add custom domain** next to the authenticated domain. 2. Under **Subdomain prefix**, enter an unused prefix (for example `newsletter`) and click **Add**. 3. Use the automatic setup, or click **Check DNS records** and add the `A`, `MX` and `TXT` records from the **Manual** tab. 4. Once the records are accepted (up to 24 hours), toggle domain alignment **ON** on the Domains page. Keep your From address on your main domain, not the alignment subdomain. If you turn alignment off, links in campaigns already sent with it no longer work. Source: [How to align your domain](https://www.mailerlite.com/help/how-to-align-a-domain). ## SPF MailerLite's setup includes an SPF `TXT` record, covered in Step 3. It is one of the records **Check DNS Records** approves. Because a domain can have only one SPF record (more than one is a **permerror**, see [SPF](https://emailmarketing.net/learn/authentication/spf)), merge it with any existing SPF record following [How to merge SPF records](https://www.mailerlite.com/help/how-to-merge-spf-records). ## How alignment works here DMARC passes when a message passes DKIM or SPF **and** the domain that passed is in alignment with the domain in the visible From address; one aligned pass is enough. Send from an address at the domain you authenticated. See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) for how alignment is evaluated. ## Check your setup Once MailerLite shows the domain as authenticated, run the free [domain health check](https://emailmarketing.net/tools/domain-check) on your domain to see what receivers find in DNS for SPF, DKIM and DMARC. The check looks for DKIM under a fixed list of common selectors, so it may not find your MailerLite DKIM record on its own. Give it your selector through the check's API: `https://emailmarketing.net/api/domain-check?domain=yourdomain.com&selector=`. The selector is the part of the DKIM record name before `._domainkey`. For MailerLite, it is `litesrv`, from the DKIM CNAME name `litesrv._domainkey` ([Troubleshooting domain authentication](https://www.mailerlite.com/help/troubleshooting-domain-authentication)). # Salesforce Marketing Cloud: SPF, DKIM and DMARC setup > How to authenticate a sending domain in Salesforce Marketing Cloud Engagement with a Sender Authentication Package (SAP) or Private Domain — create the domain, choose delegated or self-hosted DNS, publish the name server or zone-file records, and wait for the Active status — with each step linked to Salesforce Help, and the steps Salesforce performs marked as such. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-guides/salesforce-marketing-cloud This guide follows Salesforce's own help for Marketing Cloud Engagement, checked on 2026-09-11. Each step links to the page it comes from. Menu names and record values can change: if the app shows something different, the app and Salesforce's current help page win. For the protocols themselves, see [SPF](https://emailmarketing.net/learn/authentication/spf) and [DMARC](https://emailmarketing.net/learn/authentication/dmarc). ## Before you start - Domain authentication comes with a paid product: a **Sender Authentication Package (SAP)**, which also brands your links and images, or a **Private Domain**, which is authentication only. "Private Domain is a paid product. To purchase, contact your Salesforce Account Executive (AE)." ([Private Domain FAQ](https://help.salesforce.com/s/articleView?id=000240073&language=en_US&type=1)) "Customers who send more than 250,000 email messages per month must use SAP." ([Working with the Email Sender Authentication Package](https://help.salesforce.com/s/articleView?id=sf.mc_es_sender_authentication_package.htm&language=en_US&type=5)) - Salesforce recommends a subdomain of your known domain, for example `email.mycompany.com` ([SAP Custom Domain Best Practices](https://help.salesforce.com/s/articleView?id=000382421&language=en_US&type=1)). - After you buy a Marketing Cloud Engagement license or an additional SAP, Salesforce may email you an SAP form. After you submit it, "deliverability case will be created automatically", and Salesforce's deliverability team "may ask you a few questions to complete SAP setup" ([How to Fill Out the SAP Form](https://help.salesforce.com/s/articleView?id=000396049&language=en_US&type=1)). ## What Marketing Cloud asks you to publish It depends on how you manage DNS for the domain. | Purpose | Record type | Count | Where the values come from | |---|---|---|---| | Delegated DNS: name servers | `NS` | 4 | `ns1`–`ns4.exacttarget.com`; Salesforce then hosts every record below | | Self-hosted DNS: DKIM | `TXT` | 1 | Salesforce's record list; name `._domainkey.` | | Self-hosted DNS: SPF | `TXT` | 3 | Salesforce's record list; at your domain, `bounce.` and `reply.` | | Self-hosted DNS: DMARC | `TXT` | 1 | Salesforce's record list; name `_dmarc.` | A self-hosted zone file also holds the `MX`, `CNAME` and `A` records Marketing Cloud uses for bounces, replies, tracked links and images ([DNS Record Maintenance](https://help.salesforce.com/s/articleView?id=sf.mc_es_dns_record_maintenance.htm&language=en_US&type=5)). ## Step 1 — Create the domain 1. From **Setup**, in the **Quick Find** box, enter `ssl`, then select **Domain SSL Certificates**. 2. Click **New Domain**. "If this button is turned off, a SAP or Private Domain license isn’t available." 3. Enter a valid domain name and email address. Source: [Configure a Sender Authentication Package or Private Domain](https://help.salesforce.com/s/articleView?id=sf.configure_sap_and_private_domain.htm&language=en_US&type=5). ## Step 2 — Choose the configuration 1. Select whether the domain is for **email authentication and URL branding** or **only email authentication**, then click **Next**. 2. Select the IP address configuration: **Salesforce shared IP**, **New dedicated IP**, or **Current dedicated IP**. 3. To use Reply Mail Management (RMM), select **Yes** and enter a forwarding email address. Source: [Configure a Sender Authentication Package or Private Domain](https://help.salesforce.com/s/articleView?id=sf.configure_sap_and_private_domain.htm&language=en_US&type=5). ## Step 3 — Choose how to manage DNS, then submit Select how to manage DNS and click **Next**, then review the configuration and click **Submit**. The two choices: - **Delegate DNS to Salesforce.** Salesforce hosts and updates the records. Salesforce recommends this: "Delegation to Salesforce is recommended, but if you need to manage it yourself, coordinate with your company's domain management personnel." ([How to Fill Out the SAP Form](https://help.salesforce.com/s/articleView?id=000396049&language=en_US&type=1)) - **Self-host DNS.** You publish every record yourself. "Marketing Cloud Engagement Support does not troubleshoot DNS issues when a client has chosen to self-host." ([Private Domain FAQ](https://help.salesforce.com/s/articleView?id=000240073&language=en_US&type=1)) Source: [Configure a Sender Authentication Package or Private Domain](https://help.salesforce.com/s/articleView?id=sf.configure_sap_and_private_domain.htm&language=en_US&type=5). ## Step 4 — Publish the DNS records - **Delegated:** configure your DNS to point the domain to the Marketing Cloud Engagement servers. "Either approach requires only four NS entries in your DNS": `ns1.exacttarget.com` to `ns4.exacttarget.com`. - **Self-hosted:** in the **Sending Domain** list on the main page, select **Download Zone File**, and add its records at your DNS provider. Sources: [Configure a Sender Authentication Package or Private Domain](https://help.salesforce.com/s/articleView?id=sf.configure_sap_and_private_domain.htm&language=en_US&type=5), [DNS Record Maintenance](https://help.salesforce.com/s/articleView?id=sf.mc_es_dns_record_maintenance.htm&language=en_US&type=5). ## Step 5 — Check the DMARC record - **Delegated:** Salesforce publishes it. "A basic DMARC policy record is automatically applied to your delegated SAP or Private Domain during initial configuration in the absence of additional needs." To change it, open a support case (SAP DNS Request) ([Request simple DMARC policy](https://help.salesforce.com/s/articleView?id=000384283&language=en_US&type=1), [SAP DNS Requests](https://help.salesforce.com/s/articleView?id=000392198&language=en_US&type=1)). - **Self-hosted:** Salesforce's record list includes a `_dmarc` `TXT` record ([DNS Record Maintenance](https://help.salesforce.com/s/articleView?id=sf.mc_es_dns_record_maintenance.htm&language=en_US&type=5)). "Please contact your domain administrator to make any modifications to your domain's DMARC records." If your domain already has a DMARC record, do not add a second one: when a receiver finds more than one DMARC record, it applies no DMARC processing ([RFC 7489 §6.6.3](https://www.rfc-editor.org/rfc/rfc7489#section-6.6.3)). Salesforce's suggested record uses `p=reject` and "may not be appropriate if you use this exact domain or subdomain on more than one email platform." See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) before changing an existing policy. Source: [Request simple DMARC policy](https://help.salesforce.com/s/articleView?id=000384283&language=en_US&type=1). ## Step 6 — Wait for the Active status The domain moves from **Pending DNS validation** to **In progress** to **Active**, when it is ready to use. "Setup can take up to five business days to complete." To stop before activation, select **Stop Configuration** from the domain's action menu. Source: [Configure a Sender Authentication Package or Private Domain](https://help.salesforce.com/s/articleView?id=sf.configure_sap_and_private_domain.htm&language=en_US&type=5). ## Step 7 — Keep the records current With self-hosted DNS, "Engagement sometimes adds a name server or changes sending IP addresses, requiring updates to your DNS records." With delegated DNS, Salesforce makes those updates. Changes to delegated records you want yourself, such as SPF, DMARC, BIMI or verification records, go through a support case whose subject is prefixed with "SAP DNS Request": "Prefix with SAP DNS Request, the domain, and a short summary of the change." Sources: [DNS Record Maintenance](https://help.salesforce.com/s/articleView?id=sf.mc_es_dns_record_maintenance.htm&language=en_US&type=5), [SAP DNS Requests](https://help.salesforce.com/s/articleView?id=000392198&language=en_US&type=1). ## SPF SPF is part of the setup: Private Domain "adds DKIM and SPF signatures to your outgoing emails" ([Private Domain FAQ](https://help.salesforce.com/s/articleView?id=000240073&language=en_US&type=1)). With delegated DNS, Salesforce hosts the SPF records. With self-hosted DNS, Salesforce's record list includes three SPF `TXT` records: at your domain, and at its `bounce` and `reply` subdomains ([DNS Record Maintenance](https://help.salesforce.com/s/articleView?id=sf.mc_es_dns_record_maintenance.htm&language=en_US&type=5)). A domain can have only one SPF record (more than one is a **permerror**, see [SPF](https://emailmarketing.net/learn/authentication/spf)). ## How alignment works here DMARC passes when a message passes DKIM or SPF **and** the domain that passed is in alignment with the domain in the visible From address; one aligned pass is enough. Send from an address at the domain you authenticated. See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) for how alignment is evaluated. ## Check your setup Once Marketing Cloud shows the domain as **Active**, run the free [domain health check](https://emailmarketing.net/tools/domain-check) on your domain to see what receivers find in DNS for SPF, DKIM and DMARC. The check looks for DKIM under a fixed list of common selectors, so it may not find your Marketing Cloud DKIM record on its own. Give it your selector through the check's API: `https://emailmarketing.net/api/domain-check?domain=yourdomain.com&selector=`. The selector is the part of the DKIM record name before `._domainkey`. Salesforce's help shows only a placeholder (`example._domainkey`), not a fixed value. With self-hosted DNS, take it from the name of the DKIM `TXT` record you published. With delegated DNS, read it from the `s=` tag of the DKIM signature on a message you sent (see [DKIM](https://emailmarketing.net/learn/authentication/dkim)). # Abuse Desk Operations > Running an abuse desk at an ESP, ISP, or hosting provider — mandatory role addresses (RFC 2142), report intake, triage priorities, auto-acknowledgement, unblocking, complaint-priority tiers, remediation workflow, ticketing, and staffing/management. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-operations/abuse-desk If you send or host mail at scale, as an ESP, an ISP, a mailbox provider or a hosting or cloud provider, you need an abuse desk. The abuse desk receives reports of abuse from your own network and customers, sorts them by priority, and drives the remediation. Three sources describe how abuse desks work: - The MAAWG **Abuse Desk Common Practices** document (Collaboration Committee, October 10, 2007). It was assembled from member survey sessions that began in October 2006, and it presents options in common use, explicitly not a set of absolute best practices. - The sections on abuse reports in the M³AAWG **Anti-Abuse BCP for Hosting and Cloud Service Providers**, written with the Internet Infrastructure Coalition (March 2015). - **RFC 2142**, which sets the mandatory names of role mailboxes. > Source note: the Abuse Desk Common Practices PDF currently returns 404 on m3aawg.org. The content here was extracted from the Internet Archive capture of the canonical URL dated 2025-11-23. ## Mandatory role addresses (RFC 2142) RFC 2142 (Standards Track, May 1997) standardizes the well-known mailbox names that an organization must support. Its core rules: - **`postmaster@domain` is required on every host with an SMTP server.** The requirement dates back to RFC 822 §6.3 and was carried forward by RFC 5321. - If a given service or function exists at the organization, the **mailbox name associated with it must be supported**, and must deliver to a recipient suited to that role. - **The scope is the domain.** For names that are not tied to a protocol (such as `abuse@`), the address must be valid at the organization's **top-level domain**, even if the abusive activity comes from hosts on more specific subdomains. For example, `abuse@company.com` must work even when customers use `shell1.company.com`. Supporting role addresses on subdomains as well is valid and encouraged. - A host that does not accept mail directly but runs a covered service **must have a set of MX resource records (RRs)**, and those mail exchangers must treat the host's domain as local for these mailboxes, even when the advertised domain differs from the hostname. - The names are **case-insensitive**: `POSTMASTER`, `postmaster` and `PoStMaStEr` all deliver to the same mailbox. - Automatic acknowledgements sent from these addresses are "usually helpful", with an explicit warning against **dueling mail robots** that create mail loops. - For every mailing list `LIST@domain`, the administrative alias **`LIST-REQUEST@domain` is required**, whatever generic mailbox the list software uses. - The RNAME field of the DNS SOA record should use `hostmaster@domain` (a simple word with no metacharacters), as an alias for the zone administrator. - The RFC itself acknowledges a security consideration: standardized names make it easier to flood mailboxes as a denial of service. The key names, from the RFC 2142 tables: | Mailbox | Area / service | Usage | |---|---|---| | `abuse@` | Customer relations | Inappropriate public behaviour (where the abuse desk receives reports) | | `postmaster@` | SMTP | Queries and reports about the mail system. It **must exist and be read** | | `noc@` | Network operations | Network infrastructure issues | | `security@` | Network security | Security bulletins or queries | | `hostmaster@` | DNS | Zone administration | | `webmaster@` or `www@` | HTTP | Web service | | `info@`, `marketing@`, `sales@`, `support@` | Business | Line-of-business contacts | The Hosting Abuse BCP turns this into a rule for provisioning: role accounts specified by the RFC **must be set up for every domain and client domain provisioned on a network**: | Role address | Hosting provider or ESP | Client domain with email | |---|---|---| | `postmaster@` | required | required | | `abuse@` | required | required | | `hostmaster@` | required | required | | `noc@` | required | not required | | `legal@` or copyright agent | required (according to the filing with the local copyright office) | not required | The same BCP sets related requirements. Keep accurate **SWIP and IP WHOIS** records with the regional internet registry (RIR) for all allocations, including sub-allocations to clients **larger than a /27**, and include working role accounts for abuse reports in those WHOIS listings. Vetting questionnaires also ask prospective ESP customers whether they monitor `abuse@` and `postmaster@` on their own domains; see [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting). ## Report intake channels - **`abuse@`**, as RFC 2142 requires, monitored constantly. - **Feedback loop (FBL) feeds in ARF format**: subscribe to as many relevant feedback loops from mailbox providers as you can process. Automated reports should follow **RFC 5965 (ARF)** and **RFC 6650** (guidance on using ARF). Taking in FBL reports helps avoid DNSBL listings, and reveals both abusive customers and customers who are themselves being abused (compromised). See [Complaint Feedback Loops](https://emailmarketing.net/learn/list-management/complaint-feedback-loops). - **A public reporting facility**: providers must give the wider community a way to report abuse that seems to come from the network (a simple web form that creates a ticket automatically is enough). They must acknowledge submissions and act as appropriate. - **Redundant channels**, in case one fails: email, telephone, chat, a ticketing system, status reports on the website, and a presence on social media. - A **"quiet" submission address** may be kept for bulk submitters and reporters who do not want acknowledgements. **APIs** may be offered for bulk submission. - Getting usable reports from end users is a known problem. Most desks need the full internet headers to investigate, and few users know how to provide them. The consensus from the MAAWG survey was that educating users is far less effective than giving them an easier path: a "Report as Spam" button in webmail, which feeds the FBLs. The fallbacks are instruction pages, and automatic replies that ask the user to resubmit with full headers. ARF was created as the standard complaint format for exactly this exchange. ## Triage: priority order Abuse desks receive thousands of complaints and escalations every day, and cannot work through them in order of arrival. MAAWG members agreed on this order of priority for the queues: 1. **Life-threatening emergencies**: threats against or by customers, threats against employees, bomb threats against call centers, mail from runaways, and activity that precedes a child abduction. Have a response plan for life-threatening incidents, with cell phone numbers for in-house counsel and alternates (for guidance on releasing confidential information) and 24×7 contact points for call centers and network operations centers (NOCs). Most such reports arrive by phone, but the ticketing system should flag keywords that point to emergencies filed by people who do not know the escalation path. 2. **Requests from law enforcement (LE)**: reports of child sexual abuse material (CSAM), crimes, preservation requests, requests to identify customers in litigation, and intercept requests. Many ISPs keep a dedicated 24×7 phone number for law enforcement (staffed at large ISPs, on call at small ones). They advertise it on a web page that educates law enforcement (how to read a source IP address from headers, and how to look it up at the RIRs: ARIN, AfriNIC, APNIC, LACNIC, RIPE), and sometimes through 911 or PSAP filings. A dedicated mailbox such as `lawenforcement@domain` is common. 3. **Requests from the legal department**: identifying customers under court orders in civil litigation, and notices of copyright infringement. 4. **Malicious activity**: phishing sites and phishing messages, DDoS attacks, and the distribution and hosting of malware. This covers anything that endangers the safety of the network or of customers. 5. **Spam**: the highest-volume category, worked once the categories above are cleared. The committee deliberately set no priority between inbound and outbound spam, because either can dominate depending on the organization. 6. **Port scans**: the last priority for most desks. They can signal an attack to come, but the categories above are a better use of time. If the abuse desk and the postmaster are one team, blocking and unblocking issues also enter the queue. They are important, but rank below legal and law enforcement work, and their scope (the number of customers affected) sets their priority. ### Complaint-priority tiers (Hosting Abuse BCP) The BCP for hosting and cloud providers formalizes triage into levels of priority. Each case is assessed on its own (a massive live spam campaign can outrank the command-and-control (C&C) server of a dormant botnet), weighing severity, scope, the source of the report and the damage to reputation: | Priority | Abuse types | |---|---| | **P0 Critical** | Child exploitation (see the M³AAWG Disposition of CSAM BCP); offensive or harmful content; theft of the corporation's data | | **P1 High** | Botnet C&C; DDoS; data theft on or from the network | | **P2 Medium** | Malware drops; phishing data drops; phishing hosting; dictionary or brute-force attacks; data theft as a client | | **P3 Low** | Spam; control-panel abuse; SSH forwarding; spamvertising on the network; spamvertising support network, or hacking and cracking; remote file injection | | **P4 Very low** | Web defacement; exploitable services; port scanning; comment spamming | | **Varies** | Copyright and trademark issues: P1–P2 in North America because of the safe-harbor requirements of the DMCA; often lower priority in Europe, where no such requirement exists | ### Trusted reporters - Roughly two-thirds of the members surveyed favored proactively giving **trusted reporters** (other ISPs, law enforcement) private contact points for escalation. The M³AAWG Contact Database is the model: a protected, maintained directory of contacts of record that outlives staff turnover and protects the contacts from misuse. - Other members add mail filters that flag tickets needing immediate attention (for example, tickets from `.gov` domains or containing "police" or "litigation"), or use mailboxes with unique names reserved for law enforcement. - The hosting BCP recommends a priority lane for high-quality or high-priority submitters, internal or external (for example, the contact at a widely used DNSBL operator). Absolute priorities still apply: a spam report from a trusted DNSBL still ranks below a DDoS attack reported at the same time. ## Auto-acknowledgement MAAWG members were evenly split on sending automatic acknowledgements to the people who submit complaints: - **For**: they have educational value (explaining return codes, linking to an FAQ or instructions, stating what forensic evidence is required). They provide a tracking number for follow-up. They confirm receipt, which reduces phone calls and duplicate submissions. - **Against**: send at most one per submitter per day; prefer direct follow-up with business customers; avoid back-and-forth with submitters; and the acknowledgements themselves create a deliverability risk. - The hosting BCP comes down firmly in favor. Each individual submission **should** get an AUTO-ACK specific enough to tell it apart from the complainant's other submissions. It should include the original complaint, a ticket number, and an assurance that the report is being acted on, with the quiet address as a way to opt out. - RFC 2142's warning applies: protect auto-responders against mail loops. ## Unblocking requests Handling blocked senders who ask to be removed takes time, and demands judgment that junior staff may lack. These are the options surveyed, from most to least supported: 1. **Unblock on request** (the position of the overwhelming majority). It requires no judgment calls or research. If the sender has not fixed the underlying issue, the block comes back quickly, so in theory the damage is minimal. 2. **Keep a history of blocks and unblock requests for each sender.** This gives inexperienced staff a written record and evidence to present. In one variant, only a limited number of block and unblock cycles is allowed. In another, cycles are unlimited but each response is slower: the more often a sender is blocked, the longer and harder each unblock becomes. 3. **Use the NDR itself**: include an FAQ or link for automated removal in the bounce; allow non-customers a limited number of self-service removals per day, with instructions in the NDR; or include the reason for the block and a phone number for resolution (as AOL did). ## Backscatter Spam is mostly sent with forged return addresses, so auto-responses and bounces to those forged addresses reach innocent third parties. At volume, this misdirected bounce traffic ("backscatter") can itself be classified as spam and get the bouncing ISP blocklisted. These are the mitigations surveyed: - The most popular is a monitoring tool that tracks backscatter and removes the backscatter it can classify from the outbound queue. - Suppress bounces when the inbound message failed SPF (fail or softfail). Members reported good results. - **BATV** (Bounce Address Tag Validation) tags outgoing return paths cryptographically, so inbound bounces to addresses without a valid tag can be rejected. - Offer end users a configurable option to refuse all bounces. - Check deliverability on the way **into** the mail system, and reject at SMTP time (inline 5xx) rather than accepting the message and bouncing it later. ## Remediation workflow (problem customers) The Hosting Abuse BCP describes the standard incident loop once a report points to a customer: 1. **Confirm that the complaint is valid.** 2. **Notify the customer**, including remediation instructions that you have checked. 3. **Cite the specific clause of the terms of service (ToS) or acceptable use policy (AUP), or the regulation, that was breached.** This keeps the customer agreement intact and protects the provider against litigation from either the customer or the complainant. 4. **Give the customer time to remediate**, or, where the agreement allows, remediate on the customer's behalf. 5. **Confirm that the complaint is resolved.** 6. **Close the incident**, and tell the reporting party it is resolved if appropriate. Most complaints need only an acknowledgement of receipt. High-profile complaints, takedown requests and blocklist removal cases call for a first contact that says "we're on it" and a second contact at resolution. Send more messages than that only for lingering or exceptional issues. When a serious compromise or vulnerability threatens several clients, run a proactive communication plan (make clients aware of the issue and send general fix instructions promptly), and brief support staff with resolution instructions. **Suspension**: for compromised customers, or customers who do not remediate, the provider must be able to remove or shut down services without terminating the account. Examples are a suspended web page that forces the owner to make contact, or turning off key capabilities (repeat spam offenders lose the ability to send email for a period). **Termination** applies to unresponsive customers who keep generating abuse. The factors to weigh are tenure with the provider, account size, the type and number of infractions, how quickly and responsively they were resolved, abusive behavior toward customer-facing staff, and the service level. After you issue a termination, set a timeframe for retrieving data, state clearly that the customer is no longer welcome, notify support, sales and billing, and verify the removal when the timeframe expires. **Fraudulent accounts are a special case.** The steps above that protect the customer DO NOT apply. Fraudulent accounts should not be allowed to retrieve their data, and you must take care not to alert the people behind them to the countermeasures you are taking. (See [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts) for how to tell compromised accounts from malicious ones.) ## Ticketing systems According to the appendix of the Hosting Abuse BCP, a ticketing system is critical however operations are organized: - It is shared beyond the abuse team, supports departments and sub-groups, and applies dates and timestamps on intake. - A public web reporting form should create tickets automatically. Email reports, including FBL subscriptions, should be pulled in as tickets and routed to the right area, with subfolders for each source (AOL, Comcast, Google, Spamhaus and so on) so each stream of reports can be prioritized separately. - It is **searchable**, so duplicate reports of the same issue from different sources can be gathered at once instead of burying the team. - An expected development (as of 2015) is a "reporter reputation" score, which would give known-good reporters such as Spamhaus priority over unknown parties. - Confidential client identifiers: give each customer a unique internal identifier that means nothing to outside parties. This protects customer privacy in abuse handling while keeping attribution simple. ## Staffing and management The management section of the MAAWG survey is dated in style, but it is still the only industry-consensus description of how to staff an abuse desk: - **Justifying headcount**: gather metrics and tie them to lost revenue. Count the costs of storage, transport, maintenance and staff hours caused by the extra mail load, the customers lost to blocked mail, and the unresolved support calls and damage to satisfaction. Show the correlation between spam complaints and blocklistings. Borrow interns or spare time from other teams. Have managers shadow the abuse desk, and remind them that the abuse desk is often a non-customer's first contact with the company. If headcount is capped, technical alternatives include blocking port 25 and outbound filtering based on deep packet inspection (DPI). If outsourcing is proposed, weigh the security implications of sharing data on abuse and vulnerabilities, and coordinate closely with the outsourcer. - **Inbound and outbound**: most ISPs separate the handling of inbound spam from the handling of abuse that originates on their network (outbound), while keeping communication flowing between the teams. The two share most of their knowledge and methods. - **The biggest pitfall for abuse staff** (the clear winner in the survey) is indiscretion with customer privacy: disclosing personally identifiable information (PII) to a party with no right to it, which exposes both employee and employer to legal liability. Other pitfalls cited: failing to enforce policy under pressure from sales; overstepping into technical support for customers; giving in to customer demands; giving information to the wrong customers; and being unwilling to say "I do not know." - **Career path and retention**: provide formal training toward the direction each employee chooses, and cross-training. Rotate staff through the abuse desk's responsibilities to avoid stagnation and spread perspective, and treat the desk as a route into other roles in the company. Motivation depends on communication and recognition. Abuse work is thankless, so honest feedback, generous praise, involving staff in decisions, and managers who back their staff's calls against angry customers matter a great deal. - **Technically strong staff who lack people skills**: put staff with strong interpersonal skills in front of customers, and channel technical output through them. Let technical staff use web forms and templates, or have a colleague with good social skills review their outgoing mail. Have technical staff listen in on difficult calls that are handled well. Make training in interpersonal skills mandatory, with follow-up from managers. As a last resort, move the person to a role that does not face customers. ## Related articles - [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting), on keeping bad actors out - [Compromised Accounts & Outbound Abuse](https://emailmarketing.net/learn/esp-operations/compromised-accounts), on what the abuse desk most often remediates - [Complaint Feedback Loops](https://emailmarketing.net/learn/list-management/complaint-feedback-loops), on how ARF and FBLs work # Avoiding Blocklistings — the ESP Playbook > Spamhaus's three-part operational playbook for ESPs digested — set senders up for success (onboarding safeguards, mandatory authentication, cross-functional policy), monitor and educate customers (data tiers, business-impact framing), and take proactive protective measures (risk-tiered IP pools, list scanning, behavioral routing, rate-limiting as leverage); plus the hosting-provider anti-fraud-signup controls. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-operations/avoiding-blocklistings If you run an email service provider (ESP), one customer's bad practices can turn into a Spamhaus listing against infrastructure that all your customers share. Spamhaus's three-part Avoiding Blocklistings series is written for you, the platform operator, rather than for the individual sender, and explains how to run the platform so that this does not happen. The series divides the work into three phases: **set senders up for success** (before they send), **monitor and educate customers** (while they send), and **take matters into your own hands** (proactive protection and enforcement). The playbook below combines all three, and adds the [controls against fraudulent sign-ups](#fighting-fraudulent-sign-ups-at-registration) from Spamhaus's guidance for hosting providers. The playbook is about operational strategy. For the mechanics, see: - listing criteria, return codes and delisting workflows: [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus) and [Spamhaus Listings Deep Dive](https://emailmarketing.net/learn/reference/spamhaus-listings-deep-dive); - what to check before letting a customer send: [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting); - defenses for signup forms against list bombing: [Subscription Bombing](https://emailmarketing.net/learn/esp-operations/subscription-bombing); - how IP pools are isolated, and how senders are promoted or demoted between them: [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture); - the monitoring stack itself: [Outbound Monitoring](https://emailmarketing.net/learn/esp-operations/outbound-monitoring) and [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring). **The core idea:** deliverability is a **shared responsibility** between the ESP and the sender. A blocklisting is almost never purely an infrastructure event. It traces back to list quality, consent and behavior. The ESP's job is therefore to make good behavior the easiest path, and to make bad behavior expensive and short-lived. ## Phase 1: Set senders up for success (before the first send) The cheapest listing to avoid is the one you prevent at onboarding. In Spamhaus's words: "make authentication a requirement right at the beginning so there isn't any damage to clean up." ### Onboarding safeguards | Safeguard | What it means in practice | |---|---| | Vetting at signup | Questions and measures that evaluate the quality of each prospect. Decline signups that raise enough alarms. (The full questionnaire is in [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting).) | | Tiered or provisional access | Access granted in two stages: a review by the support team before platform access, **or** provisional, restricted access that requires domain validation and authentication before high-volume sending is unlocked. | | Mandatory authentication | Require SPF and DKIM **before** unrestricted sending, and in effect DMARC too, given the bulk-sender requirements of Gmail, Yahoo and Microsoft. Do not leave authentication as a later clean-up task. See [Customer Domain Authentication](https://emailmarketing.net/learn/esp-operations/customer-domain-authentication). | | Volume caps on new accounts | Restrict volume until the sender authenticates its domains **and** shows safe sending patterns. Raise caps when the sender shows a need and keeps a clean reputation (progressive trust). | | Permission-only list policy | Prohibit lists without permission, in policy and in enforcement. Those lists are the direct source of "hard bounces, spam trap hits, and spam complaints", the three inputs that lead to a listing. | ### Write provisioning policy across teams A point specific to Part 1 of the series: the deliverability team cannot write the onboarding and provisioning policy alone. **Involve sales, marketing, customer support and leadership** when creating it. The policy then balances enforcement against business reality, and is actually applied at the point of sale. A policy that the sales team works around is not a policy. Align provisioning rules with inbox success, not only with signup conversion targets. The commercial pressure for frictionless signup is exactly what erodes list quality, and it is the same pressure that keeps [subscription bombing](https://emailmarketing.net/learn/esp-operations/subscription-bombing) alive. ## Phase 2: Monitor and educate customers (while they send) ### The three data tiers Spamhaus describes the monitoring problem by where the data lives, because that decides how quickly you can act on it: | Tier | Data | Delay and access | |---|---|---| | 1. Instant-access | Your own platform's delivery and engagement statistics | Real time. Build your first alerts here | | 2. Cross-team request | Custom reports, exports, and data your team has to pull | Slower. Needs an internal workflow | | 3. Third-party | Google Postmaster Tools (GPT), seed-list testing, deliverability monitoring vendors, Spamhaus reputation data | External delays. **GPT is unreliable, with ~2-day data delays**. Treat it as confirmation, not as an early warning | The stance is **proactive, not reactive**. Monitor from a "10,000-foot view", using delivery and engagement data to catch problems before the customer reports them. The third-party tier lags: the 2-day delay in GPT means an emerging issue stays invisible until it has already hurt the customer. The behavioral signals in your instant-access tier are what actually give you time to act. ### Signals to watch - **Trends in delivery statistics**: deferrals, temporary failures and block messages, by destination. - **Engagement metrics**: open and click rates. A **falling open rate is an early warning**. Falling engagement comes before reputation loss, and before the sender starts mailing deep into unengaged segments, which is what triggers trap hits. - **Domain reputation as well as IP reputation**: IP reputation alone is no longer enough, because domain and content reputation now dominate (see [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus)). - **Volume anomalies**: drops, or spikes to dangerous levels. A sudden spike is the classic sign of a compromised account or of injected spam (see [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts)). Before building this, answer the two scoping questions Spamhaus asks: "What is it you'll monitor, and how?" Decide which dashboards, data feeds and tools already exist, and which you must build or buy. [Outbound Monitoring](https://emailmarketing.net/learn/esp-operations/outbound-monitoring) describes a concrete design for watchers and alerts. ### Educate customers in business terms The most widely applicable idea in the series is how to get a customer to act on a recommendation. Deliverability teams lose this argument when they talk about reputation in the abstract. They win it by talking in the customer's terms: - **Communicate in dollar signs, not sender reputation.** Frame every recommendation around revenue and the customer's daily workload, not around a metric the customer does not feel. - **Quantify the missed recipients.** Track and show how many valid recipients the customer expected to reach, how many were actually reached, and how many were missed. Then put a value on it. Spamhaus's illustration: if each valid recipient is worth **$1**, the missed count becomes a dollar figure the customer feels immediately. Visualizing the revenue impact is what persuades. - **Check that the request is realistic.** Before pushing a change, assess whether it is reasonably possible with the customer's platform and resources (for example, can they segment manually at all?), and whether it deserves priority in their organization. A technically correct recommendation that the customer cannot carry out wastes your leverage. - **"Show, don't tell."** Use the customer's own data, or anonymized examples from similar senders, to show how performance improved after a change, rather than asserting best practice. - **Deliver education in stages.** Give manageable, achievable guidance on what the customer needs to know at each stage to succeed. Do not deliver everything at once, because information overload prevents adoption. - **Correct myths actively.** Customers often believe that shortcuts work. Authoritative guidance that names and refutes the common myths (holiday "rule tightening", spam-word filters, buying lists for a revenue push) is part of the job. See [Two Worlds of Email Deliverability](https://emailmarketing.net/learn/strategy/two-worlds-of-email-deliverability) and [Content & Design for Deliverability](https://emailmarketing.net/learn/operations/content-and-design-for-deliverability). ### Where education lives Spread guidance across every point of contact, not only support tickets: the website, the company blog and newsletter, the terms of service and product documentation, support and sales conversations, onboarding email sequences, and **resources available before signup**, so that prospects who are a poor fit rule themselves out before they cost you a listing. Given the requirements of the major providers, make setting up authentication records a mandatory onboarding step. ## Phase 3: Take matters into your own hands (proactive protection) Education and monitoring are not enough against a customer who will not or cannot comply. Part 3 of the series is about platform mechanisms that protect the rest of your senders, whatever one customer does. ### Risk-tiered IP segmentation - **A shared or dedicated pool for new senders**, so that you can observe how new accounts behave before they can affect the reputation of established customers. - **Separate pools by reputation tier**: "riskier senders mingle with similarly questionable customers while stellar customers can be isolated." Contamination stays within a tier. - **Dedicated IP addresses with DKIM signing on the sender's own domain** for senders who warrant isolation. Reputation then attaches to that sender alone. [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture) covers the architecture of IP pools, automated promotion and demotion, and how reputation is isolated. [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up) covers warm-up. ### Automation that removes manual bottlenecks | Mechanism | Purpose | |---|---| | **List scanning on upload** | Scan lists when they are uploaded to catch poor-quality lists (purchased, scraped or badly managed) before the first send. This is the single most effective control, because bad lists are the main cause of listings. Screen for role accounts, known traps, disposable domains and typo domains, and signs of purchase (see [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting) and [Spam Traps](https://emailmarketing.net/learn/reference/spam-traps)). | | **Auto-warmup** | Automated IP warm-up, so that segmentation is not a manual onboarding task that gets skipped under time pressure. | | **Behavioral routing** | Automatically detect suspicious increases in volume, or senders with poor statistics, and route that traffic to restricted IP addresses with **stricter sending limits**. This isolates the risk without waiting for a person to act. | | **Automated performance alerting** | Systems that notify customers of "low performance and associated risks" automatically, without a person having to notice each problem and write each warning. | | **Customer-facing hygiene tools** | Give customers list segmentation and a feature to suppress unengaged contacts, so that the right action takes one click rather than a project. See [List Hygiene & Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies) and [Suppression-List Architecture](https://emailmarketing.net/learn/esp-operations/suppression-list-architecture). | ### Rate-limiting as leverage, not just protection When a sender's statistics reach a **critical level**, apply automated **volume rate limits** while you investigate. This does two things at once. It protects the reputation of the pool, and it is "the leverage you need to get those stubborn senders" to engage. A throttled customer who is losing throughput has a concrete reason to fix the list, where a lecture about reputation failed. [MTA Delivery Tuning](https://emailmarketing.net/learn/operations/mta-delivery-tuning) covers the mechanics of adaptive traffic shaping. ### Enforcement of last resort: termination When remediation fails, remove the customer. Spamhaus sets out a process so that the termination holds up if disputed and does not itself become a business problem: 1. **Documented communication** of the required changes; 2. **Multiple attempts to intervene**, on record; 3. **Agreement among stakeholders** (the same cross-functional group as in Phase 1) before ending the account. Refer to Spamhaus's **delisting instructions** for the remediation workflow, and use **community support channels** for help with troubleshooting. [Spamhaus Listings Deep Dive](https://emailmarketing.net/learn/reference/spamhaus-listings-deep-dive) covers escalation to Spamhaus and delisting from it. Under the SBL escalation policy, tolerating one bad customer can widen a listing to your whole address allocation, which is why this last-resort step exists. ## Fighting fraudulent sign-ups at registration Spamhaus's separate guidance for hosting providers addresses a different threat from the sender-quality problem above: **criminals who open accounts fraudulently** to abuse the platform from the first day. Spamhaus puts it bluntly. In some services "50% of all new subscriptions are fraudulent — every second subscription," and "a good balance between abuse prevention and abuse handling" costs far less than cleaning up after abuse, because "an understaffed and overwhelmed abuse desk will make your service attractive to cybercriminals." These controls are about fraud when someone signs up for an ESP account. [Subscription Bombing](https://emailmarketing.net/learn/esp-operations/subscription-bombing) covers a different problem, abuse of customers' signup forms. The fraud-prevention material in [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting) covers preauthorization, records of fraudulent accounts, fraud scoring and tiered rights. The controls below are the concrete mechanics at registration. ### Verification: reverse the direction The key insight: criminals use **disposable email and SMS providers to receive verification codes**, but they cannot send from them. So reverse the flow: - **Email verification**: display a code at signup and require the customer to send it to you from the address being registered, instead of you sending a code to them. - **Phone verification**: apply the same send-based check. **Block numbers already seen in fraudulent signups.** A phone number assigned to a real person is harder to compromise or replace than an email address. - **Suspension when information cannot be verified**: hold the account until the customer makes contact through another channel. ### Payment controls | Control | Rationale | |---|---| | Reject cryptocurrency (BTC, ETH) and WebMoney | Payments cannot be reversed and are pseudonymous, which fraud favors. | | Require 3-D Secure, SafeKey, SecureCode or ProtectBuy | Authentication by the card issuer defeats signups with stolen cards. | | High-fraud regions: **6+ months prepayment**, by methods that cannot be reversed (wire transfer, cleared check) | Removes the chargeback route, and raises the cost of a throwaway account. | | Consider requiring a scanned passport from high-risk jurisdictions | A manual know-your-customer (KYC) check for the riskiest signups. | ### Customer blocklist (match every new signup against it) Maintain an internal blocklist of first and last names, postal addresses, phone and mobile numbers, email addresses, payment-service identifiers (PayPal, WebMoney, etc.), signup IP addresses, and browser User-Agent strings. It works because criminals "frequently do not change the email address and often attempt to sign up from the same IP address." This is a concrete way to follow the Customer Vetting advice to "keep records of previously terminated fraud accounts and match new signups against them." ### IP and network reputation at signup - **Check the signup IP address against the Spamhaus SBL and XBL**, and reject signups from listed address space. The SBL lists spam sources and operations. The XBL lists compromised or exploited hosts. See [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus). - **Reject Tor exit nodes**, using a Tor DNSBL service. - **Deploy Spamhaus DROP and EDROP** (the Don't Route Or Peer lists of hijacked and criminal netblocks) on network routers, through **BGPf** (the paid BGP feed) where available, to refuse traffic from proxy and forwarding nodes outright, before signup. - **Monitor traffic with Netflow or similar tools**: watch for patterns unlike legitimate use, detect VPN connections to known blackhat forwarding nodes, and look for **the same VPN endpoints across several terminated fraudulent accounts**. The same exit point appearing again is a strong sign that the accounts are linked. ### Policy, geography, and abuse response - **A strong acceptable use policy (AUP) and terms of service** that prohibit spam, malware and botnet activity, allow suspension and null-routing on credible abuse reports, and state an intention to cooperate with law enforcement and security organizations. Spamhaus offers an **AUP Document Builder** tool to draft or revise one. - **Geographic restraint**: limit how many foreign customers you accept until your abuse handling can keep up. Accepting signups worldwide that you cannot police is what produces the figure of "every second signup is fraud". - **A fast abuse desk**: **null-route customer IP addresses immediately** on credible abuse reports, and suspend the account until the customer makes contact. A rapid response is itself a deterrent. See [Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk). - **Outsource fraud checks** to specialized third-party services when internal resources are not enough. [Vetting Automation](https://emailmarketing.net/learn/esp-operations/vetting-automation) lists the vendors. --- **Sources.** The three Avoiding Blocklistings parts and the article on fraudulent sign-ups at hosting providers are posts in Spamhaus's resource hub. They are operational guidance close to marketing material, not specifications. Their content was extracted from the live pages in July 2026. The figure of "$1 per valid recipient" is Spamhaus's illustrative example, not a benchmark. The figure of "50% of subscriptions fraudulent" is Spamhaus's stated observation "in some cases", not a universal rate. These sources give few numeric thresholds. The quantitative material is in the linked articles on the mechanics. ## Related articles - [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting), including the vetting questionnaire and the fraud-prevention material from the Hosting Abuse BCP - [Subscription Bombing](https://emailmarketing.net/learn/esp-operations/subscription-bombing) - [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture), on the risk-tiered IP pools of Phase 3 - [Outbound Monitoring](https://emailmarketing.net/learn/esp-operations/outbound-monitoring) and [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring), the monitoring stack behind Phase 2 - [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus) and [Spamhaus Listings Deep Dive](https://emailmarketing.net/learn/reference/spamhaus-listings-deep-dive) - [Vetting Automation](https://emailmarketing.net/learn/esp-operations/vetting-automation) - [Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk) # Compromised Accounts & Outbound Abuse > Detecting, containing, and remediating compromised customer accounts and outbound abuse on ESP/hosting infrastructure — M3AAWG Compromised User ID BCP, Hosting Abuse BCP, and Web Messaging Abuse BCP digested. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-operations/compromised-accounts If you run an email service provider (ESP) or a hosting service, the biggest threat to your reputation that you cause yourself is abuse leaving **outbound** through your own infrastructure. It can come from a compromised customer account, a stolen credential, a hacked content management system (CMS), or a scripted signup flow pushing spam through shared IP addresses. Three documents from the Messaging, Malware and Mobile Anti-Abuse Working Group (M3AAWG) cover detection, containment and remediation: - the **Compromised User ID Best Practices** (v1.0.1, March 2018; first published September 2014; document M3AAWG083); - the **Anti-Abuse BCP for Hosting and Cloud Service Providers**, a Best Common Practices (BCP) document written with the Internet Infrastructure Coalition (March 2015; M3AAWG0094); - the **BCP for Mitigating Abuse of Web Messaging Systems** (v1.1, March 2019; first published 2010; M3AAWG032-2019). ## Why this matters - Sending spam directly from infected subscriber PCs became harder, because of port-25 blocking and vigilance in the community. Spammers moved their botnets to sending through **compromised user email accounts**. As spam filters got better at blocking direct SMTP connections, they also moved to scripting **web-based messaging interfaces**: webmail, e-cards, invitations, "share this article" buttons, comment forms, gateways from the web to SMS, and REST messaging APIs. - Providers should **assume there will always be compromised accounts**. Attacks that exploit human weakness always succeed at some rate. The operational goal is to detect compromise fast, limit the damage, and prevent the account from being compromised again. Zero compromise is not a realistic goal. - Analyze the metrics carefully before you decide how an attack works. What looks like account compromise may actually be **abuse of the trial account signup process**: malicious registrations rather than hijacked customers. The two need different responses (see "Compromised vs malicious accounts" below). ## Definitions (Compromised User ID BCP) - **User Account**: a set of services provided to a user for their exclusive use, secured by a password or another authentication method. - **Compromised User Account**: a user account fully or partly under the unauthorized control of someone other than the legitimate user. Some cases are outside the scope of the BCP, although they are handled through the same channels: accounts created for abuse, compromised employee accounts (which need a heavier remediation approach), and tricks that trigger a single action (clickjacking, trojans that steal credentials, worms). ## How accounts get compromised - **Credential compromise.** Unpatched vulnerabilities leak credentials, or an attacker steals a legitimate site's credential database to reuse elsewhere. - **Phishing.** The attacker impersonates a legitimate site or sender, and users willingly hand over their credentials. - **Keyloggers.** Malware on the user's compromised machine captures everything typed. - **Theft of temporary credentials** (cookies), through network sniffing on unencrypted connections or cross-site scripting (XSS). - **Password guessing and brute force**: common passwords tried across many accounts, or many passwords tried against one account. - Also, social engineering aimed at the account holder or at the **provider's own employees**. ## Detection ### Behavior-feedback sources Attackers make a compromised account behave differently from how its legitimate owner would. Good sources for detection are: - **Account owners** who report that their own account is compromised, for example after seeing spam sent from their address. - **Other users and third-party data providers** who report activity consistent with compromise. - **Tracking and analysis of behavior** against the account's established pattern. The classic signs of compromise are a login from an unexpected location, suddenly messaging **all** contacts, and deleting all sent mail. - **Behavior that is always suspicious**, whatever the account's history: logins from locations far apart within a short time ("impossible travel"), and messages that contain hostile URLs. - **Feedback loops from other providers.** An account that suddenly generates a significant number of spam reports or complaints is in trouble (see [Complaint Feedback Loops](https://emailmarketing.net/learn/list-management/complaint-feedback-loops)). ### Advance-warning sources Compromise often happens long before any abuse can be detected. Attackers may hold harvested credentials for weeks or months before the spam campaign starts. Use intelligence from third parties for early warning: - Security researchers who report caches of credentials they have discovered. - Attackers who publish lists of compromised accounts. - **Notification of related compromise.** Lists of compromised accounts at one site identify linked accounts that can be attacked at another. Attackers follow those links, so defenders must too. - **Pattern propagation.** Once one compromised account is confirmed, use its characteristics to find others. None of these methods is fully reliable. **Confirm that accounts are actually compromised, or very probably so, before you act.** Automated checks may not be enough, and you may need to consult the real account owner. ### Compromised vs malicious accounts A suspicious account is not necessarily compromised. The holder may be abusive on purpose, with a single account or with mass registrations. **A pattern of earlier valid use** is the main sign that a genuine owner has lost control. The distinction decides the response. Compromised accounts are recovered for their owners. Fraudulent accounts get no data retrieval and no warning (see [Abuse Desk Operations](https://emailmarketing.net/learn/esp-operations/abuse-desk)). **Patterns of registration abuse** depend on the kind of account: - For free accounts that are easy to open, detection means spotting registration patterns, such as mass signups from one IP range or template data. - For paid accounts, look for stolen or disposable credit cards. - For accounts that involve close contact with the provider (advertiser accounts, for example), look for holders who are suspiciously casual about the account requirements. Signs include surprising identity claims (an unknown advertising agency with famous clients; a distant "interior design firm" eager for local representation; a large financial firm whose address is a mail drop), ignoring delays or rules that other users question, and changing their story instantly to fit the requirements. ### Platform telemetry (Hosting & Web Messaging BCPs) Set up internal telemetry that reports on the state of the network: **self-scans of the network, traffic analysis, and monitoring of the outbound spam filter**. For web platforms, list every resource that can be abused and track each one. Example baseline metrics: - **User and account metrics**: new registrations, logins, password changes, account deactivations. - **Abusive transactions**: visits to pages that do not exist, suspicious query strings, visits to uncommon ports. - **Potentially suspicious transactions**: total actions completed (messages sent, comments posted), and identities that reach any limit or heuristic. How to collect and store the data: - Scraping logs is the most common source; hooks in the application are better. - **Keep data for a week or longer** to catch attackers who work slowly and at low volume. - Store the **User-Agent string** for each login. Attackers rarely match a legitimate user's User-Agent exactly, and some User-Agent values are only ever seen from abusers. - **Correlate across webmail, IMAP and POP, and the MTA**, and share data on detected abusers between these systems. Hard statistics also make the case for a budget for anti-abuse work. ## Proactive defense (Web Messaging BCP) There are three areas to defend, and each can be exploited on its own: (1) the abuser's access to the user interface, (2) the content a user may submit, and (3) how widely that content is distributed. The underlying economics: every step an abuser must take has a cost, so raise the cost until it exceeds what the attack is worth. ### UI access - **Authentication.** Requiring an account raises the cost of an attack. Account **registration and provisioning need the same protections as messaging**. Alternatively, rely on established identity providers for authentication: accept credentials from major platforms through their API, and use OpenID Connect for a standard, interoperable integration. - **Multifactor authentication.** It does not solve everything, but it is very useful against abuse of compromised accounts, because a username and password are no longer enough. Second factors include **SMS one-time codes**, **TOTP or HOTP** authenticator apps or hardware, and **U2F** public-key hardware tokens. Advice for the rollout: - Do not force everyone to enroll at once, or support calls will flood in. - Start with users who were compromised before or who are at high risk, and let everyone else enroll themselves. - Use **risk-based enforcement**: ask for the second factor only on suspicious logins or sensitive actions (changing a password, sending to a large number of recipients). - Allow "remembered devices." - **CAPTCHA.** It clearly reduces abuse, but its cost to attackers keeps falling, because optical character recognition (OCR) improves and human solvers are cheap. Always combine it with other techniques, and use a maintained implementation proven in the field (such as reCAPTCHA), never one you built yourself. - **Page hardening** against scripting. Randomize or vary the page structure (change the HTML `id`s of required fields). Obscure the structure (field names encrypted with JavaScript, fields presented with AJAX). Set honeypot traps: fields hidden with CSS that people skip but bots fill in. Two cautions: this harms accessibility for users who cannot see the page, and it provides no real security. It only adds cost and effort, which still deters casual attackers. - **Rate limiting.** It should be used on **almost all web services that accept or relay content generated by users**. Choose a stable identity to count against, such as a combination of the remote IP address, User-Agent, username, session or cookie ID, and a computed machine identifier. Implementations range from plugins such as mod-security to a simple counting server. An example rule is 50 messages/hour and 100/day for each user ID, after which the user is redirected to an error page. Protect **every** access point to the feature (all servers behind the load balancer), and do not rely on the client to follow redirects. - Pitfalls in rule design: legitimate spikes (announcing "I just had a baby" to the whole address book), and clustering mistakes (an internet café IP address shared by 20 users; a traveler logging in from many unusual places). When a user reaches the limit, show a plain message ("You are not allowed to send more than 100 messages per hour") rather than a vague "suspicious activity detected" page that generates support requests. Spammers usually already know the limits, while legitimate users may share a NAT address with an infected machine. - **Dynamic blocking** is rate limiting with an allowance of zero transactions. Third-party feeds can seed blocklists, and **Spamhaus AuthBL** is suited to abuse of authentication. Be careful when using a list for a purpose it was not built for: the **PBL** lists IP addresses that should not connect to port 25, and it is completely unsuitable for blocking port 80. - **IPv6.** Track **ranges, not /128s**. ISPs give customers stable blocks, typically no smaller than **/64**, with ranges for each customer from /64 up to /48. Because the address space is so large, you may need to lower thresholds. **Carrier-grade NAT**, with dozens to hundreds of users behind each IPv4 address, may require raising them. - **Web application security.** Follow the OWASP Top 10. ### Content filtering - **Least privilege.** Allow only the content types you must, and use an allowlist rather than a blocklist, because blocklisting turns into an endless chase. Sanitize content generated by users with an engine more capable than one that strips script tags: encoding tricks defeat simple sanitizers, and a sanitizer based on a real browser's rendering code detects far more. Restrict attachments and uploads by type, and scan them for malware. Limit the length of the content to what the feature needs (a note shared with a link needs ~200 characters, not 1000), which lowers the field's value for spam. - **Heuristics.** Blocklists of tokens, URLs and strings work, but they are maintained by hand and easy to evade ("V.1agra", URL redirectors). They need a process that adds and expires rules at scale. The alternative is to build an open-source or proprietary **spam-filtering engine** into the submission path, before messages are accepted. - **Reputation models.** Online or offline models that change with outbound content and sender profiles. For example, compute a user's trust from the account's age, the number of positive actions and the number of suspicious actions, and consult the model for each questionable submission to get a prior probability that it is spam. - **Batch analysis.** This is the most flexible method. Cluster recent messages on a broad set of features to find unexpected patterns (for example, accounts all registered on June 7 from one /16, all sending 103-word messages), then load the patterns you find back into the outbound filters. ### Distribution controls - **Limiting recipients.** Cap the number of recipients per message for users who are not trusted. In systems where distribution is implicit (blogs, comments), require moderation or quarantine for new posts. - There are three ways to respond to a message the filter judges bad: - **Challenge.** Messages in a gray area trigger a further validation step: a CAPTCHA or, increasingly, a second authentication factor. Protect the challenge interface as well as the submission interface. Relying too much on CAPTCHA lets attackers send borderline spam for the price of an automated solver. - **Quarantine.** Delay the message for longer automated examination (for example, when the volume of submissions is unusually large) or for manual moderation. - **Reject.** Deliver nothing. Deleting silently confuses users, generates support requests, and makes debugging miserable, while an open rejection tells spammers what happened. Most providers compromise: they show an error, and keep its wording vague and generic. ## Containment and remediation (Compromised User ID BCP) Returning a compromised account to its rightful owner takes three steps: (1) identify the compromise, (2) remove the inappropriate access and give control back to the owner, and (3) secure the account against a new compromise. Classify each detection by type of compromise, because each type needs different treatment: | Type of compromise | Examples | How to recognize it | Mitigation | Requirements and recommendations | |---|---|---|---|---| | **Temporary credential** | Cookie theft through XSS or sniffing; session hijacking | Limited to the actions the temporary credential allows | Invalidate the temporary credential; the user signs in again with the permanent one | Issue temporary credentials with a limited lifetime; a **mechanism to invalidate them in bulk**; let users invalidate their own suspect sessions | | **Permanent credential, mass exploit** | Accounts sending spam to their contacts or acting as botnet nodes; credentials in a known dump | Large numbers of accounts, exploited in the same way with little customization. A **pattern of earlier good behavior** tells them apart from abusive registrations | Invalidate the compromised credential and make the owner set a new one | Ask for a new password at login; lock the old credential while still letting the owner reset it; a **mechanism to force changes in bulk**; make the change process hard to automate (CAPTCHA, recovery questions) to raise the attacker's cost | | **Permanent credential, customized exploit** | "Stranded traveler" scams: mail to the victim's contacts claiming a mugging abroad and asking for money by wire transfer | Written by hand for each victim, but with many victims; the attacker is socially or physically distant | Always needs **intervention by people**: staff who combine customer service, fraud and technical skills. Sometimes the only option is to cancel the account (when the owner cannot be determined) or to move its contents to a new account | A process to escalate to trained staff; the ability to **freeze accounts whose ownership is disputed**; the ability to transfer account contents | | **Permanent credential, human exploit** | Stalking of celebrities, former partners or family members | On a personal scale; the attacker is physically or socially **close** to the victim and willing to invest a lot of effort | As above: intervention by people | The same: ways to identify and freeze accounts, trained staff, and staff access to the relevant account data | ### Securing against re-compromise After returning the account: - Help the user find and remove **back doors** the attacker left: changed contact details, email forwarding rules, reply-to addresses. - Prevent password reuse, and set stronger password requirements. - Ask the user to turn on **two-factor authentication** where it is available. - Explain to the user how the account was compromised, if you know. - **Notify other providers** if the compromise involves accounts with them. - Encourage the user to use only secure access protocols (for example, IMAPS instead of IMAP). ### Re-compromised accounts Accounts that are compromised again and again need special handling, not the same recovery process once more. The causes can be false positives from flawed detection; compromise of something other than the credentials (the holder's computer, a network they use, or the provider itself); or holders who do not have the skills to protect their credentials. Each cause needs its own handling. For the last one, someone must have the authority to make the business decision: **keep the customer under special requirements, or ask them to take their business elsewhere**. ## Notification and self-service recovery Detection alone prevents nothing. The compromise must be resolved and ownership restored, or the account taken offline. At any real scale, this means an **automated mechanism that forces the user to authenticate again**, ideally one the user can complete without help. The recovery channel must rely on information or access that does **not** fall to the attacker automatically when the main credential is compromised. The mechanisms and their trade-offs: - **Secret questions.** Users know them, but they have drawbacks. Answers are hard to check automatically, because free-form answers vary. Users choose answers that can be guessed ("what color is the sky") or researched ("what school did you go to"). Phishing routinely collects answers to secret questions, so attackers may already have them. Users forget their own answers, especially when answers change over time ("favorite movie"). - **Alternate contact methods**, such as a phone number or a separate email address for recovery codes. They are easy to automate and to understand, but they have drawbacks too. Users are reluctant to share mobile numbers. Entry errors are common, and users often abandon verification. Users make two accounts each other's recovery contact, so when one falls, both fall. Because passwords are reused, the recovery mailbox may be compromised with the same credentials. Users do not update the contact after losing control of it, which turns the safety measure into a way in for attackers. To reduce these risks, require positive verification of the alternate contact, and repeat it periodically. - **Other account information**, such as a postal code, date of birth, location at registration or previous passwords, or for business relationships "what was your last order?" and "what is the serial number on your modem?". No special enrollment is needed. However, providers of free accounts deliberately collect little data that can be verified, so this information is often not available. It is also hard to find data the attacker cannot discover or change from inside the account. Automating these checks can even leak verification data to an attacker who has not yet committed to the attack: for example, showing a set of pictures to choose from reveals that one of them means something to the owner. ## Hosting and infrastructure prevention baseline (Hosting Abuse BCP) Who is responsible for handling abuse depends on the hosting model. The BCP's matrix covers: - **shared hosting**: the provider controls the hardware, operating system and software, and the provider and customer handle abuse together; - **virtual private servers (VPS)**: the provider owns the virtual environment and the operating system, and the customer controls the software and access; - **dedicated or unmanaged hosting**: the customer controls the operating system and software, and abuse issues fall to the customer; - **managed hosting**: the provider controls the whole stack; - **reseller hosting**: customers resell to their own clients, and resellers of resellers add **degrees of separation that slow down abuse handling**. Common types of abuse are outbound spam; websites advertised by spam; phishing, almost always through compromised end-user accounts running outdated scripts; hacked or defaced pages, where most accounts are compromised through outdated CMS installations such as Joomla and WordPress; child sexual abuse material (CSAM); copyright and trademark issues; distributed denial-of-service (DDoS) attacks and other hostile outbound traffic (amplification, botnet command and control); and malicious signups, which become an endless chase across many accounts and platforms. Prevention practices: - **Require customers to keep their software updated**, in the contract: operating system, plugins, CMS, themes, hardware and firmware. Outdated software is one of the main causes of hosting abuse. Agreements should state that it may breach the contract, and automatic updates should be enabled where possible. Encourage regular backups stored securely, so that servers that were broken into can be restored to a known good state. - **Controls at the network edge**: intrusion detection and prevention systems; automated security scanning and penetration testing of web applications; at minimum, a hardware or software firewall on every network. Promote **web application firewalls** (such as ModSecurity) for hosted clients. Managed providers should maintain a core WAF rule set on client servers. - **Password and staff security**: require complex passwords, offer two-factor authentication (2FA), make passwords expire at fairly short intervals, and keep a history of passwords and policies for each client. Security inside the provider is paramount: every measure on the customer side is pointless if staff credentials can be guessed. Follow standards at the level of PCI-DSS. - **IPv6.** Addresses are not scarce, so **give each customer a separate /64**. Even on the smallest shared systems, every customer and website should have a unique address. This makes it easier to trace the source of abuse, lets receivers block one offender without affecting others, and simplifies suspending and restoring service. - **Stay in close contact with customers.** Keep several up-to-date ways to reach them (email, phone, chat, portals) so that notices of compromise actually reach someone. Authenticate ongoing communication with the identity collected during vetting. - **Data security** (Appendix 3). Treat databases of subscriber email addresses as valuable targets for criminals: "criminals rob banks because that's where the money is," and ESPs are where the addresses are. Maintain a complete security program, using OWASP and SANS resources. Some members follow the ISO/IEC 27002:2013 controls for Access Control, Communications and Operations Management, and Incident Management. Never assume that a store is unattractive because it holds "only email addresses". Once outbound abuse is detected, the remediation loop driven by complaints is covered in [Abuse Desk Operations](https://emailmarketing.net/learn/esp-operations/abuse-desk): validate, notify the customer with a citation of the terms of service, allow a remediation window, suspend, and terminate. Fraudulent accounts do not receive the courtesies given to customers. ## Related articles - [Abuse Desk Operations](https://emailmarketing.net/learn/esp-operations/abuse-desk), on report intake and the remediation workflow - [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting), on keeping deliberate bad actors out - [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus), including AuthBL and listings caused by compromise # Customer Domain Authentication in ESP Practice > How major ESPs (Postmark, Amazon SES, SendGrid) actually implement customer sending-domain authentication — on-behalf-of models, CNAME-delegated DKIM, custom MAIL FROM subdomains, link branding, verification flows, and customer DNS failure modes. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-operations/customer-domain-authentication If you run an ESP, every customer who wants to send from their own domain has to publish DNS records that you issue, and your platform has to verify those records and keep checking them. Postmark, Amazon SES and Twilio SendGrid document how they do this, and their implementations are described below. The [M3AAWG Sending Domains BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-sending-domains) defines three models of DNS delegation (direct, CNAME and NS) in general terms. Every pattern below is a concrete case of the **direct** or the **CNAME** model. The protocols themselves are explained in [SPF](https://emailmarketing.net/learn/authentication/spf), [DKIM](https://emailmarketing.net/learn/authentication/dkim) and [DMARC](https://emailmarketing.net/learn/authentication/dmarc). ## The three "sending on behalf of" models (Postmark) When a platform or agency sends email for its customers, Postmark identifies three models. Each trades the quality of authentication against the effort asked of the customer: | Model | Authentication | Customer effort | Result | |---|---|---|---| | 1. Fully aligned customer domain | The customer publishes a DKIM TXT record and a Return-Path CNAME in their DNS | High. DNS access is required, with "significant development" or manual work for each customer | Full alignment, which "maximizes your customers' opportunity for reliable delivery" | | 2. Verified From address only | The customer confirms ownership through a verification email. The domain is not verified for DKIM or Return-Path | Low: click a link | Mail clients show "via" or "on behalf of" labels. Sending is restricted to the verified address. Not all providers offer it | | 3. Custom From name on the platform's own domain | None on the customer's domain. Mail is sent from the platform's domain with a customized display name (for example, "Jane at Howdy") and a separate Reply-To | None | The weakest branding, with the risk that "some email clients will aggressively add new contacts… with the wrong email address". Reduce the risk with display names such as "Jane Customer via (vendor)" | Postmark's advice on choosing is that it "depends on your priorities and how much access your customers allow". Start with one model and add others as customers ask for them. ### Model 1 automated via API (the multi-tenant flow) Postmark's API flow is a template for the automated onboarding of customer domains that any ESP builds: 1. **Add the domain** with a `POST` to the Domains API: ```json { "Name": "customerdomain.com", "ReturnPathDomain": "pm-bounces.customerdomain.com" } ``` 2. **Give the customer their DNS records.** The API response contains the values to show in your own onboarding interface: - `DKIMPendingHost` (DNS host, **TXT** type) with `DKIMPendingTextValue` - `ReturnPathDomain` (DNS host, **CNAME** type) with `ReturnPathDomainCNAMEValue` 3. **Poll or trigger verification** with `PUT https://api.postmarkapp.com/domains/{domainid}/verifyDkim` and the account token. Postmark quotes **up to 48 hours** of DNS propagation before DKIM shows as verified. Once a domain is verified, the customer can send from **any address on that domain**, with no verification of individual addresses. The custom Return-Path CNAME exists specifically "to meet this requirement for [DMARC](https://emailmarketing.net/learn/authentication/dmarc) alignment": it puts an SPF-aligned Return-Path on the customer's domain instead of the ESP's bounce domain. ### Sender-signature (per-address) verification This is Model 2 in Postmark's interface. You enter a From address (and optionally a From name and Reply-To), a confirmation email is sent to that address, and the owner clicks to activate it. A **"Personal note" field** lets the platform add context to the confirmation email, which is "helpful if you're sending on behalf of a customer that might not know you're using Postmark for email." Amazon SES has exactly the same problem and solves it with **custom verification email templates** (the `CreateCustomVerificationEmailTemplate` and `SendCustomVerificationEmail` APIs, up to 50 templates per account, HTML limited to an allowlist of tags, and production access required). Platforms that send through SES for their customers rebrand the verification email, so that end users who "never signed up to use Amazon SES directly" are not confused by AWS branding. In SES, verification links expire after **24 hours**. Addresses are case-sensitive, and domains are not. ### Multi-tenant isolation Postmark recommends **one server for each client**, each with up to **10 message streams** (transactional and broadcast mail in separate streams, with broadcast on subdomains as best practice). This keeps each customer's statistics, bounces and suppressions separate. For bounce handling, Bounce Webhooks (transactional) and Subscription Change Webhooks (broadcast) let the platform show hard bounces to customers in real time. Hard bounces can be reactivated through the Suppressions API, but **only Postmark Support can lift suppressions caused by spam complaints**. ## Easy-DKIM-style CNAME delegation (Amazon SES) SES's Easy DKIM is the standard implementation, for DKIM, of the [M3AAWG CNAME delegation model](https://emailmarketing.net/learn/industry-best-practices/m3aawg-sending-domains#2-cname-delegation--preferred-by-esps). The ESP generates and holds the key pair, and the customer publishes CNAME records so that the ESP can rotate keys without any further action from the customer. - The customer publishes **three CNAME records** of this form: ``` {token}._domainkey.customerdomain.com CNAME {token}.dkim.amazonses.com ``` (The suffix of the hosted zone varies by region and cell, for example `{token}.{cell}.dkim.{region}.amazonses.com`. The API returns it as `SigningHostedZone` in `DkimAttributes`, so onboarding code should build `{token}.{SigningHostedZone}` rather than hard-code the suffix.) - Key length: **2048-bit RSA by default**, with 1024 available for DNS providers that cannot hold 2048-bit records. Changes of key length are limited. You cannot switch to the length already configured, and you can make no more than **one switch every 24 hours** (except for the first downgrade to 1024), because a key that is invalidated too quickly breaks verification of mail still in transit. - SES watches DNS for **up to 72 hours**. When all three CNAME records resolve, the identity becomes Verified and every message from that identity is signed automatically. - **In SES, verifying the domain and verifying DKIM are the same step.** Proving control of the CNAME records proves ownership of the domain, and no separate ownership TXT record is needed. - **Inheritance**: DKIM configured on a domain applies to all its subdomains and all addresses on it. Identities for a subdomain or an email address can override the inherited signing by disabling it or enabling it again. SES warns that disabling DKIM "risks tarnishing your sender reputation." Settings apply at the most specific verified level: an address takes precedence over a lower subdomain, which takes precedence over a higher subdomain, which takes precedence over the domain. - DKIM is needed only on the **domain of the From address**, not on the Return-Path or Reply-To domains. - **Setup for each region**: identities belong to a region. Sending the same domain from several AWS regions requires separate verification (and separate DNS tokens) in each region, because the validation records differ by region. The limit is 10,000 verified identities per region. - **DEED (Deterministic Easy DKIM)** removes the need for DNS records in each region. A replica identity in another region inherits the Easy DKIM signing attributes of the parent region with **no additional DNS setup**. Other options offer different levels of control: | Option | Who holds the private key | Customer DNS record | Notes | |---|---|---|---| | Easy DKIM | ESP (SES) | 3 CNAMEs into `*.dkim.amazonses.com` | The ESP can rotate keys without the customer noticing | | BYODKIM | The customer gives the key pair to SES | 1 TXT: `{selector}._domainkey.domain` with `p={publicKey}` (strip the PEM header, footer and line breaks, and keep the `p=` prefix) | The key must be RSA **1024–2048 bits**, in base64 or PEM | | Manual signing | Customer application | Whatever the customer publishes | Sign the mail yourself and send it with `SendRawEmail` | **Migration hazard**: switching from BYODKIM to Easy DKIM leaves a window in which mail goes out **unsigned** while Easy DKIM is pending. SES advises an intermediate step (for example, keeping a BYODKIM subdomain until Easy DKIM is verified) or making the switch during downtime. The general lesson for ESPs is to never remove the old signing path before the new one is verified. ## Custom MAIL FROM (Return-Path) subdomains (Amazon SES) By default, SES uses a subdomain of `amazonses.com` as the MAIL FROM domain. SPF passes, but on Amazon's domain, so it can never be **SPF-aligned** for the customer's DMARC. A custom MAIL FROM domain fixes that. The requirements: - It must be a **subdomain** of the parent domain of the verified identity (for example, `bounce.customerdomain.com`). - It must **not** be used for anything else: not a subdomain you send from, and not one you receive mail on. - The customer must publish these records on the MAIL FROM subdomain: | Host | Type | Value | |---|---|---| | `bounce.customerdomain.com` | MX | `10 feedback-smtp.{region}.amazonses.com` (for example `feedback-smtp.us-east-1.amazonses.com`) | | `bounce.customerdomain.com` | TXT (SPF) | `"v=spf1 include:amazonses.com ~all"` | - **Exactly one MX record.** Several MX records on the MAIL FROM subdomain make the setup fail. The MX record exists so that the subdomain can receive the bounce and complaint notifications that receivers send to the envelope sender. - The SPF record goes on the **MAIL FROM subdomain**, not on the apex, and it does not need to copy the apex SPF record (compare [SPF](https://emailmarketing.net/learn/authentication/spf): SPF is evaluated against the RFC5321.MailFrom domain). - **Behavior when the MX record fails** is a policy choice for each identity, and every ESP should offer it: - `UseDefaultValue`: fall back to the ESP's default MAIL FROM (a subdomain of `amazonses.com`). Mail keeps flowing but loses SPF alignment. - `RejectMessage`: return `MailFromDomainNotVerified` and refuse to send. This is strict, and it protects the alignment guarantee. - **Setup states** (SES sends an account notification at every change of state): | State | Sending behavior | SES action | |---|---|---| | Pending | Fallback setting | Checks DNS for the MX record for 72 h; otherwise moves to Failed | | Success | Custom MAIL FROM used | Keeps re-checking the MX record | | TemporaryFailure | Fallback setting | Checks for 72 h, then moves to Success or Failed | | Failed | Fallback setting | Checking stops, and the customer must start the setup again | The continuous re-checking and the TemporaryFailure state show the practice to follow. Customer DNS records disappear after the first verification (during zone migrations or changes of DNS provider), so verification must be ongoing monitoring, not a one-time gate. SES also supports **address labels (VERP)** on verified identities (`sender+label@domain` works without extra verification) for attributing bounces. ## Automated domain authentication, link branding and custom return path (SendGrid) SendGrid puts the whole delegation package under "domain authentication", with an **Automated Security** switch that chooses between the M3AAWG CNAME model (on) and the direct model (off). ### Automated security ON (CNAME delegation, the default) | Host | Type | Value | Purpose | |---|---|---|---| | `em1234.customerdomain.com` | CNAME | `u1234567.wl123.sendgrid.net` | Mail and bounce subdomain. The return path and SPF resolution are delegated to SendGrid | | `s1._domainkey.customerdomain.com` | CNAME | `s1.domainkey.u1234567.wl123.sendgrid.net` | DKIM key 1 | | `s2._domainkey.customerdomain.com` | CNAME | `s2.domainkey.u1234567.wl123.sendgrid.net` | DKIM key 2 (spare for rotation) | | `_dmarc.customerdomain.com` | TXT | `v=DMARC1; p=none;` | Starter DMARC record | SendGrid maintains the targets, so SPF changes (for example, new sending IP addresses) and DKIM rotation take effect automatically, with no edits to the customer's DNS. One constraint applies: "If your DNS provider doesn't accept underscores in CNAME records, you can't use Automated Security." ### Automated security OFF (direct records) | Host | Type | Value | |---|---|---| | `em1234.customerdomain.com` | MX | `mx.sendgrid.net.` | | `em1234.customerdomain.com` | TXT | `v=spf1 include:sendgrid.net ~all` | | `m1._domainkey.customerdomain.com` | TXT | `k=rsa; t=s; p=MIG…` | | `_dmarc.customerdomain.com` | TXT | `v=DMARC1; p=none;` | The customer is now responsible for updates, and any change of IP address or key on the ESP's side requires the customer to edit their DNS by hand. This trade-off, between automatic updates and the need for DNS that accepts underscores in CNAME records, is exactly the difference between the direct and CNAME models in the [M3AAWG BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-sending-domains#dns-setup-three-delegation-models). ### Custom return path - The default bounce subdomain is `em####` (four random letters and digits). Advanced Settings let the customer choose the label (for example, `bounces.customerdomain.com`), but **only at initial setup**. An existing domain authentication cannot be edited to use a custom return path; delete it and create it again. - Why it matters: with **strict SPF alignment** (`aspf=s` in the DMARC record), the From domain must exactly match the Return-Path domain. A From address `@example.com` with a return path `@em1234.example.com` fails strict alignment and causes rejections such as `550 5.7.26 Unauthenticated email from domain.com is not accepted due to domain's DMARC policy`. A custom return path lets From and Return-Path share the same subdomain. (Under relaxed alignment, the default `em####` subdomain already aligns at the organizational level; see [DMARC](https://emailmarketing.net/learn/authentication/dmarc).) - SendGrid warns that the generated CNAME "may overwrite existing DNS records" with the same name, so check for collisions before publishing. ### Custom DKIM selector The default selectors are `s1` and `s2` (or the older `s`). A custom alphanumeric selector of **three characters** (for example, `org` or `001`) covers two cases. The first is authenticating the same domain more than once (several SendGrid accounts or subusers on one brand domain). The second is avoiding collisions with other services that already use the selector `s` on that domain, which is the everyday reality of several ESPs on one domain described in [selector hygiene](https://emailmarketing.net/learn/authentication/dkim). ### Link branding (branded tracking domains) Without link branding, tracked links and open-tracking pixels point to `sendgrid.net`. "Spam filters and inbox providers look at the links within email messages" and score the reputation of the link domain, so link domains that do not match the sender reduce trust. Link branding publishes **CNAME pairs** such as `url1234.customerdomain.com → `, so that tracking URLs are on the customer's domain. A custom label can replace the automatically generated subdomain. Requirements and pitfalls: - **TLS certificate**: "Add a TLS certificate to the domain or subdomain that serves your links". Branded links must serve HTTPS. In practice, ESPs put a CDN or proxy in front of the tracking host to terminate TLS for customer hostnames. - Cloudflare users must turn on "Flatten CNAME at root" for setups at the root of the domain. - Link branding depends on the plan (Email API Pro and above, or Marketing Campaigns Advanced and above), and domains pinned to the EU have regional restrictions. - Branded links created before 2015 cannot be modified; delete them and create them again (the same applies to domains authenticated before 2015). ### SendGrid scope rules and limits - Authenticate the **root domain only** (`example.com`, with no `www` and no protocol). Sending is then allowed from that domain, but "**subdomains don't inherit authentication permissions**". This is the opposite of the SES model of inheritance, so check each vendor's behavior rather than assume it. - Up to **3,000 authenticated domains and 3,000 link brandings** for each user, and also for each subuser. - Verification: add the records, then click **Verify**. Propagation can take "up to 48 hours". Verification can partly succeed when one record in the set is wrong. If the domain is still not verified after 48 h, contact support. ## DNS verification flows: the common shape Across all three vendors, every ESP implements the same flow: 1. **Generate** a set of records for each customer, with tokens or selectors specific to each tenant (SES DKIM tokens, SendGrid `u{userid}.wl{id}` targets, Postmark's `pm-bounces` CNAME). 2. **Present** the exact host, type and value of each record in both the interface and the API (SES also offers a CSV download), so that the platform can embed them in its own onboarding. 3. **Poll DNS** within an explicit time budget, from 48 h (Postmark, SendGrid) to 72 h (SES), with a manual "Verify" button to retry. 4. **Notify** the customer when the state changes (SES sends an email at every change of MAIL FROM state). 5. **Keep monitoring** after success (SES keeps re-checking the MX record, and SendGrid pushes changes to record values through the CNAME records). Verification is continuous, not a one-time event. ## Common customer DNS failure modes These causes of "records added but never verifies" are documented by the vendors, and are worth building into any ESP's troubleshooting interface: | Failure mode | Symptom | Fix | |---|---|---| | **The DNS provider appends the domain automatically** (documented by SendGrid for GoDaddy, Route 53 and Namecheap; SES documents the general case) | `em123.example.com` is stored as `em123.example.com.example.com` | Enter only the host part (`em123`), or end the value with a trailing dot to mark it as fully qualified | | **Underscores rejected in record names** | DKIM records (`x._domainkey…`) cannot be created | The underscore is mandatory. Escalate to the DNS provider's support (SES), or with SendGrid fall back to Automated Security OFF (its TXT and MX records need no underscore in a CNAME) | | **An extra leading underscore is added** | `_abc123._domainkey.domain.com` instead of `abc123._domainkey.domain.com` | Use record names exactly as issued. `_domainkey` is the only label with an underscore in Easy DKIM CNAME records | | **Confusing field names in DNS interfaces** | Values in the wrong fields | "Name" or "host" may be labeled Host or Hostname, and "Record value" may be labeled Points to or Result (SES) | | **MX priority entered incorrectly** | MAIL FROM never verifies | In most DNS interfaces, the `10` preference goes in a separate field, not in the hostname value | | **Several MX records on the bounce subdomain** | SES custom MAIL FROM setup fails | Use exactly one MX record on the MAIL FROM subdomain | | **Quotation marks on TXT values** | The SPF TXT record is rejected or ends up with double quotes | Some providers require the quotes, and some forbid them (SES) | | **Leftover PEM text in BYODKIM keys** | The `p=` value is invalid | Remove the `-----BEGIN/END-----` lines and all line breaks, to leave a single unbroken string | | **Records for the wrong region** | Verified in one AWS region, not in another | SES validation records differ by region. Verify again in each region (or use DEED) | | **CNAME collision** | An existing record with the same name is silently overwritten or blocks the new one | Audit the zone before publishing CNAME records issued by the ESP (SendGrid warning) | | **`www.` included at setup** | Domain verification "won't succeed" | Enter `example.com`, never `www.example.com` (SES) | | **Impatience** | The records are correct but still pending | Allow the propagation budget, 48 h (Postmark and SendGrid) or 72 h (SES), before treating the setup as failed | ## Related articles - [M3AAWG Sending Domains BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-sending-domains), the industry framing: three delegation models, subdomain segmentation and migration - [SPF](https://emailmarketing.net/learn/authentication/spf) - [DKIM](https://emailmarketing.net/learn/authentication/dkim) - [DMARC](https://emailmarketing.net/learn/authentication/dmarc) - [DMARC Deployment](https://emailmarketing.net/learn/authentication/dmarc-deployment) - [Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices), on subdomain strategy and the four domains in a message - [Content & Design for Deliverability](https://emailmarketing.net/learn/operations/content-and-design-for-deliverability), on why the reputation of link domains (branded tracking) affects filtering # Customer Offboarding and Deprovisioning (Voluntary) > The runbook for winding down a customer who is leaving on good terms — draining in-flight mail, relinquishing or quarantining their dedicated IPs, retiring their sending subdomain and DKIM selectors, reconciling suppression retention against a GDPR erasure request, and revoking access — as distinct from abuse termination. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-operations/customer-offboarding When a customer leaves on good terms, you still have to wind down their sending, their IP addresses and their data. The customer may have reached the end of a contract, be moving to another platform, or be closing their business. For accounts you close for a breach of the acceptable use policy (AUP), which move from a pause to suspension and then termination, see [Account Enforcement](https://emailmarketing.net/learn/esp-operations/account-enforcement). For removing a tenant who damaged a shared pool, see [Pool Recovery](https://emailmarketing.net/learn/esp-operations/pool-recovery). The end state is the same in every case: no sending identity, no live IP addresses, no orphaned DNS records, and revoked credentials. When the customer is leaving voluntarily, the pace is cooperative. The goal is an orderly wind-down that protects the customer's reputation at their next platform, the platform's shared reputation, and the platform's data protection obligations. This runbook adds no new mechanics. Each phase puts in order a procedure that is documented in full elsewhere and links to it. If a voluntary exit has to move faster, because abuse is suspected or the customer has not paid, switch to the shorter ladder in [Account Enforcement](https://emailmarketing.net/learn/esp-operations/account-enforcement). ## Preconditions Before you change anything, confirm and record: - **That the offboarding is genuinely voluntary.** An abuse exit presented as a voluntary one follows [Account Enforcement](https://emailmarketing.net/learn/esp-operations/account-enforcement). - **The effective cut-off date**, and whether the customer needs a read-only grace period after the last send, for reporting or data export. - **Whether the IP addresses are dedicated or shared.** A customer on the shared pool has no IP address to give up, so skip Phase 3. A customer on dedicated IP addresses leaves a warmed asset, and the platform must decide how to recover it. - **Whether the customer's sending domain is delegated** to the platform: DKIM delegated by CNAME, a custom MAIL FROM or return-path subdomain, or CNAME records for link branding. Those DNS records live in the customer's zone, so the customer must remove them when you tell them to. - **Any outstanding obligations to data subjects.** A pending erasure request changes how the final data is handled (see Phase 4). ## Phase 1: Stop new sends and drain in-flight mail 1. **Close intake first, not the queue.** Disable API keys and SMTP credentials for new submissions (see Phase 5) so that no new mail comes in, but let the mail transfer agent (MTA) finish what it has already accepted. Killing the queue while mail is in flight strands messages that were accepted but not transmitted. The loss is silent, the customer will rightly complain about it, and some recipients may receive only part of a send. 2. **Let queued and deferred mail drain naturally.** Let the normal retry schedule run until each message is delivered or expires, so that recipients whose mail was temporarily deferred still receive it. Set a **drain deadline** that matches your MTA's maximum retry window (commonly ~72h). After it, bounce or expire the mail still in the queue rather than holding it indefinitely. 3. **Keep suppression checks running during the drain.** Mail in flight must still respect bounce, complaint and unsubscribe suppression up to the last message. Do not switch off the suppression layer as part of the teardown ([Suppression-List Architecture](https://emailmarketing.net/learn/esp-operations/suppression-list-architecture)). 4. **Confirm the queue is empty** before you move on to IP and DNS teardown. If you retire authentication or IP addresses while mail is still draining, the final messages will fail authentication or leave from an IP address you have already taken back. ## Phase 2: Retire the sending subdomain and DKIM selectors Removing authentication reverses the onboarding steps in [Customer Domain Authentication](https://emailmarketing.net/learn/esp-operations/customer-domain-authentication). Do it only after the queue has drained (Phase 1), because removing these records early breaks alignment on the customer's own last legitimate mail. - **Remove DNS records after the last send, and agree who owns each record.** The customer must remove the records in their own zone: delegated DKIM CNAME records, the custom MAIL FROM or return-path subdomain, and link-branding CNAME records. Give them an explicit list and a date after which removal is safe. You remove the records in the platform's zone. - **Retire DKIM selectors deliberately.** Stop signing with the customer's selectors, then remove or retire each selector's public key. Follow the retirement practice in [DKIM Key Rotation](https://emailmarketing.net/learn/authentication/dkim-key-rotation). Leave a selector's public key published for a short time after you stop signing, so that any last message in flight or replayed still verifies, and then withdraw it. Do not remove the key the moment sending stops. Never publish an empty `p=` and leave it as the customer's live selector. - **Do not leave orphaned DNS records.** A delegated subdomain or link-branding CNAME that still points at the platform after the customer leaves is a risk of takeover through a dangling record, and a source of mail wrongly attributed in future. The offboarding checklist is not complete until the customer confirms that every delegated record is removed. - **Warn the customer about DMARC.** If the customer's DMARC alignment depended on your delegated subdomain, tell them that removing these records will affect their DMARC pass rate on any other mail streams that use the same domain. Managing that is their job, but tell them. ## Phase 3: What to do with dedicated IP addresses (dedicated IP customers only) A customer leaving a dedicated IP address leaves behind a warmed IP address that carries the reputation built by their sending. Treat it as an asset with a reputation, not as free inventory to give to the next tenant. - **Quarantine the IP address before reusing it.** Do not reassign it to another customer immediately. The new customer would inherit the departing customer's reputation history, which is the recycled IP problem described in [IP Acquisition Diligence](https://emailmarketing.net/learn/esp-operations/ip-acquisition-diligence). Let the IP address cool down, with no sending. Then treat any reassignment as a **recycled IP address**: run the reputation and blocklist checks before reuse, and warm it up again, as if you had acquired it from outside. - **Give it up or keep it.** If the IP address is leased or transferred space that you will return, follow the return process in [IP Acquisition Diligence](https://emailmarketing.net/learn/esp-operations/ip-acquisition-diligence). If you keep it, take it out of all active pools until it is reassigned, and warm it up again when you reuse it. - **Check its blocklist status as the customer leaves.** Confirm the IP address is clean before you set it aside or return it. The departing customer's final sends may have earned a listing that you, not they, will otherwise carry into the next assignment. For delisting, see [Reputation Monitoring, the delisting workflow](https://emailmarketing.net/learn/operations/reputation-monitoring#blocklist-delisting-workflow). - **If the customer was on a shared pool**, there is no IP address to recover. Do watch the pool's aggregate metrics for a sudden change once their volume leaves, because the departure of a large tenant changes the pool's mix. [Pool Recovery](https://emailmarketing.net/learn/esp-operations/pool-recovery) covers a poisoned pool; this is the harmless version of the same shift in volume. ## Phase 4: Final data handling, and reconciling suppression with erasure Most teardown checklists get this phase wrong, because two obligations pull in opposite directions. - **Offer an export of the suppression list.** The customer should be able to take their suppression list to their next platform, with bounces and complaints and the reason and origin of each entry. The export mechanics, and the cautions about incoming bulk jobs that remove entries, are in [Suppression-List Architecture, bulk transfer](https://emailmarketing.net/learn/esp-operations/suppression-list-architecture#bulk-transfer-importexport-mechanics--ses-pattern). - **Reconcile retention with erasure.** "Delete all this customer's data when they leave" conflicts with "never mail these addresses again", for people who opted out or complained. Deleting the suppression records that guarantee a person is never mailed again can expose those people to mail once more. This is a legal question, not an operational preference. [GDPR and ESP Suppression Lists](https://emailmarketing.net/learn/compliance/gdpr-and-suppression-lists) explains when suppressing or keeping an address keeps the ESP a **Data Processor** and when it turns it into a **Data Controller**. It also explains why a minimal suppression record (a hash of the address, the reason for suppression and the date, nothing more) can lawfully survive an erasure request, as the least intrusive way to honor the opt-out. For requests to object or to erase, see [Right to Object and Erasure](https://emailmarketing.net/learn/compliance/right-to-object-and-erasure). - **The practical rule that follows from the legal analysis.** When a customer leaves, delete the data used for sending (contact lists, campaign content, and personal data held to make sending possible), as the contract and the customer's instructions require. Keep the minimal suppression record unless your lawyers or the controller relationship say otherwise, and document the basis for the decision. Do not purge suppression data silently as a side effect of deleting the account. - **Honor the retention and return terms in the contract** for logs, analytics and personal data, and record what was deleted, what was kept, and why. ## Phase 5: Revoke access and credentials Do this last, once mail has drained (Phase 1) and data handling is settled (Phase 4): - **Revoke all sending credentials**: API keys, SMTP users, OAuth tokens and webhook signing secrets. If you granted a read-only grace period for export, limit the remaining credentials to read-only access and make them expire at the end of the grace period. - **Revoke console access** for the customer's staff, and remove any single sign-on (SSO) or federated identity mapping. - **Disable webhooks and callbacks** that point at the customer's endpoints. - **Delete the tenant container last.** Deleting the tenant also deletes the suppression entries scoped to it ([Suppression-List Architecture](https://emailmarketing.net/learn/esp-operations/suppression-list-architecture)), so this must come after the export and retention decision in Phase 4, never before. - **Record the closure**: the final send date, what happened to the IP addresses, confirmations that DNS records were removed, and the data actions taken. This record protects the platform if a question comes up months later. ## Ordering, in one line Close intake, drain the queue, retire authentication and DNS, dispose of the IP addresses, settle the data (export, then reconcile suppression with erasure), and finally revoke access and delete the tenant. Each step assumes the one before it is finished. Changing the order strands mail, breaks alignment on the final sends, or purges suppression data you were required to keep. ## Related articles - [Account Enforcement](https://emailmarketing.net/learn/esp-operations/account-enforcement), for an involuntary or hostile exit - [Pool Recovery](https://emailmarketing.net/learn/esp-operations/pool-recovery), on removing a tenant who damaged a shared pool (the severe version of Phase 3) - [IP Acquisition Diligence](https://emailmarketing.net/learn/esp-operations/ip-acquisition-diligence), on why a recovered dedicated IP address must be treated as recycled - [Customer Domain Authentication](https://emailmarketing.net/learn/esp-operations/customer-domain-authentication) - [DKIM Key Rotation](https://emailmarketing.net/learn/authentication/dkim-key-rotation), on retiring selectors in Phase 2 - [GDPR and ESP Suppression Lists](https://emailmarketing.net/learn/compliance/gdpr-and-suppression-lists), the legal answer for Phase 4 - [Right to Object and Erasure](https://emailmarketing.net/learn/compliance/right-to-object-and-erasure) - [Suppression-List Architecture](https://emailmarketing.net/learn/esp-operations/suppression-list-architecture) # Customer Vetting for ESPs > The M3AAWG Vetting BCP digested — pre-send vetting questionnaires (corporate entity, infrastructure, sending history, list practices), red flags, the test-send methodology, ongoing post-send monitoring triggers, and vetting tools (WHOIS, D&B, PACER). Source: emailmarketing.net — https://emailmarketing.net/learn/esp-operations/customer-vetting If you run an email service provider (ESP), one customer with bad practices can damage delivery for all your other customers. Vetting customers before they send, and continuing to watch them once they do, is how you keep those customers off your platform. The [M³AAWG Senders BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp) makes both **pre-send** and **post-send** customer vetting mandatory for ESPs. The document it points to is the **MAAWG Vetting Best Common Practices (BCP)** of November 2011, a methodology guide to "how it's done", assembled from the vetting programs of M³AAWG member ESPs. It deliberately does **not** prescribe specific metrics such as complaint-rate thresholds (for those, see [Metrics & Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks)), because not every technique fits every size of ESP or client. The last section adds the fraud-prevention practices from the M³AAWG Hosting Abuse BCP (March 2015) that apply to ESP onboarding. ## Why vet - ESPs that send on behalf of clients are **at the mercy of their worst clients' worst practices**. E-appending, badly run affiliate programs and past data corruption damage delivery and reputation not only for the problem sender but for **all** the ESP's other clients, because they share IP addresses, domains and the ESP's brand with mailbox providers. - Pre-send vetting prevents damage to recipient domains and to the ESP's own sending reputation. Post-send vetting catches bad clients who passed the initial assessment. - Vetting also helps develop clients. Analyzing in depth how a prospect builds and maintains its lists reveals issues that can be corrected, and the process is the ESP's best opportunity to coach prospects and existing clients on best practices and compliance. ## Pre-send vetting questionnaires These question sets help customer-facing staff (sales, compliance) decide whether a prospect qualifies for service. Each question comes with its rationale and red flags. ### Corporate entity formation and history 1. Name and address of the company? 2. How long has the company operated? 3. Any additional names or locations, now or in the past? 4. Who are the principals? 5. Who will be the primary point of contact? Verification: commercial entities generally must file with their local taxation authority, in the form of articles of formation, a business license, or DBA (assumed-name) filings. In the US these filings sit with the state Department of State, and most states offer free online access. **Red flags**: no filings, especially when the prospect claims a long business history; a very short history; principals who form and dissolve several entities within a short period. ### Infrastructure and process 1. **Have you worked with an ESP before? Which one, and why did you leave?** Several previous ESPs, or leaving "for deliverability reasons", should generally be treated as red flags. Find out the real reason for switching. 2. **Which IP addresses did you mail from before?** Check the reputation history of those IP addresses. IP addresses that were blocked or damaged before are a problem signal to investigate. 3. **Which domains do you own and use for mailing? How long have you owned them? Are they registered with anonymized WHOIS?** Hiding behind anonymized registration is a common tactic of abusive senders. Legitimate permission-based senders have no need to hide their corporate contact information. 4. **Do you monitor role accounts (`postmaster@`, `abuse@`)? Who manages them?** Complaints arrive at these addresses whatever the quality of the list. Maintaining and monitoring them is an industry best practice under RFC 2142 (see [Abuse Desk Operations](https://emailmarketing.net/learn/esp-operations/abuse-desk)). 5. **Do you control your DNS? Do you use any authentication protocols?** Control of DNS means the sender can publish [SPF](https://emailmarketing.net/learn/authentication/spf) and [DKIM](https://emailmarketing.net/learn/authentication/dkim) records that authorize the ESP. ### Sending history and patterns 1. **What types of messages do you send, and in what proportions? Can we see samples?** Promotional and marketing mail draws higher complaint rates and more delivery issues than transactional or alert mail, even at the same level of permission. The mix sets expectations for how often issues will occur and how serious they will be. 2. **Do you segment, or send to the whole list? What are your segmentation criteria?** Segmented, targeted campaigns perform better than generic sends to the full list. 3. **How often do you mail, and when was your last send?** Mail that is timely, relevant and expected, at the frequency recipients expect, produces fewer issues. A list that has been dormant for a long time is itself a risk (see [List Hygiene](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies)). 4. **Do you share your list with partners, advertisers or other brands, or send on behalf of third parties? Do you disclose sharing when you collect addresses, and how?** Unexpected mail from third parties generates complaints even from recipients who gave strong permission. 5. **Do you do affiliate marketing? Is the program your own or managed by a third party (for example, Commission Junction)?** Affiliate mail deserves extra scrutiny, because the category has historically been a vector for abuse. Programs run by well-known, reputable third parties are typically less problematic than programs companies run themselves. 6. **Have you ever appeared on a blocklist? Why were you listed, and how did you address it?** Constructive answers involve reviewing how the list was acquired and cleaned, and tightening practices. **Any answer that hints at changing infrastructure to evade a listing is a red flag.** (See [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus).) 7. **What were your metrics for the last 3 months (deliverability, complaints and so on)?** Past performance indicates list quality. A poor history means the list was badly assembled or maintained, and it calls for extra scrutiny. ### List, data collection and management practices 1. **How do recipients opt in? List every collection point, online and offline, and how consent or notice is given at each one.** Senders should keep an **auditable trail** that shows the method, date and source of permission for each recipient or group. 2. **Were you, or your previous ESP, enrolled in feedback loops (FBLs)? What did you do about complaints?** Best practice is to unsubscribe people who complain and investigate the root cause. A complaint may reveal that permission was gathered poorly. In that case, expect the sender to have reviewed how permission was collected for that recipient and for groups sourced the same way, and possibly to have asked them to confirm again. Where permission is strong, a complaint may instead be an unsubscribe in the wrong form, signaling that content or frequency did not meet expectations. 3. **How did you manage unsubscribes? Have unsubscribed addresses been removed from the list you are bringing to us?** Removal is a legal requirement in the US, Canada and the EU. Suppression lists must be maintained and **portable to new sending platforms**. 4. **How did you manage bounces? Did you treat hard bounces (5xx) and soft bounces (4xx) differently?** Best practice is to remove addresses that hard-bounce several times within a given period (the previous ESP may have done this automatically). Recurring high rates of generic soft bounces indicate content or reputation problems, and the prospect should have resolved persistent soft bounces. (See [DSNs](https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications).) 5. **Have you ever purchased a list? Have you used rented lists, affiliate marketing or co-registration?** **A yes to any of these is a red flag.** Purchased lists are addresses that never consented, and many ESPs prohibit them outright. Review every list a customer supplies for signs of purchase, such as column headers containing terms like **"jigsaw"** or **"append"**. Co-registration may technically be based on permission, but that permission is usually uninformed, and such lists perform about as badly as purchased ones. Ask too whether the prospect sends cold email, meaning unsolicited mail to people with no prior relationship. Version 4.0 of the [M3AAWG Sender Best Common Practices](https://www.m3aawg.org/senderbcp) (August 2026) regards cold email as abusive, even from an otherwise legitimate business. 6. **Does the list contain distribution or role accounts (`sales@`, `staff@`, `support@`)? May we review the list before we provision your account?** Role accounts are almost never used to opt in, so their presence indicates poor acquisition, including purchase. Review supplied lists for role accounts and **known trap addresses** (see [Spam Traps](https://emailmarketing.net/learn/reference/spam-traps)). 7. **Do you publish a privacy policy on your website?** No privacy policy is a red flag. Where one exists, check that it does not contradict the practices described in the answers to the questionnaire. ## Post-send vetting ### Test send Once pre-send vetting is satisfactory, allow a **test send to a small, randomly selected segment** of the prospect's lists before you give it full production access. The size depends on the total size of the list, but **tests to fewer than ~10,000 recipients may not give statistically significant results**. After the test, review these metrics (the same set you use to monitor customers on an ongoing basis): - Overall bounce rate - Relative percentage of the various bounce types - Open and click-through rates - Unsubscribe rate - Direct complaints - Opt-out comments - Spam complaint rate - Complaint rate by domain or FBL **Any metric that differs significantly from existing senders of similar mail deserves extra scrutiny.** ### Ongoing monitoring triggers Once a customer is vetted and provisioned, keep monitoring the same metrics, and watch closely for: - **Significant, sudden increases in list size** - **Content changes following significant changes in metrics** - **Privacy-policy changes following significant changes in metrics or volume** - **Frequent changes of customer contact or payment information** - **Activity that stops and starts**, which may be an attempt to spread poor reputation metrics across more than one ESP ## Tools and resources ### WHOIS Use WHOIS during vetting to check that the prospect represents its domains correctly and openly. The M³AAWG best practice for senders is that domain ownership should show **verifiable information, not information obscured or hidden behind a privacy proxy with a P.O. box**. WHOIS also lets you verify the contact information for a company's abuse desk. - **Good registration** pattern: the registrant is the actual company with a real street address. The administrative and technical contacts name the organization, with working role email addresses (`info@`, `dnsadmin@`) and phone numbers. - **Bad registration** pattern: the registrant is a privacy proxy service ("I am a Proxy, Inc."), the address is a P.O. box, contact emails are routed through the proxy (`EXAMPLE.COM@iamaproxy.proxy`), and the phone and fax numbers are placeholders. (A caveat from 2011: since GDPR, WHOIS redaction has made registrant data much less available than when the BCP was written. The principle, that a sender's identity should be transparent, still applies. Check it through RDAP, business registries and direct verification.) ### Corporate-entity research | Tool | Use | |---|---| | Dun & Bradstreet (dnb.com) | Business information | | LexisNexis Risk Solutions | Financial and background information | | Better Business Bureau | Complaints against a business | | PACER (pacer.gov) | Records of US appellate, district and bankruptcy courts: was the entity or a principal a party to legal action about email? | | State Department of State filings | Formation documents, licenses, DBA filings (mostly free online) | ## Fraud-prevention practices (Hosting Abuse BCP) The prevention chapter of the BCP for hosting and cloud providers adds controls on the platform side that apply directly to ESP onboarding: - **Preauthorize new accounts**, so no account sends before it has been reviewed. - **Personally contact accounts that seem suspicious.** - **Keep records of accounts previously terminated for fraud**, and match new signups against them. - **Put limits on new accounts**, and raise them only when the customer shows a credible, demonstrated need. - **Give prospective accounts a fraud score**, and automatically reject those below a threshold where possible. - **Equip sales teams** with specific questions and known red-flag statements, so they can spot fraud at first contact. Train customer-facing staff (support, sales, marketing) to recognize when a prospect's stated practices violate the acceptable use policy (AUP). - **Allocate rights in tiers**: restrict new accounts' API access, their capacity to send and to create domains, and their bandwidth. Widen access step by step as tenure and clean reputation build up. Reserve elevated privileges for customers who act against abuse proactively, have been hosted for more than ~12 months and respond to inquiries, and **revoke** those privileges after repeated abuse or unresponsiveness. - **Collect a complete client identity** during vetting, and use it to authenticate later communications (passphrases, PINs, the last four digits of the payment card, named approved contacts). - **Make security a contract term**: customer agreements should oblige clients to maintain a secure environment, keep software up to date, and **notify the provider of breaches**. These practices support the controls against account compromise and outbound abuse in [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts), which also covers patterns for detecting registration abuse, such as mass signups, stolen or disposable cards and implausible business claims. ## Related articles - [Abuse Desk Operations](https://emailmarketing.net/learn/esp-operations/abuse-desk), on what happens when vetting fails - [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts), on telling bad customers from hijacked ones - [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods), on the range of list quality that vetting probes # ESP Account Enforcement — AUP, Review States, and Reinstatement > How sending platforms police customers at the account level — acceptable-use-policy structure and prohibited-use categories, the review/pause/shutdown state machine and the exact bounce/complaint/spamtrap thresholds that trigger it (AWS SES), the account-under-review reinstatement workflow and staged suspension ladder (Twilio SendGrid), and the opt-in/opt-out policy the platform enforces on senders. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-operations/account-enforcement When a customer of your sending platform breaks your rules, you need four things in place: a written policy the customer agreed to, a set of account states you can move the customer through, numeric triggers that move an account from one state to the next, and a process the customer follows to be reinstated. This is where policy, detection and consequences meet on a specific customer. Other parts of the platform feed enforcement. [Abuse Desk Operations](https://emailmarketing.net/learn/esp-operations/abuse-desk) covers who receives abuse reports and how they are prioritized. [Outbound Monitoring](https://emailmarketing.net/learn/esp-operations/outbound-monitoring) covers detection and the ladder of responses (throttle, then pause, then suspend). [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting) covers the gate at onboarding, and [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture) covers automatic pausing of a single tenant. The examples come from AWS SES, which publishes the most complete account-level enforcement states, with their thresholds, and from Twilio SendGrid, which publishes a staged suspension ladder and the consent policy it enforces on senders. The numbers are specific to each vendor and attributed to it. The overall structure applies to any ESP. ## The acceptable use policy: structure and prohibited-use categories A platform's authority to enforce comes from a policy the customer accepts. The acceptable use policy (AUP) defines the conduct that justifies removal, suspension and termination. The abuse desk cites it in every remediation notice. [Abuse Desk Operations](https://emailmarketing.net/learn/esp-operations/abuse-desk) explains, under its remediation workflow, that citing the specific clause of the terms of service or AUP that was breached protects the provider against litigation from either side. The **AWS Acceptable Use Policy** (last updated 2021-07-01 in the version reviewed) is a compact model. It prohibits using the services for: | # | Prohibited-use category | Scope (AWS wording, condensed) | |---|---|---| | 1 | **Illegal or fraudulent activity** | Any illegal or fraudulent activity | | 2 | **Rights violations** | Violating the rights of others | | 3 | **Violence & serious harm** | Threatening, inciting, promoting, or actively encouraging violence, terrorism, or other serious harm | | 4 | **Child sexual exploitation** | Any content or activity promoting child sexual exploitation or abuse | | 5 | **System security** | Violating the security, integrity, or availability of any user, network, computer or communications system, software, or device | | 6 | **Spam and unsolicited messaging** | Distributing, publishing, sending, or facilitating unsolicited mass email or other messages, promotions, advertising, or solicitations | If you are drafting your own AUP, two features of its structure matter: - **A reserved right to investigate and remove.** AWS reserves the right to investigate suspected violations and to "remove or disable access to any content or resource that violates this Policy." It also states that it weighs the customer's capacity and willingness to comply when it decides how to respond. That statement is the written basis for enforcement in steps, rather than a choice between all and nothing. - **A reporting channel.** Violations are reported through the provider's abuse process (`abuse@`, as RFC 2142 requires; see the mandatory role addresses in [Abuse Desk Operations](https://emailmarketing.net/learn/esp-operations/abuse-desk)). The AUP is the public face of that intake channel. The AUP is broad on purpose. The obligations specific to email, such as what counts as consent and what an unsubscribe must contain, belong in a separate sender policy (below). The numeric triggers belong in the enforcement documentation, not in the AUP. ## The account-level enforcement state machine (AWS SES) SES documents explicit enforcement states for a **whole account**. They are different from the reputation policies for each tenant described in [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture), which pause one tenant inside an account. These are the states an ESP's own infrastructure provider can move the ESP through, and they are a reference design for what an ESP should build for its own customers. AWS calls this the **sending review process**. It has three states: | State | What it means | Sending | Trigger to enter | |---|---|---|---| | **Healthy** | Normal | Full | None | | **Under review** | An issue was detected, and there is a grace period to fix it | **Continues**: "you can continue to send email as you normally would" | A threshold breach or a manual investigation, when the problem is judged correctable | | **Sending paused** | Sending is disabled for the whole account | **Blocked** | The review period expired without a fix, the same issue happened again, or there was a serious violation (which can skip the review) | All of the following comes from AWS's enforcement FAQ: - **Under review is a warning, and sending stays on.** The customer keeps sending, which means it can make the problem worse. AWS explicitly advises you to pause your own sending if your situation allows it. The notice goes to the account email address, the one on the AWS account, which may differ from the SES sending identity. AWS opens a support case on the customer's behalf. - **The review can be skipped.** SES pauses an account without a prior review when the issue is "very serious", when the account "has been placed under review for the same issue multiple times", or when AWS Service Terms are seriously violated. Because of the rule on repeat offenders, the FAQ insists on fixing the underlying process, not just stopping the one campaign: "if a particular campaign caused us to place your account under review, you have to do more than simply stop that campaign." - **Enforcement reaches other services.** While an account is under review or paused, other AWS services still work, but **requests to raise quotas on other outbound-communication services (for example, Amazon SNS) may be denied** until the SES review is cleared. Enforcement on one channel stops growth on the channels next to it. - **Status can be read by software.** The Account dashboard shows `Healthy` or `Paused`. The AWS Health Dashboard logs an **`SES sending paused`** event, always with the Status `Closed` whatever the current state, that includes a copy of the notification email. An operator that builds on a provider should ingest these events rather than rely on a person reading the account mailbox. ### The disclosed thresholds SES is unusually specific about its numbers, which makes it the best public reference for where to set enforcement lines. All rates are computed over a **representative volume**, not a fixed calendar window. That is an amount of mail typical of the sender's usual practice, sized for each sender and adjusted as sending patterns change. The same guard therefore protects senders with high and low volumes, and a spike of 2 bounces in 10 messages cannot trip anyone. | Metric | Best-practice target | **Under review at** | **May be paused at** | Counting rule | |---|---|---|---|---| | **Hard bounce rate** | below 2% | **5% or greater** | **10% or greater** | Only hard bounces (permanent, "address does not exist") to domains that are not verified. Bounces for a full mailbox, transient bounces and IP blocks do **not** count. | | **Complaint rate** | below 0.1% | **0.1% or greater** | **0.5% or greater** | The percentage of complaints on mail to domains that send feedback loop (FBL) reports to SES. The complaint statistic in the console and in `GetSendStatistics` includes **only** FBL complaints, not complaints made directly to SES or reported by a mailbox provider. | Other kinds of trigger have no published number, but each escalates in its own way: - **Spamtraps.** SES does not disclose how many hits trigger action ("even a small number … can have a very negative effect"). A severe trap problem can pause the account immediately, with no review. Trap hits are reported with a delay, so it "may take three weeks or more" to confirm that a fix worked, and an operator must plan reinstatement around that timeline. - **Direct complaints and complaints reported by providers (the three-week rule).** For complaints that recipients file directly with the platform, or that a mailbox provider reports through another channel, SES gives a concrete deadline: "if you don't request a review within three weeks, and we continue to receive [complaints], we might pause your account's ability to send email." Silence is treated as a failure to remediate. - **Manual investigation.** An investigator can place an account under review, or pause it, for an AUP violation, for mail that "appears to be unsolicited", for phishing content, **including simulated or authorized phishing tests**, or for "a use case that SES doesn't support." Whether the problem can be corrected depends on whether the sender has "a history of good sending practices" and can isolate the bad stream while continuing the rest (for example, stopping one of three email types). An ESP applies the same logic before it chooses suspension over termination. ### The operator-built kill switch (design evidence) SES also documents how customers can set up **automatic** pausing of their own account, which doubles as a reference architecture for an ESP's own automatic enforcement. A CloudWatch alarm on the `Reputation.BounceRate` or `Reputation.ComplaintRate` account metric notifies an SNS topic. The topic invokes a Lambda function that calls **`UpdateAccountSendingEnabled(Enabled=false)`**. Sending is turned back on with the same API and `Enabled=true` (or with `aws ses update-account-sending-enabled --enabled`). AWS advises setting the alarm thresholds below the enforcement lines (below 5% for bounces and 0.1% for complaints), so that you pause yourself before the platform pauses you. Three lessons apply to any platform: (1) expose a single idempotent operation for each account that enables or disables sending, (2) drive it from rate metrics, with a guard for minimum volume, and (3) set your own pause line inside the provider's enforcement line, so that the decision always stays with you. The provider gives you the switch, and you decide when to use it. This is the platform-side counterpart of the automated responses in [Outbound Monitoring](https://emailmarketing.net/learn/esp-operations/outbound-monitoring). > **The SES pause line is not a safe target for deliverability.** The SES pause at **0.5%** complaints (and at **10%** bounces) is a line set by the infrastructure provider and measured at the **scope of a network or pool** (each AWS account). It is the point where AWS protects **its own** shared IP reputation, not a point where your mail still reaches the inbox. It measures something different from the ceiling mailbox providers apply to each **domain** (see how to read thresholds by scope in [Metrics & Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks#reading-thresholds-by-scope-read-this-first)). It sits far above what mailbox providers accept: Gmail and Yahoo treat a complaint rate of **0.3%** as a hard ceiling (see [Gmail Sender Requirements](https://emailmarketing.net/learn/providers/gmail-sender-requirements) and [Yahoo Sender Requirements](https://emailmarketing.net/learn/providers/yahoo-sender-requirements)), and the healthy target that sources agree on is **< 0.1%** (see the threshold table in [Metrics & Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks#canonical-threshold-table)). An ESP that builds its own automatic pause on complaints should therefore trip it **at or below the 0.3% ceiling set by Gmail and Yahoo, and ideally around 0.1%**, well inside the SES line of 0.5%. Staying "inside the provider's enforcement line" means staying inside the tightest line that governs your deliverability, not only inside the line where AWS pauses its infrastructure. ## The staged suspension ladder (Twilio SendGrid) SES documents the boundary between review and pause. SendGrid's documentation on accounts under review describes a ladder of steps instead: four states, each harsher than the last, and each changing what still works. SendGrid reviews accounts that show "apparent abnormal activity" to protect sender reputation. Unlike SES, it does not publish the specific triggers for volume, complaints or bounces. | State | Sending | Queued mail | Tracking | Subusers | Dedicated IPs | Billing | |---|---|---|---|---|---|---| | **Warned** | Full functionality retained | Not stated | Active | Can still create; plan upgrades allowed | Retained | Standard | | **Suspended** | Mail **accepted and queued**, not delivered | Held until the issues are resolved, **up to 72 hours** from sending, and expires undelivered after 72h | Still works (opens and clicks) | Not stated | Retained | Continues (auto-renews) | | **Deactivated** | **Cannot accept mail** | Queued mail **deleted** | **Disabled** | Can log in directly, but the parent account cannot "log in as" | Not stated | Continues (auto-renews) | | **Banned** | Cannot access the system or send; requests rejected | Not stated | Not stated | Cannot send or access the account | **Removed** | Auto-renewal stops; overages charged | The design of this ladder is instructive. **Suspended can be reversed without losing data**: mail is held for 72 hours, so a customer who resolves the review quickly loses nothing, while a customer who responds slowly loses the backlog without warning. **Deactivated** is the point where queued mail is destroyed and tracking links break, so links in mail already delivered stop working. **Banned** is final. The IP addresses are taken back, as in the termination step in [Abuse Desk Operations](https://emailmarketing.net/learn/esp-operations/abuse-desk), and billing changes. Each step raises the cost of not responding. That is the purpose of a graduated ladder: it gives a customer who can be saved room to fix things, while making continued abuse more and more expensive. ## The reinstatement workflow Both platforms require the same process, reviewed by people, before sending resumes. It is the abuse desk's remediation workflow seen from the customer's side. **What the customer must submit (SES, and applicable to any platform):** 1. **The root cause** of the event that triggered enforcement. 2. **A list of changes already made.** SES is explicit: "only include the steps you've already implemented, not the steps you plan to implement in the future." Intentions do not clear a review. 3. **How those changes prevent the problem from happening again.** This is a commitment about the future, separate from the fix itself. 4. **Any evidence specifically requested.** In a bounce case, that means the method for tracking bounces and how new addresses are validated before the first send. In a case about unsolicited mail, it means whether every message was requested by the recipient and complied with the AUP, how the list was acquired, and the actual subscribe and unsubscribe (opt-in and opt-out) links. The channel is the support case the platform opened on the account's behalf, and the customer replies to it. SendGrid says the same: "the fastest way to get your account reactivated is to respond directly to the ticket sent to your email address", answering every question in the notice. **What reviewers check.** The provider typically gives "only a high-level overview" of the issue (for example, "you have a problem with bounces") and does not list the addresses at fault. Finding the root cause is the customer's job by design, so that the fix addresses the process rather than the symptom. SES states that it will cancel the review or lift the pause only "if we agree that the changes you've made appropriately address the issue." **Timelines & retries:** - Neither vendor publishes a fixed review duration. SES notes that some categories (spamtraps, and complaints that are reported late) need **three weeks or more** before a fix can even be confirmed, so reinstatement can come well after the actual remediation. - A rejected request can be **submitted again** once the customer can show that the issue is resolved and will not recur. SES explains why it declined a request. - A customer who fixes a problem just before a review period expires must still reply to the case to report it resolved. The review does not count a fix that nobody reported. This is the customer's view of the remediation workflow in [Abuse Desk Operations](https://emailmarketing.net/learn/esp-operations/abuse-desk): validate the report, notify the customer and cite the clause, allow time to remediate, confirm the problem is resolved, and close the case. Fraudulent accounts are the exception on both sides. They get none of these courtesies and are not helped back onto the platform (see [Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk), and [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts) for telling malicious accounts from compromised ones). ## The enforced sender policy (opt-in / opt-out) Besides the broad AUP, a sending platform enforces a **consent policy specific to email**. It is the standard used to judge whether mail was "unsolicited". SendGrid's policy is a concrete model of what an ESP requires of every sender. **Consent (opt-in):** - **Affirmative consent is required for all email except transactional email.** SendGrid defines transactional email as "non-marketing email … about an action or transaction that a recipient has taken or agreed to." - **Consent must be first-party and specific.** It cannot be blanket consent, and it cannot come from **purchased lists, third-party lead generators or affiliates**. **Scraping** addresses from social media, LinkedIn or the web is prohibited. The sender that sends the mail must be the party that obtained the consent. - **Disclosure at collection.** Senders must identify themselves when they collect consent, keep that identity across their messages, and tell recipients how their email address will be used and what the messages will be about. - **Strength of opt-in (the definitions the platform recognizes):** single opt-in asks for permission only at registration. Double opt-in asks for permission and then verifies it with a confirmation email. Confirmed opt-in periodically asks recipients to confirm that they are still interested. See [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods) for the full range of opt-in quality and the complaint risk of each method. - **Reconfirmation for stale contacts.** Senders must obtain affirmative consent again before mailing a recipient "after an extended period of non-engagement". SendGrid's guidance defines that as recipients you have not written to or interacted with in **over 3 months**. This is the policy version of the sunset practice in [List Hygiene & Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies). **Opt-out (unsubscribe):** - Every **non-transactional** email must contain a physical mailing address, a clear unsubscribe link and a link to the privacy policy (consistent with the mechanics in [List-Unsubscribe & One-Click](https://emailmarketing.net/learn/list-management/list-unsubscribe)). - **Opt-out requests must be honored within the applicable legal timeframe or 10 days, whichever is shorter.** Compare the legal maximum in [CAN-SPAM](https://emailmarketing.net/learn/compliance/can-spam), a 10-business-day period. By contract, the platform adopts whichever is shorter: the legal period or 10 days. - Recipients may withdraw consent at any time, and the sender must obtain it again before sending any more mail. This policy gives substance to category 6 of the AUP ("unsolicited") and to every finding in an SES manual investigation that mail "appears to be unsolicited". The abuse desk cites the AUP, but it judges the case against this consent standard. ## Design lessons for an ESP 1. **Use three documents, each with its own job.** The AUP defines, in broad terms, the conduct that can lead to termination, and grants the right to investigate and remove. The sender consent policy defines the standard specific to email that "unsolicited" is measured against. The enforcement documentation defines the numeric triggers and the states. Keeping numbers out of the contract lets you tune thresholds without amending the policy. 2. **Publish where the lines are, and keep the rest private.** SES discloses its bounce thresholds (5% and 10%) and complaint thresholds (0.1% and 0.5%) so that senders can govern themselves, but it keeps spamtrap counts and the sizing of the representative volume private, so that senders cannot game the edge. Disclose the metrics a sender acting in good faith needs, and keep private the ones only an abuser would exploit. 3. **A warning state must stop the damage.** The SES "under review" state keeps sending on and advises the customer to pause, which is a real risk. If your warning state leaves sending fully enabled, pair it with an automatic throttle (see [Outbound Monitoring](https://emailmarketing.net/learn/esp-operations/outbound-monitoring)), so that a customer cannot make the problem worse during the grace period. 4. **Order the ladder by the cost of not responding, and make the early steps reversible.** SendGrid's Suspended state holds mail for 72 hours with no data loss. Only Deactivated destroys queued mail, and only Banned takes back IP addresses. Give a customer who can be saved a step with no loss, and keep the destructive steps for the final states. 5. **Reinstatement requires fixes already made and a commitment against recurrence, not intentions.** The burden of finding the root cause stays with the customer. Both rules are deliberate: they force a fix to the process rather than to the symptom, and repeat offenders lose the grace period entirely. 6. **Enforcement on one channel should limit the others.** SES stops SNS quota increases during a review. A platform with several products that lets a customer get around an email suspension through SMS or push notifications has not enforced anything. ## Related articles - [Abuse Desk Operations](https://emailmarketing.net/learn/esp-operations/abuse-desk), on report intake, triage priorities, and the loop of remediation, suspension and termination that uses these states - [Outbound Monitoring](https://emailmarketing.net/learn/esp-operations/outbound-monitoring), on detection and the ladder of responses (throttle, pause, suspend) that triggers these state changes - [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture), on reputation findings and automatic pausing for a single tenant - [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting), on the onboarding gate and the tiered trust that sets how sensitive enforcement is for each customer - [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods) - [List-Unsubscribe & One-Click](https://emailmarketing.net/learn/list-management/list-unsubscribe) - [Metrics & Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks), on the bounce and complaint thresholds for senders that these enforcement lines mirror # ESP Outbound Monitoring Systems > The continuous-monitoring architecture of a sending platform — pre-send scanning, send-time anomaly detection against per-customer baselines, post-send feedback watchers, alert design (leading vs lagging, threshold vs trend, per-pool vs per-customer), and the graduated automated-response ladder. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-operations/outbound-monitoring If you run an email service provider (ESP), you need to watch your own outbound traffic continuously, so that a customer's bad day is caught before it damages everyone on your platform. A monitoring system does this in layers. It compares each customer against their own baseline, runs watchers across the whole platform, and turns signals into throttles, pauses and escalations to people. What happens after a specific incident is detected is covered separately: [Abuse Desk Operations](https://emailmarketing.net/learn/esp-operations/abuse-desk) for handling reports and the remediation loop, [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts) for account takeover, [Spam-Trap Incident Response](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response) for trap hits, and [Reputation Incident Recovery](https://emailmarketing.net/learn/operations/reputation-incident-recovery) for the rebuild. The monitoring described here is the detection that runs all the time and feeds those procedures. An ESP's deliverability is set by its worst customers on their worst days, and "deliverability failures are unpredictable — they happen to different customers at different times for different reasons." Word to the Wise describes how well-run ESPs organize around this. An **early-intervention desk** catches customers who show warning signs before the damage lands. An **enforcement desk** handles customers who ignore guidance. The compliance department tracks metrics internally to **stack-rank clients**, rather than guessing who the good senders are. Everything below is the instrumentation those desks rely on. Authoritative published documentation of monitoring inside ESPs is thin, because vendors treat their detection logic as sensitive. The mechanisms below are documented, from the Messaging, Malware and Mobile Anti-Abuse Working Group (M3AAWG) Best Common Practices (BCPs) and from vendor documentation, unless they are marked as practitioner consensus. ## The three layers of the monitoring stack | Layer | When it acts | Latency | Signals | Can it prevent harm? | |---|---|---|---|---| | **Pre-send scanning** | Before or at injection, before any mail leaves | Milliseconds to seconds | Content, URLs, list composition | Yes. It is the only layer that stops the first message | | **Send-time anomaly detection** | During the send, against behavioral baselines | Minutes | Volume, velocity, mix, early bounces | Partially. It stops a send while it is under way | | **Post-send feedback watchers** | After delivery, from external signals | Hours to days | Complaints, blocklists, trap hits, engagement, DMARC reports | No. It limits recurrence, not the send that triggered it | Each layer trades coverage for latency. Pre-send scanning sees everything but knows the least, because no recipient has reacted yet. Post-send feedback knows the most but arrives after the damage. A platform needs all three because each catches what the others cannot. A send with clean content to a purchased list passes layer 1 and is caught only by layers 2–3. A phishing template caught by layer 1 never produces the layer-3 evidence. ## Layer 1: pre-send scanning The platform inspects customer mail before it leaves the network: - **Content scanning against spam and phishing signatures.** Run outgoing customer mail through the same kind of engine that receivers use. Practitioner consensus describes "pattern matching against known spam templates, URL reputation checks on every link", plus comparison against known phishing and credential-harvesting templates, which pauses sending before the campaign completes. Commercial and open engines (SpamAssassin, rspamd, Cloudmark, Vade) can score mail at injection; Halon documents these as anti-spam engines that plug into the mail transfer agent (MTA). Milter hooks are the classic integration point. The M3AAWG Web Messaging BCP sets out the options: heuristics, a spam-filtering engine in the submission path, reputation models, and batch clustering. They are summarized in [Compromised Accounts, content filtering](https://emailmarketing.net/learn/esp-operations/compromised-accounts). - **URL and link domain checks.** Check link domains against URL reputation lists before sending. A customer whose template links to a domain listed on SURBL or the Spamhaus Domain Blocklist (DBL) will be filtered at receivers whatever the sending reputation, so catching it before the send protects the shared pool. [URL Reputation and Content Fingerprinting](https://emailmarketing.net/learn/reference/url-and-content-filtering) explains how receivers extract and judge URLs. Spamhaus data such as the Hash Blocklist (HBL) and the DBL can be used on outbound mail as well as inbound. - **Template fingerprinting across tenants.** Apply fuzzy hashing to customer sends and cluster near-duplicates. The same template injected by many unrelated new accounts is the mark of scripted signup abuse. The Web Messaging BCP gives an example from batch analysis: "accounts all registered June 7 from one /16 sending 103-word messages". This is the platform's counterpart to the fingerprinting receivers do, described in [URL and Content Filtering](https://emailmarketing.net/learn/reference/url-and-content-filtering). - **Screening list imports.** The pre-send check with the most effect is on the recipient data, not the message. Scan imports for signs of purchased lists (column headers such as "jigsaw" or "append"), role accounts, addresses known to be bad or associated with traps, and invalid syntax or MX records. This is the same review [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting) prescribes at onboarding, applied to every import. The shape of an import also feeds layer 2 (below). Its size relative to the customer's existing base, its domain distribution and its validation failure rate are the earliest predictors of the send that follows. - **A missing unsubscribe link.** Check every marketing or list message for an unsubscribe link before it leaves. The M3AAWG *Sender Best Common Practices* (Version 4.0, August 2026, section 2.7) lists a missing unsubscribe link among the account activity an ESP should look for. It gives two reasons: compliance with laws such as CAN-SPAM, the Canadian anti-spam legislation (CASL) and the ePrivacy Directive, and avoiding deliverability and legal problems. For the header form of the link, see [List-Unsubscribe](https://emailmarketing.net/learn/list-management/list-unsubscribe). Pre-send scanning must be fast enough not to hold up mail (practitioner consensus). Blocking every send on a slow verdict destroys transactional latency. The usual pattern runs cheap checks inline (URL lists, signature matches), while expensive analysis (clustering, machine learning scores) runs seconds to minutes behind and can stop the rest of a campaign. ## Layer 2: per-customer behavioral baselines and deviation signatures The core send-time mechanism is a rolling behavioral baseline for each customer, and for each tenant or subaccount (see [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture) for where the metrics attach). It records typical daily and hourly volume, sending cadence, the mix of recipient domains, and normal bounce, complaint and engagement levels. The signal is a deviation from that customer's own history. Absolute thresholds applied to the whole platform miss both the 500/day sender who suddenly sends 200,000 in an hour and the 10M/day sender whose 2% shift is a real incident. Research on subscription bombing measured why: anomaly detection on aggregates drowned in noise, while **detection for each entity (volume ≥10 standard deviations above the entity's 7-day mean) worked**. See [Subscription Bombing](https://emailmarketing.net/learn/esp-operations/subscription-bombing) for the study. M3AAWG publishes one volume figure of its own. Its *Sender Best Common Practices* (Version 4.0, August 2026, section 2.7) says a customer who sends more than 40% above their usual volume can be flagged, even when no irregular list import explains it. The cause may be a malicious actor or a mistake by the customer, and a customer who made a mistake should be educated so it does not happen again. The same section encourages ESPs to combine automated heuristics with review by a person, so treat the 40% figure as a trigger for review, not for an automatic pause. It also lists an unprecedented jump in list growth as a signal, to be checked by validating the added addresses. What each deviation most likely means: | Deviation | Main hypotheses (roughly in order of likelihood) | First check | |---|---|---| | **Volume spike** (for example "normally 500/day, suddenly 200,000 in an hour", the classic trigger for an automatic pause) | A compromised account or API key; a new list import; a legitimate seasonal event or campaign | The authentication trail (new IP addresses or locations, a new API key), the import history, contact with the customer | | **Shift in recipient domain mix** (for example a B2B sender suddenly at 80% consumer domains, or one unusual domain over-represented) | A new or purchased list; harvested data; a concentration of spam-trap domains; a compromise that reuses stolen recipient data | Compare the mix with the baseline; correlate with imports; check the engagement of the over-represented domain. A domain with near-zero engagement concentrated in one segment is a sign of a trap network (see [Spam-Trap Incident Response](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response)) | | **Hard bounce velocity** (an unknown-user rate far above the customer's norm, visible within minutes of the send starting) | An old or stale list sent again; a purchased or appended list; a list built by dictionary attack | The mix of bounce categories ([Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks)); whether bounces cluster in one import or segment | | **Complaint velocity** (feedback loop (FBL) reports arriving faster than the customer's norm) | A permission failure on a new segment; a change in content or frequency; a compromise | Complaint attribution for each campaign; which providers are reporting | | **Engagement collapse** (opens and clicks fall at one provider while volume holds) | Mail going to the spam folder at that provider, which is a lagging placement signal. Measurement caveats apply ([Non-Human Interactions](https://emailmarketing.net/learn/operations/non-human-interactions), [Tracking Distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion)) | The engagement trend for each provider; postmaster dashboards | | **New list import signature** (a large import followed immediately by a send to the whole list) | The single most common trigger of trap hits, bounce spikes and blocklistings | The import size compared with the existing base; the validation failure rate of the import; hold the first send to the imported segment for review (practitioner consensus) | | **Sending that stops and starts; frequent changes of contact or payment details; changes to content or privacy policy after metrics shift** | Spreading reputation damage across several ESPs; resale of the account; evasive behavior | The post-send triggers documented in the M3AAWG Vetting BCP ([Customer Vetting, ongoing monitoring](https://emailmarketing.net/learn/esp-operations/customer-vetting)) | | **Login and session anomalies** (unfamiliar locations, impossible travel, new user agent strings, mass deletion of sent mail) | Account compromise | [Compromised Accounts, detection](https://emailmarketing.net/learn/esp-operations/compromised-accounts) covers the response. The baseline system only raises the alarm | How to keep baselines (practitioner consensus, consistent with the per-user statistics in the Anti-Phishing Working Group (APWG) study): keep at least a 7-day rolling mean and variance for each metric of each customer, and a longer (30-day) window for seasonal senders. New customers have no baseline, which is exactly why [tiered rights for new accounts](https://emailmarketing.net/learn/esp-operations/customer-vetting), with low caps raised as history builds, stand in for one. The telemetry baseline in the M3AAWG Hosting Abuse BCP is the minimum set of events to collect: registrations, logins, password changes, actions completed, and identities that reach any limit. Keep this data for a week or longer to catch abuse that is slow and low in volume (summarized in [Compromised Accounts, platform telemetry](https://emailmarketing.net/learn/esp-operations/compromised-accounts)). ## Layer 3: platform-level watchers These monitors watch external signals continuously across all of the platform's IP addresses and domains, independently of any one customer: | Watcher | What it watches | Feeds and mechanics | In depth | |---|---|---|---| | **Blocklist monitor** | Every sending IP address on the platform, and every sending, tracking and link domain, on a fixed polling cycle plus parsing of SMTP rejections | Automated DNSBL lookups. Parsing rejection text in delivery logs names the list before polling does | [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring), [Blocklists and Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus) | | **Trap hit alerts** | Trap hit metrics from blocklist and reputation vendors and from SNDS, attributed to a customer or segment | Vendors report hits without revealing which addresses are traps. Microsoft's Smart Network Data Services (SNDS) shows trap hits for each IP address | [Spam-Trap Incident Response](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response), [Microsoft SNDS](https://emailmarketing.net/learn/postmaster-tools/microsoft-snds-jmrp) | | **FBL complaint streams** | Abuse Reporting Format (ARF) reports from every available provider FBL, parsed and attributed to a customer and campaign. They drive both suppression and complaint velocity metrics | Intake shared with the abuse desk; routing by source | [Complaint Feedback Loops](https://emailmarketing.net/learn/list-management/complaint-feedback-loops), [Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk) | | **Queue health and deferral dashboards** | The distribution of queue age for each destination, the deferral rate, and connection failures. Throttling at a provider is the step before blocking, and it shows here first | The qshape queue-age model; automated traffic shaping driven by bounces reacts to the same signals | [MTA Delivery Tuning](https://emailmarketing.net/learn/operations/mta-delivery-tuning), [Per-Provider Tuning Baselines](https://emailmarketing.net/learn/operations/per-provider-tuning-baselines) | | **DMARC report monitoring** | Aggregate (RUA) reports for the domains the platform operates: unexpected sources using platform domains, authentication failure rates, and spoofing of the ESP's own brand | Daily XML aggregate feeds; alert on new failing sources | [DMARC Aggregate Reports](https://emailmarketing.net/learn/authentication/dmarc-aggregate-reports), [DMARC Deployment](https://emailmarketing.net/learn/authentication/dmarc-deployment) | | **Postmaster dashboards** | The receivers' own view: domain and IP reputation and spam rate in Google Postmaster Tools, and SNDS filter verdicts | Set them up before problems occur, because history cannot be rebuilt later | [Google Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools), [Microsoft SNDS and JMRP](https://emailmarketing.net/learn/postmaster-tools/microsoft-snds-jmrp) | | **Customer authentication watcher** | Whether customers' SPF, DKIM and DMARC records are still valid (customers break their own DNS routinely) | Periodic verification of delegated records | [Customer Domain Authentication](https://emailmarketing.net/learn/esp-operations/customer-domain-authentication) | Two points on scope. First, watch shared assets hardest. A listing of a shared pool IP address punishes every tenant on it, so blocklist and trap watchers should page at platform severity for shared assets and at customer severity for dedicated ones. Second, attribute everything. A platform-level signal (a listing, a trap hit, a spike in deferrals at one provider) becomes actionable only once it is mapped to the customers and campaigns that caused it. That requires tagging every send (tenant IDs, campaign IDs, a DKIM `d=` for each customer, or headers in the style of Feedback-ID), designed in from the start. ### Composite health scoring: a documented example SparkPost's **Signals Health Score** is the best-documented public example of combining these feeds into one leading indicator for each sender. The SparkPost support document now redirects to Bird marketing pages, so the details below come from the document as it was previously published. The score is calculated daily on a scale of 0–100 (≥80 is considered good) and predicts engagement relative to all senders on the platform. It combines twelve components, including: - subscriber quality: the share of injections that match address patterns associated with problematic ways of acquiring lists; - hard bounce %, block bounce %, complaint % and transient failure %; - **spam-trap hit %**; - **suppression list hit %**: how often the customer tries to mail addresses that are already suppressed, which is a sign of poor list hygiene; - 3-day historical engagement; - the share of unsubscribes. The minimum is about 1,000 messages/day with open tracking; below that, no accurate score is possible. The design lessons are these. Score rates against injections, so that they are normalized for volume. Count attempts to send to suppressed addresses as a negative signal. Refuse to score below a statistical minimum rather than produce noise. The per-tenant **reputation findings** in Amazon SES (rolling windows of 24h–7d, a minimum representative volume, low or high severity) apply the same idea and connect it directly to enforcement (see [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture)). ## Alert design ### Leading and lagging indicators | | Leading (they predict trouble) | Lagging (they confirm trouble) | |---|---|---| | Examples | Import shape and validation failure rate; deviations in volume or velocity; shifts in recipient mix; suppression hit rate; subscriber quality patterns; a rising deferral rate at one provider | Blocklistings; FBL complaint totals; trap hits reported by vendors; a reputation downgrade in Google Postmaster Tools (GPT); engagement collapse | | Latency | Seconds to minutes | Hours to days (GPT and FBL data arrive after sends; listings follow the behavior that earned them) | | Right response | An automated throttle or hold, which is cheap to apply and cheap to get wrong | Incident procedures and root-cause work, which are expensive and need people | The operational goal is to catch customers on leading indicators so that the lagging ones never fire. Word to the Wise's early-intervention desk is the team that acts on leading indicators; the enforcement desk acts on lagging ones. ### Thresholds and trend detection Use both, for different jobs: - **Absolute thresholds** where the email ecosystem imposes them: ceilings published by providers (Gmail's spam rate thresholds and bounce rate norms, in [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks) and [Gmail Sender Requirements](https://emailmarketing.net/learn/providers/gmail-sender-requirements)) and platform policy caps (limits on new accounts). These are contractual lines, not statistics. - **Baseline and trend detection** for all behavior. That means deviation for each entity (the rule of ≥10 SD for each entity, validated in the list-bombing research), trends from week to week rather than noise from day to day ([Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring)), and velocity: complaints per hour into a send, not per calendar month. The SES finding example, "bounce rate exceeded 15.0% based on a representative volume of 664 emails" over about 2 hours, shows the pattern of a rolling sample. - **A minimum volume for every rate metric.** A "20% bounce rate" made of 2 bounces out of 10 sends must not page anyone. SparkPost (a 1,000/day minimum) and SES ("minimum representative volume") both document this guard. ### Scoping: per-customer, per-pool, per-destination Every alert needs an explicit scope, because the same metric means different things at different scopes: - **For each customer or tenant**: behavioral deviations and the velocity of complaints and bounces. These drive a response at customer level: throttle, pause or vet again. - **For each pool**: the aggregate complaint rate, blocklistings and deferral rates on shared pools. These drive isolation decisions, such as moving the offender out, as described in [Spam-Trap Incident Response](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response) (for how pools work, see [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture)). An alert for a pool without attribution to a customer is only half an alert. - **For each destination**: deferral and rejection rates for each receiving provider. A spike in deferrals at Microsoft only, across the whole platform, points to MTA tuning or a problem with shared reputation ([MTA Delivery Tuning](https://emailmarketing.net/learn/operations/mta-delivery-tuning)). The same spike limited to one customer points to that customer's reputation at Microsoft. - **Across all customers on the platform**: signals that no single scope can see. Examples are the same target address signed up through many customers' forms ([Subscription Bombing](https://emailmarketing.net/learn/esp-operations/subscription-bombing)), the same template across unrelated new accounts, and the same range of submitting IP addresses registering across tenants. Alert hygiene (practitioner consensus): - Deduplicate by incident, not by event. One listing is one incident, not one page for each bounced message. - Route by severity. Signals about shared assets, traps and blocklists page someone; behavioral deviations of a single customer go to the queue of the intervention desk. - Record every alert in the customer's history. Stack-ranking depends on accumulated incident records, and the unblocking practice in [Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk) shows why a written history for each sender matters. ## Automated responses and the escalation ladder The documented and consensus response ladder follows the principle that "the response scales with the severity: throttling first, then pausing, then account suspension". In increasing severity: 1. **Throttle**: cap the customer's sending rate, or hold them to their baseline volume. This is the cheapest response. It turns a runaway send into a slow one while analysis catches up. The Web Messaging BCP says rate limiting "should be employed on almost all web services accepting or relaying user-generated content". Dynamic blocking is rate limiting with an allowance of zero. 2. **Quarantine or hold**: set aside the rest of a campaign (or the first send to a suspicious import) for automated deep analysis or review by a person. This applies the Web Messaging BCP's three responses, challenge, quarantine and reject, at the scale of a campaign. Suppress or reroute the mail rather than silently dropping it, because silent deletion creates support work and hides the problem. 3. **Pause sending**, for a customer or a tenant: the automated stop. The tenant reputation policies of SES are the public reference design. Standard pauses on high-severity findings, Strict pauses on any finding, and None only monitors, for supervised onboarding. Sending resumes **only when a person decides**, followed by a grace period after reinstatement to prevent repeated pauses ([Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture)). 4. **Isolate**: move a problem customer off shared infrastructure onto dedicated IP addresses or pools, so that continued analysis does not cost other tenants (M3AAWG guidance on responding to spam traps). 5. **Suspend or terminate**: the abuse desk's remediation loop. Validate, notify the customer with a citation of the terms of service (ToS), allow a remediation window, suspend, then terminate. Fraudulent accounts skip these courtesies ([Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk)). **When to escalate to a person.** Automation should throttle and pause. People should decide anything that is expensive to get wrong (practitioner consensus, consistent with the repeated warnings in the M3AAWG documents to verify before acting): - Unclear verdicts between a compromised and a malicious account. Previous good behavior suggests compromise, and the two responses are completely different ([Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts)). The Compromised User ID BCP requires a person to intervene in all cases of customized exploits. - Spikes that may be legitimate: seasonal peaks, breach notifications and recalls ([Mandated and Regulatory Email](https://emailmarketing.net/learn/operations/mandated-and-regulatory-email)), product launches. The baseline system cannot tell these apart from abuse; the customer's history and a phone call can. - Resuming after any automated pause (deliberately left to a person in the SES design). - Anything that affects the reputation of shared assets outside the platform: blocklist delisting requests and provider escalations ([Escalation and Mitigation Channels](https://emailmarketing.net/learn/providers/escalation-and-mitigation-channels)). Repeated requests that are badly handled can make listings permanent. - Termination decisions, always ([Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk)). The cost of false positives completes the picture. Every automatic pause that wrongly stops a legitimate sender costs support work and customers. Every abuse the automation misses costs reputation on the shared pool. The tiered trust model in [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting) is how you tune the balance. New customers and customers flagged before run under strict automation (low caps, holds on deviation). Long-standing clean customers run under loose automation (alert and review). Sensitivity then follows demonstrated risk instead of being the same for everyone. ## Related articles - [Abuse Desk Operations](https://emailmarketing.net/learn/esp-operations/abuse-desk), where alerts that need a person land - [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts), including the M3AAWG telemetry baseline and the compromise detection that layer 2 alerts lead into - [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting), including the documented triggers for ongoing monitoring - [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture), on per-tenant metrics, reputation findings and automatic pause policies - [Subscription Bombing](https://emailmarketing.net/learn/esp-operations/subscription-bombing), including the validated anomaly detection statistics - [MTA Delivery Tuning](https://emailmarketing.net/learn/operations/mta-delivery-tuning), on queue-age diagnosis and automated shaping driven by bounces - [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring) # IP Space Acquisition Due Diligence > How an ESP vets IP address space before sending on it — prior-use and reputation history via ARIN WhoWas/RDAP and RIPEstat, why recycled IPs inherit blocklist history, the IPv4 transfer/lease-market abuse problem, and pre/post-acquisition checklists. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-operations/ip-acquisition-diligence If you are adding IP addresses to a sending pool, the addresses you get have almost certainly been used before, and their history comes with them. Checking that history before you send is cheaper than a warm-up that starts from a deficit you did not cause. Almost no ESP receives virgin IP space, meaning space that has never been announced or used. Because IPv4 addresses have run out, new sending IP addresses are almost always **recycled** (previously allocated, returned or revoked, and then reissued) or **transferred or leased** on the secondary market. Recycled and transferred addresses carry the reputation and blocklist history left by their previous holder. The checks below apply before an IP block enters a sending pool. Once the addresses are yours, [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up) covers what to do next, and [Basic IP Allocation](https://emailmarketing.net/learn/ip-management/basic-ip-allocation) covers how many IP addresses to run. For how the blocklists you check against work, see [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus) and the [Spamhaus Listings Deep Dive](https://emailmarketing.net/learn/reference/spamhaus-listings-deep-dive). ## Why recycled IP addresses carry inherited reputation Reputation attaches to the IP address, not to its holder. When an address block changes hands, the new holder inherits: - **Blocklist entries** placed on the block because of the previous registrant's activity. ARIN warns explicitly that "some of the address space returned to ARIN remains on external, individually managed IP blocklists based on activity by the previous registrants," causing "problems with routing, geolocation, and email delivery for the new registrant" even though the address has been properly cleared for reissuance. - **Reputation at mailbox providers.** Gmail, Microsoft and Yahoo remember the IP address's past sending behavior, and no registry can reset that memory. - **Leftover geolocation and routing data:** outdated geo-IP mappings, and outdated entries in other networks' route filters and bogon lists. - **Associations with [spam traps](https://emailmarketing.net/learn/reference/spam-traps).** Recycled addresses may have sent to traps under their previous owner. [Spam-Trap Incident Response](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response) covers the equivalent risk for a mail stream. Registries do not repair reputation. ARIN's role is limited: it clears returned or revoked space for reissue, and it publishes a quarterly file, **"IPv4 Addresses Cleared for Waiting List"**. Beyond that, it "delegate[s] reputation remediation to the new registrants and blocklist maintainers." ARIN's guidance addresses both sides: - **New registrants** should contact service providers and blocklist operators directly to request removal of outdated data. - **Blocklist operators** should regularly review ARIN's quarterly cleared-for-waiting-list publication to decide which space to remove. In practice, a newly allocated block from ARIN's waiting list is still not a clean slate. Treat it as suspect until you have checked it. ## Abuse in the IPv4 transfer and lease market Much of the risk concentrates in the secondary market, where IPv4 blocks are bought, sold and leased. ARIN's post about IPxo (Nov 2022) documents the ways the market is abused: | Abuse vector | Description | |---|---| | **Blacklisting after transfer** | Research shows that IP addresses are **4 to 25 times more likely to be blacklisted after a transfer** than before. The market itself is associated with reputation damage. | | **Black-market hijacking** | Malicious actors have hijacked hundreds of thousands of IP addresses assigned by Regional Internet Registries (RIRs) and resold them to criminals. | | **Exploitation of legacy space** | Outdated or dormant registration records leave legacy blocks open to hijacking for spam, phishing and malware. | | **Legal acquisition, illegal use** | Criminals obtain IP addresses legitimately through transfer markets and waiting lists, then misuse them. The acquisition is clean, but the use is not. | ARIN's abuse statistics for Q3 2022 give the base rate: **1,340 abuse cases**, of which **60.65% were related to spam**. Copyright infringement and login attacks accounted for 7.42% each. Some ~90% of cases were handled automatically, but spam cases needed manual intervention 46% of the time. **What this means for an ESP acquiring space:** - **Leased space gives you less control over reputation than space you own.** You do not control the block's future or know its full history, and lease platforms pool many lessees. A bad neighbor, or a previous lessee's activity, stays with the block. - **Verify the chain of custody.** ARIN's advice for reducing abuse rests entirely on accurate, current Whois and RDAP records. A block whose registration data is outdated or does not match the seller's identity is a warning sign of hijacking, not just a paperwork problem. - **A block that looks cheap may be cheap because it is dirty.** The market discounts blocks with reputation problems. ## Sources of reputation history ### ARIN WhoWas: historical registration records WhoWas gives "authorized users access to historical registration information for a given IP address or ASN". This is the complete public history of how a block was allocated across organizations and contacts over time, and the authoritative way to see who held the block before you and how often it changed hands. | Attribute | Detail | |---|---| | **What it returns** | Full historical registration records for the resource, with the associated organization and point-of-contact (POC) handles | | **Delivery format** | A `.zip` file containing a ReadMe, a summary of associated handles, and individual `.tsv` files for Net Handles, AS Handles, Organization Handles and POC Handles | | **Access** | Requires an ARIN Online account (no link to a POC or Org ID is needed) and a one-time authorization request | | **Review** | ARIN staff review the request within **two business days**. You must agree to the WhoWas Terms of Use and state your intended use, how often you expect to query, and whether the data supports advertising, marketing or marketing research | | **Restrictions** | Not for high-volume querying. Excessive querying can end your access | | **Compared with Whois and RDAP** | Whois and RDAP show the current registration. WhoWas shows the complete history, and its reports are much larger and more complex | **What to look for in a WhoWas report:** frequent changes of ownership, a previous holder in a business known for spam, gaps where the block was revoked or returned (often a sign of past abuse), and whether the block passed through known lease or transfer brokers. ### ARIN RDAP: current registration and ownership RDAP (Registration Data Access Protocol, the successor to legacy Whois, with structured JSON output) is the quick first check, with no login required, for current ownership, allocation status and abuse contacts. ARIN's service (`search.arin.net/rdap`, with the REST base `https://rdap.arin.net/registry/`) detects the query type automatically and supports: | Query type | Example | |---|---| | IP address or CIDR block | `https://rdap.arin.net/registry/ip/192.0.2.0` | | Autonomous System Number | `https://rdap.arin.net/registry/autnum/64496` | | Entity (organization or POC handle) | `https://rdap.arin.net/registry/entity/HANDLE` | | Reverse-DNS domain | `https://rdap.arin.net/registry/domain/2.0.192.in-addr.arpa` | The output is structured JSON, an improvement on the free text of legacy Whois. RDAP follows IANA bootstrap referrals, so a query sent to one RIR is redirected to the RIR that actually holds the resource. Use RDAP to confirm that the block is registered to the party selling or leasing it, that the abuse and POC contacts are current, that the allocation status matches the deal, and that the registration is not obviously outdated (a sign of hijacking). ### RIPEstat: routing history, blocklist and abuse data The **RIPEstat Data API** provides global data that you can query from code to vet a block, whichever RIR issued it. The base pattern is: ``` https://stat.ripe.net/data//data.json?resource=¶m=value ``` Responses are JSON with the common fields `status` (`ok`/`error`/`maintenance`), `data_call_status` (`supported`/`deprecated`/`development`), `version` and `data`. Requests are unlimited, but register, and pass a unique `sourceapp` parameter, for regular use above ~1,000 requests a day. **Routing History** (`/data/routing-history/`) is the most important call for acquisition checks. It returns "the history of announcements for prefixes, including the origin ASN and the first hop," using data from RIS route collectors. In other words, it shows **which autonomous systems (ASNs) announced this block, and when**. | Parameter | Purpose | |---|---| | `resource` | The prefix, IP address or ASN to investigate (required) | | `starttime` / `endtime` | The query window (ISO-8601 or Unix time) | | `min_peers` | Filters out announcements with low visibility (default 10) | | `normalise_visibility` | Adds peer-visibility percentages | | `include_first_hop` | Includes the first-hop ASN | | `max_rows` | Caps the results (soft cap 3,000) | The response is organized by announcing ASN. Each entry has a `prefix`, `timelines` (announcement periods with start and end) and `full_peers_seeing` (the RIS collectors that observe the route). Example: `https://stat.ripe.net/data/routing-history/data.json?resource=192.0.2.0/24`. **How it helps you vet a block:** it shows when the prefix changed announcing ASNs, and whether it sat in an ASN that tolerates spam or is prone to hijacking. It shows whether announcements were fragmented or erratic, which is a snowshoe or hijack pattern (see [Basic IP Allocation](https://emailmarketing.net/learn/ip-management/basic-ip-allocation) on snowshoeing). It also shows whether the ASN the seller claims matches the actual routing history. Other RIPEstat data calls that help before an acquisition: | Data call | Use | |---|---| | **DNS Blocklists** | Whether and when the resource appeared on tracked DNSBLs | | **Abuse Contact Finder** | The current contact for reporting abuse of the resource | | **Allocation History** and **Historical Whois** | Changes of ownership over time on the registry side (compare with WhoWas) | | **Transfer History** | Recorded ownership transfers | | **Routing Status** and **BGP Updates** | The current announcement state and recent routing changes | | **Address Space Usage** and **Address Space Hierarchy** | Allocation patterns and parent and child relationships | ### IPv4.Global reputation reporting: a combined check for marketplace blocks For blocks moving through the secondary market, [IPv4.Global](https://www.ipv4.global/reputation-reporting/) (an IPv4 marketplace run by Hilco Streambank) offers a **free** reputation report to buyers, sellers, lessors and lessees. It is a convenient single check that queries **10 independent blocklist services** together with registry, routing and geolocation data: - **Blocklist and reputation sources:** Spamhaus (SBL, CBL, DROP, EDROP and ISP lists), UCEPROTECT, Feodo Tracker, Blocklist.de, RBL.interserver.net and SpamCop. - **Registry data:** the RIRs and ARIN's WhoWas. - **Routing and geolocation:** MaxMind, IP2Location LITE and RIPEstat. How access works: buyers request real-time reports on listings, sellers and lessors get reports generated automatically when a listing is created or approved, and active lessees get automated reports twice a week and can generate more on demand. Each report is "a snapshot of the block's history at the time the report was generated", so **generate a new report immediately before you commit** rather than relying on an old copy. Treat the report as a fast screen, not a substitute for your own DNSBL and provider reputation checks. The vendor checks a limited set of blocklists, and the set does not include the internal reputation that mailbox providers (Gmail, Microsoft, Yahoo) hold, which no external tool exposes. ## Checklist before acquisition Run these checks before you sign, buy or lease. Any warning sign is grounds to renegotiate the price, ask for a different block, or walk away. - [ ] **RDAP lookup:** confirm that the current registrant matches the seller or lessor, that the abuse and POC contacts are current, and that the allocation status matches the deal. - [ ] **WhoWas report** (or the registry section of the IPv4.Global report): count the ownership changes, identify previous holders, and note gaps where the block was revoked or returned. - [ ] **RIPEstat Routing History:** review the announcing ASNs over time, and flag ASNs that tolerate spam or are prone to hijacking, as well as fragmented announcement patterns. - [ ] **Blocklist sweep across zones:** query each address, and the CIDR block that covers it, against the major zones. At a minimum, check Spamhaus **ZEN** (`zen.spamhaus.org`, which covers SBL, CSS, XBL and PBL in one query; see [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus)), Spamhaus **DROP/EDROP** (netblocks that are hijacked or leased to spammers, which you must never route), UCEPROTECT, SpamCop, Barracuda, and SORBS or other legacy zones as relevant. - [ ] **PBL status:** check `pbl.spamhaus.org`. A [PBL](https://emailmarketing.net/learn/reference/spamhaus-listings-deep-dive) listing (return code `127.0.0.10` when the ISP designated the range, or `127.0.0.11` when Spamhaus did) means that policy marks the range as not meant to send mail directly to mail exchangers (MX), because it is dynamic, residential or IoT space. If you acquire PBL-listed space for bulk sending, you must get the listing changed and also persuade the registrant to redesignate the range. The listing is an early sign that the block was never meant for a mail server. - [ ] **DROP and hijack check:** a block on Spamhaus DROP (`127.0.0.9` under SBL) is a hard no. It is treated as hijacked or entirely controlled by spammers, and it is dropped at the routing layer, not just filtered. - [ ] **Reverse DNS:** confirm that you can set matching PTR records for every address. Any outdated or spammy existing rDNS must be replaceable. - [ ] **Reputation service snapshot:** check Senderscore, Cisco Talos (Good, Neutral or Poor), and the block's history in Google Postmaster Tools if it is available. - [ ] **Volume compared with block size:** will your intended volume support the [minimum 40,000 messages/week per IP](https://emailmarketing.net/learn/ip-management/basic-ip-allocation) without snowshoeing across too many addresses? ## Checklist after acquisition Once the block is yours, and before production sending: - [ ] **Set rDNS (PTR records)** for every sending IP address, matching HELO or EHLO and pointing to a hostname on a domain you control. Google and Yahoo require this of bulk senders. - [ ] **Request delisting of inherited entries.** For outdated blocklist entries left by the previous holder, contact each operator directly and state that the block was reissued to you, which is the path ARIN recommends. Refer to ARIN's quarterly "cleared for waiting list" file where it applies. - [ ] **PBL delisting.** If the block was listed on the PBL, use Spamhaus self-service removal for space where you legitimately run a mail server, or have the network owner redesignate the range. - [ ] **Check reputation again once delisting has propagated.** DNSBL removals and geo-IP corrections take time. Run the blocklist sweep from the checklist before acquisition again before your first campaign. - [ ] **Warm up as if from a deficit, not from neutral.** Recycled or transferred space often starts below neutral (see [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up): new or unknown IP addresses start slightly negative). Follow the standard warm-up ramp, and send first to your most engaged recipients so that providers build a positive memory over the inherited one. - [ ] **Isolate warm-up risk** in the pool architecture, so that a block that turns out worse than your checks suggested does not contaminate established IP addresses. See [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture) and [Advanced IP Segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation). - [ ] **Monitor from day one.** Set up seed and inbox-placement testing, and enroll in postmaster tools and SNDS before volume ramps up, so that you detect an inherited reputation problem in the first campaigns rather than the fifth. ## Key principle Registries transfer the title to a block, not its reputation. A block cleared by ARIN, sold on the transfer market or leased through an automated platform can still be blocklisted, marked on the PBL, tainted by hijacking, or remembered poorly by mailbox providers. The transfer market's own data, a 4-to-25× higher rate of blacklisting after transfer, puts the burden of proof on the buyer. Verify prior use before you send, assume a starting point below neutral, and warm up accordingly. ## Related articles - [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up), including why recycled space starts below neutral - [Basic IP Allocation](https://emailmarketing.net/learn/ip-management/basic-ip-allocation) - [Advanced IP Segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation) - [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus) - [Spamhaus Listings Deep Dive](https://emailmarketing.net/learn/reference/spamhaus-listings-deep-dive), with the return codes and delisting workflows - [Spam Traps](https://emailmarketing.net/learn/reference/spam-traps) - [Spam-Trap Incident Response](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response) - [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture), on isolating new IP addresses from established reputation - [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring) # Multi-Tenant ESP Architecture — IP Pools and Tenant Isolation > How mature sending platforms structure multi-tenancy — dedicated vs managed IP pools, shared-pool fallback, per-tenant reputation tracking, and automated tenant enforcement — extracted as design evidence from AWS SES and SendGrid. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture If your platform sends mail on behalf of many customers, you have to decide how to allocate IP addresses, how to keep one customer's reputation from damaging another's, and how to enforce limits on each customer. AWS SES and Twilio SendGrid publicly document how their own platforms answer these questions. Their documentation is used here as design evidence for anyone running a multi-tenant sending platform, not as a product tutorial. For the same questions seen from the sender's side (how many IP addresses, which streams to separate), see [Basic IP Allocation](https://emailmarketing.net/learn/ip-management/basic-ip-allocation) and [Advanced IP Segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation). ## The three isolation layers Mature platforms separate three concerns that are often confused: | Layer | Isolates | Mechanism (vendor examples) | |---|---|---| | **IP pool** | IP reputation between mail streams (transactional and marketing) or between tiers of customers | SES dedicated IP pools; SendGrid IP pools | | **Tenant or subuser** | Reputation metrics, enforcement and resources at the level of the customer | SES tenants; SendGrid subusers | | **Suppression scope** | Do-not-send data between customers | SES suppression at the level of the account, tenant or configuration set; see [Suppression-List Architecture](https://emailmarketing.net/learn/esp-operations/suppression-list-architecture) | A tenant is a **logical** container for metrics, policy and permissions on resources. A pool is a **physical** routing decision about which IP addresses carry the mail. A tenant can send through shared IP addresses, through a dedicated pool, or through both. ## IP pools: the routing primitive ### Standard (self-managed) pools Both SES and SendGrid model a pool as a named group of dedicated IP addresses, selected at send time: - **The typical use case, at both vendors**, is one pool for marketing and one for transactional mail, so a campaign that draws many complaints cannot degrade transactional delivery. The pool is the boundary of reputation. - **How a pool is selected**: SES binds a pool to a **configuration set**, and each send names the configuration set (directly, or through a default configuration set attached to the sending identity). SendGrid selects the pool for each message with an `ip_pool_name` parameter on the send call. - **Exclusive membership**: in SES, an IP address belongs to exactly one pool, and assigning it to a new pool removes it from the previous one. In the same way, a configuration set points to exactly one pool. - **Fallback behavior**: in SendGrid, a send that names no pool "will use any IP available, including pooled addresses". In other words, sends without a pool do not respect pool boundaries. The design implication is that pool isolation is only as strong as the discipline of always naming the pool. - **A deliberate route to the shared pool**: SES lets a configuration set route mail to the **shared** pool (IP addresses shared by all SES customers). This is documented for "email that doesn't align with your usual sending behaviors", meaning unusual sends that you do not want to affect the reputation of your dedicated IP addresses. The reasoning is the same as routing risky one-off sends away from your best IP addresses (see [Mandated & Regulatory Email](https://emailmarketing.net/learn/operations/mandated-and-regulatory-email)). **Documented limits**: - SES: at most 50 dedicated IP pools per account per region (managed and standard pools combined), and pool names must be unique across both types of pool. - SendGrid: up to 100 IP pools per user, and pool names of at most 64 characters. Dedicated IP addresses must have reverse DNS configured and be activated before they are assigned to a pool. IP pools require higher-tier plans (Pro or Premier Email API, or Advanced Marketing Campaigns). ### Managed (auto-warmed) pools: the SES "dedicated IPs (managed)" pattern SES's managed pools show what an automated layer for managing pools looks like. AWS states each of these architecture points directly: - **The number of IP addresses scales automatically.** The platform decides how many dedicated IP addresses the pool needs from the sending patterns it observes, and scales that number up and down. Scaling takes **each ISP into account**: if a receiving ISP enforces a low daily quota for each IP address, the pool scales out to spread that ISP's traffic across more IP addresses. - **Warm-up state for each ISP.** The level of warm-up is tracked **for each IP address and each receiving ISP**, not globally. An IP address that has sent only to Gmail is warm for Gmail and cold for Hotmail, and increasing traffic to Hotmail starts a new gradual ramp for Hotmail only. (Compare the manual schedules for each provider in [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up).) - **Adaptive warm-up, including decay.** The warm-up percentage **drops** when volume to an ISP drops. Warmth is treated as something that fades, not as a one-time achievement. - **Overflow to the shared pool during warm-up.** Early in warm-up, volume above the capacity already warmed spills over to the platform's shared IP pool rather than being sent cold, which protects the reputation of the new IP addresses. In later stages of warm-up, the excess is instead **queued, slowed down and retried later** through the dedicated IP addresses. Even fully warmed pools are not guaranteed 100% dedicated routing: a sudden spike in volume triggers the allocation of another IP address, whose warm-up again uses the shared pool. - **Demotion when volume is low.** If a sender with one dedicated IP address falls below the minimum volume needed to maintain its reputation, the platform **removes the dedicated IP address** and routes everything through the shared pool. AWS's stated threshold for allocating the **first** dedicated IP address is sending volume that reaches "hundreds of emails over a period of a few days". Below "a few hundred per day", AWS steers senders to shared IP addresses outright. This is the lowest of the published minimums for dedicated IP addresses. To compare it with other vendors' house rules and with the general statistical floor for each IP address, see the [dedicated-IP volume floors table](https://emailmarketing.net/learn/operations/sending-infrastructure-practices#dedicated-ip-volume-floors-canonical). - **Promotion works in one direction only.** A standard pool can be converted to a managed pool, but a managed pool cannot be converted back. On conversion, IP addresses that the volume does not justify are removed. AWS explicitly warns against converting IP addresses that appear on external allowlists, because they may be given up. Configuration sets and tags carry over. - **The billing model changes**: standard dedicated IP addresses are billed per IP address, while managed pools are billed on the volume sent through the pool. Deleting the last managed pool gives up all its IP addresses and stops the charges immediately. - **A constraint**: with managed dedicated IP addresses, an SES account is limited to 10,000 sending identities per region. - **Shared responsibility, in AWS's own words**: "managed" covers only the mechanics of scaling and warm-up. The customer remains responsible for the reputation results: bounce rates, complaint rates, and most requests for delisting from blocklists (RBLs). **Summary of a pool's lifecycle**, the ladder of promotion and demotion these designs imply: shared pool, then a first dedicated IP address (once the volume threshold is reached), then the pool scales out as ISP demand requires, then scales in and gives up IP addresses when volume drops, and finally returns to the shared pool. At every transition, overflow to shared IP addresses absorbs the shock. ## Tenant isolation and per-tenant reputation (SES tenant model) SES tenants are the most explicit public documentation of isolating customers from each other inside a single sending platform. AWS's stated motivation is exactly the ESP problem: before tenants, "one customer's poor email practices could pause an entire SES account, affecting all other customers." ### Structure - A **tenant** is a logical container that groups verified identities (domains and addresses), configuration sets and templates. The intended users are independent software vendors (ISVs) that send for many customers, enterprises with several business units, service providers that isolate each client or application, and organizations with different regulatory regimes for each tenant. - **Resources are assigned** either as **dedicated** (to one tenant) or **shared** (between several tenants). Every send in the context of a tenant is validated: the identity, the configuration set and the template must all be associated with the named tenant, or the send fails. A resource associated with a tenant cannot be deleted until it is disassociated. - **Attributing a send**: each send names its tenant, either with an API parameter (`TenantName`) or, over SMTP, with a message header (`X-SES-TENANT: `). Every tenant send requires a configuration set associated with the tenant (named directly, or as the identity's default). - **Flat and regional**: tenants cannot be nested, cannot span AWS accounts, and exist in one region each. Senders in several regions configure and monitor tenants separately in each region. - **Scale limits**: 10,000 tenants per account by default, with increases approved automatically up to 300,000 for qualifying accounts. Pricing is per tenant per month, based on email volume. ### Per-tenant reputation tracking For each tenant, the platform continuously tracks the bounce rate, the complaint rate (including complaints from mailbox providers' feedback loops, FBLs), feedback signals from mailbox providers as third parties, and appearances of sending IP addresses on reputation blocklists. When a threshold is breached, the platform creates **reputation findings** at two levels of severity: - **Low severity**: minor issues that could affect deliverability if left unaddressed. - **High severity**: serious issues that are probably already affecting deliverability, and may trigger enforcement. Each finding carries a type (BOUNCE, complaint, third-party feedback, blocklist), its impact, a description with the rate and sample that triggered it, and links for remediation. AWS's own documentation gives an example of how detailed findings are: "The bounce rate exceeded 15.0% based on a representative volume of 664 emails" over a window of ~2 hours. In other words, findings fire on rolling representative samples, not on totals for a calendar month. Metrics are computed over rolling windows of roughly 24 hours to 7 days depending on the metric, and some findings require a minimum representative volume before they can trigger. Metrics for each tenant (Sends, Bounces, Complaints) are published to the monitoring system with the tenant as a dimension. Changes in a tenant's status, and findings, are emitted as events (EventBridge detail types: `Sending Status Enabled` or `Disabled`, and `Advisor Recommendation Status Open` or `Closed`), so the platform operator can automate alerts and responses. ### Automated enforcement: reputation policies Each tenant gets a **reputation policy** that decides when the platform pauses it automatically: | Policy | Behavior | AWS guidance | |---|---|---| | **Standard** (default) | Pauses the tenant's sending on **high-severity** findings | The recommended balance for most tenants | | **Strict** | Pauses on **any** finding, including low-severity ones | For high-risk tenants or repeat offenders | | **None** | Never pauses automatically; findings are still recorded | Only for onboarding under monitoring; carries a risk for Trust & Safety | A tenant's **sending status** can be `Enabled`, `Paused` (manually or by policy), `Enforced` (AWS Trust & Safety paused it for serious reputation issues) or `Reinstated` (reactivated after a pause). What these mean in practice: - A paused tenant's sends **fail** until an operator reviews the tenant and re-enables it manually. Resuming deliberately requires a person. - **Grace period after reinstatement**: once a tenant is re-enabled, its active findings are ignored for a while so it can recover. The tenant stays `Reinstated` until all findings are resolved. This prevents a loop of immediate new pauses. - **Enforcement from upstream is targeted**: when AWS Trust & Safety detects abuse, it can pause **only the offending tenant** instead of the whole account, and opens a support case for remediation. The tenant structure turns enforcement on a whole account into precise enforcement. - **Liability is still combined**: AWS states explicitly that the combined activity of the tenants still affects the reputation of the account as a whole. Isolation limits the damage but does not make bad traffic acceptable. The account owner is responsible for monitoring all tenants. ### AWS's stated operating practices for tenant fleets - Start tenants on the Standard policy, and apply Strict to tenants that are high-risk or have offended before. - Onboard new tenants under `None`, **with event monitoring**, to observe their patterns before you turn on automatic enforcement. - Alert on findings (through events) so operators can act before automatic pausing. - Review tenant metrics regularly, even without findings, to catch patterns as they emerge. - Teach tenants good sending practices, and match the granularity of tenants to the business (for each customer, business unit, type of application or regulatory regime). ## Design lessons for an ESP The vendors' architecture can be read as a blueprint: 1. **Separate logical tenancy from physical IP routing.** Reputation metrics, suppression scope and enforcement attach to the tenant, and IP addresses attach to pools. A routing object (a configuration set, or `ip_pool_name`) binds the two for each send. 2. **Metrics for each tenant, with automated pause policies**, are what keep one bad customer from damaging shared infrastructure. They need severity levels, a person to approve resuming, and a grace period after reinstatement. They are the platform's counterpart to the thresholds for senders in [Metrics & Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks). 3. **The shared pool carries real load**, and is not just an entry-level product. It absorbs overflow during warm-up, sudden spikes, demotions for low volume, and unusual sends routed there on purpose. A multi-tenant platform without a healthy shared pool has nothing to absorb shocks, which is why policing the shared pool (vetting, enforcement) matters so much. 4. **Warm-up state belongs to each pair of IP address and receiving ISP, and it decays.** Automating pool scaling requires modeling the acceptance capacity of each ISP separately (see [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up)). 5. **Isolation has limits.** The platform's own account (the ESP itself, as its upstream providers and peers see it) is still judged on its combined traffic. Isolating tenants limits the damage, but it does not excuse bad traffic. For suppression scope, the third isolation layer, see [Suppression-List Architecture](https://emailmarketing.net/learn/esp-operations/suppression-list-architecture). # Shared IP Pool Recovery — Disaster Runbook for a Poisoned Pool > The disaster-recovery runbook for a shared IP pool torched by a bad tenant — distinguishing a poisoned pool from one struggling sender, attributing and isolating the offender, containing them, delisting the pool's IPs across blocklist zones, evacuating clean tenants to a healthy pool, and deciding whether to rehabilitate or retire the burned IPs. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-operations/pool-recovery If one tenant's behavior has pushed the IP addresses of a shared pool onto blocklists, into spam folders or under provider throttling, every clean tenant on that pool pays for it. This runbook covers that situation: one customer, or a few, have damaged a shared pool, and the innocent tenants who share it are now losing inbox placement. The runbook puts existing procedures in order and adds only the coordination a shared-pool disaster needs. Each procedure it relies on is described in full elsewhere, and is linked at the end of this page. **How this differs from recovering a single account:** [Reputation Incident Recovery](https://emailmarketing.net/learn/operations/reputation-incident-recovery) assumes that a single account owns the damaged asset and can pause everything while it rebuilds. A shared pool cannot do that. You must remove the offender without pausing the clean tenants, whose only fault was sharing IP addresses. That constraint shapes the whole procedure: **isolate the guilty, protect the innocent, and decide the fate of the IP addresses last**. ## The recovery sequence at a glance The order matters, and each step assumes that the previous one is done. If you delist before containment, the IP addresses are simply listed again. If you move clean tenants before delisting, they leave the damaged IP addresses, but the pool is still not fixed. | # | Phase | Goal | Main reference | |---|---|---|---| | 1 | **Detect & classify** | Confirm that the pool is poisoned, not that one sender is struggling | [Outbound Monitoring](https://emailmarketing.net/learn/esp-operations/outbound-monitoring) | | 2 | **Attribute** | Identify which tenant or tenants caused it | [Spam-Trap Incident Response](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response) | | 3 | **Contain** | Stop the damage: throttle, pause or evict the offender, and purge their queue | [Account Enforcement](https://emailmarketing.net/learn/esp-operations/account-enforcement), [Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk) | | 4 | **Protect clean tenants** | Move the innocent tenants to a healthy pool (at the same time as 5) | [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture) | | 5 | **Delist** | Clear the pool's IP addresses in every zone, after fixing the root cause | [Spamhaus Listings Deep Dive](https://emailmarketing.net/learn/reference/spamhaus-listings-deep-dive) | | 6 | **Rehabilitate or retire** | Warm the cleaned IP addresses up again, or replace them | [Reputation Incident Recovery](https://emailmarketing.net/learn/operations/reputation-incident-recovery) | Once attribution is firm, steps 3 and 4–5 run in parallel: containment stops new damage while the move and delisting go ahead. Do **not** delist while the offender is still sending bad mail into the pool. ## Phase 1: detect and classify a poisoned pool or one struggling sender The first decision is a diagnosis, and a wrong answer is expensive. If you treat a poisoned pool as one sender's problem, the damage to the other tenants continues. If you treat one sender's ordinary bad week as a pool disaster, you move tenants for no reason. [Outbound Monitoring](https://emailmarketing.net/learn/esp-operations/outbound-monitoring) describes the monitoring that produces the signals. The question here is how to read them to tell a poisoned pool from a single sender. What tells them apart is **scope**. Does the damage follow the pool's IP addresses, whichever tenant sent the mail? Or does it follow one tenant, whichever IP address it used? | Signal | Points to a **poisoned pool** | Points to **one struggling sender** | |---|---|---| | **Blocklisting** | A shared-pool IP address is listed, and the evidence for the listing spans several tenants' mail | Only a dedicated IP address is listed, or the listing traces back to one tenant's domains or content | | **Collapse in placement or engagement** | Every tenant on the pool sees the same provider get worse at the same time | One tenant gets worse while the other tenants on the same IP addresses hold steady | | **Spike in deferrals or rejections** | Rejections at one provider rise for all senders on the pool | Rejections are concentrated in one tenant's traffic | | **Complaint or trap rate** | The pool's overall rate breaches the threshold, but no single tenant dominates it | One tenant's rate is an outlier, and the pool's overall rate is fine once that tenant is removed | | **DMARC or authentication failures** | The pool's shared sending domain is being flagged | A customer's own delegated domain is failing | The essential tool is **scoping by pool, with every alert attributed to a customer**. An alert on a shared asset is only half an alert until it is mapped to the tenant or tenants behind it (see [Outbound Monitoring § Scoping](https://emailmarketing.net/learn/esp-operations/outbound-monitoring#scoping-per-customer-per-pool-per-destination)). A practical test: **remove the traffic of the tenant you suspect most from the pool's totals, and calculate them again.** If the pool's metrics fall back within the threshold, you have one offender, which is a containment problem. If they stay red, the pool is broadly contaminated. That means moving every tenant, possibly several offenders, and a harder root cause. Watch shared assets most closely. A listing of a shared-pool IP address punishes every tenant on it, which is why blocklist and trap monitors alert at platform severity for shared assets. **Is this really a disaster?** Use this runbook, rather than the routine [enforcement](https://emailmarketing.net/learn/esp-operations/account-enforcement) loop, when any of the following is true: a shared-pool IP address gets a blocking listing of the SBL or CSS class (not a merely informational one); a major provider (Gmail, Microsoft or Yahoo) starts placing the whole pool in spam or rejecting it outright; or two or more clean tenants report a loss of inbox placement they did not cause. Below that level, this is ordinary enforcement against one tenant, not pool recovery. ## Phase 2: attribution, finding the offender or offenders Both containment and delisting require knowing who caused the problem. You cannot cite an acceptable use policy (AUP) clause against an unknown tenant, and Spamhaus will ask how the problem was solved before it delists (see below). [Spam-Trap Incident Response § Detection and attribution](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response) covers attribution in full for poisoning driven by spam traps. The tagging on each send that makes any shared-asset signal usable (tenant IDs, campaign IDs, a DKIM `d=` for each customer, headers in the style of Feedback-ID) is also what maps the poisoning to a tenant. Questions specific to shared pools to answer before you act: - **One offender or several?** The test from Phase 1, removing a tenant and calculating again, answers this. A pool contaminated by many marginal tenants shows a failure in how the pools are tiered, not a single bad actor. The fix is to reorganize the pool's tiers (see [Avoiding Blocklistings § Risk-tiered IP segmentation](https://emailmarketing.net/learn/esp-operations/avoiding-blocklistings#risk-tiered-ip-segmentation)), not to evict one customer. - **Compromise or malice?** A tenant with a clean history whose metrics suddenly spike is probably a [compromised account](https://emailmarketing.net/learn/esp-operations/compromised-accounts), not a spammer. The symptoms in the pool are the same, but the remediation is completely different, and so is the tone of your contact with the customer. A good history is the sign. Settle this before you send an eviction notice. - **Which IP addresses carried the bad mail?** In a pool, the offender's traffic may have used only some of the pool's IP addresses. Map the bad sends to specific IP addresses. That limits the delisting work in Phase 5 and informs the decision to retire or rehabilitate in Phase 6. Keep spam traps confidential throughout. Blocklist and reputation vendors report trap-hit metrics without revealing which addresses are traps, and your notice to the customer must keep that confidentiality (see [Spam-Trap Incident Response](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response)). ## Phase 3: containment, stopping the damage Once attribution is firm, cut the offender off from the pool immediately. This applies the [response ladder in Outbound Monitoring](https://emailmarketing.net/learn/esp-operations/outbound-monitoring#automated-responses-and-the-escalation-ladder) and the state machine in [Account Enforcement](https://emailmarketing.net/learn/esp-operations/account-enforcement) under the pressure of a disaster. The difference from routine enforcement is that **every hour the offender keeps sending gets the IP addresses listed again just as you try to delist them**. Containment is therefore not negotiable, and it comes before any delisting request. 1. **Throttle the offending tenant to zero, or pause it**, at the level of the customer or tenant, with a person approving any resumption. For a confirmed poisoning, go straight to a pause and skip the gentle throttle used when the case is unclear. Fraudulent or clearly malicious accounts get none of the courtesy steps ([Abuse Desk § Remediation workflow](https://emailmarketing.net/learn/esp-operations/abuse-desk)). A suspected [compromise](https://emailmarketing.net/learn/esp-operations/compromised-accounts) is paused and also secured (credentials rotated, API keys revoked) rather than terminated. 2. **Purge the offender's queued and deferred mail.** Deferred bad mail keeps retrying for up to 72 hours after you "stopped" it, and it keeps generating complaints, trap hits and new listings on the pool's IP addresses. Draining the queue is part of stopping the damage, not a later cleanup (see the queue purge in [Reputation Incident Recovery § Stop the bleeding](https://emailmarketing.net/learn/operations/reputation-incident-recovery#1-stop-the-bleeding)). 3. **Notify the customer and cite the specific clause of the AUP or terms of service.** This keeps the customer agreement intact and protects the platform against a dispute from either side ([Account Enforcement](https://emailmarketing.net/learn/esp-operations/account-enforcement), [Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk)). The eviction decision itself (suspension until the problem is fixed, or termination) follows the enforcement ladder. A termination holds up in a dispute only with documented communication, several attempts to intervene, and agreement among stakeholders ([Avoiding Blocklistings § Enforcement of last resort](https://emailmarketing.net/learn/esp-operations/avoiding-blocklistings#enforcement-of-last-resort--termination)). 4. **Rebuild suppressions from the period of the incident.** The pool must honor every bounce, complaint and unsubscribe the offender generated from now on. Merge them in before any tenant resumes sending at volume ([Reputation Incident Recovery § Rebuild the data layer](https://emailmarketing.net/learn/operations/reputation-incident-recovery#2-rebuild-the-data-layer), [Suppression-List Architecture](https://emailmarketing.net/learn/esp-operations/suppression-list-architecture)). Containment is complete when no bad mail is entering or leaving the pool. Only then will delisting last. ## Phase 4: protecting the clean tenants by moving them to a healthy pool The innocent tenants cannot wait on damaged IP addresses for delisting to finish. Every day on a listed shared IP address costs them inbox placement they did nothing to lose. Move them to a healthy pool while the delisting work goes on. [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture) describes the building blocks for routing and isolation. The move changes a routing binding. It does not rebuild the tenants. **How to move tenants:** - **Change the routing binding, not the tenant.** A tenant sends through whichever pool its routing binding names (a configuration set, or `ip_pool_name`). Move clean tenants by binding them to a healthy pool. Their identities, suppressions and metrics are logical, so they stay where they are, and only the physical routing to IP addresses changes (see the split between logical tenants and physical pools in [Multi-Tenant Architecture § The three isolation layers](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture#the-three-isolation-layers)). - **The destination pool needs spare capacity and the right warm-up.** Moving tenants onto a pool that is already near capacity, or that is cold for the providers they send to, only moves the problem. Warm-up is tracked for each IP address at each receiving mailbox provider, and it fades. A healthy pool that has not carried Gmail volume is not warm for Gmail (see [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up) and [Multi-Tenant Architecture § Managed pools](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture#managed-auto-warmed-pools--the-ses-dedicated-ips-managed-pattern)). If no warm pool has spare capacity, use the shared pool's overflow mechanism to absorb the shock: spread the moved tenants' volume across warmed capacity and ramp up the rest, rather than sending large volumes from cold IP addresses. - **Move tenants in order of exposure.** Move the clean tenants with the highest volume and the most sensitivity to placement first, because they lose the most for each hour on listed IP addresses. Tenants with low volume can wait a short time. - **Do not move tenants onto the pool of another risky tenant.** Keep the risk tiers: clean, established senders go to a clean, established pool, not to whatever pool has space. Contamination then stays within a tier ([Avoiding Blocklistings § Risk-tiered IP segmentation](https://emailmarketing.net/learn/esp-operations/avoiding-blocklistings#risk-tiered-ip-segmentation)). - **Update authentication if the sending domain changes.** If the moved tenants now use IP addresses under a different shared sending domain, verify SPF, DKIM and DMARC alignment again before they resume. Customers break their own DNS all the time, and the monitor of customer authentication catches it (see [Customer Domain Authentication](https://emailmarketing.net/learn/esp-operations/customer-domain-authentication)). On a platform with well-organized tiers, this is cheap: the healthy pools already exist, and moving tenants is a routing change. A platform with a single undivided shared pool has nowhere to move tenants to. That is the argument for setting up tiers before an incident, not during one. ## Phase 5: delisting the pool's IP addresses across the blocklist zones With the offender contained and the queue purged, work on delisting. [Spamhaus Listings Deep Dive](https://emailmarketing.net/learn/reference/spamhaus-listings-deep-dive) and [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus) give the criteria for each zone, the return codes, and when removal is self-service or needs an investigation. What changes for a shared pool: - **Fix the root cause first, in a way you can prove.** Delisting a shared-pool IP address while the cause persists uses up your limited self-removals, and for the SBL it invites a wider listing. The abuse desk must be able to describe how the problem was solved. For a tenant that was spamming, Spamhaus expects the account to be truly removed, not just paused ([Spamhaus Listings Deep Dive § SBL delisting](https://emailmarketing.net/learn/reference/spamhaus-listings-deep-dive#sbl-delisting)). This is why Phase 3 comes first. - **Check every listed IP address in every relevant zone.** List each shared-pool IP address that carried bad mail (from Phase 2), and check each one against the zones that apply. Match the workflow to the list: | Listing class | Removal path | Note for shared pools | |---|---|---| | **CSS** (`127.0.0.3`, automated, email with low reputation) | Fix the cause, then remove the listing yourself through the checker, or wait ~72 h for it to expire | The list most often hit when a careless tenant poisons a pool. Self-removals are limited, so do not use them up before containment is real | | **SBL** (`127.0.0.2`, manual) | The abuse desk of the responsible network writes to the SBL Removals Team, explaining the fix | This is where escalation happens: tolerating the offender can widen the listing from one IP address to your whole allocation, which is the strongest case for eviction | | **DBL** (`127.0.1.x`, domains) | Expires on its own once the criteria stop matching, or through the checker form | Relevant when the poisoning involved the shared sending or click-tracking domain, not just IP addresses | | **Internal to a provider** (reputation at Gmail, Microsoft or Yahoo) | Escalate to postmaster or support with a description of the incident and the remediation | Not a DNSBL. It clears on its own timeline as clean volume rebuilds reputation. See [Escalation & Mitigation Channels](https://emailmarketing.net/learn/providers/escalation-and-mitigation-channels) | - **Listings caused by a compromise clear quickly, and listings caused by a spammer do not.** If the poisoning came from an account compromise that is documented and fixed, operators and providers routinely reverse listings quickly once you show that the pool is secure. Poisoning by a deliberate spammer is harder and slower, and the delisting request must show that the customer was actually removed. - **Delisting does not unblock you instantly.** A removal from a zone reaches each receiver on its refresh schedule (minutes for DQS and ZEN subscribers, up to 24 h for slower ones), and reputation damage at the receiver fades separately on top of that. Do not tell moved or returning tenants that the pool is "clean" the moment the zone clears. - **Always have a person handle delisting requests.** Automated delisting requests that are mishandled or repeated can make a listing permanent ([Outbound Monitoring § Escalate-to-human criteria](https://emailmarketing.net/learn/esp-operations/outbound-monitoring#automated-responses-and-the-escalation-ladder)). ## Phase 6: rehabilitating or retiring the poisoned IP addresses Once the offender is gone, the clean tenants have moved and the zones are clearing, decide what to do with the damaged IP addresses. [Reputation Incident Recovery § Replace or rehabilitate?](https://emailmarketing.net/learn/operations/reputation-incident-recovery#replace-or-rehabilitate-decision-points) sets out the general analysis: new assets start with a negative reputation rather than a neutral one, reputation follows the mail and not only the asset, and listings caused by a compromise clear quickly. The default is still to **rehabilitate**. These factors, specific to shared pools, push the decision one way or the other: | Factor | Favors **rehabilitating** the pool's IP addresses | Favors **retiring or replacing** them | |---|---|---| | Cause | A single offender, contained and cleanly evicted, or a compromise that is documented and fixed | Contamination spread across many tenants (a failure of tiering), or repeated poisoning of the same pool | | Listing status | Can be delisted, and operators respond to the evidence of remediation | A permanent or repeated SBL listing after the offender was tolerated too long, or IP addresses on lists with no practical way to be removed | | Length of history | A short incident on otherwise clean IP addresses | A long history of abuse, or IP addresses the offender had been quietly damaging for months | | Cost | Warming up again costs less than acquiring and warming new IP addresses from zero | Hard blocks at major providers continue despite a clean warm-up over several weeks | **If you rehabilitate the pool:** treat the cleaned IP addresses as a second warm-up, not a cold start. Receivers hold concrete bad history on them, so ramp up only traffic to recently engaged recipients, hold or step back at any provider that is still deferring, and check blocklists again before each increase in volume. [Reputation Incident Recovery § Re-warming vs cold warm-up](https://emailmarketing.net/learn/operations/reputation-incident-recovery#re-warming-after-an-incident-vs-cold-warm-up) sets out the differences between the two in a table. Note the rule on dormancy: an IP address left idle for **over 30 days** during the incident and recovery needs a new warm-up, whatever its previous status. A damaged pool kept out of rotation for weeks creates its own need for a new warm-up. **If you retire the pool:** if the pool cannot be rehabilitated, release the damaged IP addresses cleanly and set up a new pool warmed from zero. Once it is warm, move the tenants (who have already left the damaged pool) onto it. Retire the damaged IP addresses rather than quietly giving them to new tenants: new senders who inherit an IP address with a recent history of abuse lose reputation faster than the pool recovered. When you acquire replacement IP space, check its reputation history first ([IP Acquisition Diligence](https://emailmarketing.net/learn/esp-operations/ip-acquisition-diligence)). A new pool built on space with an inherited bad reputation is not a fresh start. Either way, the offender does not return to shared infrastructure. A tenant able to poison a shared pool belongs on a dedicated IP address (where the reputation is theirs alone), on a stricter risk tier, or off the platform. It never goes back into the pool it damaged. ## Related articles - [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture), on isolating pools and tenants, the pool lifecycle, and the routing that Phase 4 relies on - [Avoiding Blocklistings](https://emailmarketing.net/learn/esp-operations/avoiding-blocklistings), on preventing this incident, with tiered pools in [§ Phase 3](https://emailmarketing.net/learn/esp-operations/avoiding-blocklistings#risk-tiered-ip-segmentation) and termination as a last resort - [Outbound Monitoring](https://emailmarketing.net/learn/esp-operations/outbound-monitoring), on the monitors and alert scoping behind Phase 1, and the ladder of throttle, pause and isolation - [Spam-Trap Incident Response](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response), on attributing trap hits and keeping traps confidential in Phase 2 - [Account Enforcement](https://emailmarketing.net/learn/esp-operations/account-enforcement), on the eviction process for Phase 3 - [Abuse Desk § Remediation workflow](https://emailmarketing.net/learn/esp-operations/abuse-desk) - [Spamhaus Listings Deep Dive](https://emailmarketing.net/learn/reference/spamhaus-listings-deep-dive), on delisting in each zone for Phase 5 - [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus) - [Reputation Incident Recovery](https://emailmarketing.net/learn/operations/reputation-incident-recovery), on deciding in Phase 6 whether to warm IP addresses up again or replace them - [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up) - [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts), for when the "bad tenant" is a good one that was hijacked - [IP Acquisition Diligence](https://emailmarketing.net/learn/esp-operations/ip-acquisition-diligence), on vetting replacement IP space if the pool is retired # Spam-Trap Incident Response (ESP Playbook) > How an ESP works a spam-trap-hit incident — detection signals, trap confidentiality, customer notification, acquisition audit, list-hygiene review, and escalation to termination — per M3AAWG "Help! I Hit a Spam Trap!" (Feb 2023). Source: emailmarketing.net — https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response When your email service provider (ESP) infrastructure has sent mail to spam traps, you need to find out why, tell the customer, and fix the cause without exposing the traps. For the types of trap and what each one signals, see [Spam Traps: Types and What They Signal](https://emailmarketing.net/learn/reference/spam-traps). The steps below follow the Messaging, Malware and Mobile Anti-Abuse Working Group (M3AAWG) document *Help! I Hit a Spam Trap!* (M3AAWG-141, February 2023). In M3AAWG's terms, the "customer" is the organization that uses the ESP to send email. **The core idea:** the trap is not the problem. It is a marker of an underlying problem in how the customer acquires and validates addresses. Addresses without permission usually also belong to real people who are receiving spam, so fixing the collection process fixes both. ## Why the ESP must act - The consequences grow with **the number of trap hits, the type of trap, and who operates it**, and the customer usually cannot see any of these. The ESP has a responsibility to monitor for trap hits and to inform customers when one occurs. - A high rate of trap hits from a mail stream signals an abusive sender, or one that applies best practices inconsistently. Receiving domains may respond by rejecting the stream or lowering the priority of its mail. In extreme cases, **the ESP itself is blocklisted and rejected across a large part of the internet**. Failing to act spreads the consequences across all of the ESP's sending infrastructure. - Feedback about traps is also an opportunity: it reveals abusive customers, and helps legitimate ones correct poor practices. ## Detection: how you know you hit a trap Traps are designed to look exactly like real addresses, so direct confirmation is rare. The indicators are: | Signal | Notes | |---|---| | Domain or IP appears on a blocklist | Trap data feeds the DNSBLs and reputation systems used in blocking decisions | | Increase in rejected mail | Recipient domains are downgrading or rejecting the stream | | Blocklist or reputation monitoring tools | They report trap-hit metrics **without disclosing ("burning") the traps themselves** | | Rare explicit announcement | For example, an MX hostname such as `spamtrap.domain.com`, or SMTP response text stating that the address is a trap | Commercial spam-trap feeds, run by deliverability monitoring companies, also exist. Those networks are **not used for blocking**. They let the vendor's customers see how much of their mail reaches traps. This playbook concerns traps that directly affect delivery, not sensor networks used only for reputation monitoring. ## Trap confidentiality: non-negotiable Trap operators invest heavily in their traps, and assume that once a trap is exposed, the knowledge spreads quickly and the trap loses its value. If, during an investigation, the ESP learns by accident the IP address, domain or network identity of a trap: - Keep it confidential, and share it strictly on a **need-to-know** basis. - **Communication with the customer must never reveal the identity of traps or trap networks, explicitly or implicitly.** - If data identifying a trap has been revealed and the operator is known, it is wise to notify the operator. This lets the operator protect its network, and helps the ESP build a working relationship with it. ## Remediation workflow ### 1. Customer notification The ESP is responsible for notifying the customer when there is evidence that a trap was hit, without exposing the identity of any trap. ### 2. Acquisition audit Trap problems usually require an audit of the acquisition procedures that let the trap address into the database. This is essentially the M3AAWG Vetting BCP run again, in more detail. Work through these questions: - How were the contact lists created? Focus on the method of acquisition and verification behind each list. - Can you find out **when the sender first hit a trap**, and link that to a specific send or list segment? - Was the IP address or domain blocklisted as a result, and can **the types of trap involved be inferred** from the listing? - Do some **recipient domains appear unusually often** in the segment involved (a sign of list poisoning or harvesting)? - Is the list owner willing and able to rebuild the list and obtain permission again? - Have previous sends caused blocklistings, and how were they resolved? - Can the list owner identify the source of the problem data, and **remove everything acquired through that source**? - Can the ESP obtain more data from the owner of the trap network? The key areas to audit are address **collection, validation and hygiene**. ### 3. List-hygiene review - Check that bounces and unsubscribes remove addresses correctly, and that feedback-loop (FBL) complaints are acted on. The [Senders BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp) calls for removing addresses that keep bouncing and for honoring unsubscribes without delay. For FBLs it asks for a system and a process to handle them, not a specific removal rule. Following it strictly reduces trap hits naturally. - **Low activity or engagement concentrated in one recipient domain** may indicate a trap network. If that domain's addresses are linked to one segment or acquisition method, fix the segment and stop using the method. - Suppress recipients who have been unengaged for a long time or cannot be delivered to, so that their addresses cannot later become recycled traps. If trap hits continue, make the suppression policy stricter. - **Recent changes in segmentation or in the management of suppression files** can cause spikes in trap hits. This is especially true of segmentation that resumes mailing recipients who have not been contacted for a long time, during which their addresses may have been retired and turned into traps. ### 4. Re-vetting the customer A customer or list that produces too many trap hits should be vetted again thoroughly. If the customer was already vetted rigorously, look for a recent change: - Changes in the customer's staff? - A new or changed **API implementation** that creates opportunities for API abuse? - Changes at the points where addresses are collected (a web form open to abuse, list poisoning)? - Mergers, acquisitions or changes in the business model that justify a full new vetting? ### 5. Refusal to remediate: terminate **M3AAWG strongly recommends terminating customers who refuse to take part in remediation**, and considering limits on the data such customers would otherwise receive. ## Minimizing future incidents ### Higher-risk collection practices These practices favor collecting any address over collecting the right address, and lead to poor lists: - Incentivized sign-ups - Social-media sign-ups - Refer-a-friend forms - Sweepstakes Other ways traps get in: typos at the point of sale, harvested addresses (collected automatically or by hand), purchased, rented or appended lists, lists of trade-show participants, and single opt-in forms. [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods) gives the risk profile of each method. ### Investigating opt-in claims Ask the customer for specific evidence of opt-in. A standard technique is to present **several addresses, including some that are NOT on the list**, and ask for the opt-in data for each: - Time and date of signup - URL of the form and the connecting IP address (if online) - Location of the transaction (if collected in person) Also review the website traffic analytics for the sign-up form. Unusual traffic or spikes in volume may indicate a **form targeted by bots** that injects traps. Check the opt-in process from start to finish: does a sign-up at the URL the list owner provides lead to a subscription you can verify? If not, the URL may not belong to the list owner, or the sign-ups from that page may be shared among many senders. Confirm that any confirmation mechanism actually works. ### Validation at point of collection Best practice is to validate the address **as it is entered**, and to ask the subscriber to enter it again if validation fails. Validation can be done in-house, or through validation services used on demand or at the point of collection. The M3AAWG Vetting BCP describes the signs that a list had poor validation or none. ### Additional ESP-side controls - Restrict list imports (for example, allow additions only through a form script provided by the ESP, or an equivalent controlled process). - Restrict sending to engaged segments, and require deletion or suppression of segments with little or no past engagement. - Require disposal of segments without confirmed permission (optionally after one attempt to obtain permission again). - **Move a problem client from shared infrastructure to dedicated infrastructure**, to protect the reputation of other senders. ## Referenced M3AAWG documents - [Sender Best Common Practices, Version 4.0 (August 2026)](https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp) - Best Current Practices for Building and Operating a Spam Trap, v1.2.0 (Aug 2016) - Vetting Best Common Practices (Nov 2011) # Subscription Bombing & Signup-Form Abuse > How mass fraudulent form signups weaponize confirmation email as a DoS against victim mailboxes, the detection signatures of an attack in progress, and the layered defenses form owners and ESPs must run. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-operations/subscription-bombing If a web form you run, or one hosted on your platform, sends email to whatever address is typed into it, attackers can use it to flood someone else's mailbox. Subscription bombing (also called "list bombing", "list-linking email bomb" or "mail bombing") is a denial-of-service attack against an individual mailbox. Attackers script bulk submissions of a victim's email address into thousands of unprotected web signup forms: newsletter subscriptions, forum registrations, store accounts, WordPress signups. The resulting flood of legitimate confirmation and welcome messages makes the inbox unusable. The messages come from harmless, reputable senders, so spam filters mostly let them through: the medium is the attack. The Messaging, Malware and Mobile Anti-Abuse Working Group (M3AAWG) describes the effect as "a DDoS attack against an individual mailbox." The attack matters from three points of view: - **Victim or receiver**: the flood buries important mail. Attackers increasingly use it during fraud to hide notifications about bank activity, account takeovers and purchases, which gives them longer before the victim notices. - **Form owner (a customer of an email service provider, or ESP)**: an unprotected form makes the sender an unwitting channel for the attack. It poisons the list with addresses that never asked to be there (including [spam-trap](https://emailmarketing.net/learn/reference/spam-traps) submissions), and it generates complaints and blocklistings. - **ESP or platform**: during the August 2016 wave, Spamhaus listed the IP addresses of the largest sources of list-bomb mail, which were the sending IP addresses of ESPs. ESPs with shared pools carry blocklist risk for every customer form left unsecured. This is why signup form security is a platform policy, not a customer preference. ## Attack anatomy - **Vector**: any publicly exposed web form that triggers an email to the submitted address. During the 2016 wave, roughly **half** the flood was not mailing list confirmations at all, but **account signups at WordPress sites**. Those messages even contained new account credentials, which made them unambiguously "legitimate." - **Tooling**: collected lists of vulnerable form URLs, plus scripts that submit addresses at speed. Sites such as mailbait.info combined vulnerable forms into a single action that needed no registration or payment. ProPublica reported attack tools selling for **$5 on hacking forums**. In 2016 Spamhaus predicted that the attack would become a commodity, **"Mail-bombing as a Service (MaaS)"**. By 2018, Forcepoint researchers judged that the prediction had come true: attacks are untraceable, effective and inexpensive, and can be outsourced to mercenaries on the Dark Web. - **Distribution**: sources are spread around the world. In the case study by Forcepoint and the Anti-Phishing Working Group (APWG), a single 12-hour attack used **4,047 unique sending IPs** in **87 countries** (compared with fewer than 5 countries in normal traffic), in about 33 languages. This is deliberate camouflage, and it defeats simple blocking by IP address or by sender. - **History of escalation**: the first documented email bombs targeted governments (Langley AFB in 1997; in 1998, the Tamil Tigers flooded Sri Lankan embassies with 800 emails a day for 2 weeks). The modern wave of list linking began in late 2015. Early instances settled personal grudges, but criminals now use the technique to defeat security processes. As the highest-profile lists deployed anti-bot measures, attackers simply moved on to less defended forms. The internet's long tail of unmaintained Joomla, Wix and WordPress forms means that relying on every form owner to fix their form will not end this class of attack. ## Canonical incidents | Incident | Details | |---|---| | August 12–14, 2016 wave (Spamhaus) | Bots created mailing list subscription requests at **more than 1,000 per minute** against **100+ .gov addresses**, and the targets expanded over the following months. In Spamhaus's own account, the first attack was detected on Aug 12, and Spamhaus began listing the IP addresses of the largest list-bomb sources that weekend ("not something we did happily, but it was necessary"). Spamhaus itself was hit with a small attack on Aug 19. | | 2016 wave, numbers from ESPs | **22,000 signups at a single ESP**, targeting 3,000 different domains, sometimes at more than 100 messages per minute to a single address. One company saw **9 addresses signed up over 9,000 times in two weeks, which produced 81,000 confirmation emails**. Brian Krebs received a new confirmation every 2–3 seconds. Word to the Wise was attacked after publishing about the subject. | | August 2017, ProPublica | Hate groups targeted the journalist Julia Angwin and two colleagues. ProPublica's email was shut down for much of a day by the automated signup of their addresses to "every sign-up form it can find." | | January 16, 2018 (Forcepoint and APWG case study) | A single mailbox received **6,571 messages in about 12 hours** (its baseline was 5–27 a day). There were 30 confirmations in the first 10 minutes, about 100 in the first hour, a peak of **more than 800 per hour in the third hour**, and a sharp drop to 65 in hour 12. Both the start and the end were abrupt, with no ramp. | ## Why COI and CAPTCHA are each insufficient alone (Spamhaus analysis) - **Single opt-in (SOI)** forms accept every submission without verification. This is the worst case: the victim's address lands on the live list, and SOI mail keeps arriving after the attack until the victim unsubscribes or blocks each sender one by one. Forcepoint observed leftover mail in foreign languages (coupons, sales announcements) that continued after the attack ended, the lasting trace of SOI signups. - **Confirmed opt-in (COI)** keeps the address off the list, but during a bombing the **volume of confirmations is itself the weapon**. Many of the victim lists in 2016 were already COI. The benefit of COI is long-term (no further mail after the flood subsides), "which is little comfort to an individual experiencing real-time distress and lost emails." - **CAPTCHA** stops most bots at the point of submission. Spamhaus calls it "the single best thing that can be done to secure a form", and Google reCAPTCHA is free and "will foil most bots." But CAPTCHA adoption is nowhere near 100%, so for recipients the ecosystem remains exploitable. - **Spamhaus's conclusion is to use CAPTCHA and COI together** on every subscription form. CAPTCHA protects the world from your form, and COI protects your list from the consequences of the attack. - Dynamic confirmation links based on mailto (Jakobsson and Menczer, 2003) can defeat simple scripts, but they add friction in several steps, and their adoption is still negligible. **Adoption is the structural weakness.** None of these measures has been fully deployed since they were recommended in 2003. Small sites lack the technical means. Anti-bot plugins exist, but they are not enabled by default. And commercial incentives push the other way, because sites want unconstrained subscriber growth. Forcepoint cites MailChimp's decision in 2017 to go back to single opt-in as the default as an example of resistance influenced by commercial interests. Old, unmaintained forms remain a standing stock of threats. ## The M3AAWG recommendation (October 2017) The *M3AAWG Recommendation on Web Form Signup Attacks* (reference URL: m3aawg.org/WebFormAttacks) is a short position paper. Its key points: - It frames the attack (exploited since late 2015) as beyond the ability of individual senders, hosting providers or receivers to solve alone. - **Call to action 1**: all providers that generate mail in response to web form submissions should implement the header that signals form signups (the IETF draft below), so that receivers can identify floods of mail triggered by forms. - **Call to action 2**: all publicly exposed web forms should be protected against bulk or automated submission with standard measures that tell humans from bots, such as CAPTCHA systems of various types. - As of the M3AAWG general meeting in October 2017, a variety of companies were emitting the header, and some receivers had built it into their protections. Its value grows with adoption. ## The M3AAWG Sender BCP defenses (August 2026) M3AAWG's *Sender Best Common Practices* (Version 4.0, August 2026, section 4.2, "List Bombing") returns to the attack. It notes that one form is rarely abused much on its own: the harm comes from the same address being submitted to hundreds of sites at once, which is why a single company finds it hard to see that it is part of the problem. Its advice is to combine several defenses, because a form protected in several ways is harder to recruit into an attack. It lists ten, and says the list is not exhaustive: CAPTCHA, limits on which systems can submit to the backend, rate limits per IP address, watching for one address across several forms, regional limits, a hidden honeypot field, a minimum completion time, unusual field names, moving an attacked form, and the Form-Sub header. The checklists below include each of them. ## The Form-Sub header (draft-levine-mailbomb-header): an expired IETF draft **Status: this is an Internet-Draft submitted by an individual, never adopted or published as an RFC. The latest version is -02 (2019-11-26), and it expired on 2020-05-29. As of July 2026, when this information was extracted, it is inactive.** It still matters as the mechanism M3AAWG endorsed and some senders shipped. M3AAWG still points to it: its *Sender Best Common Practices* (Version 4.0, August 2026, section 4.2) ends its list of form defenses by suggesting that senders consider emitting the header for the mailbox providers that receive the mail, and links to version -02 of the draft. - **Purpose**: a mail submission agent (MSA) or the first mail transfer agent (MTA) adds a `Form-Sub:` header to any message generated by a web form submission. The header carries the IP address that submitted the form, optionally partly redacted. Receivers correlate the IP addresses across the incoming flood, recognize the pattern of a mail flood, and defer or reject the mail. - **Syntax** (a list of tag=value pairs separated by semicolons; the first tag must be the version): ``` Form-Sub: v=1; ip4=198.51.x.x Form-Sub: v=1; ip6=2001:db8:x:x:x:x:x:x Form-Sub: v=1; ip=none ``` ABNF sketch: `fields =/ "Form-Sub:" FWS "v=1" *(FWS ";" FWS fsarg) CRLF`, where `fsarg` is one of `ip4=` or `ip6=` (parts can be replaced by `x` for redaction), `ip=none` when the submitting address cannot be determined, or an extension tag (unknown tags are ignored). - The header should be included in the set of headers covered by any DKIM signature. - **Associated enhanced status code**: `X.7.28`, meaning that the message was rejected because it was detected as part of a flood of messages carrying Form-Sub. - **Security and privacy considerations**: IP addresses can be personally identifiable information (PII), hence partial redaction, which still allows correlation. The header discloses where the submitter is, and the status code discloses the receiver's defenses. Adversaries adapt when they learn they are being detected. - **Known limitation** (a criticism by Forcepoint and APWG): the header is only effective if the submitting IP is identical or nearly identical across the flood. A distributed attack from a botnet or a coordinated network of submitters makes correlation on a single IP useless. It also only works if every site with a form adopts it, and the small sites least likely to deploy CAPTCHA are just as unlikely to deploy the header. ## Detection signatures of an attack in progress (APWG and Forcepoint research) In *A Layered Approach to Defending Against List-Linking Email Bombs* (APWG eCrime 2018), Houle and Pandey of Forcepoint Security Labs analyzed **three months of email for 3,000 medium and large enterprises (10.7M messages)**. They validated detection heuristics that an ESP abuse desk or a receiving system can reuse. **Time and volume** - Attacks are acute: a sharp start, peak volume within the first few hours, a sustained siege of 12–24 hours, and then a steep drop rather than a tapering one. Volume does not build up slowly. - Recognizable patterns emerge in the **first or second hour**, so early detection is both feasible and critical. - **Anomaly detection for each user works; aggregate detection does not.** Volume anomalies at the level of the enterprise (single-day jumps of at least 100 standard deviations (SD) above the 7-day and 30-day means) surfaced only 12 candidates, and noise from business applications (SharePoint, process logs, meeting invitations, with spikes of up to several hundred SD) drowned out real attacks. Detection for each user (**daily volume at least 10 standard deviations above the user's 7-day mean**) surfaced 32 mailboxes. Of those, 3 were genuine list-bombing victims, and they included three attacks that were previously unknown. The rest were spam or notification accounts, recognizable by identical senders and subjects. Observed victim profiles: from 0 emails a week to 3,262 an hour; from 20–30 a day to 3,806 in one hour; from under 20 a day to 1,381 in one hour. - **Heuristic for the end of an attack**: when daily or hourly volume falls to no more than 3 SD above the mean before the attack, and stays there for 3–5 days, stand down from the defensive posture. **Content and metadata (confirmation mail is uniform in meaning)** - Subject phrases in the case study: **44.8% began with "Account details"** (7% of those ended with "(pending admin approval)"). Another 9% were foreign-language versions of the same phrase ("Kontoinformationen," "Détails du compte," "Szczegóły konta"). Of the rest, 11% began with "[" followed by a forum or site name, 11% began with "Welcome", and 4% contained "username and password." - The distribution of sender local parts is characteristic: `info@`, `admin@`, `wordpress@`, `webmaster@`, `noreply@`, `support@`, `no-reply@`, `contact@`, `sales@` and `forum@` dominate. The first 30 messages of the case-study attack included 4 from `admin@` and 3 from `nobody@` within 10 minutes, which is highly unusual for an end user. - The geographic spread of the sending MTAs (87 countries, compared with a baseline under 5) and the spread of languages (about 33 languages, 74% English) are confirming signals. The top source networks (by autonomous system number, ASN) were ordinary hosting providers (GoDaddy 653 messages, 1&1 442, Gossamer Threads 237, DreamHost 216, OVH 196, Hetzner 190, and others), that is, legitimate websites around the world. This confirms that blocking by source fails. **Recommended defense at the point of impact**: combine anomaly detection on each user's volume with recognition of phrase patterns, and use them to trigger temporary throttling, or aggressive dropping, of mail that looks like confirmations, for the targeted mailbox only. This keeps the mailbox working and avoids draconian measures such as blocklisting large mailing list providers wholesale, disabling the targeted mailbox, or dropping all marketing mail. ## Defense checklist for form owners (ESP customers) | Defense | Notes | |---|---| | CAPTCHA or reCAPTCHA on every public form | The single most effective measure (Spamhaus). Free (reCAPTCHA), and foils most bots. Applies to any form that triggers email: subscription, account creation, contact, comment. | | Confirmed opt-in (COI) | Keeps bombed addresses off the live list; without a click, no marketing mail is sent. It does not stop the flood of confirmations itself, so pair it with CAPTCHA. M3AAWG's Sender BCP (section 4.1) ranks it as the best opt-in level, says the confirmation message should be simple and free of advertising, and says a changed email address should be confirmed the same way. See [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods). | | Hidden honeypot field | A standard complement: a form field that humans cannot see. Any submission that fills it in comes from a bot, so drop it silently. M3AAWG's *Sender Best Common Practices* (Version 4.0, August 2026, section 4.2) now lists it: for example, a visible email field and a hidden one, rejecting any submission that fills in both. | | Minimum completion time | Record when the page loaded, or issue a key with it. Discard a submission that arrives faster than a person could fill in the form, or that has no timestamp at all (M3AAWG Sender BCP, section 4.2). | | Unusual field names | Name fields something other than the usual `firstname` and `email`, because submission scripts look for common names (M3AAWG Sender BCP, section 4.2). | | Restrict who can submit to your backend | Accept form submissions only from your own web servers, so that a script cannot map the form and post to your database directly (M3AAWG Sender BCP, section 4.2). | | Move an attacked form | If a form has been attacked, change its URL, for example from `/signup` to `/signup1` (M3AAWG Sender BCP, section 4.2). | | Limit a regional form to its region | A provider that serves only one region might show the form only to IP addresses in that region (M3AAWG Sender BCP, section 4.2). | | Rate limiting per IP address or per session | Bots submit at machine speed (in 2016, more than 1,000 signups per minute across the fleet). Cap submissions per IP address in each time window. | | Throttling per address | Never send more than N confirmations a day to the same address, and deduplicate repeat signups (one victim address was signed up 9,000+ times). | | Address validation at signup | Syntax and MX checks, and filtering of typo and disposable domains. See [List Hygiene](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies). | | Consent record keeping | Capture the signup timestamp (UTC), the channel and the submitting IP address. This is required evidence when you negotiate a delisting ([Blocklists and Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus)). | | Turn off what you do not need | On WordPress and similar platforms, disable open user registration if you do not use it, and install anti-bot plugins (they are not enabled by default). | | Monitor signup velocity | Alert on an abnormal signup rate, a burst of addresses at foreign domains, or repeated identical addresses. | ## Defense checklist for ESPs and platforms | Defense | Notes | |---|---| | Signup anomaly detection across the whole platform | An attack rarely uses a single customer's form. Watch the aggregate signup velocity per target address and per target domain across all customer forms (in 2016, one ESP saw 22K malicious signups across 3,000 target domains). M3AAWG's Sender BCP (section 2.7) names two signup-form checks: subscription volume per customer, to catch spikes, and one address subscribed across several accounts. Section 4.2 adds that a sender or ESP hosting several forms should watch for the same address added to different forms. | | Require COI or make it the default; secure hosted forms | Ship signup forms protected by CAPTCHA and rate limits as the default, and require COI for risky signups. Beware the commercial pull toward SOI defaults, which is exactly what keeps this class of attack alive. | | Emit the Form-Sub header (or a successor signal) | As the M3AAWG recommendation advises. When you advise customers, mention its limits and that the draft has expired. | | Suppression per address during attacks | When a target address is being bombed across the platform, suppress further confirmations to it and quarantine the signups. | | Cooperation across the industry | The 2016 cleanup worked because ESPs shared lists of bombed target addresses and attacking IP addresses (coordinated in a Slack channel hosted by Word to the Wise), and Spamhaus called the cleanup "quick and efficient in most cases." Maintain those channels and your blocklist relationships before you need them. | | Push customers to secure the forms they host themselves | Spamhaus explicitly expects ESPs to "proactively push their customers to secure their various online sign up forms". Make it an onboarding policy and a trigger for enforcement, not a suggestion. | | Awareness of blocklist risk | Spamhaus listed source IP addresses during the 2016 wave. An unsecured customer form is a liability for the shared pool, so treat sustained form abuse like any other outbound abuse: throttle, isolate, suspend. | | Protection for hosted mailboxes on the receiving side | If you also host mailboxes, implement the detection described above, on each user's volume and on phrases, rather than blunt instruments. | ## Related articles - [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods) - [List Hygiene and Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies), including validation at signup - [Blocklists and Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus) - [Spam Traps](https://emailmarketing.net/learn/reference/spam-traps), including trap poisoning through unsecured forms --- **Sources.** The Spamhaus article was originally published on 2016-09-16 by "Lys Maltice" at spamhaus.org/news/article/734, and later moved to the resource-hub URL. It now returns 404 at both locations, and its content was extracted from the Internet Archive capture of 2024-01-18. The M3AAWG recommendation was retrieved as the official PDF behind m3aawg.org/WebFormAttacks (October 2017, document M3AAWG111). The Form-Sub details come from the full text of the draft at ietf.org/archive/id/draft-levine-mailbomb-header-02.txt. # Suppression-List Architecture for Sending Platforms > How a multi-tenant platform scopes suppression — global vs account vs tenant vs stream — with auto-suppression triggers, precedence and override semantics, retention, and bulk transfer, extracted from AWS SES's documented design. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-operations/suppression-list-architecture If your platform sends mail for many customers, you have to decide where each do-not-send list applies, what adds addresses to it, and how an exception can override it. The best public evidence for these decisions is Amazon SES, which documents a complete scheme with four levels, and the patterns below are attributed to it. What to suppress for a single sender, and why, is covered in [Reputation Monitoring, suppression lists](https://emailmarketing.net/learn/operations/reputation-monitoring#suppression-lists-as-a-reputation-defense) and [Complaint Feedback Loops](https://emailmarketing.net/learn/list-management/complaint-feedback-loops). The focus here is the platform architecture: scopes, precedence, triggers, retention and transfer. ## The scope hierarchy (SES's four levels) | Scope | Who it protects | What adds addresses | Visible to the customer? | Retention | |---|---|---|---|---| | **Global** (the whole platform) | The platform itself, across all customers | Hard bounces from any customer's sending | No. It cannot be queried, edited or disabled | A retention period that grows with each bounce, 14 days at most | | **Account** (one customer) | One customer account | Hard bounces, complaints or both from that account's sending; manual and bulk additions | Yes, with full create, read, update and delete operations and bulk import and export | Until removed (automatically purged after 90 days if the account's sending is paused) | | **Tenant** (one sub-customer) | One tenant within an account | That tenant's own bounces and complaints, when tenant scope is enabled | Yes, with the same API and a tenant parameter | Until removed; deleted with the tenant | | **Stream** (one configuration set) | One sending workflow | Nothing. It only overrides: it redirects or disables checking and recording for sends that use that stream | Yes, as settings rather than a separate list | n/a | The general pattern is **a short-lived global backstop, controlled by the platform, for provable delivery failures; long-lived lists controlled by customers for everything else; and overrides for each stream to handle exceptions.** ## Global (platform-wide) suppression (SES pattern) - **Trigger.** A hard bounce from any customer's send adds the address for all customers. Nothing else, including complaints, feeds the global list. - **Growing retention.** After a first hard bounce, the address is suppressed for a short period and then removed automatically. Each later hard bounce adds it again for a longer period, up to a maximum of **14 days** on the list. The global list is therefore a cache of addresses recently known to be bad, not a permanent register. This deliberately avoids suppressing, permanently and for every customer, addresses that may become valid again. - **No visibility.** Customers cannot query it, add to it or disable it. The only sign of it is the synthetic bounce (below). - **Sending behavior.** The API accepts a send to a globally suppressed address but does not transmit it. The platform generates a synthetic bounce (`bounceType=Permanent`, `bounceSubType=Suppressed`). Importantly, these synthetic bounces **count toward the customer's bounce rate and daily quota**. Mailing suppressed addresses still costs the customer reputation standing, which keeps the incentive to clean lists. - **Override.** A customer's own account-level list takes precedence for their sending decisions. An address on the global list but not on the customer's account list will still be attempted if the customer sends to it, but a resulting bounce counts against the customer. SES used to offer a form for customers to request removal from the global list; it was retired in favor of account-level lists. **Design lesson.** Should customer B be protected from an address that hard-bounced for customer A? The global scope answers yes, briefly, and only for delivery failures. Complaints never cross that line: they stay within the account or tenant that received them. This is the vendor's answer to the question of suppression across customers. ## Account-level suppression (SES pattern) - **On by default.** Accounts created after November 25, 2019 have it enabled for both bounces and complaints. Older accounts opt in (`PutAccountSuppressionAttributes`). - **Triggers (`SuppressedReasons`).** `BOUNCE` (hard bounces **only**; soft bounces never add an address automatically), `COMPLAINT` (spam reports from feedback loops (FBLs)), or both. Each entry records its reason, the feedback event that triggered it, and the message that caused it. - **Matching reasons.** An entry blocks a send only when its reason matches the reasons configured for the account. With the setting *Bounces only*, entries with the reason `Complaint` are still mailed. With *Bounces and Complaints*, both kinds of entry block. - **Effect on metrics.** Sends blocked by the account list do **not** count toward the account's bounce and complaint rates for reputation (they appear in separate suppression counters), but they **do** use daily sending quota. The list protects reputation; it does not provide free volume. - **Propagation.** Hard bounce entries added to the account list are also added to the global list, so one customer's verified bad address briefly protects everyone. - **Retention.** Entries stay until they are explicitly removed. If the account's sending is paused (as an enforcement action), the platform automatically deletes the account list after **90 days**, unless sending is restored first. - **A known blind spot.** Gmail sends no complaint feedback to SES, so a Gmail user's click on "spam" never adds an address to complaint suppression, at any scope. Any suppression design must assume that complaint data is incomplete by nature for some major providers. See [Google Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools) for the aggregate data that partly replaces it. - **A storage detail to copy deliberately or to avoid.** Addresses are stored with their original capitalization. Matching at send time ignores case, but calls to the management API need the exact case. - **No size limit** applies to the list itself. ### Stream-level (configuration-set) overrides A setting for each stream can override account suppression in three ways (SES's "suppression list options"): 1. **Inherit**: the stream uses account-level suppression unchanged. 2. **Disable entirely**: the stream bypasses all suppression ("override account settings" with suppression turned off). This is the mechanism the platform provides for the *transactional exception*, because a person who complained must still receive their receipts and tickets (see [Complaint FBLs](https://emailmarketing.net/learn/list-management/complaint-feedback-loops)), and for deliberate sends that check addresses again. 3. **Custom reasons**: the stream applies its own set of reasons and ignores the account settings. For example, the marketing stream suppresses on bounces and complaints while the account default is bounces only. Scoping also applies to additions. Account suppression can be set to record new entries only from sends tagged with specific configuration sets. ## Tenant-level suppression (SES pattern, for isolating tenants) By default, all tenants in an account share the account-level list, so a bounce or complaint from one tenant suppresses the address for every tenant. Tenant-level suppression gives each tenant its own separate list. Two settings are set together, both or neither: - **`SuppressionScope`**: `TENANT` uses the tenant's own list; `ACCOUNT`, the default, uses the shared account list. - **`SuppressedReasons`**: `BOUNCE`, `COMPLAINT`, both, or empty, which means no checking and no recording. How the combinations behave, as documented: | Scope | Reasons | Check at send time | Recording | |---|---|---|---| | TENANT | BOUNCE, COMPLAINT | Tenant list, both reasons | Both, to the tenant list | | TENANT | BOUNCE | Tenant list, bounces only | Bounces, to the tenant list | | TENANT | COMPLAINT | Tenant list, complaints only | Complaints, to the tenant list | | TENANT | (empty) | none | none | | ACCOUNT | BOUNCE, COMPLAINT | Account list, both reasons | Both, to the account list | | ACCOUNT | (empty) | none | none | The rules that matter: - **Precedence.** The configuration set overrides the tenant, which overrides the account. A stream override can change only the scope, only the reasons, or both, without changing the tenant defaults. - **Scopes replace each other; they do not add up.** With scope `TENANT`, the account list is skipped entirely, so an address on the account list but not on the tenant list **is mailed**. Isolation works in both directions: the tenant escapes contamination from other tenants and loses the shared protection. - **Bounces and complaints are recorded differently.** Under tenant scope, hard bounces are recorded to the tenant list **and the global list** (never the account list), and complaints go to the tenant list **only**. Delivery failures still feed the platform-wide backstop, while behavioral signals stay private to the tenant. - **Automatic removal.** When a recipient marks a message they previously reported as not spam, the matching `COMPLAINT` entry is removed from the tenant list automatically. - **Observability.** Blocks caused by tenant suppression are labeled: bounce type `Permanent` with subtype `OnTenantSuppressionList`, the diagnostic code "…on the suppression list for your tenant", and a `ses:tenant-name` tag on bounce and complaint events for attribution. - **Structure.** Each tenant has exactly one list (1:1). Lists are specific to a region. Deleting the tenant deletes its suppression entries. Blocked sends still count against sending quota. The same case-sensitivity rule applies. The API operations are the same as at account level, with a `TenantName` parameter; leaving it out targets the account list, so existing integrations keep working. ## Bulk transfer: import and export mechanics (SES pattern) Moving suppression lists matters when customers change platforms. A customer who arrives should import their previous suppression list before the first send, and a customer who leaves should be able to take it with them. SES documents these mechanics: - **Import (add).** A CSV file (`address,REASON`) or newline-delimited JSON (`{"emailAddress":…,"reason":…}`) from object storage. Up to **100,000 addresses per import job**, and at most **20 concurrent jobs**. The reasons are limited to `BOUNCE` and `COMPLAINT`. Each job has a status with counts of processed and failed records, and a failure file for reconciliation. - **Bulk delete.** The same pipeline with a delete action, limited to **10,000 addresses per job**. - **Export.** A paginated listing API with `StartDate` and `EndDate` filters (entries added after or before a timestamp), which supports both a full export and incremental synchronization. - Bulk operations require production account status, meaning the account has been vetted. This is a control against platform abuse, because bulk import or removal of suppression entries can also be used to clean bad lists and to probe addresses. **What an ESP should consider in a transfer.** Keep the reason for each entry across the transfer, because bounces and complaints behave differently under overrides. Keep where each entry came from (date, triggering event) where possible. Treat incoming bulk jobs that remove addresses from suppression with more suspicion than jobs that add them. Legal limits on transferring addresses of people who opted out apply to how the platform handles exported lists: [CAN-SPAM](https://emailmarketing.net/learn/compliance/can-spam) prohibits selling or transferring an address after the recipient opts out, other than sharing it for suppression. ## Architecture decisions the vendor evidence settles 1. **Scope complaints narrowly and bounces more broadly.** In the SES design, complaints never leave the account or tenant that received them. Only hard bounces, which are objective delivery failures, spread across the platform, and even then for ≤14 days. A person who complained about customer A is not suppressed automatically for customer B. 2. **There are exactly two triggers for automatic suppression**: a hard bounce and an FBL complaint. Soft bounces never add an address automatically at any scope. Suppressing after a threshold of soft bounces, for example after several in a row, is a policy for the sender to set (see [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring)). In this design, list management handles unsubscribes, not the platform's suppression layer. 3. **Every scope needs a way to override it**, with explicit, documented behavior (inherit, disable or custom), because the transactional exception is real. Make the bypass a setting for each stream, not a flag on each send, so that it can be audited. 4. **Suppressed sends must stay visible and must have a cost.** Emit distinct events (dedicated bounce subtypes or reason codes) so customers can see suppression working, and count suppressed attempts against quota so that suppression does not become free volume. Exclude sends suppressed by the platform from the customer's reputation metrics, because the block prevented the harm. 5. **Retention differs by scope on purpose.** Platform-global retention lasts days, so the list heals itself. Customer and tenant lists last until someone acts on them, and their cleanup follows the account lifecycle (a purge 90 days after an enforcement pause; deletion with the tenant). Keeping unsubscribes forever conflicts with data protection erasure, and that separate legal design problem, raised in the contexts of [CASL](https://emailmarketing.net/learn/compliance/casl) and [PECR](https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing), is outside the sources used here. It is resolved on the legal side in [GDPR and ESP Suppression Lists](https://emailmarketing.net/learn/compliance/gdpr-and-suppression-lists), which explains when suppressing an address without the client's instruction turns the ESP from a Data Processor into a Data Controller, and why a minimal suppression record survives an erasure request. See also [Right to Object and Erasure](https://emailmarketing.net/learn/compliance/right-to-object-and-erasure). 6. **Isolation is explicit and must be switched on.** The default is a list shared across the account, which gives the most protection. Tenant isolation is enabled for a tenant when the risk of contamination from other tenants outweighs the shared protection, and the platform states plainly that isolated tenants lose the protection of the account list. For the tenant container itself (reputation policies, automatic pauses), see [Multi-Tenant ESP Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture). # Vetting Automation & Third-Party Risk Signals > The signal-vendor landscape for automating ESP customer vetting — email-risk APIs, IP/device fraud scoring, domain intelligence, payment-fraud signals, breach lookups — and the automation architecture that composes them into onboarding gates, progressive trust ladders, and continuous re-scoring. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-operations/vetting-automation If you run an email service provider (ESP), you can automate much of customer vetting by buying signals from third-party vendors and combining them into risk scores, gates and progressive trust. [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting) covers **what** to check: the questionnaires of the Messaging, Malware and Mobile Anti-Abuse Working Group (M³AAWG), the red flags, and the method for manual review. The guidance below covers **which tools to use and how to automate the checks**: the signal vendors an ESP can connect to its signup and onboarding flow, and the architecture that combines those signals into risk scores, gates and progressive trust. The M³AAWG Hosting Abuse Best Common Practices (BCP) already requires the outcomes: "fraud-score prospective accounts and auto-reject below threshold," "put limits on new accounts," and "tiered rights allocation" (see the [fraud-prevention practices](https://emailmarketing.net/learn/esp-operations/customer-vetting#fraud-prevention-practices-hosting-abuse-bcp)). What follows is how to implement them. **How much of this is established.** No published industry standard covers how to combine vetting signals. The patterns for combining them below are practitioner consensus, and inference from what major platforms publicly document about their own onboarding (attributed by name throughout). Claims about vendor capabilities come from vendor documentation. Where only the vendor's marketing asserts accuracy or effectiveness, the text says so. **No third-party risk score has independently audited accuracy figures. Treat every vendor accuracy claim as marketing.** ## Two different questions, two different signal sets Vetting automation answers two separate questions that are easy to confuse: 1. **Is this signup a fraudulent or abusive actor?** (a spammer, a snowshoe operator, a fraudster using stolen cards, a phisher) IP and device intelligence, payment-fraud signals, domain history and identity checks on **the customer** answer this question. 2. **Is this customer's data dangerous?** (purchased lists, harvested addresses, files full of traps) Email validation and risk APIs run against **the customer's uploaded lists** answer this one, together with the acquisition questions from the [vetting questionnaire](https://emailmarketing.net/learn/esp-operations/customer-vetting#list-data-collection-and-management-practices). A customer can be legitimate and have terrible data, or look clean and intend fraud. Automation must score both. Gates that mix the two questions pass polished fraudsters and reject honest small businesses that have old lists. ## The signal-vendor landscape ### Email-address validation vs. risk scoring Vendors bundle these two product classes together, but they overlap only partly and serve different purposes in vetting: - **Deliverability validation** answers "will this address accept mail?" It covers syntax, whether an MX record exists, mailbox probing at the SMTP level, catch-all detection, and flags for role accounts and disposable addresses. This is list-hygiene tooling (see [List Hygiene](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies)) put to use for vetting. Run it on a sample of the list a customer uploads, and the overall profile (invalid %, role-account %, disposable %, catch-all %) is a strong indicator of how the addresses were acquired. High invalid rates point to old or purchased data, the same logic Mailchimp documents for Omnivore (below). - **Risk scoring** answers "is this address likely to hurt me?" It covers the likelihood of a trap, complaint history, and predicted engagement. It is probabilistic by nature and specific to each vendor, so use it to rank addresses relative to each other, not as a verdict. | Vendor (example of the class) | Documented capabilities | Notes | |---|---|---| | **Kickbox** | Result classes `deliverable`, `undeliverable`, `risky` and `unknown`, with reason codes. A proprietary **Sendex** quality score (0–1) for each address | The meaning of the score is documented. Specific cut-off values quoted in reviews (for example, "0.7 = safe") are practitioner heuristics, not guarantees the vendor publishes | | **ZeroBounce** | Statuses `valid`, `invalid`, `catch-all`, `spam_trap`, `abuse`, `do_not_mail` and `unknown`. "AI scoring", a 0–10 prediction of engagement. Activity data (engagement over the past year) | The `abuse` status (people who habitually click the spam button) and the `spam_trap` flag come from the vendor's own datasets. Their coverage and accuracy are marketing claims that no one has verified independently. Real trap operators do not sell trap lists (see [Spam Traps](https://emailmarketing.net/learn/reference/spam-traps)) | | **BriteVerify (Validity)** | Verification focused on deliverability: valid, invalid, accept-all, unknown | Typical of the pure validation class (with NeverBounce, Emailable and others), with no fraud-risk layer | **How to use it for vetting** (practitioner consensus): validate a random sample of any list a prospect brings, which follows the sampling logic of the M³AAWG test-send method. Decide on the overall profile, not on individual addresses. A list that is 15% undeliverable was not built by confirmed opt-in, whatever the questionnaire says. ### IP, device, and identity fraud scoring These vendors score **the signup itself**: the IP address, device, email address and identity the prospect used to register. | Vendor | Documented capabilities | Score model | |---|---|---| | **IPQualityScore (IPQS)** | Detection of proxies, VPNs and Tor. IP reputation. "Abuse velocity" (recent abusive activity from the IP). Device fingerprinting. An email risk API (disposable detection, "history of fraudulent behavior online"). Phone reputation | A fraud score from 0–100. IPQS's own documentation treats a score of 90 or more as high risk (a threshold the vendor recommends; tune it to your own outcomes) | | **MaxMind minFraud** | Transaction risk scoring over the IP, email, address and payment fields. Email and domain intelligence, including **the domain's `first_seen` date on the minFraud network** (recorded since 2019) and a domain risk score. IP geolocation data (GeoIP) | A risk score from 0.01–99, documented as a calibrated probability of fraud (a score of 20 means about a 20% chance) | | **Sift** | Machine-learning scores for each type of abuse: payment fraud, **account abuse** and **content abuse**. Trained on the customer's own event stream and on Sift's network across customers. An event-driven API (you send signup, login and content events, then poll for scores or receive them) | A score from 0–100 for each type of abuse. A user can score high for one type and low for another | Vendors that work across a network (minFraud, Sift, IPQS) get their value from seeing the same actor across many customers. That is also their weakness. Their coverage claims ("data from hundreds of millions of users") are marketing that cannot be verified, and you cannot know how often they flag legitimate users in your own population until you measure it. The facts documented independently are the API contracts and the meaning of the scores above. **Signals specific to deliverability** add to the same data. A signup from an IP address on **Spamhaus AuthBL** (sources of credential stuffing; see [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus)), or a signup through an anonymizing proxy, is the automated form of the registration-abuse red flags in the Hosting Abuse BCP, described in [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts#compromised-vs-malicious-accounts). ### Disposable / temporary-domain detection Signups that use throwaway mailboxes correlate strongly with abuse of free trials and with snowshoe registration (practitioner consensus; no base rates are published). - **Open-source lists**: the community-maintained [`disposable-email-domains`](https://github.com/disposable-email-domains/disposable-email-domains) blocklist (maintained since 2014, with a submission process that requires evidence) is the de facto free baseline. Several automatically generated forks track providers that change domains quickly. - **Commercial detection** (IPQS, ZeroBounce, Kickbox, and services like UserCheck) claims fresher coverage of disposable providers that keep changing domains. The claim is plausible but not audited. - **Design caveat**: disposable-domain providers rotate domains precisely to evade static lists. Treat a domain missing from the list as "unknown," not "clean." A **newly registered domain** signal (below) catches much of the rotation the lists miss. ### Domain intelligence: the customer's sending domain The domain a prospect wants to send from is the richest single thing to vet. All of these checks can be automated: | Check | Mechanism | Signal | |---|---|---| | **Registration age** | Creation date from RDAP or WHOIS | A domain registered days ago that claims years of sending history contradicts the questionnaire. New domains carry almost no reputation ([Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices)) | | **Zero-reputation window** | **Spamhaus ZRD** lists newly registered domains, and domains that were dormant, for 24 h, with return codes that encode the domain's age in hours | A documented Spamhaus dataset, available only through DQS. A prospect whose domain is on ZRD at signup has, by definition, no history to vet | | **Blocklist history** | **Spamhaus DBL** (spam domains, with return codes that separate spam, phish, malware and **abused-legitimate**), equivalents such as SURBL, through DQS or data feeds | Spamhaus explicitly markets its domain-reputation data for vetting ESP prospects and for placing customers in pools by risk. The abused-legitimate distinction matters, because it flags a compromised customer rather than a bad one | | **DNS posture** | SPF, DKIM and DMARC records that exist and make sense. An MX record. The quality of the name servers | A prospect with no control of its DNS cannot authorize the ESP ([Customer Domain Authentication](https://emailmarketing.net/learn/esp-operations/customer-domain-authentication)). DMARC at enforcement on a domain the prospect claims not to control is a sign of impersonation | | **Web presence** | An HTTP fetch of the domain: a real site, a parked page or a template. Whether the content category matches the stated business | A parked or empty domain that claims to be an established business is a classic snowshoe pattern (practitioner consensus) | | **Prior-IP reputation** | Blocklist lookups, and SNDS or other reputation lookups, on the IP addresses the prospect says it sent from | Automates the vetting-questionnaire question "which IPs did you previously mail from" | | **Corporate registry / WHOIS transparency** | Registrant data from RDAP (heavily redacted since the General Data Protection Regulation, GDPR), business-registry APIs | Automates the verification of the business. Expect WHOIS to return little and fall back to registry or manual checks. See the [2011 caveat in Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting#whois) | ### Payment-fraud signals as spam predictors Signups with stolen cards and spam operations overlap heavily. Spammers do not pay with their own cards, and serial rebillers keep changing their payment identities (the Hosting Abuse BCP's "frequent changes of payment information" trigger). If the ESP takes payment at signup, the payment processor's fraud tools provide a free vetting signal: - **Stripe Radar** (an example of the class) documents a machine-learning risk score from 0–99 for each payment, with the risk levels `normal`, `elevated` and `highest` (defaults in Radar for Fraud Teams: elevated at 65 or above, highest at 75 or above). It also provides "risk insights" that explain the contributing factors, and it is trained across Stripe's network. Adyen, Braintree and Kount publish equivalent scores. - **Signals worth feeding into vetting**: the payment risk score or level, a **mismatch between the card's bank identification number (BIN) country and the claimed business country**, BINs of prepaid or virtual cards, the velocity of card testing, and later **chargebacks** (a chargeback on an active sending account is a strong trigger to terminate and review). - That payment fraud predicts spam is practitioner consensus, not the finding of a published study. It is, however, built into the registration-abuse guidance of the M³AAWG Hosting Abuse BCP, which treats stolen or disposable cards as the signature of abuse through paid accounts. ### Breach and abuse-history lookups - **Have I Been Pwned (HIBP)** documents a v3 API: breaches, pastes and stealer logs by email address, and domain search for domains you own, in subscription tiers with API keys. Its relevance to vetting is indirect. A signup email address that appears in recent stealer logs raises the risk of account takeover (require stronger authentication), and it is a standard input to fraud tools. Paradoxically, an email address that has never appeared in any breach can indicate a newly created identity. Several fraud vendors (IPQS, minFraud `first_seen`) use this "digital footprint age". The interpretation is industry practice, not documented fact. - **Internal deny history**: the most valuable abuse-history lookup is your own. The Hosting Abuse BCP says to "keep records of previously terminated fraud accounts and match new signups against them." Match on email address, domain, payment fingerprint, device fingerprint and, with care, IP range. No vendor sells this, so build it. Abuse-desk practitioners report that terminated customers signing up again under a fresh identity is the single most common way vetting fails. ## Automation architecture ### Composing an onboarding risk score This is the pattern used across the industry. It is inferred from how platforms behave and from the conventions of fraud tools, because no ESP has published a scoring formula: 1. **Collect signals at signup** (synchronously, within a budget of about 1–2 s): the IP and proxy score, the disposable check, domain age with ZRD and DBL status, payment risk if applicable, and any match against the internal deny history. 2. **Enrich asynchronously** (within minutes): the web-presence fetch, prior-IP reputation, breach lookups, and validation of a list sample once a list is uploaded. 3. **Combine** the signals into a single score plus **hard-fail overrides**. Two rules for combining them matter more than the weighting math: - **Hard fails bypass the score**: a match against the internal deny list, a sending domain listed on DBL (with codes other than abused-legitimate), or a confirmed stolen card. No weighted average should wash these out. - **Weight by evidence that a signal predicts abuse, then recalibrate**: start with the thresholds vendors recommend, log every signal for every signup, and once you have enough outcomes (terminations, breaches of complaint-rate limits, chargebacks), re-weight the signals against your own labels of abuse. A score you cannot test against past outcomes is only for show. Do not adopt anyone else's numeric thresholds, including the vendor examples quoted above, without validating them locally. 4. **Record the full snapshot of signals** with the decision. You need it for appeals, for recalibration, and for the abuse desk when the account later misbehaves. ### Gate design: four bands This band structure is standard practice. The bands are consensus, and the boundaries are yours to calibrate: | Band | Action | Design notes | |---|---|---| | **Auto-approve** | Full provisioning at the entry rung of the trust ladder (never unlimited) | Auto-approval does not mean the account goes unmonitored. Every approved account still enters [outbound monitoring](https://emailmarketing.net/learn/esp-operations/outbound-monitoring) and the ladder below | | **Sandboxed / limited send** | The account is active but capped: low daily volume, sending only to verified recipients or to the customer's own domain, a shared low-tier IP pool, and restricted API scopes | The SES sandbox is the standard documented example (below). This band routes risk into a quarantine pool, as in Spamhaus's guidance on pooling by risk and in [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture) | | **Manual review** | The account waits in a queue for a person, with the full snapshot of signals. It stays inactive or sandboxed while the review is pending | The vetting questionnaire from [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting) is the review script. Review time matters: review queues that take days lose legitimate customers to competitors | | **Reject** | Decline service | For rejections based on a fraud score, follow the abuse-desk rule: no data retrieval, and no explanation of which signal fired ([Abuse Desk Operations](https://emailmarketing.net/learn/esp-operations/abuse-desk)). For rejections based on policy (a prohibited content category), state the policy plainly | Two rules shape the structure. First, **the reject band should be narrow and made up mostly of hard fails**. Weighted scores near the boundary belong in manual review, because rejecting a good customer costs more than sandboxing a bad one. Second, **band thresholds must be adjustable at runtime** without a deploy, because waves of attacks require tightening within hours (compare the platform-wide responses in [Subscription Bombing](https://emailmarketing.net/learn/esp-operations/subscription-bombing)). ### Progressive trust ladders This is the M³AAWG principle of "tiered rights allocation", automated: initial caps are lifted after the account shows a clean history, not on request alone. Major platforms document these examples: | Platform | Documented mechanism | |---|---| | **AWS SES** | Every new account starts in the **sandbox**: a maximum of 200 messages in 24 h and 1 message per second, with recipients restricted to verified addresses or domains. Production access requires a request, reviewed by a person, that describes the use case and mail practices (typically 24–48 h). A typical initial production quota is 50,000 a day, later raised automatically or on request based on sending metrics. Quotas apply per region, and trust does not transfer between regions. | | **Mailgun** | New or flagged accounts are put on **probation**: an hourly sending limit (commonly cited as 100 messages an hour per domain) until the customer completes **business verification**, a review of identity and use case by a person. | | **Postmark** | **Every** new account is reviewed manually. Until it is approved, it can send only to its own verified domains. Review typically takes under 24 h on weekdays. After approval there is no fixed daily cap, and enforcement is based on metrics (complaint rate below 0.1%, bounce rate below 10%). | | **Mailchimp Omnivore** | Gating on data rather than on volume: on every import, or first send to new addresses, the **Omnivore** system predicts the likelihood of traps, bounces and complaints for that group of addresses. It blocks sending to audiences whose predicted rates are too high. In other words, the list itself must earn trust. | These examples teach three lessons. (a) The entry rung restricts recipients and rate, not only volume. Allowing sending only to the customer's own domain (Postmark) is a cheap and strong fraud filter, because spammers need to reach strangers. (b) Promotion combines automated metric checks with a person for the big step, from sandbox to production. (c) Ladders also go **down**: Mailgun puts established accounts back on probation, and SES pauses tenants based on findings ([Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture#automated-enforcement-reputation-policies)). Each rung above entry (larger caps, dedicated IP addresses, wider API scopes, DKIM for any domain) should have its own metric prerequisites. The Hosting Abuse BCP's bar of about 12 months of clean history for elevated privileges is the only published tenure figure on this topic. ### Continuous re-scoring Vetting at onboarding is a snapshot, so the risk score must keep changing. Feed it from [outbound monitoring](https://emailmarketing.net/learn/esp-operations/outbound-monitoring): - **Changes in behavior trigger a new score**: the M³AAWG triggers for ongoing monitoring ([Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting#ongoing-monitoring-triggers)), such as sudden list growth, changes to content or privacy policy after metrics shift, repeated changes of payment information and sending that stops and starts, together with bounce, complaint and trap telemetry and findings on each tenant's reputation. - **Query vendors again when a trigger fires, not on a schedule**: re-running paid fraud lookups on every customer every night is expensive and finds little. Query again when a behavioral trigger fires. A new sending domain triggers the domain-intelligence checks, a new card triggers the payment signals, and an unusual login triggers the IP and device signals. - **A changed score goes back through the same gate bands**: a worse score moves an account down the trust ladder (lower caps, the quarantine pool, a strict reputation policy) or into manual review. Reusing the onboarding machinery for enforcement over the account's life keeps one set of policies instead of two. - **Route by past behavior**: before enforcement, run the comparison of compromised and malicious accounts from [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts#compromised-vs-malicious-accounts). A history of good behavior calls for the account-recovery process, not the fraud process. ### Integration patterns - **Synchronous gate at signup**: use only signals that answer within the page-load budget, and run everything else asynchronously. **Fail open into the sandbox band, never into auto-approve.** A vendor outage should mean that more accounts start limited, not that vetting is switched off. (Practitioner consensus.) - **Asynchronous enrichment through a queue and webhooks**: vendors with event models (Sift's event API, Stripe Radar's webhook events, HIBP polling) push changes in score, and your consumer maps them onto the customer's risk record. Idempotency and handling events that arrive out of order are the usual webhook disciplines. - **Batch re-validation**: list-validation vendors run batch APIs for files (submit a list, poll, fetch the results). Route list uploads through this path, with sending blocked or limited to a sample until the results return, as Omnivore does. - **Cache with lifetimes that match how fast each signal changes**: domain age never changes, blocklist status changes hourly (Spamhaus DQS answers propagate in minutes), and IP fraud scores go stale within days. Do not cache hard-fail signals for longer than they stay valid. - **One internal schema for the risk record**: normalize every vendor's score into your own record (signal, raw value, normalized contribution, timestamp, vendor), so that you can swap vendors and keep a uniform trail for appeals and audits. Lock-in through the meaning of scores is real: a "90" means something different in every API above. - **Contract and terms-of-service check**: most fraud and validation vendors restrict resale and retention of their data. Keep vendors' raw data out of anything the customer sees, including appeal messages, which also avoids teaching fraudsters which signals you use. ### False positives and appeal paths Every automated gate wrongly rejects some legitimate customers: users on shared IP addresses or VPNs, new businesses with new domains, nonprofits with lists that are old but consented. Design for it: - **An appeal is an escalation to manual review, with the snapshot of signals attached**, handled by staff who can override any automated decision. This is by far the most common practitioner pattern, and there is no published standard. - **Tell the customer what to provide, not which signal fired**: ask for the evidence from the vetting questionnaire (business registration, consent records, past metrics) rather than disclosing which signal tripped. Disclosure teaches evasion, the same logic as the vague rate-limit pages in [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts). - **Measure the false-positive rate**: track the number of appeals, the share of appeals that overturn the decision, and how accounts behave after an overturn (overturned accounts that stay clean are your ground truth for false positives). Feed errors in both directions into recalibration. - **Put a time limit on the sandbox**: a legitimate customer who stays on the entry rung with clean metrics and is never promoted is a false positive that no one notices. Alert on accounts that stall on the ladder despite a clean history. ### Where human review must remain Automation shrinks the queue for human review. It does not empty it. Keep people on: - **Edge cases and scores near a boundary**: anything the score cannot place with confidence. The score's job is to make the human queue small and well briefed, not to eliminate it. - **High-value and high-volume accounts**: a prospect that wants to send millions of messages a month deserves the full M³AAWG questionnaire and a conversation about compliance, however clean its automated score. The damage a wrong auto-approval can do grows with volume ([Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture): aggregate liability is never delegated). - **Regulated and sensitive content categories**: financial services, health, political, adult, gambling and CBD. These need judgment on category policy and on the rules of each jurisdiction ([Compliance](https://emailmarketing.net/learn/compliance)), which no fraud score encodes. Automated classification of content categories can route an account to the right reviewer, but it should not decide. - **Promotion from sandbox to production at meaningful volume**: every documented platform above puts a person on this step. - **Appeals and terminations**: the highest-stakes decisions, in both directions. - **Recalibration itself**: someone must own the score. That person reviews the weights against outcomes, watches for drift and for demographic skew in false positives, and decides when a vendor signal is no longer worth its cost. ## Related articles - [Outbound Monitoring](https://emailmarketing.net/learn/esp-operations/outbound-monitoring), the behavioral signals after onboarding that feed re-scoring - [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture), on reputation policies for each tenant and automated pausing - [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts), on registration abuse and telling hijacked customers from fraudulent signups - [Subscription Bombing](https://emailmarketing.net/learn/esp-operations/subscription-bombing), on why the ESP's own signup form needs the defenses it requires of customers # Vetting Transactional Email Accounts > Why transactional/API senders evade the standard vetting playbook, the transactional-specific abuse catalog (fake-transactional phishing, relayed subscription bombing, API-key blast radius, marketing-as-notification blending, dormant reactivation), onboarding checks matched to the integration, ongoing per-template controls, and the policy language that keeps the transactional/marketing boundary enforceable. Source: emailmarketing.net — https://emailmarketing.net/learn/esp-operations/transactional-account-vetting If you run an email service provider (ESP), customers who send password resets, receipts and account notices through your API give you little of what a vetting review normally examines. The industry's vetting guidance, the Messaging, Malware and Mobile Anti-Abuse Working Group (M3AAWG) Vetting Best Common Practices (BCP), is built around a marketing sender. It audits the list, how the addresses were acquired, the campaign history and the complaint record. A transactional or API sender has none of those to show. There is no list to review, no campaign calendar, no meaningful open-rate baseline, and often no sending history at all. There is only an application that will call your API when its users do things. You can still vet these accounts. The checks move from the list to the integration, the abuse patterns to watch for are specific to transactional mail, and the ongoing controls catch a "transactional" account that stops behaving like one. [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting) covers the general process this builds on. ## Why standard vetting misses transactional senders Standard vetting looks for evidence that a transactional sender does not have, and standard monitoring looks for signals that a transactional stream does not produce: | What marketing vetting assumes | What a transactional sender actually has | Consequence | |---|---|---| | A list exists and can be sampled for role accounts, signs of purchase, and spam traps | No list. The application generates recipients one at a time as events happen | There is nothing to audit before sending. List quality depends on the customer's signup form, which the ESP never sees unless it asks | | Historical campaign metrics (opens, clicks, complaints) show quality | Triggered one-to-one mail. Engagement benchmarks for campaigns do not apply: transactional open rates run far above marketing norms, so a "good" number proves little, and low volume makes rates per send noisy | Comparing metrics with marketing baselines is meaningless. Compare them with other transactional senders and with the account's own history | | Complaints and unsubscribes reveal problems | Recipients tolerate receipts, password resets and security notices, and cannot practically opt out of them. Many jurisdictions exempt transactional mail from unsubscribe requirements (see the primary-purpose test in [CAN-SPAM](https://emailmarketing.net/learn/compliance/can-spam)) | The complaint signal is muted by the nature of this mail. Abusive or mixed traffic builds up for much longer before it crosses any threshold | | A test send to a sample of the list reveals quality (the method in the Vetting BCP) | There is no list to sample. A "test send" is just the developer's own address during integration | The BCP's test-send check cannot run. The equivalent check is an integration review (below) | | Volume grows predictably from a known list size | Volume follows the application's user activity. It is legitimately spiky (a product launch, a batch job) and starts from zero | Detecting volume anomalies needs knowledge of the application, not of a list size | Two more factors raise the stakes. First, transactional mail travels on the platform's **best** reputation. ESPs route it through their cleanest IP pools because it must arrive immediately (see [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture)), so abuse through a transactional stream damages the platform's most valuable asset. Second, self-service API onboarding is fast by design: a free tier, a credit card and an API key in minutes. Ironscales' analysis of ESP abuse names exactly these routes as the way phishers get sending access that passes SPF, DKIM and DMARC and benefits from the IP reputation of shared pools: free-tier and trial accounts with minimal verification, accounts bought with stolen cards, and compromised existing accounts. ## Abuse patterns specific to transactional mail | Risk | How it works | Why transactional mail makes it possible | Main defense | |---|---|---|---| | **Fake-transactional phishing** | An attacker signs up, or takes over an account, and sends mail that looks like transactional traffic: password resets, invoice or payment notices, delivery notifications, requests to sign documents | Transactional templates are exactly what phishers imitate. A fake reset or invoice has the same form as a real one, arrives fully authenticated from ESP infrastructure, and inherits the trust of shared IP addresses. Ironscales reports that such messages "pass SPF, DKIM, and DMARC" and blend into pools that carry billions of legitimate messages | Template review at onboarding. Monitoring of new recipients and of the shape of volume. Reputation scanning of the URLs and domains in outbound content. A fast shutdown path at the abuse desk ([Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk)) | | **Relayed subscription bombing** | An attacker runs a script against a legitimate customer's unprotected signup form, and the ESP delivers thousands of confirmation and welcome messages to the victim | Each message on its own is well-formed triggered mail. The ESP becomes the delivery channel for a denial-of-service (DoS) attack on a mailbox, and Spamhaus has listed ESP IP addresses for it. See [Subscription Bombing](https://emailmarketing.net/learn/esp-operations/subscription-bombing) | Form protection (CAPTCHA, confirmed opt-in (COI) and rate limits) as a **condition of service**, verified at onboarding. Detection of signup anomalies per target address across the whole platform | | **API key compromise** | A key leaks in a public repository, client-side code or logs, or is phished from the developer. The attacker sends through the customer's warmed, authenticated identity | Keys are long-lived machine credentials outside the login and multi-factor authentication (MFA) perimeter. A compromised key inherits the account's full sending history and reputation, and the damage is limited only by what the key is allowed to do. For containment, see [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts) | Scoped keys (send-only, limited to a stream or domain), rotation, and partnerships for secret scanning. SendGrid documents that it automatically deletes keys its monitoring finds exposed on GitHub "within moments" and notifies the customer. Velocity caps for each key | | **Marketing mixed into the transactional stream** | A customer sends newsletters, promotions, win-back campaigns or "product update" campaigns through the transactional stream, either on purpose (to borrow its deliverability) or by gradual drift | Transactional mail's inbox placement and its exemption from unsubscribe rules make it attractive cover. Mixed traffic raises the complaint rate of the transactional stream and degrades the shared transactional pool for every tenant | A policy that defines the boundary in enforceable terms (below). Metrics for each template. Detection of changes in content and in recipient counts. Forced reclassification to the marketing stream | | **Dormant account activation** | An account integrated long ago, sending little or nothing, suddenly sends volume | A dormant account with a valid key is exactly what an attacker with leaked credentials, or a sold or repurposed account, looks like. Against the account's own near-zero baseline any activity is anomalous, but only if someone watches each account's baseline | Treat activation after dormancy as a reason to vet the account again, not as growth: hold volume at a probation cap, confirm the contact and use case again, and warm up again (compare the decay principle in [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up): trust fades) | Several of these have marketing counterparts among the post-send triggers in the Vetting BCP: sending that stops and starts, sudden list growth, and content that changes after metrics change. The transactional versions differ because there is no list or campaign history to examine, so detection has to rely on data about individual messages. ## Onboarding: vet the integration, not the list The Vetting BCP asks a sender to show its list and its history. Ask a transactional sender a different question: **does the use case it describes match the integration you are about to connect?** A claim such as "a software-as-a-service (SaaS) app sending password resets" can be checked against concrete evidence. The checks on corporate identity, WHOIS records and fraud signals in [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting) still apply unchanged, because an API customer is still a customer. The table below covers only what is different. | Check | What to ask or inspect | Red flags | |---|---|---| | **The application exists** | A live product URL, an app store listing or a staging demo. Does the business plausibly generate the message types it claims? | No product you can inspect. A product category that does not match the message types (a content site that "needs" payment-failure notices). A brand-new domain combined with an urgent go-live | | **Template review** | Ask for the actual templates, or review them from the first sends. Each should name a specific trigger, use the customer's own brand and domain, and link only to domains the customer controls | Templates that imitate other brands (banks, delivery companies, document-signing services, mailbox providers), which is the fake-transactional phishing kit. URL shorteners or third-party redirect domains. "The templates aren't ready" while volume is needed now | | **Legitimate trigger events** | For each message type: what user action sends it, roughly how often per user, and would the recipient expect it? Postmark's published definition is the clearest test: transactional mail is "one-to-one unique messages the recipient is expecting to receive," triggered by the user | Triggers that are really schedules ("we notify users weekly about deals"). Triggers fired by someone other than the recipient, with no prior relationship ("our users invite contacts"). An invitation or referral flow is a spam vector that needs its own limits (compare the web-messaging distribution controls in [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts)) | | **Expected volume and recipient profile** | Projected messages per day, the expected share of new and repeat recipients, and the expected mix of recipient domains. Record the answers: they become the baseline the ongoing controls compare against | Volume that implies more users than the product can plausibly have. "Recipients are mostly new every day" for anything other than signup confirmation. Refusal to estimate | | **Form protection as a condition of service** | If a public web form triggers any message type (signup, invite, tell-a-friend, contact), require CAPTCHA and rate limiting, and COI for list additions, before you provision the account. Spamhaus explicitly expects ESPs to push customers to secure their signup forms, so make this a contract term, not advice ([Subscription Bombing](https://emailmarketing.net/learn/esp-operations/subscription-bombing)) | Unprotected forms with "we'll add CAPTCHA later". Forms that send mail to any address a user enters (invite flows) with no deduplication or caps per address | | **Credential hygiene requirements** | Scoped API keys for each environment. No keys in client-side code. A documented ability to rotate keys. A named security contact for compromise notifications. This applies to keys the principle, from M3AAWG's Hosting Abuse Best Common Practices, of making security a contract term | A single full-permission key shared across environments and staff. A key requested for an off-the-shelf script the customer cannot describe | | **Suppression practice** | How will the customer handle the bounces and complaints your webhooks return? Transactional streams still hard-bounce, and a sender who ignores bounce webhooks accumulates bounces without noticing | No plan to consume bounce events. An expectation that the ESP's suppression can be bypassed freely (see the narrowly scoped stream override in [Suppression-List Architecture](https://emailmarketing.net/learn/esp-operations/suppression-list-architecture)) | **Probation limits do the rest.** For a marketing sender, the vetting process uses a test send sized by statistics. The transactional equivalent is the ladder of tiered rights from the Hosting Abuse BCP (see [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting)). Give new API accounts low daily caps and restricted capabilities, raise the limits as the account shows clean behavior and a credible need, and treat each request for a higher limit as a moment to vet the account again. A request for a higher limit that outpaces the product's plausible growth is itself a warning sign. ## Ongoing controls The metrics below are industry practice, drawn from practitioner consensus and from the vendor practices documented above, not from a published BCP. No numeric thresholds are standardized, so calibrate them against your own platform. - **Metrics for each template or message type, not for the account.** A transactional account is a bundle of streams with different risks. Track volume, bounce rate, complaint rate and the mix of recipient domains for each template or message type, using tags as the event systems in [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture) do. Mixed traffic and abuse show up as one template diverging while the account as a whole still looks healthy. Postmark publishes account quality requirements, a complaint rate below 0.1% and a bounce rate below 10%, which shows an ESP focused on transactional mail enforcing numeric limits even on transactional traffic. - **Detect changes in content.** The templates reviewed at onboarding are the contract. Alert when the content of a "transactional" stream changes shape: message size or link count jumps, new outbound link domains appear, messages grow more similar to each other (identical bodies sent to many recipients are the mark of a broadcast), or subject lines pick up promotional words. This is the transactional version of the Vetting BCP trigger "content changes following significant changes in metrics". Here, though, a change in content is the leading indicator, because complaints arrive late. - **Share of new recipients.** Real transactional mail mostly goes to recipients the account has mailed before: an existing user resets a password or receives a receipt. Only signup confirmation flows lean toward new recipients. If a stream's share of never-seen recipients surges, especially while its recipient domains spread more widely, it is one of three things: a purchased list sent through the transactional stream, a relayed subscription-bombing flood, or a compromised key. Set a baseline for this share for each message type at onboarding (the "expected recipient profile" answer), and alert when it diverges. - **Volume shape and velocity caps for each key.** Triggered mail follows the daily curve of the application's user activity; batch sends do not. Limit the capacity for bursts that are not triggered. A hard ceiling on messages per minute or per hour for each API key, sized to the account's stated use case, turns a leaked key or a hidden campaign from a platform-wide incident into a throttled trickle. Legitimate batch needs, such as digests or notices of new terms of service, should be declared and routed to the broadcast stream, which is exactly what the caps encourage. - **Watch for dormancy.** Flag accounts that have been idle longer than a set period. When one becomes active again, apply a probation cap and a human or automated verification step before restoring its previous limits. Combine this with forced rotation or expiry of API keys that have gone unused for a long time, because an unused live credential is only a liability. - **Signup form telemetry across all customers.** For hosted signup flows, or flows visible through webhooks, monitor confirmation sends per target address and per target domain across all customers. [Subscription Bombing](https://emailmarketing.net/learn/esp-operations/subscription-bombing) details the related duties: suppression for each address and anomaly detection. - **Scan outbound content on the transactional path.** Complaint feedback is muted and slow, so phishing that only feedback loops (FBLs) catch has already reached inboxes. Run link and domain reputation checks and brand impersonation checks inline on transactional streams (the content-filtering layer in [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts)), with a ladder of challenge, quarantine and reject for borderline hits. ## Policy terms that keep the boundary enforceable The line between transactional and marketing mail only works in practice if your terms of service define it in terms that can be decided, and reserve your right to act on it. These are the documented approaches: - **Define transactional mail by its trigger and the recipient's expectation, not by topic.** Postmark's public definition says transactional mail is one-to-one, unique, expected by the recipient, triggered by the user, and generally does not need an unsubscribe link. It adds an explicit exclusion: "multiple recipients receiving the same content" that is not triggered by an event fails the test. Support and compliance staff can apply that test to a sample of messages without arguing about intent. A definition by content category ("receipts, resets…") invites the argument that a product update is a notification; a definition by trigger does not. - **Make the separation physical, then require it in the contract.** In Postmark's Message Streams model, transactional and broadcast traffic "does not mix… including IP ranges," and its policy states that bulk messaging "should not be sent through Transactional Message Streams." The acceptable use policy (AUP) clause can then point to something observable, that the customer sent broadcast-style mail through the transactional stream, instead of an argument about whether a newsletter is "really" a notification. For how the pools work, see [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture). - **Reserve the right to reclassify, not only to terminate.** Against mixed traffic, the most useful enforcement action is usually to move the offending traffic to the marketing stream, where the obligations for consent, unsubscribe and suppression apply ([List-Unsubscribe](https://emailmarketing.net/learn/list-management/list-unsubscribe), [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods)). Keep suspension for customers who refuse. The policy should state that the ESP classifies streams, may reclassify traffic, and may require unsubscribe headers on messages it considers non-transactional. This is practitioner consensus. ESPs publish a way to ask about edge cases (Postmark asks for a sample message to classify) rather than exhaustive lists of categories. - **Tie the policy to the legal definition where one exists.** The US CAN-SPAM Act's category of "transactional or relationship" messages and its primary-purpose test ([CAN-SPAM](https://emailmarketing.net/learn/compliance/can-spam)) give the boundary legal force. A customer who disguises commercial mail as transactional is not only breaking the AUP. It is misclassifying mail that the law says needs an opt-out, and that compliance argument persuades customers' legal teams when deliverability arguments do not. - **Make form security and credential hygiene conditions of service.** Contract clauses that require bot protection on forms that trigger mail, prompt notice of a breach or key compromise, and cooperation with remediation turn the onboarding requirements above into enforceable obligations. This is the Hosting Abuse BCP's practice of making security a contract term. These clauses also give the abuse desk clear terms of service to cite when it notifies, asks for remediation and suspends, as described in [Abuse Desk Operations](https://emailmarketing.net/learn/esp-operations/abuse-desk). - **Publish the numeric limits.** Publishing hard ceilings on complaint and bounce rates for transactional streams, as Postmark does, removes the "but it's transactional" defense from enforcement conversations. The stream label changes how mail is routed, not the quality it must meet. --- **Sources.** The material from the M3AAWG Vetting BCP and Hosting Abuse BCP follows the summary in [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting). Neither document addresses transactional or API senders specifically, which is the gap this guidance fills. Postmark's definitions, stream separation policy and quality thresholds come from its published support articles. The pattern of phishing through ESP abuse comes from Ironscales' published analysis. The handling of exposed API keys comes from Twilio SendGrid's support documentation and GitGuardian's remediation guidance. Sections described as practitioner consensus reflect common ESP operating practice without a single authoritative published source. No thresholds are stated beyond the cited vendor figures. ## Related articles - [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting) - [Subscription Bombing](https://emailmarketing.net/learn/esp-operations/subscription-bombing) - [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts) - [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture), on separating streams and IP pools - [Suppression-List Architecture](https://emailmarketing.net/learn/esp-operations/suppression-list-architecture), including the transactional exception to complaint suppression # Foundations of Email Deliverability > The core principle of deliverability — sending wanted and expected email — and how mailbox providers measure it. Source: emailmarketing.net — https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability Mail reaches the inbox when the people receiving it both want it and expect it. The two conditions are different, and each one counts: 1. **Wanted**: the message gives the recipient something they value. 2. **Expected**: the recipient recognizes the mail, because they signed up for it or already do business with your brand. ## How mailbox providers evaluate your email No mailbox provider or internet service provider (ISP) can ask each recipient whether a message was welcome. What a provider can do is watch how its users treat your mail across tens of thousands of mailboxes, and that behaviour is a more reliable answer than asking. Complaints and engagement weigh the most. For each campaign, a provider can see: - The share of recipients who reported it as spam - The share who deleted it unread - The share who opened and read it - How much time readers spent on it Filtering algorithms combine these measurements into a judgement on whether recipients want and expect mail from you. ## Content matters too Recipient behaviour is not the whole picture. Providers also scan what a message says when they decide whether it is spam, and certain words or phrasing can count against it. ## Technical details matter How you send is judged as well. Spam filters take into account: - The number of connections you open to each receiving domain - Email authentication (SPF, DKIM and DMARC, see [DMARC](https://emailmarketing.net/learn/authentication/dmarc)) - How you warm up new IP addresses (see [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up)) You set these in your MTA or other sending infrastructure, whichever mail server software you run. ## Important caveats - The final decision belongs to the mailbox provider: the Inbox, the Spam folder, or refusing the message. Good practice makes your mail the kind a provider is willing to deliver to the Inbox, but no practice can promise Inbox placement. - Expect to adjust in rounds, because improving deliverability is an **iterative process**. Each campaign adds to your sending history, and that data shows what to change next. ## Related articles - [Two Worlds of Email Deliverability](https://emailmarketing.net/learn/strategy/two-worlds-of-email-deliverability), on the principle of wanted and expected email in more depth - [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up) - [Basic IP Allocation](https://emailmarketing.net/learn/ip-management/basic-ip-allocation) # Is This a Delivery Problem? How to Tell Before You Spend Money > For a marketing lead or business owner: how to tell a real delivery problem (bounces, blocks, mail filed as spam) from a list, content or measurement problem, using only evidence you can reach without server logs, and what each finding means for the decision. Source: emailmarketing.net — https://emailmarketing.net/learn/foundations/is-this-a-delivery-problem When email results drop, "deliverability" is usually the first explanation offered. Sometimes that is right. Often the mail is still arriving, and something else changed: the list, the offer, or the way results are counted. Those problems have very different fixes and very different costs, so an hour of checking is worth doing before you hire anyone or move to another platform. This article is for you if you run email for a business and don't work with the protocols day to day. It only uses evidence you can reach yourself: your sending platform's reports, Google Postmaster Tools, a seed test and a free domain check. The principle underneath all of it, that mailbox providers deliver the mail their users want and expect, is covered in [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability). No check here, and no one you hire, can promise where your mail will land. Google says it does not accept allowlist requests from email providers and "can't guarantee messages sent by email providers will pass Gmail's spam filters" ([Gmail sender guidelines](https://support.google.com/mail/answer/81126?hl=en)). What you can do is find out which kind of problem you have. ## Four problems that look alike | Kind of problem | What is actually happening | Where it shows | |---|---|---| | **Delivery** | Mailbox providers refuse the mail (bounces, blocks) or accept it and file it as spam. | Bounces whose text names a policy, authentication or a blocklist; delivery errors or a high spam rate in Postmaster Tools; spam-folder placement across test mailboxes. | | **List** | Mail goes to addresses that no longer exist, or to people who no longer want it. | Permanent bounces for addresses that don't exist, rising complaints, a blocklisting. | | **Content or offer** | The mail arrives, but people don't act on it. | Bounces and complaints steady; clicks and sales down. | | **Measurement** | Where your mail lands hasn't changed; the numbers you are reading have. | Open rates move while clicks, bounces and complaints don't. | These are not sealed boxes. A list problem left alone becomes a delivery problem: Google says that if messages from your domain are frequently reported as spam, future messages are more likely to be marked as spam, and "over time, user spam reports can lower your domain's reputation" ([Gmail sender guidelines](https://support.google.com/mail/answer/81126?hl=en)). That is why the list checks below come before any spending. ## Don't judge delivery on opens Apple's Mail Privacy Protection downloads an email's remote content "in the background by default — regardless of whether you engage with the email" ([Apple](https://www.apple.com/legal/privacy/data/en/mail-privacy-protection/)). Senders learn when a message was opened through that same remote content, so for recipients who use the feature, a recorded open no longer shows that anyone read the message. An open rate can therefore change without any change in where your mail landed. Judge delivery on bounces, complaints and the placement evidence below, and judge interest on clicks and sales. [Tracking and Measurement Distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion) covers the other sources of skew. ## The evidence you can gather yourself ### 1. Your sending platform's bounce report A bounce is a receiving server saying no. The code tells you whether it's temporary or permanent: replies starting with 4 are transient failures and replies starting with 5 are permanent ([RFC 5321 §4.2.1](https://datatracker.ietf.org/doc/html/rfc5321#section-4.2.1)), and the enhanced codes follow the same split, 4.x.x and 5.x.x ([RFC 3463](https://datatracker.ietf.org/doc/html/rfc3463)). Read the text of the bounces, not only the count. M3AAWG notes that the codes alone "do not clearly state whether or not the address should be removed", and that the descriptive text can point to a problem with sending infrastructure or content, or show that the sending IP is on a blocklist ([M3AAWG Sender Best Common Practices, Version 4.0, August 2026](https://www.m3aawg.org/senderbcp)). - **Mostly "user unknown" or "mailbox does not exist":** a list problem. M3AAWG says large volumes of hard bounces "are too often indicative of a poorly managed registration process or an old or misapplied mailing list". - **Text naming authentication, policy, reputation or a blocklist, concentrated at one provider:** a delivery problem at that provider. For example, Gmail may reject unauthenticated messages with a 5.7.26 error, and typically answers with 4.7.28 when you exceed its sending-rate limits ([Gmail sender guidelines](https://support.google.com/mail/answer/81126?hl=en)). [Delivery Troubleshooting Playbooks](https://emailmarketing.net/learn/operations/delivery-troubleshooting-playbooks) walk through bounce text by provider. ### 2. Your complaint numbers Complaints reach your platform through feedback loops, which mailbox providers offer to forward spam reports back to the sender ([RFC 6449](https://datatracker.ietf.org/doc/html/rfc6449)). Yahoo sends a copy of the complaint when a user clicks "report spam" ([Yahoo](https://senders.yahooinc.com/best-practices/)). Gmail shows a spam rate in Postmaster Tools instead. The providers publish their limits: - **Gmail:** keep the spam rate below 0.1% and never let it reach 0.3%. Google says rates above 0.1% already have a negative impact on inbox delivery for bulk senders ([Gmail sender FAQ](https://support.google.com/mail/answer/14229414?hl=en)). - **Yahoo:** keep the spam rate below 0.3%, calculated on mail delivered to the inbox ([Yahoo](https://senders.yahooinc.com/best-practices/)). Rising complaints usually mean a list or consent problem that is starting to show up as a delivery problem. Gmail's guidance is direct: people who didn't sign up to get your messages "might mark your messages as spam" ([Gmail sender guidelines](https://support.google.com/mail/answer/81126?hl=en)). ### 3. Google Postmaster Tools Postmaster Tools is Google's free console for senders. Its dashboards cover spam rate, reputation, message authentication and delivery errors, and its data only applies to messages sent to personal Gmail accounts, the ones ending in @gmail.com or @googlemail.com ([Google](https://support.google.com/mail/answer/9981691?hl=en)). - You add the domain your mail is authenticated with (the DKIM `d=` domain or the SPF Return-Path domain), then verify it with a DNS record. Whoever manages your DNS will need to add that record. - Data can be missing when the number of messages on a given day is too low. Google withholds it to protect users' privacy. An empty dashboard is not a sign of a problem. [Google Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools) explains each dashboard. ### 4. A seed test A seed test sends your campaign to a set of test mailboxes at several providers and reports which folder each copy landed in. It is the only item here that shows placement directly, but only for those mailboxes. Placement is decided per recipient as well as per sender. Google says messages from an address in the recipient's contacts are less likely to be marked as spam, and that when a recipient marks a message as not spam, future messages from that sender should reach their inbox ([Gmail sender guidelines](https://support.google.com/mail/answer/81126?hl=en)). Test mailboxes have no such history with you. Read a seed result as a pattern across providers, not as a measurement of your subscribers. [Placement Measurement Methodology](https://emailmarketing.net/learn/operations/placement-measurement-methodology) covers where seed results mislead. ### 5. The free domain check The [domain check](https://emailmarketing.net/tools/domain-check) reads the SPF, DKIM, DMARC and MX records your domain publishes in public DNS, and looks up the addresses your SPF record authorises on the blocklists it queries. It cannot see how your sending platform uses those records, your reputation at mailbox providers, or where your mail ends up. [Reading a Domain Check Result](https://emailmarketing.net/learn/foundations/reading-a-domain-check-result) explains each verdict. Authentication is not optional at the large providers: - **Gmail** requires SPF or DKIM from all senders, and SPF, DKIM and DMARC from anyone sending more than 5,000 messages a day to Gmail accounts ([Gmail sender guidelines](https://support.google.com/mail/answer/81126?hl=en)). - **Yahoo** requires SPF or DKIM from all senders, and SPF, DKIM and a DMARC policy of at least `p=none` from bulk senders ([Yahoo](https://senders.yahooinc.com/best-practices/)). - **Microsoft** requires domains sending more than 5,000 emails a day to Outlook.com to comply with SPF, DKIM and DMARC. Non-compliant mail goes to the junk folder and may be rejected with `550 5.7.515` ([Outlook.com postmaster policies](https://substrate.office.com/ip-domain-management-snds/postmaster/policies)). ## Reading the evidence together | What you see | What it most likely is | |---|---| | Opens changed; clicks, bounces and complaints didn't. | Measurement. | | Bounces and complaints steady and low; clicks and sales down. | Content, offer or targeting. | | Permanent bounces for addresses that don't exist, especially in older segments. | List. | | Complaint rate approaching the provider limits above. | A list or consent problem becoming a delivery problem. | | The domain check shows authentication as **bad** or **risky**, and bounce text mentions authentication. | Setup: records your DNS owner and your platform can fix. | | Rejections or spam-folder placement at one provider, while list signals are clean and authentication is in place. | Delivery at that provider. | | An address you send from is on a blocklist. | Delivery, with a cause to find first. | ## What each finding means for the decision ### Fix the list first **When:** permanent bounces for addresses that don't exist, rising complaints, a segment you haven't mailed in a long time, or addresses that were bought or collected without a clear opt-in. **Why first:** the providers weigh what your recipients do. Gmail tells senders to send "only to people who want to get messages from you" and not to purchase addresses ([Gmail sender guidelines](https://support.google.com/mail/answer/81126?hl=en)). Yahoo says mailing people who aren't reading your messages, or who report them as spam, "will harm your delivery metrics and reputation" ([Yahoo](https://senders.yahooinc.com/best-practices/)). Spamhaus treats a spam-trap hit as "a sign of poor data hygiene or issues with your marketing sign-up process", and advises fixing data collection rather than trying to locate the trap ([Spamhaus, Email Deliverability 101](https://info.spamhaus.com/hubfs/Know%20How%20-%20Email%20Deliverability/Spamhaus%20eBook_Email%20Deliverability%20101.pdf)). M3AAWG recommends removing addresses that bounce consistently over consecutive campaigns ([M3AAWG Sender Best Common Practices, Version 4.0, August 2026](https://www.m3aawg.org/senderbcp)). Nobody outside your business can fix who is on your list. Start with [List Hygiene and Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies) and [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods). ### Get help **When:** the evidence points at delivery (rejections naming reputation or policy, a sustained spam rate or delivery errors in Postmaster Tools, a blocklisting that comes back), and your list and authentication checks came back clean. Also when the evidence conflicts and you can't tell. **What to bring:** samples of the bounce text, your complaint rates over time, Postmaster Tools screenshots, and your domain check result. That turns the first conversation into a diagnosis rather than a discovery exercise. **What to expect:** the providers set conditions on their own help. Gmail says bulk senders with a spam rate above 0.3% are ineligible for its delivery mitigation until the rate stays below 0.3% for 7 consecutive days ([Gmail sender FAQ](https://support.google.com/mail/answer/14229414?hl=en)). Microsoft says its support team may not be able to assist senders who don't comply with its policies ([Outlook.com postmaster policies](https://substrate.office.com/ip-domain-management-snds/postmaster/policies)). Bringing complaints down comes before escalation, whoever does the work. [Cross-Provider Escalation and Mitigation Channels](https://emailmarketing.net/learn/providers/escalation-and-mitigation-channels) lists where to go. ### Change ESP This is rarely the first answer. It makes sense when the problem is in what the platform controls and can't be resolved there, for example: - **It can't authenticate mail with your own domain.** Google tells senders who use an email service provider to verify that the provider authenticates their domain's email with SPF and DKIM ([Gmail sender guidelines](https://support.google.com/mail/answer/81126?hl=en)). - **Shared-IP reputation keeps pulling you down.** On a shared IP address, "the activity of any senders using a shared IP address affects the reputation of all senders for that shared IP address" (same source). If that recurs and the platform can't separate your mail, it's a platform problem. A move doesn't fix a list or content problem. Gmail tracks volume, feedback and limits per domain as well as per IP address, and spam reports lower a domain's reputation (same source). Because that history is recorded against your domain and not only against the platform's addresses, the same domain carries it to a new platform. A move is also a significant change to your sending infrastructure: Google advises increasing changed traffic separately, and avoiding sudden volume spikes without a history of sending large volumes (same source). ## Related - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability) — the wanted-and-expected principle behind every check here - [What Mailbox Providers Measure, and Who on Your Team Owns Each Part](https://emailmarketing.net/learn/foundations/what-mailbox-providers-measure) — the signals behind these findings, and who acts on each - [Reading a Domain Check Result](https://emailmarketing.net/learn/foundations/reading-a-domain-check-result) — what each verdict on the domain check means - [The Seven-Step Delivery Model](https://emailmarketing.net/learn/foundations/seven-step-delivery-model) — the campaign loop, including the recipient-issues taxonomy - [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks) — the numbers in more depth # Reading a Domain Check Result > What SPF, DKIM, DMARC, MX and blocklist results mean when the domain check says good, risky, bad or unknown, what the check cannot see (selectors it didn't try, the addresses you actually send from, your reputation), and the next step for each. Source: emailmarketing.net — https://emailmarketing.net/learn/foundations/reading-a-domain-check-result The free [domain check](https://emailmarketing.net/tools/domain-check) reads the records your domain publishes in public DNS for SPF, DKIM, DMARC and MX, and looks up the addresses your SPF record authorises on the blocklists it queries. It gives each result one of four words, and each word has a specific meaning: | Verdict | What it means | |---|---| | **good** | The check ran and found what it looks for. | | **risky** | The check ran and found a setup that works but leaves a gap. | | **bad** | The check ran and found something missing or broken. | | **unknown** | The check did not get an answer. It is neither a pass nor a fail, and the check never reports **good** for a check that did not finish. | The results describe what your domain tells mailbox providers. They are not a prediction of where your mail will land. Authentication makes mail "less likely to be rejected or marked as spam", in Google's words ([Gmail sender guidelines](https://support.google.com/mail/answer/81126?hl=en)). Less likely is not a guarantee, even with every result **good**. Every result also carries its own one-line next step. This article explains the reasoning behind those steps, and who usually takes them. ## SPF SPF lists the servers allowed to send mail for your domain, in a TXT record starting with `v=spf1` ([RFC 7208](https://datatracker.ietf.org/doc/html/rfc7208)). Its last term, the "all-mechanism", tells receivers how to treat mail from anywhere else. | Verdict | What the check found | Next step | |---|---|---| | **good** | The record ends in `-all` (strict fail) or `~all` (soft fail). Soft fail relies on DMARC to stop spoofed mail, so the DMARC result matters too. | No action on this record. Keep it current when you add or change services that send as your domain, and read the DMARC result. | | **risky** | The record ends in `?all` or `+all`, which do not meaningfully restrict who can send as your domain, or it has no recognised all-mechanism. | Once every legitimate sender is listed, end the record with `-all` (or `~all` while testing). | | **bad** | No SPF record; more than one; a syntax error; more than 10 DNS lookups; or a `redirect=` pointing at a domain with no SPF record, or several. | Publish exactly one record starting with `v=spf1`: merge duplicates, fix the syntax, or remove unused mechanisms until evaluation needs 10 lookups or fewer. | | **unknown** | The DNS lookups failed or didn't finish in time, or the record hands its policy to another domain with `redirect=` and the check did not follow it. | Try again in a moment. For a redirect, look up the SPF record at the target domain: its all-mechanism is the policy receivers apply. | Why these count as **bad**: RFC 7208 says more than one SPF record, a syntax error anywhere in the record, or more than 10 DNS-querying terms all make SPF evaluation end in a "permerror", a permanent error rather than a pass ([RFC 7208 §4.5, §4.6 and §4.6.4](https://datatracker.ietf.org/doc/html/rfc7208#section-4.6.4)). **Who acts:** the DNS owner edits the record. Your sending platform tells you what to include for its servers. Google says SPF should include all email senders for your domain, and that mail from senders left out is more likely to be marked as spam ([Gmail sender guidelines](https://support.google.com/mail/answer/81126?hl=en)). ## DKIM DKIM signs each message with a key. The public half of that key is published in DNS under a name called a selector, which the signature itself names in its `s=` tag ([RFC 6376 §3.1 and §3.5](https://datatracker.ietf.org/doc/html/rfc6376#section-3.1)). The selector is chosen by whoever signs the mail, so a DNS lookup can only try names and see what answers. | Verdict | What the check found | Next step | |---|---|---| | **good** | A DKIM key is published at a selector. That is what DNS can show, not that your messages are signed. The same verdict appears when the domain authorises no server to send (`v=spf1 -all`), since a domain that sends no mail needs no DKIM key. | Check a real message: send one to a mailbox you control and look in its `Authentication-Results` header for `dkim=pass` with a `d=` matching your From domain. Rotate the key periodically. | | **bad** | A record exists at the selector, but its public key is missing or malformed. | Regenerate the key pair and republish the public key. Your sending platform usually provides the record to publish. | | **unknown** | No key at any of the common selectors the check tried, or at the selector you entered. The result names the selectors it checked. | Ask your sending platform which selector it signs with, then check again with that name in the DKIM selector field. | There is no **risky** DKIM result. A key is either found and usable, found and broken, or not found where the check looked. **Who acts:** the platform generates the key and signs the mail; the DNS owner publishes the public key. [The Authentication-Results Header](https://emailmarketing.net/learn/authentication/authentication-results-header) explains how to read `dkim=pass` ([RFC 8601](https://datatracker.ietf.org/doc/html/rfc8601)), and [DKIM Key Rotation](https://emailmarketing.net/learn/authentication/dkim-key-rotation) covers rotation. ## DMARC DMARC, published at `_dmarc.`, tells receivers what to do with mail that fails authentication for your domain, and where to send reports ([RFC 7489](https://datatracker.ietf.org/doc/html/rfc7489)). Its `p=` tag is the policy: `none` requests no specific action, `quarantine` asks receivers to treat failing mail as suspicious, and `reject` asks them to reject it. The `rua=` tag names the address that receives aggregate reports (RFC 7489 §6.3). | Verdict | What the check found | Next step | |---|---|---| | **good** | A policy is enforced (`p=quarantine` or `p=reject`) with aggregate reporting configured. | No action. Review the aggregate reports periodically for senders you don't recognise. | | **risky** | Monitor-only mode (`p=none`): reports are collected, but receivers are not asked to quarantine or reject unauthenticated mail. Or a policy is enforced with no `rua=` address, so nobody sees the reports. | Add an `rua=` address if there is none. Once the reports show all legitimate senders passing, move to `p=quarantine`, then `p=reject`. | | **bad** | No DMARC record; more than one, in which case receivers apply none of them; or a record with no recognised `p=` policy. | Publish one TXT record at `_dmarc.` starting with `v=DMARC1; p=none;` to begin monitoring, or remove the extra records, or add the `p=` tag. | | **unknown** | The DNS lookup failed or didn't finish in time. | Try again in a moment. | On multiple records, RFC 7489 is explicit: if more than one DMARC record remains, "policy discovery terminates and DMARC processing is not applied to this message" ([RFC 7489 §6.6.3](https://datatracker.ietf.org/doc/html/rfc7489#section-6.6.3)). **Risky is not the same as non-compliant.** Gmail, Yahoo and Microsoft accept `p=none` for their bulk-sender DMARC requirement ([Gmail](https://support.google.com/mail/answer/81126?hl=en), [Yahoo](https://senders.yahooinc.com/best-practices/), [Outlook.com](https://substrate.office.com/ip-domain-management-snds/postmaster/policies)). The **risky** verdict points at the gap that remains: mail spoofing your domain is not stopped. M3AAWG recommends `p=reject` where possible, and says every DMARC record, even one with `p=none`, should include at minimum an `rua` tag ([M3AAWG Email Authentication BCP](https://www.m3aawg.org/sites/default/files/legacy/m3aawg-email-authentication-recommended-best-practices-09-2020.pdf)). **Who acts:** the DNS owner publishes and changes the record. Moving from `p=none` to enforcement is a decision to make with the aggregate reports in hand, because they show which services send as your domain. [DMARC Deployment](https://emailmarketing.net/learn/authentication/dmarc-deployment) covers the rollout. ## MX MX records name the servers that receive mail for your domain. They matter to a sending domain because replies and bounces come back to it. | Verdict | What the check found | Next step | |---|---|---| | **good** | One or more MX records. Or a null MX together with `v=spf1 -all`: a domain correctly set up to send and receive no mail. | No action. | | **risky** | A null MX, which says the domain accepts no mail, on a domain that may send mail. | If the domain sends mail, replace the null MX with an MX record pointing to a server that can receive replies and bounces. | | **bad** | No MX record. | Add an MX record pointing to the domain's mail server. | | **unknown** | The DNS lookup failed or didn't finish in time. | Try again in a moment. | A null MX is defined in [RFC 7505](https://datatracker.ietf.org/doc/html/rfc7505). Its §4.2 says mail systems "SHOULD NOT publish a null MX record for domains that they use in RFC5321.MailFrom or RFC5322.From addresses", and that a domain which does so "risks having its mail rejected". With no MX record at all, SMTP falls back to the domain's own address record, an "implicit MX" ([RFC 5321 §5.1](https://datatracker.ietf.org/doc/html/rfc5321#section-5.1)), so the check reports that as **bad** rather than as a designated mail server. **Who acts:** the DNS owner, together with whoever runs the mailboxes for your domain. ## Blocklists A DNS blocklist publishes IP addresses in DNS so receivers can look them up while deciding whether to accept mail ([RFC 5782](https://datatracker.ietf.org/doc/html/rfc5782)). The check reads your SPF record to find the addresses you authorise, then looks each one up on the blocklists it queries. | Verdict | What the check found | Next step | |---|---|---| | **good** | No listings on the blocklists checked, across the sending sources checked. If some lists could not be queried, the result says how many. The same verdict appears when the domain authorises no server to send. | No action for the lists checked. Check again periodically, especially after your sending addresses change. | | **bad** | Listed on one or more blocklists. The result names each address and list. | Resolve the cause first, then follow each blocklist's delisting process. Delisting without fixing the cause tends to end in another listing. | | **unknown** | Your SPF record names no sending source that resolves to an address, so nothing could be checked; or the lookups failed or gave no usable answer. | Check the IP addresses you actually send from directly, using each blocklist's own lookup tool. | **Who acts:** if you send from your platform's shared IP addresses, the listing belongs to the platform to resolve. Google notes that on a shared IP, "the activity of any senders using a shared IP address affects the reputation of all senders for that shared IP address" ([Gmail sender guidelines](https://support.google.com/mail/answer/81126?hl=en)). If the addresses are yours, the cause is usually in your list or your systems. [DNS Blocklists and the Spamhaus Zones](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus) covers causes and delisting. ## What the check can't see A clean result covers what the check could read. These are the limits, with where to look instead: | Can't see | Why | Where to look instead | |---|---|---| | **Selectors it didn't try** | DKIM selectors are chosen by the signer, not listed in DNS. | Ask your platform for the selector and enter it in the DKIM selector field, or read `s=` in a real message's `DKIM-Signature` header. | | **Whether your mail is signed, passes and aligns** | The check reads DNS only. A published key and a correct SPF record don't show what happens to a real message. | Send a message to a mailbox you control and read its `Authentication-Results` header. | | **The addresses you actually send from** | Blocklist lookups use the addresses your SPF record authorises. Senders named through `include:` are not expanded, a website's address and a mail provider's inbound servers are never checked, and one check covers a limited number of addresses. The result says when any of this applies. | Ask your platform which IP addresses your mail leaves from, and check them directly with each blocklist's own lookup tool. | | **Every blocklist** | The check queries a fixed set of blocklists. Spamhaus is not checked: its free service is limited to non-commercial use, and the tool has no commercial licence. | Each blocklist's own lookup tool. | | **Your reputation, complaints and placement** | These live at the mailbox providers, not in DNS. | Your platform's bounce and complaint reports, and Google Postmaster Tools for Gmail. [Is This a Delivery Problem?](https://emailmarketing.net/learn/foundations/is-this-a-delivery-problem) shows how to read them together. | ## Related - [Is This a Delivery Problem? How to Tell Before You Spend Money](https://emailmarketing.net/learn/foundations/is-this-a-delivery-problem) — where the domain check fits among the other evidence - [What Mailbox Providers Measure, and Who on Your Team Owns Each Part](https://emailmarketing.net/learn/foundations/what-mailbox-providers-measure) — who owns authentication, and the signals DNS can't show - [SPF](https://emailmarketing.net/learn/authentication/spf), [DKIM](https://emailmarketing.net/learn/authentication/dkim) and [DMARC](https://emailmarketing.net/learn/authentication/dmarc) — each protocol in depth - [Customer Domain Authentication](https://emailmarketing.net/learn/esp-operations/customer-domain-authentication) — how sending platforms set up authentication for your domain # The Seven-Step Delivery Model > A campaign-lifecycle mental model — assemble list, create content, transmit cleanly, deal with recipient issues, track, manage hygiene, fine-tune — mapping each step to the KB articles that cover it in depth. Source: emailmarketing.net — https://emailmarketing.net/learn/foundations/seven-step-delivery-model If you need a way to organize deliverability work, think of every email program as a cycle of seven steps, where each step feeds the next. Steps 1–2 and 6–7 are mainly the responsibility of the sender (the marketer). Steps 3–5 depend more on the sending platform. The whole cycle rests on one golden rule: **send interesting and valuable content to people who have agreed to receive it**. This is the principle of wanted and expected mail described in [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability). ``` ┌─────────────────────────────────────────────┐ ▼ │ 1 Assemble → 2 Create → 3 Transmit → 4 Recipient → 5 Track the list content cleanly issues results ▲ │ │ └────────── 6 Manage hygiene ◄─────┘ 7 Fine-tune content ──► (2) ``` | Step | What it means | Covered in depth | |---|---|---| | 1. Assemble the right list | An audience that wants the mail, consented to it and expects it, with accurate, current addresses, segmented and targeted. | [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods), [List Hygiene](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies), [M3AAWG Senders BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp) | | 2. Create great content | Well-written, valuable content that is recognizably branded, legally compliant, and has truthful subject lines. | [Content & Design for Deliverability](https://emailmarketing.net/learn/operations/content-and-design-for-deliverability), [compliance articles](https://emailmarketing.net/learn/compliance) | | 3. Transmit the message cleanly | Authenticated sending that complies with the RFCs, at rates each receiver will accept, from infrastructure that has earned its reputation. | [Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices), [SPF](https://emailmarketing.net/learn/authentication/spf), [DKIM](https://emailmarketing.net/learn/authentication/dkim) and [DMARC](https://emailmarketing.net/learn/authentication/dmarc), [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up) | | 4. Deal with recipient issues | Classify and act on complaints, bounces, throttling, filtering and unsubscribes (see the list of issues below). | [Complaint Feedback Loops](https://emailmarketing.net/learn/list-management/complaint-feedback-loops), [Enhanced Status Codes](https://emailmarketing.net/learn/bounce-handling/smtp-enhanced-status-codes), [DSNs](https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications) | | 5. Track the results | Measure delivery, opens, clicks and business outcomes, and compare campaigns over time. | [Metrics & Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks) (including the limits of open-rate measurement), [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring) | | 6. Manage list hygiene | Feed the signals from step 4 back into the list: remove hard bounces and complainers immediately, remove addresses that soft-bounce repeatedly, and sunset unengaged contacts. | [List Hygiene & Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies) | | 7. Fine-tune content | Use the data from step 5 to improve what is sent next: subject lines, offers, frequency and segmentation. | [Content & Design](https://emailmarketing.net/learn/operations/content-and-design-for-deliverability), [Two Worlds](https://emailmarketing.net/learn/strategy/two-worlds-of-email-deliverability) (the economics of "less is more") | The value of the model is in its **feedback loops**. Recipient issues (4) must update the list (6, and then 1), and results (5) must update the content (7, and then 2). A program that runs steps 1–3 but never closes the loops builds up stale addresses and content nobody engages with, which is exactly the profile that mailbox providers score down. ### Division of responsibility The white paper's division of responsibility is still a useful way to structure conversations between a sender and its platform. The **marketer controls** these reputation inputs: complaints, hard bounces, spam-trap hits and content. The **platform controls** these: compliance with the RFCs and other technical standards, the mechanics of authentication, management of the sending rate, and processing of bounces and feedback loop (FBL) reports. Neither side can make up for the other's failures. A platform is also not a list-cleaning service. It automates ongoing maintenance, but starting with a properly consented list is the sender's job. ## Recipient-issues taxonomy (step 4) Once a message is handed off, seven kinds of problem can occur. They are listed roughly from the greatest effect on reputation to the smallest: | Issue | What happens | Reputation effect | Sender action | |---|---|---|---| | **Spam or junk complaints** | The recipient flags the message. The provider sends that user's future mail to junk, and counts the complaint against the sender's IP address and domain. The complaint reaches the sender through [feedback loops](https://emailmarketing.net/learn/list-management/complaint-feedback-loops) where they exist. Gmail shows only aggregate rates, through [Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools), not reports for each message. | The strongest negative signal. | Suppress the complainer immediately, and fix the acquisition or content problem that causes complaints. **Make unsubscribing easier than complaining**: a visible unsubscribe link (at the top of long messages, or at top and bottom) plus [one-click List-Unsubscribe](https://emailmarketing.net/learn/list-management/list-unsubscribe), which Gmail, Yahoo and Microsoft now require of bulk senders. | | **Hard bounces** | A permanent failure (5xx): the address or domain is invalid or unreachable. | Providers watch hard-bounce rates closely, and may block a campaign partway through sending if it passes their threshold. | Remove the address after a single hard bounce, and never reactivate it, because of the risk of recycled spam traps (see [Spam Traps](https://emailmarketing.net/learn/reference/spam-traps)). | | **Soft bounces** | A temporary failure (4xx): a full mailbox, greylisting, timeouts, congestion, or throttling by domain or IP address. | Neutral if handled. Repeated soft bounces to the same address suggest it is stale. | Retry according to [RFC 5321 semantics](https://emailmarketing.net/learn/rfc/rfc5321-smtp). Suppress addresses that soft-bounce over several consecutive sends. | | **Transmission rate errors** | Sending too much too fast, especially from IP addresses with little history, causes timeouts, throttling and blocks. | Damages IP reputation directly. | Respect each provider's expected rates, [warm up](https://emailmarketing.net/learn/ip-management/ip-warm-up) new IP addresses, and let the platform adjust retries and throughput for each receiver in real time. | | **Client-level spam filters** | Besides the provider's filtering at the gateway, filters for each user (blocked-sender lists, personal learned models) can send mail to junk after it was accepted during the SMTP session. | The sender cannot see it, except as missing engagement. | Earn the trust of each user: a recognizable From identity, replies, and being added to address books. | | **Deletes-without-reading** | The message arrives, but the recipient deletes it without opening it. | Providers give engagement more and more weight, so persistent lack of engagement erodes reputation even with zero complaints. | Step 7: better targeting, subject lines and frequency. Sunset contacts who never engage. | | **Unsubscribes** | The recipient opts out through the mechanism provided. | **Not harmful.** An unsubscribe through your own link is the healthy way out, and far better than a complaint. | Process it immediately and without friction (no login, no retyping, no delay). Continuing to send after an opt-out is illegal in most jurisdictions. | When delivery gets worse, the first diagnostic habit is to work out which of these is happening: a transmission issue, a problem with the list or content, or accumulated reputation damage. The remedies are completely different. See [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring) for the monitoring stack and the recovery workflow. ## The noreply@ problem The From address is part of the content (step 2), and also one of the places where recipient issues arise (step 4). Sending from `noreply@`, an address that nobody reads or that does not exist, tells subscribers "please don't talk to us", and it has concrete costs for the sender: 1. Mail from noreply@ is more likely to be ignored, deleted or marked as spam, because modern mail clients show the address and not only the display name. 2. Replies are customer feedback that gets lost, including attempts to unsubscribe by replying. A "remove me" reply that nobody reads often turns into a spam complaint. 3. Replies are a positive signal. When a recipient replies, the sender is often added automatically to their contacts or safe senders, which improves placement of all future mail for that user. 4. The effects observed are lower open rates and higher unsubscribe and complaint rates. Two authorities support this. CAN-SPAM requires the From and Reply-To addresses and the routing information to be accurate and to identify the business that initiated the message (see [CAN-SPAM](https://emailmarketing.net/learn/compliance/can-spam)). The [M3AAWG Senders BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp) says senders should be able to process unsubscribe requests sent to the From and Reply-To addresses. Use a real address that someone reads (`hello@`, `news@`, `info@`), and keep working `abuse@` and `postmaster@` mailboxes on the sending domain. The same BCP asks for those two mailboxes, and an MX record, on the domain that the sending server uses in its HELO and reverse DNS. ## Aged claims in the source, corrected The 2018 white paper predates several changes. Where its advice has aged, this is the current situation: - **Authentication**: the white paper listed "SPF/Sender ID, DomainKeys and DKIM", with none of them dominant. Sender ID and DomainKeys have long been obsolete, and Version 4.0 of the [M3AAWG Sender Best Common Practices](https://www.m3aawg.org/senderbcp) (August 2026) formally deprecates both. The current baseline is SPF and DKIM with DMARC on top, and the major providers **require** authentication for bulk senders. See [Gmail](https://emailmarketing.net/learn/providers/gmail-sender-requirements), [Yahoo](https://emailmarketing.net/learn/providers/yahoo-sender-requirements) and [Microsoft](https://emailmarketing.net/learn/providers/microsoft-sender-requirements). - **Third-party accreditation and whitelisting** (Goodmail, Habeas, Return Path certification): these programs are defunct or marginal, and providers now rely on their own reputation systems. Trust at the level of the recipient (contacts and safe-sender lists) still matters. The industry now calls lists of approved senders "allowlists". - **Spam scores based on keywords** ("avoid words like free, casino"): modern filters look at the whole message and are driven by reputation. Lists of trigger words are largely a myth. See [Content & Design](https://emailmarketing.net/learn/operations/content-and-design-for-deliverability) for what actually matters in content. - **Open tracking**: since Apple Mail Privacy Protection (2021), open counts are inflated and unreliable as a signal for individual recipients. See the limits of measurement described in [Metrics & Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks). ## Related articles - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability) - [Two Worlds of Email Deliverability](https://emailmarketing.net/learn/strategy/two-worlds-of-email-deliverability), the strategic frame for steps 5–7 - [Consent Methods and the List-Quality Spectrum](https://emailmarketing.net/learn/list-management/consent-methods), on step 1 - [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks), the numbers behind steps 4–6 - [What Mailbox Providers Measure, and Who on Your Team Owns Each Part](https://emailmarketing.net/learn/foundations/what-mailbox-providers-measure), on how the sender's share of the responsibility divides across marketing, the DNS owner and the platform # What Mailbox Providers Measure, and Who on Your Team Owns Each Part > The signals mailbox providers score (complaints, engagement, bounces, spam traps, authentication and volume patterns), each assigned to the person who can act on it (marketing, whoever runs DNS, or the sending platform) with that owner's first action. Source: emailmarketing.net — https://emailmarketing.net/learn/foundations/what-mailbox-providers-measure Mailbox providers decide what to do with your mail from a handful of signals. None of them belongs to one person. Marketing controls who gets mailed and how often, whoever runs your domain's DNS controls the authentication records, and your sending platform (your ESP, or whoever runs your mail servers) controls how the mail is sent and how bounces and complaints are processed. When delivery slips, the fastest fix comes from knowing which of those three can act. [The Seven-Step Delivery Model](https://emailmarketing.net/learn/foundations/seven-step-delivery-model) splits this work between sender and platform. This article goes one level down and splits the sender's side across the people in your team. ## The roles - **Marketing:** whoever decides who is on the list, what is sent and when. In a small business, that may be you. - **DNS owner:** whoever can change your domain's DNS records. Often IT, a web agency or the person who registered the domain. - **Sending platform:** your ESP, or the team running your own mail servers. It sends the mail, signs it, and processes bounces and complaints. ## At a glance | Signal | Who owns it | First action | |---|---|---| | Complaints | Marketing, with the platform | Get your spam rate in front of you, and find which mailings generate complaints. | | Engagement | Marketing | Define "inactive" by clicks or purchases, reconfirm inactive subscribers, and consider stopping mail to those who don't respond. | | Bounces | The platform, with marketing | Confirm addresses that bounce permanently are suppressed and never re-imported. | | Spam traps | Marketing | Audit where your addresses come from. | | Authentication | DNS owner, with the platform and marketing | Run the domain check, then list every service that sends as your domain. | | Volume patterns | Marketing, with the platform | Tell your platform before any send much larger than usual. | ## Complaints **What providers measure:** how often recipients mark your mail as spam. Gmail asks senders to keep the spam rate reported in Postmaster Tools below 0.1% and never let it reach 0.3% ([Gmail sender FAQ](https://support.google.com/mail/answer/14229414?hl=en)). Yahoo asks for below 0.3%, calculated on mail delivered to the inbox ([Yahoo](https://senders.yahooinc.com/best-practices/)). Google says frequent spam reports make your future messages more likely to be marked as spam and, over time, lower your domain's reputation ([Gmail sender guidelines](https://support.google.com/mail/answer/81126?hl=en)). **Marketing owns** why people complain: mailing people who didn't sign up, mailing more often than they expected, or making unsubscribing hard. Gmail requires marketing messages from senders of more than 5,000 messages a day to include a clearly visible unsubscribe link in the body (same source). - **First action:** get the spam rate in front of you. Postmaster Tools shows it for mail to personal Gmail accounts, once your domain is verified ([Google](https://support.google.com/mail/answer/9981691?hl=en)). Your DNS owner adds the verification record. Then compare complaints by mailing to find the ones that generate them. **The platform owns** processing complaints and the unsubscribe mechanics. M3AAWG says ESPs must have a system to handle both feedback-loop messages and direct complaints ([M3AAWG Sender Best Common Practices, Version 4.0, August 2026](https://www.m3aawg.org/senderbcp)). Gmail requires one-click unsubscribe for marketing and subscribed messages from senders of more than 5,000 messages a day ([Gmail sender guidelines](https://support.google.com/mail/answer/81126?hl=en)). Yahoo requires it of bulk senders, recommends the POST method defined in [RFC 8058](https://datatracker.ietf.org/doc/html/rfc8058), and asks that unsubscribes be honoured within 2 days ([Yahoo](https://senders.yahooinc.com/best-practices/)). - **First action:** confirm with your platform that complainers are suppressed automatically and that your marketing mail carries one-click unsubscribe headers. ## Engagement **What providers measure:** whether people read and act on your mail. Yahoo says sending email to people who are not reading it "will harm your delivery metrics and reputation" ([Yahoo](https://senders.yahooinc.com/best-practices/)). Google suggests that senders "consider unsubscribing recipients who don't open or read your messages" ([Gmail sender guidelines](https://support.google.com/mail/answer/81126?hl=en)). **Marketing owns** this signal: the targeting, the frequency and the offer. - **First action:** define "inactive" by clicks or purchases rather than opens alone. Apple's Mail Privacy Protection downloads remote content "regardless of whether you engage with the email" ([Apple](https://www.apple.com/legal/privacy/data/en/mail-privacy-protection/)), so a recorded open does not show that anyone read the message. Then follow what both providers suggest. Yahoo recommends periodically sending inactive subscribers a reconfirmation email ([Yahoo](https://senders.yahooinc.com/best-practices/)), and Google suggests periodically confirming that recipients want to stay subscribed, and considering unsubscribing those who don't open or read your messages ([Gmail sender guidelines](https://support.google.com/mail/answer/81126?hl=en)). [List Hygiene and Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies) covers how to set that up. ## Bounces **What providers measure:** how much of your mail goes to addresses that don't exist. M3AAWG says the volume of permanent failures "is one indicator used by receivers to build a reputation about a sender", and that a receiver will often penalise a sending IP for too many of them ([M3AAWG Sender Best Common Practices, Version 4.0, August 2026](https://www.m3aawg.org/senderbcp)). Microsoft's policy is that after a permanent (5xx) error, the sender must not try that message to that recipient again ([Outlook.com postmaster policies](https://substrate.office.com/ip-domain-management-snds/postmaster/policies)). **The platform owns** processing bounces: retrying temporary failures, suppressing permanent ones, and removing addresses that keep bouncing. M3AAWG considers it best practice to remove an address that bounces consecutively at least two times over two weeks or more. - **First action:** confirm with your platform that addresses which bounce permanently are suppressed automatically. **Marketing owns** what gets added. M3AAWG links large volumes of hard bounces to "a poorly managed registration process or an old or misapplied mailing list", and Yahoo recommends confirmed opt-in to reduce invalid recipients ([Yahoo](https://senders.yahooinc.com/best-practices/)). - **First action:** never re-import addresses your platform has suppressed, and confirm new addresses at signup. ## Spam traps **What providers measure:** whether you mail addresses nobody signed up with. Spamhaus describes a spam trap as an address "traditionally used to expose illegitimate senders who add email addresses to their lists without permission", which also identifies marketers "with poor data collection and list management practices" ([Spamhaus, Email Deliverability 101](https://info.spamhaus.com/hubfs/Know%20How%20-%20Email%20Deliverability/Spamhaus%20eBook_Email%20Deliverability%20101.pdf)). **Marketing owns** this signal, because it comes from how addresses were collected and kept. Spamhaus advises putting the effort "into fixing the data collection, retention and hygiene problem, and not into trying to locate the spamtrap" (same source). - **First action:** audit where your addresses come from. Stop mailing any segment that was bought, or that was collected without confirmation and hasn't been mailed in a long time. Google tells senders not to purchase email addresses ([Gmail sender guidelines](https://support.google.com/mail/answer/81126?hl=en)). [Spam Traps](https://emailmarketing.net/learn/reference/spam-traps) explains the trap types. ## Authentication **What providers measure:** whether your mail proves it comes from your domain. Gmail requires SPF or DKIM from all senders, and SPF, DKIM and DMARC from senders of more than 5,000 messages a day, with the From domain aligned with the SPF or DKIM domain ([Gmail sender guidelines](https://support.google.com/mail/answer/81126?hl=en)). Yahoo requires the same of its bulk senders ([Yahoo](https://senders.yahooinc.com/best-practices/)), and Microsoft requires it of domains sending more than 5,000 emails a day to Outlook.com ([Outlook.com postmaster policies](https://substrate.office.com/ip-domain-management-snds/postmaster/policies)). Three people share this signal, and it breaks when one of them isn't told. **The DNS owner** publishes the records. - **First action:** run the [domain check](https://emailmarketing.net/tools/domain-check) and fix anything **bad**. If there is no DMARC record, publish one with a reporting address. M3AAWG says any DMARC record, even one with `p=none`, should include at minimum a `rua` tag for aggregate reports, and recommends `p=reject` as the policy where possible ([M3AAWG Email Authentication BCP](https://www.m3aawg.org/sites/default/files/legacy/m3aawg-email-authentication-recommended-best-practices-09-2020.pdf)). [Reading a Domain Check Result](https://emailmarketing.net/learn/foundations/reading-a-domain-check-result) explains each verdict. **The platform** supplies the values to publish and signs the mail. - **First action:** confirm that it authenticates your domain's email with SPF and DKIM, as Google asks senders who use a provider to verify ([Gmail sender guidelines](https://support.google.com/mail/answer/81126?hl=en)). The platform also runs the sending infrastructure the providers check, such as valid forward and reverse DNS for sending IPs and TLS connections (same source). **Marketing** knows which tools send mail as your domain. - **First action:** list every service that sends as your domain (newsletters, CRM, billing, the support desk) and give that list to the DNS owner. Google says your SPF record should include all email senders for your domain, and that mail from senders left out is more likely to be marked as spam (same source). ## Volume patterns **What providers measure:** how steady your sending is. Google advises sending at a consistent rate, avoiding bursts, and avoiding sudden spikes without a history of large volumes: "immediately doubling previously sent volumes suddenly could result in rate limiting or reputation drops" ([Gmail sender guidelines](https://support.google.com/mail/answer/81126?hl=en)). M3AAWG says consistency of volume "plays an integral part in the determination of IP reputation and deliverability outcomes" ([M3AAWG Sender Best Common Practices, Version 4.0, August 2026](https://www.m3aawg.org/senderbcp)). Spamhaus notes that sudden changes in mail volume are typical of infected hosts, and that providers react accordingly ([Spamhaus, Email Deliverability 101](https://info.spamhaus.com/hubfs/Know%20How%20-%20Email%20Deliverability/Spamhaus%20eBook_Email%20Deliverability%20101.pdf)). **Marketing owns** the plan: a seasonal peak, a reactivation campaign, a newly imported segment. - **First action:** tell your platform before any send much larger than usual, and build up to it over several sends rather than in one day. **The platform owns** the sending rate: throttling, backing off when a provider defers mail, and warming up new IPs. Google advises reducing volume when messages start bouncing or being deferred, then increasing slowly again (same source). Outlook.com provides SNDS, which gives the owner of an IP range data such as mail volume and complaint rates for traffic from those IPs ([Microsoft SNDS FAQ](https://substrate.office.com/ip-domain-management-snds/snds/faq)). If you send from your platform's IP addresses, the platform is the one that can see that data. - **First action:** confirm the platform slows down automatically when a provider defers mail. ## Related - [Is This a Delivery Problem? How to Tell Before You Spend Money](https://emailmarketing.net/learn/foundations/is-this-a-delivery-problem) — using these signals to decide what to do next - [The Seven-Step Delivery Model](https://emailmarketing.net/learn/foundations/seven-step-delivery-model) — the sender and platform split, and the campaign loop - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability) — why complaints and engagement weigh the most - [Gmail Email Sender Guidelines](https://emailmarketing.net/learn/providers/gmail-sender-requirements), [Yahoo Sender Requirements](https://emailmarketing.net/learn/providers/yahoo-sender-requirements) and [Microsoft Sender Requirements](https://emailmarketing.net/learn/providers/microsoft-sender-requirements) — the provider rules in full - [Google Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools) — the dashboard for the Gmail signals # M3AAWG Documents for Senders and ESPs — Annotated Index > What else M3AAWG publishes for senders and ESPs, plus the feedback-loop ecosystem — FBL format types and the per-provider FBL signup list. Source: emailmarketing.net — https://emailmarketing.net/learn/industry-best-practices/m3aawg-document-index If you send email or run an email service provider (ESP), much of the industry's operational guidance comes from one working group, and you need to know which of its documents exist and where to find them. The Messaging, Malware and Mobile Anti-Abuse Working Group (M³AAWG) maintains a "Documents for Senders and ESPs" page and a Feedback Loop resources page. Two of the documents have their own detailed summaries: - [M3AAWG Sender Best Common Practices, Version 4.0 (August 2026)](https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp) - [M3AAWG Email Authentication Recommended Best Practices (2020)](https://emailmarketing.net/learn/industry-best-practices/m3aawg-email-authentication-bcp) The tables below list the rest, with what each document covers and where it is published. ## Documents listed on the page for senders and ESPs | Document | Date | What it covers | URL | |---|---|---|---| | Trust in Email Begins with Authentication | Feb 2015 | White paper on why and how email authentication (SPF, DKIM, DMARC) establishes trust. It is background reading that the 2020 Authentication BCP builds on. | https://www.m3aawg.org/sites/default/files/doc_files/M3AAWG_Email_Authentication_Update-2015.pdf | | M3AAWG Sender Best Common Practices, Version 4.0 | Aug 2026 | The Senders BCP (M3AAWG-158), summarized in [M3AAWG Sender Best Common Practices](https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp). It replaces versions 2.0 (2011) and 3.0 (2015). | https://www.m3aawg.org/senderbcp | | M3AAWG Position on Email Appending | Sep 2019 | Position statement: email appending (matching customer records to email addresses the owner never provided or consented to) is a direct violation of core M³AAWG values. It is abusive, generates complaints, and carries legal risk under privacy and anti-spam laws. | https://www.m3aawg.org/sites/default/files/legacy/m3aawg_apending_position_update-2019-01.pdf | | M3AAWG Vetting Best Common Practices | Nov 2011 | In-depth guide to customer vetting for ESPs: vetting before sending, to identify malicious senders before they mail, and monitoring after sending (the Senders BCP makes both mandatory). | https://www.m3aawg.org/sites/default/files/doc_files/MAAWG_Vetting_BCP_2011-11.pdf | | M3AAWG Complaint Feedback Loop BCP | Aug 2010, replaced Nov 2011 | Superseded by **RFC 6449, Complaint Feedback Loop Operational Recommendations**, the operational standard for running and consuming FBLs. | https://tools.ietf.org/html/rfc6449 | | Best Current Practices for Building and Operating a Spam Trap | Aug 2016 | How spam-trap networks are built and run. It helps senders understand how trap operators source addresses (recycled vs. pristine traps) and why hitting traps damages reputation. | https://www.m3aawg.org/sites/default/files/legacy/m3aawg-spamtrap-operations-bcp-2016-08.pdf | The two BCPs summarized above also cite these M³AAWG documents, which belong to the same catalog but are not listed on the page for senders: | Document | What it covers | URL | |---|---|---| | Best Practices for Managing SPF Records (2017-08) | Comprehensive SPF record management, including how to stay within the RFC 7208 DNS lookup limits. | https://www.m3aawg.org/sites/default/files/m3aawg_managing_spf_records-2017-08.pdf | | DKIM Key Rotation BCP (2019-03) | How and how often to rotate DKIM keys. | https://www.m3aawg.org/sites/default/files/m3aawg-dkim-key-rotation-bp-2019-03.pdf | | Best Practices for Implementing DKIM To Avoid Key Length Vulnerability (2017-07) | Minimum key lengths and implementation guidance. | https://www.m3aawg.org/sites/default/files/m3aawg-key-implementation-bp-revised-2017-07.pdf | | Protecting Parked Domains BCP (2015-12) | Publish `v=spf1 -all` (and related records) on domains that never send mail. | https://www.m3aawg.org/sites/default/files/m3aawg_parked_domains_bp-2015-12.pdf | | Email Forwarding Best Common Practices, version 2 (2015-03) | Running a mail-forwarding service (for example, an ESP forwarding replies to customers using addresses on the ESP's domain). | https://www.m3aawg.org/documents/en/m3aawg-email-forwarding-best-common-practices-version-2 | | Recommendations for Senders Handling of Complaints | The document the Senders BCP (Version 4.0) points to for handling FBL reports and direct complaints. The BCP gives no link, and the document was not listed on M³AAWG's document pages when checked in September 2026. | Not located | | Feedback Reporting Recommendation (2014-02) | Recommendations on feedback and complaint reporting between receivers and senders. Version 3.0 of the Senders BCP cited it; Version 4.0 cites the complaints document above instead. | https://www.m3aawg.org/sites/default/files/legacy/document/M3AAWG_Feedback_Reporting_Recommendation_BP-2014-02.pdf | | DMARC Training Series (videos) | Extensive course on DMARC presented by DMARC.org experts. | http://www.maawg.org/activities/training/dmarc-training-series | ## Feedback loop (FBL) resources A **Complaint Feedback Loop** is a mechanism by which a mailbox provider reports its users' spam complaints back to the verified sender of the message, so the sender can clean its database and fix the causes of the complaints. **RFC 6449** gives the operational recommendations, and reports use the **Abuse Reporting Format (ARF)** (RFC 5965; RFC 6650 is its applicability statement). ### Three FBL format types | Type | How it works | Notes | |---|---|---| | Traditional (IP-based) | Follows RFC 6449. Reports use ARF, include the full message and identify the complaining user, and are keyed to the sending IP. | The classic model. The sender must control or register the sending IP addresses. | | Aggregated | Rolls up complaint **counts** without personal data (PII) or full messages. | Designed for privacy, and still gives performance data for each stream. Examples: Gmail (spam-rate data in Postmaster Tools), Microsoft SNDS, Signal Spam. | | Domain-based | Requires **DKIM signatures**. Reports use ARF and are keyed to the signing domain. | Lets senders on **shared IPs** get feedback about their own program. It works with the Senders BCP advice to DKIM-sign each entity in a shared pool with its own domain or subdomain. | ### FBL signup points by mailbox provider (as listed by M3AAWG) Most traditional FBLs are operated through **Validity's Universal Feedback Loop** (https://fbl.validity.com): Bluetie (Excite), Comcast, Cox, Fastmail, Gandi, Italiaonline (Libero and Virgilio), La Poste, Locaweb, Mail.Ru, OpenSRS (Tucows), Rackspace, Seznam, SFR, SilverSky (USA.NET), Swisscom, Synacor, Telecom Italia, Telenet, Telenor, Terra, UOL, Virgin Media, Ziggo. Exceptions and programs outside Validity: | Provider | Type | Signup | |---|---|---| | Earthlink | Traditional | fblrequest@abuse.earthlink.net | | Microsoft JMRP (Junk Mail Reporting Program) | Traditional | https://postmaster.live.com/snds/JMRP.aspx | | QQ.com | Traditional | http://open.mail.qq.com (Chinese) | | United Online (Juno and NetZero) | Traditional | http://www.unitedonline.net/postmaster/whitelisted.html | | Gmail | Aggregated | https://support.google.com/mail/answer/6254652 (Postmaster Tools) | | Microsoft SNDS | Aggregated | https://sendersupport.olc.protection.outlook.com/snds/index.aspx | | Signal Spam (France) | Aggregated | https://www.signal-spam.fr (paid membership) | | Yahoo! | Domain-based (DKIM) | https://senders.yahooinc.com/contact#complaint-feedback-loop | | Comcast, Gandi, La Poste, SFR | Domain-based (also offer traditional) | https://fbl.validity.com | **Gmail offers no traditional per-message FBL.** Its aggregated program (spam rate by identifier, in Postmaster Tools) is the only complaint signal it provides. You cannot suppress individual complainers at Gmail, so preventing complaints matters more there. **Yahoo's FBL is domain-based**, keyed to the DKIM `d=` domain. M³AAWG provides this list as an industry service and does not endorse specific providers. The material comes from third parties and is offered "as is." ### How FBLs fit a sender's workflow The [Senders BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp) requires ESPs to have a system that ingests both FBL reports and complaints sent directly to the abuse mailbox, and a process to act on them. Version 4.0 adds that ESPs should join every FBL available to them and check that each one keeps delivering reports. The BCP treats complaints as a main way to spot customers breaking the sender's terms, but it leaves the process itself to the ESP. In common practice, that process suppresses the complaining recipient immediately (where the FBL identifies one) and tracks the complaint rate of each customer and stream to catch Terms of Service violations or list-hygiene problems. ## Related articles - [M3AAWG Sender Best Common Practices](https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp) - [M3AAWG Email Authentication BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-email-authentication-bcp) - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability), on complaints as a core reputation input # M3AAWG Email Authentication Recommended Best Practices (2020) > The industry checklist for SPF, DKIM, DMARC, and ARC deployment — concrete record requirements for senders, and what intermediaries and receivers are expected to do. Source: emailmarketing.net — https://emailmarketing.net/learn/industry-best-practices/m3aawg-email-authentication-bcp Whether you send mail, forward it or receive it, the industry expects a specific set of authentication measures from you. The Messaging, Malware and Mobile Anti-Abuse Working Group (M³AAWG) sets them out in its Email Authentication Recommended Best Practices, a **checklist of binary technical requirements** ("they either are or are not implemented") for authenticating email with SPF, DKIM, DMARC and ARC. The checklist covers three kinds of actors: senders (originators), intermediaries (forwarders, mailing lists) and receivers (mailbox providers). [DMARC](https://emailmarketing.net/learn/authentication/dmarc) explains the underlying concepts. SMTP AUTH (the credentials presented when a message is submitted, from the MUA or MSA to the MTA) is explicitly out of scope, because it serves a different purpose. **Why it matters:** mailbox providers regularly talk about a possible "**No auth, no entry**" future, in which a message must pass one or more authentication checks to be considered for delivery at all. These guidelines aim to establish trust today, and to meet any such requirement in the future. Throughout, the goal is to protect the **organizational domain** of the RFC5322.From header (the domain the recipient sees). That means relying on **DMARC**, which protects that domain in ways SPF and DKIM alone do not. ## Protocol scope | Protocol | RFC | One-line role | |---|---|---| | SPF | RFC 7208 | Domain owners publish, in a DNS TXT record, the systems authorized to send email on their behalf. | | DKIM | RFC 6376 | An organization claims responsibility for transmitting a message in a way the recipient can validate. | | DMARC | RFC 7489 | An organization that originates mail states its domain-level policies and preferences for validation, disposition and reporting. | | ARC | RFC 8617 | An authenticated chain of custody that records each handler and its authentication assessment at each hop. Not yet an internet standard, but adoption is increasing. | ## Executive checklist | Actor | Recommended practices | |---|---| | **Sender** | SPF: publish records for the MAIL FROM **and** EHLO domains, end records in `~all`, authorize no more IP addresses than necessary, align MAIL FROM with RFC5322.From where possible, and publish `v=spf1 -all` on domains that do not send mail. DKIM: sign all outbound mail with a domain aligned with RFC5322.From, and follow best practices for key management. DMARC: use `p=reject` where possible and `p=quarantine` otherwise. `p=none`, `sp=none` and `pct<100` are transitional states to leave as quickly as possible. Always include a `rua` tag. | | **Intermediary** | Implement ARC. Generate DMARC reports. | | **Receiver** | Perform SPF, DKIM and DMARC checks. Honor DMARC policies. A DMARC pass overrides an SPF fail verdict, except when the SPF record is `v=spf1 -all`. Send DMARC reports. Use the ARC headers in received messages. | ## Sender recommendations A sender is the point where mail originates: brand owners, mailbox providers and ESPs, but not end users sending mail from person to person. ### SPF Publish SPF records for **every domain used in the RFC5321.MailFrom (MAIL FROM) command** and for **every domain used as the SMTP HELO or EHLO identity** of any sending server. - Make sure the record is valid and stays within the **DNS lookup limits in RFC 7208** (the 10-DNS-lookup limit). - Records **should end in `~all`** (softfail). The receiver section below explains why `-all` interacts badly with forwarding before DMARC is evaluated. - Authorize **no more IP addresses than necessary**. Use the smallest possible netblocks for the IP addresses that send on the domain's behalf. - Domains that do not send email should publish **`v=spf1 -all`** (as the M³AAWG Protecting Parked Domains BCP recommends). - MAIL FROM domains should **align** with the RFC5322.From domain where possible. - For more detail, see *M³AAWG Best Practices for Managing SPF Records* (https://www.m3aawg.org/sites/default/files/m3aawg_managing_spf_records-2017-08.pdf). ### DKIM Any reputation system based on domains needs a reliable way to confirm the identity of the domain that takes responsibility for a message, and **DKIM is the best method available today**. - Sign **all** outbound mail with a DKIM key whose `d=` domain **aligns with the RFC5322.From domain**. - **ESPs should strongly consider also signing with their own domain**, so that receivers can build a separate reputation for each domain. - **ESPs should use a different DKIM key for each customer.** - Sign a reasonable set of header fields, using **section 5.4.1 of RFC 6376** as the guide. - For key management, M³AAWG refers to: - *DKIM Key Rotation Best Common Practices* (revised March 2019: https://www.m3aawg.org/sites/default/files/m3aawg-dkim-key-rotation-bp-2019-03.pdf) - *Best Practices for Implementing DKIM To Avoid Key Length Vulnerability* (revised July 2017: https://www.m3aawg.org/sites/default/files/m3aawg-key-implementation-bp-revised-2017-07.pdf) ### DMARC - **M³AAWG recommends `p=reject`** for domains that publish DMARC records. Where that creates operational problems, use `p=quarantine`. - **`p=none`, `sp=none` and `pct<100` are only transitional states**, and the goal is to leave them as quickly as possible. (Compare the gentler advice to "start at `p=none`" in [DMARC](https://emailmarketing.net/learn/authentication/dmarc). Both agree that the destination is Enforcement, guided by the report data.) - Set the policy by weighing the domain's **risk profile**, for active or potential spoofing and phishing, against the possible loss of legitimate mail because of missing or broken signing. - **Every** published DMARC record, even one with `p=none`, must include at least a **`rua` tag** pointing to a mailbox for aggregate reports. Without the ability to receive and process reports, domain owners cannot know whether it is safe to move to a stricter policy, because they cannot tell whether all their legitimate mail authenticates properly. - **`ruf` (failure reports) is optional.** Because of privacy concerns and the redaction of personal data (PII), most receivers do not send failure reports, and they are not very useful to most domain owners. - Neither the `rua` mailbox nor the `ruf` mailbox should send replies (auto-responses) when it receives a report. ## Intermediary recommendations Intermediaries are the Mediators, Relays and Gateways of RFC 5598: forwarding services, mailing lists, discussion-group servers, and any mailbox set to forward all mail to another domain. SPF, DKIM and DMARC are designed in a way that means final authentication checks **can fail for mail that passed through an intermediary**, even though the same mail would have passed if sent directly. M³AAWG asks intermediaries to reduce that risk: - **Change the message as little as possible in transit.** Authentication depends on the content of the headers and/or the body, so any alteration (sometimes unavoidable for mailing lists) should be kept to a minimum. - **Reduce the risk of authentication failures.** The standard example is a mailing list that adds a header or footer to each post. It should rewrite the From header when the poster's domain publishes DMARC: 1. a member posts from `john.jones@dmarc.domain.tld`; 2. the list software sees that `dmarc.domain.tld` publishes a DMARC policy; 3. the list rewrites From to, for example, `john.jones=40dmarc.domain.tld@list.domain`, which removes the risk of a DMARC failure. - **Implement ARC.** ARC records the authentication results at each hop without changing the message content, which protects against failures further along the path caused by passing through the intermediary. This implies that the intermediary must itself perform the SPF, DKIM and DMARC checks whose results go into the `ARC-Authentication-Results` header. - **Generate and send DMARC aggregate reports.** ## Receiver recommendations Receivers are the domains that accept and store mail for their recipients. The term is broader than "mailbox provider", because much email ends up at domains that are not mailbox providers. These mechanisms are likely to become more and more necessary. Where they are beyond the IT skills of a small domain, M³AAWG asks the cloud hosting services that such domains move to to implement them. - **Perform authentication checks** (SPF, DKIM, DMARC) on inbound mail, and use the results to decide on acceptance and filtering. This is best practice for protecting mailbox holders from fraudulent email, whether or not the receiver adopts "no auth, no entry." - **Honor DMARC policies.** When a domain publishes DMARC (especially `p=reject`), recipients expect messages that pass to genuinely come from the domain in the From line. Overrides by local policy should be (a) relatively rare and (b) clearly justified and documented in the policy-override and comment fields of the aggregate report. - **A DMARC pass overrides an SPF fail verdict.** DMARC needs only an aligned DKIM **or** SPF pass, and Return-Path domains often do not align with the From domain. So an SPF fail (the record ends in `-all` and the check fails) **should not cause rejection until DMARC has been evaluated and found not to pass**. - **The only exception** is `v=spf1 -all`, a record that allows no use at all. In that case the receiver (or intermediary) may act on the SPF failure right away. - **Send DMARC aggregate reports.** Reports let domain owners tighten their authentication, whether or not they move to `p=reject`. Without reports, owners cannot identify legitimate streams that fail authentication, or see impersonation attempts and misconfigured vendors. Several large mailbox providers have concluded that sending aggregate reports does not conflict with privacy laws. M³AAWG recommends that report senders consider current legal opinions (for example, the certified-senders.org report on DMARC and the EU GDPR). - **Use ARC headers**: take the ARC header sets on arriving mail into account in the final authentication verdict and disposition. ## References carried by the document RFCs: 5598 (Internet Mail Architecture), 6376 (DKIM), 7208 (SPF), 7489 (DMARC), 8617 (ARC). Related M³AAWG documents (see also the [document index](https://emailmarketing.net/learn/industry-best-practices/m3aawg-document-index)): | Document | URL | |---|---| | Best Practices for Managing SPF Records (2017-08) | https://www.m3aawg.org/sites/default/files/m3aawg_managing_spf_records-2017-08.pdf | | DKIM Key Rotation BCP (2019-03) | https://www.m3aawg.org/sites/default/files/m3aawg-dkim-key-rotation-bp-2019-03.pdf | | Best Practices for Implementing DKIM To Avoid Key Length Vulnerability (2017-07) | https://www.m3aawg.org/sites/default/files/m3aawg-key-implementation-bp-revised-2017-07.pdf | | Protecting Parked Domains BCP (2015-12) | https://www.m3aawg.org/sites/default/files/m3aawg_parked_domains_bp-2015-12.pdf | | Trust in Email Begins with Authentication (2015) | https://www.m3aawg.org/sites/default/files/document/M3AAWG_Email_Authentication_Update-2015.pdf | | Report on the Compliance of DMARC with the EU GDPR | https://certified-senders.org/wp-content/uploads/2018/08/Report_DMARC_and_GDPR.pdf | ## Related articles - [DMARC](https://emailmarketing.net/learn/authentication/dmarc), on alignment, record syntax and moving between policies - [M3AAWG Sender Best Common Practices](https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp), on the forward DNS, reverse DNS and HELO requirements that SPF depends on, and on DKIM for each customer in shared IP pools - [M3AAWG document index](https://emailmarketing.net/learn/industry-best-practices/m3aawg-document-index) # M3AAWG Sender Best Common Practices (Version 4.0) > Industry-consensus baseline for commercial senders and ESPs, version 4.0 (August 2026). Email authentication, bounce and feedback loop handling, domain warming and monitoring, IP and DNS identity, service monitoring, data security, WHOIS, opt-in levels, list bombing, unsubscribe rules and client vetting. Source: emailmarketing.net — https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp If you send commercial email, or run an email service provider (ESP), this is the industry's agreed baseline for setting up your sending infrastructure, collecting consent, handling bounces and unsubscribes, and vetting clients. It is published by the Senders Committee of the Messaging, Malware and Mobile Anti-Abuse Working Group (M3AAWG) as a Best Common Practices (BCP) document. The current edition is *M3AAWG Sender Best Common Practices, Version 4.0 (August 2026)*, document M3AAWG-158, at https://www.m3aawg.org/senderbcp. It is a major rewrite that replaces Version 3.0 (February 2015) and Version 2.0 (October 2011), together with their executive summaries. Page references below are to the Version 4.0 PDF. It is written for delivery and compliance professionals at ESPs and large senders, and for the marketing and management staff who approve mailing practices. It covers email only, and it states that it is not legal advice (Abstract, p.1). Its goal is **transparency**: recipients and mailbox providers should be able to tell legitimate mail from abuse (§1, p.2). Two statements set the frame: > M³AAWG categorically states that verifiably clear, conspicuous and informed **opt-in subscriber consent** is the best practice for messaging permission. The conclusion (§6, p.22) adds that "the end user and their expectations should be the highest priority." What a law or a privacy policy allows matters less than what the recipient wants and expects. At a minimum, senders must comply with mailbox providers' Acceptable Use Policies and with applicable national and regional law (§1, p.2; the regulatory resources are in Appendix B, p.25). ## What changed from Version 3.0 - **Structure.** Infrastructure now comes first, before address collection. - **New guidance.** Domain reputation, warming and monitoring; IPv6; bringing your own IP addresses; monitoring of services; protocol security and personal data; list bombing; cold email. - **New requirements tied to major mailbox providers.** SPF, DKIM and a passing DMARC result; one-click unsubscribe under RFC 8058; reverse DNS that exactly matches forward DNS. - **Removed.** The Version 3.0 estimate of the share of synchronous bounces is gone. Sender ID, DomainKeys and Cisco's Identified Internet Mail are listed as deprecated (p.27). Version 4.0 does not set complaint-rate or bounce-rate thresholds, retry schedules, retention periods, an unsubscribe deadline or an IP warm-up schedule. It does not address BIMI, ARC or AI-generated content. ## Infrastructure ### Email authentication Authentication identifies the sender, so receivers can judge mail on the history of an authenticated domain and detect forgeries (§2.1, p.3). The document summarizes three mechanisms and points to the M3AAWG Email Authentication Recommended Best Practices (2020) for detail: - **SPF** checks the sending IP address against the domain of the envelope sender (Return-Path). - **DKIM** attaches a cryptographic signature that is checked against a domain in the headers. - **DMARC** lets the owner of the From domain see who sends mail using it, and set a policy for mail that fails SPF and DKIM. To meet the requirements of major mailbox providers, senders and their customers **must** send mail that has an SPF record for the envelope sender domain, carries a DKIM signature, has a DMARC record for the From domain, and passes DMARC through an aligned SPF or DKIM pass (pp.3–4). The other recommendations (p.4): - Encourage customers to align both SPF and DKIM where they can. - Check that customers' DNS records are correct at setup, and again periodically. - Check at send time that each message will pass authentication, and fix it before sending if not. - Sending platforms **must** sign with DKIM and authenticate with SPF using their own domain for customers who cannot authenticate their own. - Sign with DKIM using both the platform's domain and the customer's domain, to benefit from DKIM-based feedback loops and reporting. - Comply with all relevant RFCs. See [M3AAWG Email Authentication BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-email-authentication-bcp) and [DMARC](https://emailmarketing.net/learn/authentication/dmarc) for deployment guidance. ### Bounce and NDR handling Delivery is never guaranteed. A sending system **must** be able to receive and process returned mail, or non-delivery reports (NDRs), **at the same volume and rate at which it sends**, so plan resources for SMTP traffic in both directions (§2.2, p.4). ESPs should give customers the detailed NDR text, not only totals of "hard" and "soft" bounces, because customers need the real message to troubleshoot. - Returns are usually **synchronous**: the receiver rejects the message during the SMTP conversation. Less often they are **asynchronous**: a bounce message arrives at the Return-Path address, possibly hours or days later. Most returns are synchronous, but the mix depends on the list, and business-to-business (B2B) mail can see more asynchronous bounces. Whichever way a bounce arrives, senders must be able to identify which address bounced. - Returns carry a numeric **status code** and a **descriptive message**. RFC 5321 defines the basic SMTP replies, and RFC 3463 defines enhanced status codes. Codes generally follow the RFCs, but each receiver writes its own text, which may follow them only loosely. Senders must be able to process, categorize and report on **both**. | Code class | Meaning | What the sender does | |---|---|---| | 2xx | Success: the message was accepted | Nothing | | 4xx | Temporary failure: the message was not accepted | Put it back in the queue and retry later | | 5xx | Permanent failure: the message was not accepted | Do **not** put it back in the queue | **Temporary failures (4xx).** Causes include a busy receiver, or a receiver that noticed unusual patterns from an IP address and stopped accepting its mail for a while. Close the connection and try again later (p.5). The document leaves when and how often to retry to the sending software, but receivers of very large volumes expect senders to adjust in real time, for all mail from the same IP address at once. **Some receivers deliberately return a temporary failure, or greylist, a first message to see whether the sender follows the RFCs**, because spammers usually do not. Never treat 4xx as permanent. **Permanent failures (5xx).** "User unknown" is the most common, and many 5xx replies describe a policy violation in their text. Whatever the text says, never retry the message. **Handling NDRs for list hygiene** (pp.5–6): - Status codes tell the mail server what to do with the message, but they were not designed for list managers and do not say whether to remove the **address**. Read the descriptive text to decide. It may also reveal a problem with infrastructure or content, or show that the sending IP address is on a blocklist and must be delisted before more mail gets through. - Any organization sending large volumes **must** have a process for NDRs. If the receiver says the user does not exist, do not retry, and **suppress the address from future mailings**. Receivers use the volume of permanent failures as an input to reputation. Large volumes of hard bounces usually point to a badly managed registration process or to an old or misused list, and they lower an IP address's reputation score. - Recommended removal rule: remove an address that keeps bouncing, with any failure code or text, over several consecutive campaigns. How many campaigns and over what period is the sender's choice, but the usual best practice is **at least two consecutive bounces over two weeks or more**, which allows for temporary server problems at the receiver. ### Complaint and feedback loop (FBL) handling - ESPs receive most complaints through mailbox providers' automated **feedback loops**, and some directly at their abuse mailbox. They must have a system to handle **both**, and a process to decide what to do about them (§2.3, p.6). - Complaints are a key factor in deciding whether customers break the sender's Terms and Conditions or are simply behaving badly. - ESPs should join every automated feedback loop available to them, and monitor each one to confirm it keeps sending data. - Reference: M3AAWG Recommendations for Senders Handling of Complaints. See the [M3AAWG document index](https://emailmarketing.net/learn/industry-best-practices/m3aawg-document-index) for the FBL ecosystem (formats, list of providers). ### Forwarding services If an ESP gives smaller customers addresses on the ESP's own sending domain (used in message headers), it may need to forward replies to those customers. In that case, it should run a proper mail forwarding service (§2.4, p.6). For details, see M3AAWG Email Forwarding Best Common Practices, version 2 (https://www.m3aawg.org/documents/en/m3aawg-email-forwarding-best-common-practices-version-2). ### Domain reputation, warming and monitoring Every domain name in a message, in the headers and in the body, contributes to the sender's reputation, and filters weigh it together with content and IP reputation (§2.5, p.6). A newly registered domain that sends a large volume soon after registration raises suspicion. So does an established domain that has never sent mail and suddenly sends a lot, because spammers use both tactics to avoid detection. **Domain warming** (pp.6–7). A new domain has no sending history, and mailbox providers treat an unknown reputation with nearly the same caution as a bad one. Warming means raising volume gradually so providers can evaluate the mail. Warm a new subdomain too, even when the organizational domain already has a good reputation. The document calls artificial warming practices "not recommended" and possibly illegal. Its recommendations: - Start with low volume and increase it slowly. It gives **6 weeks as an average** warm-up to consider, not a fixed rule. - Spread each day's messages over the day rather than sending them in one batch. - Send campaigns regularly until the domain is warmed up. - Watch SMTP logs for deferrals and bounces. If deferrals spike, slow down for some or all receiving domains, and check that content and list are opt-in and engaged. - Check reputation data for the domain and IP addresses with industry tools, and watch for spikes in unsubscribes and complaints. - Watch opens and clicks. A large spike may be security appliances inspecting the mail, and continued spikes may need fixing. A drop may mean mail is going to the junk folder. **Domain monitoring** (p.7). Keep monitoring domain reputation after warm-up. Appendix A (pp.24–25) lists tools, including Google Postmaster Tools, Microsoft SNDS, Yahoo Sender Hub, Sender Score, Cisco Talos, Google Safe Browsing, the Spamhaus DBL, SURBL and DNS Twist. **Lookalike (cousin) domains** (pp.7–8). Avoid sending from domains that resemble your main brand domain, such as `example-promo.com` beside `example.com`. They teach users to trust variations of your domain, which makes phishing domains easier to believe, and each one multiplies the typo and homoglyph variants you have to watch. Register the obvious lookalikes defensively and do not send from them. Never use a cousin domain to get around reputation problems on your main domain: that is spammer behavior. Use a subdomain when you need to separate parts of the business. For the cases where lookalikes are acceptable for security purposes, M3AAWG has a separate best practices document. **MX and A records, and landing pages** (p.8). Any domain used in the envelope sender or the From header should have an MX record. Some receivers refuse mail from a sending domain that has no valid A record. Every domain and subdomain in a message, including the click-tracking domain, should lead to the owner's organizational site or an anti-abuse page when typed into a browser. **The customer's domain or the ESP's subdomain** (pp.8–9). ESPs should, wherever possible, have customers put their own domain or subdomain in the visible From header, so each customer builds its own reputation. Use subdomains named for the purpose of the mail, such as `offers.mybrand.com` for marketing and `info.mybrand.com` for transactional mail. Sending from the ESP's domain is a fallback for small senders who cannot change their DNS, and it is better than sending without authentication. In that case, the ESP should give each brand its own subdomain of a shared domain, such as `brand01.shared.esp.com`. One shared subdomain for all customers, or for each pool, is possible but not recommended, because it makes troubleshooting harder and hides the source of abuse. **Consistency and alignment** (pp.9–10). Mailbox providers can use any domain in the message or the SMTP transaction to judge reputation: the envelope sender, the From header, the DKIM signing domain, the HELO name, the reverse DNS name, the Reply-To address and the links. Use one organizational domain or subdomain throughout, which DMARC may require anyway. Be careful with domains shared across senders, such as a click-tracking domain an ESP gives all its customers: if one sender gets it blocked, the others suffer too. Where unique domains are not possible, give each sender a unique subdomain. See [M3AAWG Sending Domains BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-sending-domains). ### Technical IP details (forward DNS, reverse DNS, HELO) The IP guidance in the BCP is written for IPv4, and it is the minimum to follow (§2.6, p.10). Its intent is to make ownership transparent, and responsibility clear to reputation and filtering systems. **Forward DNS** (pp.10–11) - A name MUST be chosen that clearly identifies the domain of the responsible party: the **ESP or provider when the IP address is shared**, and normally the **customer or advertiser when it is dedicated** (in that case, the customer's domain administrator sets up the forward DNS). - The name must clearly indicate a server, not generic pool space: `server03.espname.com`, not `pool-dhcp-456.espname.com`. - If several names point to the same shared IP address, the chosen name is the "primary name." - Except for dedicated IP addresses, all mail servers of the ESP or advertiser must use the same name, or a small set of names, at the "domain registry level", with subdomains to tell them apart: use `server1.espname.com` and `server2.espname.com`, **not** `espname01.com` and `espname02.com`. **Reverse DNS** (p.11; see RFC 1912 on DNS operations) - Every sending IP address must have reverse DNS (a PTR or IN-ADDR record) configured. - Each IP address has only **one** reverse DNS name. - It must **exactly match** the primary forward DNS name. Version 4.0 notes that major mailbox providers now require this for mail sent directly to them. **HELO and EHLO** (p.11; these count in SPF authentication) - The name must be a hostname that resolves. An IP literal in square brackets (`[]`) is not acceptable, except between internal mail servers. - Dedicated IP address: the HELO name MUST exactly match the primary forward DNS name. - Shared IP address, or NAT to several servers: the HELO name must match the primary name at least at the domain registry level; an exact match is fine. It is recommended to give each mail system or customer behind a NAT its own HELO subdomain (for example `server01.brand1.espname.com`), to help diagnosis. - The domain used in the HELO name and reverse DNS should receive mail (an MX record and a mail server), with working `postmaster` and `abuse` addresses as RFC 5321 and RFC 2142 require. It should also have an A record and a web server that redirects to the owner's main domain. **IPv6** (pp.11–12). Follow the IPv4 reverse DNS guidance as a minimum, keep valid PTR and MX records, and take extra care with domain reputation. A provider typically receives a /32, which it can divide into /48 or /64 networks for customers. The smallest allocation to give a customer is a /64. See [IPv6 Sending](https://emailmarketing.net/learn/operations/ipv6-sending). **Bringing your own IP addresses** (p.12). Some providers let senders use IP addresses they own, which avoids warming new addresses and keeps the sender in control of its inventory. Few providers offer it. When they do: 1. Verify ownership and control of the addresses, through RDAP, a signed Letter of Authorization (LOA) or other means. 2. Accept no IPv4 range smaller than a /24. 3. The addresses must have a clean history. 4. Publish reverse DNS that points to the owner's domain, not the ESP's. 5. The previous provider must stop sending from the addresses before the new routing announcement completes. See [IP Acquisition Diligence](https://emailmarketing.net/learn/esp-operations/ip-acquisition-diligence). ### Shared vs. dedicated IP environments Definitions (p.12): - **Dedicated environment**: one distinct entity has exclusive use of, and responsibility for, the outbound mail sent through it (one or more IP addresses, exactly one responsible entity). - **Shared environment**: more than one entity is assigned to an IP address or a pool of IP addresses. - An "entity" is the party responsible for sending the message: a company, a brand within a company, or an ESP customer. Reasons to choose **dedicated** (p.13): - The quality of the mail or list is unknown or below average. Isolating it protects others, or lets you establish and track its quality. - The quality of the mail is known to be above average. Isolating it protects it from the effects of others. - Control over volume patterns. Mixing transactional and marketing mail, or several entities, creates irregular traffic, and **consistent volume is an integral part of IP reputation**, especially at free mailbox providers, large domains, and small businesses hosted by large providers. (Consistent volume is not usually a useful measure for small businesses that host their own mail and make automated decisions.) - The entity wants full responsibility, rather than having its mail attributed to the ESP, or needs its own outbound MTA settings. - Certification, allowlisting or other enhanced deliverability services that require a dedicated environment. Reasons to choose **shared** (p.13): - Combining volumes keeps an average sending volume consistent, which builds and maintains IP reputation. - Reputation is shared, so the mistakes of any single sender are diluted. - It costs less, which makes mailing economically possible for very small senders. Guidance on provisioning (pp.13–14): - Entities in a shared environment should have **similar content and metrics (complaint and bounce rates)**. Vetting needs extra care, because one entity's poor practices can "poison" the pool. - In shared environments, **sign each entity's mail with DKIM using a unique domain or subdomain**. This lets receivers tell mail streams apart, allows each entity to take part in DMARC, and lets an entity keep the reputation it has earned if it is moved. - Best practice, although the document admits it is hard: authenticate the ESP's domain **and** the individual entity's domain at the same time. - ESPs that offer both models should define in advance the criteria for moving an entity from shared to dedicated, and monitor whether the criteria are met. - Best practices for senders with dedicated IP addresses: reverse DNS specific to the entity (for example `entity.cust.esp.com`, which shows clearly who is responsible); a well-defined [IP warm-up](https://emailmarketing.net/learn/ip-management/ip-warm-up) process, applied consistently; help for entities to get allowlisted where that is possible; and help for entities to keep a consistent average sending volume, so that reputation builds up. See also [Basic IP Allocation](https://emailmarketing.net/learn/ip-management/basic-ip-allocation) and [Advanced IP Segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation). ### Monitoring of services Beyond checking that servers are up, a sender's platform should watch for signs of customer breaches, account takeovers, signup form abuse and reputation problems (§2.7, pp.14–15). ESPs are encouraged to combine automated rules with human review. The signals the document lists, which it says are not exhaustive: - **Abnormal volume.** A customer sending **more than 40%** above its usual volume can be flagged. The cause may be an attacker, or a customer's mistake that calls for education. - **Abnormal list growth.** A sudden jump after steady growth can mean compliance is slipping. Validate the added addresses. - **Bounce rates for each mailbox provider.** Global rates show major problems. Rates for each provider reveal authentication failures, routing loops, missing or invalid PTR records, exceeded connection limits, and IP reputation or blocklist problems. - **Authentication that does not comply** with the chosen mechanisms. - **Sign-ins from unusual locations**, which can point to compromised accounts. - **A missing unsubscribe link**, which matters under CAN-SPAM, CASL and the ePrivacy Directive, and for deliverability. - **Unusual message sizes**, which can point to malware or harmful attachments. - **Signup forms**: spikes in subscriptions for a customer, and the same address subscribed across several accounts. - **Link redirects**: changes in click volume, many clicks on one recipient's links, and links flagged by anti-phishing vendors. - **Content**: sudden changes or new URLs, abusive keywords, other anomalies, and hosted images with abusive content. See [Outbound Monitoring](https://emailmarketing.net/learn/esp-operations/outbound-monitoring). ### Data security Senders that store subscribers' addresses or other personal data are strongly encouraged to run a complete security program based on industry-standard practices (§2.8, pp.15–16). The document names OWASP and SANS as starting points, and the U.S. Federal Trade Commission (FTC) report on consumer privacy. Its Appendix A (p.24) adds the Online Trust Alliance "Data Protection and Breach Readiness Guide" and ISO/IEC 27002:2013 (Access Control; Communications and Operations Management; Information Security Incident Management). M3AAWG strongly recommends making security a primary consideration: stored email address data is valuable to criminals, even when it is "only" email addresses. **Protocol security** (p.16). Encrypt every message stream in transit, whatever the type of sender. M3AAWG's TLS for Mail baseline covers opportunistic TLS, which remains open to machine-in-the-middle attacks. Its follow-up guidance covers DANE and MTA-STS, which give stronger assurance but tolerate faults less well. Images, videos and call-to-action links should all use HTTPS. Mailbox providers have suggested that resources without HTTPS can hurt reputation and placement. See [TLS Baseline](https://emailmarketing.net/learn/transport-security/tls-baseline) and [MTA-STS](https://emailmarketing.net/learn/transport-security/mta-sts). **Personal data** (pp.16–17). Which rules apply (GDPR, DPA, HIPAA and others) depends on where the sender's client is, where the recipient is or what nationality they have, and where the ESP operates. Links in a message, such as tracking, preference and unsubscribe links, get logged by network devices and servers, so they should hide the recipient's address and other personal data. Do not put personal data in a URL in clear text or in an easily reversed encoding such as base64. Use an encrypted value, or an identifier unrelated to the recipient that only the ESP can map. Landing pages should mask personal data they display (for example `a**z@example.com`), should not be easy to discover, and should use pseudonymization. ## WHOIS - Keep accurate, up-to-date WHOIS (or rWHOIS) records for domains that take responsibility for large volumes of mail (§3, p.17). - IP sub-allocations of **/29 or larger (IPv4)** and **/56 or larger (IPv6)** must be documented accurately and completely, as the policy of the Regional Internet Registry (RIR, for example ARIN) requires. - **Anonymous or proxy domain registration defeats transparency.** Entities that do not intend to abuse messaging networks have no compelling business reason for deliberately vague WHOIS records. ## Consent: the three levels of opt-in The address collection guidance applies to both marketing and transactional mail (§4, p.17). M3AAWG is also writing a separate best practices document on list maintenance. The main rule: the sender must have the **explicit consent of the recipient before sending**, and before adding the recipient to any ongoing communications (§4.1, p.17). Each level below builds on the one before it. | Level | Name | How it works | |---|---|---| | 1 | Single opt-in | The user provides an address, and scheduled mailings begin. No notification, and no confirmation of consent. | | 2 | Single opt-in with notification (Better) | A notification or welcome message tells recipients they will receive messages. No confirmation of consent. | | 3 | Confirmed opt-in (Best) | A confirmation message requires an action from the recipient (clicking a link or replying) **before any subscription messages are sent**. Also called "double opt-in" or "closed-loop subscription." | ### Level 1: Single opt-in requirements Use single opt-in with extreme caution (p.18). Unconfirmed addresses, whether typos or outright forgeries, can be added without any check. That creates invalid consent, which leads to complaints, bounces and damage to reputation. If you use it: 1. The recipient must **knowingly** give consent when the address is collected. 2. Consent must be clear and obvious, not hidden in small print, legal jargon or on a separate page. 3. The sign-up must state clearly which specific type of list, or lists, the person is joining. Where possible, let recipients choose which lists to be included in or excluded from. The more control recipients have, the fewer abuse reports you receive. 4. Tell recipients the expected **frequency and type** of communications, and give them a choice of each. An unexpected increase in frequency often leads to more abuse complaints. 5. Use addresses **only for the purposes disclosed at signup**. A secondary purpose created later (for example, a new newsletter with different content) requires a separate opt-in, and it must **not** be opted into by default. Judge what counts as a secondary purpose from the recipient's point of view. Some jurisdictions legally require this separate permission. 6. Consider showing an example of the email the subscriber will receive, so that they recognize it when it arrives. 7. When the address is collected, consider keeping evidence of consent: the **IP address, the date of collection, and the website or event where it was collected**, and, in large companies, which department collected the address and how (p.19). This evidence should be easy to retrieve if you need to prove consent to an individual, an ISP, a blocklist (RBL) operator or a regulator, and the laws on storing personal data must be taken into account. ### Level 2: Adding the notification message Send the notification or welcome message immediately, or within **24 hours** of the submission (p.19). It should: - include the address submitted and any other information the user provided; - be treated as a bounce if it bounces, with the address removed from the list; - state the frequency and type of content; - use the **same From address as future messages**, so recipients can add it to their address book; - if possible, be sent from IP addresses **kept separate from the regular bulk sending IP addresses**. ### Level 3: Confirmed opt-in This is the highest standard (p.19). It stops typos and maliciously submitted addresses from entering ongoing mailings. In addition: - when the user submits the form, tell them to check their email and act on the confirmation message; - keep the confirmation email **simple and free of advertising**, so that it is not filtered as abuse; - when a user changes their email address, confirm the new address in the same way. See [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods). ### List bombing In a list bombing attack, a script submits one victim's address to hundreds of signup forms, so confirmation and welcome messages flood the victim's mailbox until it stops working (§4.2, pp.19–20). Each form contributes little, so a single site rarely notices it is part of an attack. M3AAWG recommends layering several defenses: 1. A CAPTCHA the form cannot be submitted without. 2. Restrict which systems can submit to your backend, so the form cannot be mapped and automated. 3. Rate limits on repeated submissions from one IP address. 4. If you host many forms, watch for the same address being added to several of them. 5. For a service limited to one region, show the form only to IP addresses from that region. 6. A hidden field that only a bot would fill in; discard submissions that fill it. 7. A page-load timestamp or key; discard submissions that arrive too fast or without it. 8. Unusual field names, which scripts looking for common names miss. 9. Move a form that has been attacked to a new URL. 10. Consider adding the Form-Sub header proposed in an Internet-Draft (https://datatracker.ietf.org/doc/html/draft-levine-mailbomb-header-02) for receiving mailbox providers. See [Subscription Bombing](https://emailmarketing.net/learn/esp-operations/subscription-bombing). ### Implied (implicit) consent Implied consent is inferred from an interaction. The classic case is an email address collected at the point of sale without any notice that the address will be added to marketing lists. It is **not considered a best practice** and should be avoided where possible: it does not work for every sender, and it is likely to cause abuse complaints (§4.3, p.20). If you use it, watch complaints, opens and clicks for that segment closely. It is better to add a distinct **unchecked** box for explicit consent when you collect the address, or to run a **permission pass (a confirmation campaign)** before sending more marketing mail. Whatever method you use, keep a record for each address of how it got on the list: the sign-up IP address, the time, a screenshot of the disclosure wording, and the privacy policies in force at the time of subscription. Data retention laws vary between jurisdictions. ### Email append (epending) Matching a customer record to an email address that the customer never provided for that purpose is a **direct violation of core M3AAWG values** (§4.4, pp.20–21). It is abusive, it generates complaints, and it creates legal risk under privacy and anti-spam law. See the M3AAWG Position on Email Appending (updated 2019: https://www.m3aawg.org/sites/default/files/doc_files/m3aawg_apending_position_update-2019-01.pdf). ### Cold email Version 4.0 summarizes M3AAWG's position on cold email in one paragraph (§4.5, p.21). It defines cold email as unsolicited mail from an otherwise legitimate business trying to start a relationship with someone who has no prior relationship with it, and it says M3AAWG views such email as abusive. For the full position, it refers to the separate M3AAWG Position on Cold Email: see [M3AAWG Position on Cold Email](https://emailmarketing.net/learn/reference/cold-email-position). ## Unsubscribe requirements The list below follows the numbering in §4.6 (pp.21–22). 1. Make the unsubscribe process as clear and easy as reasonably possible. 2. Process **all** unsubscribe requests **without delay**, both to comply with the law and out of respect for the recipient. 3. Set expectations: state how long processing takes and which lists or types of communication are affected. The longer removal takes, the more likely it is that further email is judged abusive and reported. 4. Be able to process unsubscribe requests sent by email to the **From and Reply-To** addresses of your outbound mail. 5. The unsubscribe link should contain everything needed to complete the unsubscribe: the subscriber ID, which list (if there are several), and authentication tokens for each user if they are needed to stop third parties from unsubscribing people maliciously. 6. Use the **List-Unsubscribe header** (RFC 2369) in every message: - **mailto** version: an encoded address for each recipient. Any message received at that address can be treated as an unsubscribe for that recipient, even if it was not sent from the subscribed address. - **URL** version: a one-click link to the platform's unsubscribe function (it may be the same link as in the body). Encode any personal information in the link, to prevent misuse and make it as easy as possible to use. - **One-click unsubscribe**: to meet the updated requirements of major mailbox providers, senders "must implement one-click unsubscribe (List-Unsubscribe-Post)" as RFC 8058 describes. Version 3.0 did not require it. See [List-Unsubscribe](https://emailmarketing.net/learn/list-management/list-unsubscribe). 7. Decide on a policy for unsubscribes when no preference center can be shown: does the unsubscribe apply to all mail or to one list? The best practice default is to **remove the recipient from all mail**. 8. In a preference center with several options, the unsubscribe option should be **checked by default** for the lists the user currently subscribes to. 9. Use readable **text** descriptions, not images, next to one-click unsubscribe links. 10. Consider ways to unsubscribe offline (a postal address, a phone number), using local or toll-free numbers so that the cost to the individual is low or nothing. 11. Offers of new subscriptions shown to returning subscribers should be **unchecked** by default. 12. Subscribers **must be able to unsubscribe without logging in** or passing any security challenge. A preference center protected by a login is fine as an extra, but unsubscribing from a specific list must work outside any secure area. 13. **Strongly recommended:** include the recipient's subscribed email address in the message body. This is especially useful when several addresses forward to one mailbox. Take the laws on personal data into account when you do. 14. The subscriber's address "should not be visible within the unsubscribe link itself." Use an encoded reference instead of the address in clear text. ## Vetting of clients (ESPs) > ESPs that send large volumes of email on behalf of their clients are at the mercy of their worst clients' worst practices. - All ESPs **must** have a **pre-send vetting** process to identify malicious senders before they send mail (§5, p.22). - All ESPs **must** have a **post-send vetting** process, which monitors clients after they begin sending. - Good vetting separates real spammers from customers who only need guidance on list hygiene. Vetting is essential to reputation and to reducing abuse. - Detailed guide: M3AAWG Vetting Best Common Practices (https://www.m3aawg.org/sites/default/files/doc_files/MAAWG_Vetting_BCP_2011-11.pdf). See [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting). ## Glossary highlights (Appendix C, derived from RFC 5598) | Term | Definition (shortened) | |---|---| | Dedicated IP | A static IP address that sends only for one sender, company or brand, which is responsible for all its content; its rDNS usually identifies the brand. | | Shared IP | An IP address used by many senders, brands or ESP customers, usually at the same time; identified with the ESP that owns it. | | Dirty mailing list | A list with addresses from poor acquisition or opt-in practices, or not kept up to date (poor handling of hard bounces or unsubscribes, or not mailed for a year or more), or both. | | FBL | A mailbox provider's system that gives qualified senders copies of messages their users reported as spam, so the senders can fix the causes. | | Hard bounce | A permanent failure: the address or domain no longer exists, or never existed. | | Soft bounce | A temporary failure, caused for example by a full mailbox, a failed connection, a technical fault at the provider, or the provider **throttling the connecting IP address to slow delivery**. | | Transactional messaging | Confirms a transaction or gives an individual status update (a bank alert, a password change), as opposed to bulk or marketing messaging. | | Confirmation message | Part of confirmed opt-in: the new subscriber must click a link or reply, and is not added to the list without that action. | | Confirmed opt-in | Also called double opt-in: the sender verifies that the owner of the submitted address asked to join, so nobody is subscribed without consent. | | Subscription message or welcome email | Sent after signup, usually describing the content and frequency of the mailings; it should include an unsubscribe link. | ## Related articles - [M3AAWG Email Authentication BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-email-authentication-bcp) - [M3AAWG Sending Domains BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-sending-domains) - [M3AAWG document index](https://emailmarketing.net/learn/industry-best-practices/m3aawg-document-index), which lists other M3AAWG documents for senders and ESPs, and FBL resources - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability) - [Two Worlds of Email Deliverability](https://emailmarketing.net/learn/strategy/two-worlds-of-email-deliverability) - [IP Warm-Up Recommendations](https://emailmarketing.net/learn/ip-management/ip-warm-up) - [Advanced IP Segmentation and Allocation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation) - [Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices) # M3AAWG Sending Domains Best Common Practices > Industry-consensus rules for choosing, segmenting, authenticating, delegating, and migrating the domains used to send bulk and transactional email. Source: emailmarketing.net — https://emailmarketing.net/learn/industry-best-practices/m3aawg-sending-domains When you prepare a sending program, you have to decide which domains the mail will use, how to split traffic between them, and how to publish their DNS records. If you run an email service provider (ESP), you go through this checklist for every new client. The Messaging, Malware and Mobile Anti-Abuse Working Group (M3AAWG) Sending Domains Best Common Practices (BCP) records the consensus of senders, receivers and anti-spam organizations on these domain questions. For the IP side, see [IP management](https://emailmarketing.net/learn/ip-management/basic-ip-allocation). For guidance drawn from vendor guides, see [Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices). This page covers the industry-standard positions and the mechanics of DNS delegation. **Main recommendation:** when choosing a sending domain, select a subdomain of the sender's organizational domain **in almost all cases**. ## Choosing the domain: brand domain or subdomains, or a cousin domain The choice comes down to two options: | Option | M3AAWG position | |---|---| | Main brand domain, or subdomains of that zone | **Recommended**. This is the main recommendation of the document | | A newly acquired domain related to the brand (a "cousin domain") | **Strongly discouraged** | A **cousin domain** resembles the primary brand domain but has no direct DNS link with it. It may use a different registrar, a different DNS host and different WHOIS details. Cousin domains, especially when used for one-off mailings, **look like phishing campaigns to users and to anti-abuse systems alike**. They lead to more spam complaints, blocking and filtering. They also expose the brand to security issues, and confuse users, employees and security tools. [Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices) covers monitoring for cousin domains, that is, watching for other people's abuse of look-alike domains. Using a subdomain of the main domain instead: - makes the sender easier to identify, and is much less confusing to recipients and receiving systems; - shows that traffic is actively segmented and its quality managed, with a clear link between the brand and the reputation of each domain; - lets the sending program benefit from the **existing reputation** of the organizational domain (a brand-new cousin domain starts from zero). Version 4.0 of the [M3AAWG Sender Best Common Practices](https://www.m3aawg.org/senderbcp) (August 2026) carries this rule over to ESP customers. It strongly recommends that an ESP have each customer send from the customer's own domain or one of its subdomains. The ESP's domain is a fallback for small senders who cannot change their DNS, and even then the ESP should give each brand its own subdomain of the shared domain. A single subdomain shared by all customers, or by a whole pool, is not recommended: everyone on it shares one reputation, and abuse becomes hard to trace. ## Segmentation strategy Receivers ask for, and may **require**, separation of different types of traffic: bulk marketing, one-to-one prospecting, transactional mail (welcome messages, order confirmations), monthly statements, and so on. Best practice also separates traffic by business area, such as by country or by department, for visibility, separate reputations and easier troubleshooting. Each separation needs a **distinct subdomain**, and in some cases distinct IP addresses too. This is the domain-level counterpart of [Advanced IP Segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation). **Constraint:** every segment must be able to build and keep its own reputation, which requires **enough traffic volume, at a fairly consistent level**. Gaps in sending, or large swings in volume, make it harder both to build reputation and to keep it. Do not segment more finely than your volume supports. ## Selecting subdomain names - Assign a **separate subdomain to each distinct sending purpose**. Keep the main domain for corporate mail (between employees, and one-to-one external mail). - The subdomain name should be **relevant to the type of traffic**. Filtering may include human review, so "words matter": | Traffic type | Example subdomain | |---|---| | Marketing | `offers.mybrand.com` | | Transactional | `info.mybrand.com` | - Sending from a subdomain does **not** require the visible From: to use that subdomain. Alignment on the organizational domain is enough for authentication and abuse prevention, although some use cases do justify a matching visible From:. - The sender must **have access to the inbox given in the visible From:** (see the guidance against `no-reply` addresses in [Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices)). - Distinct subdomains are best practice, especially for bulk mail. For smaller volumes, using different **local parts** of the sender address on one domain is acceptable. Decide based on the recipients, their geographic spread, and what abuse prevention needs. ## Domain consistency across the message Use the same organizational domain throughout the message: in the **Return-Path** (RFC5321.MailFrom), the **visible From:** (RFC5322.From), and the **DKIM `d=`** signing domain. Aligning the **Reply-To** with the organizational domain is good practice but not required. Two patterns are acceptable: | Header field | Same-subdomain pattern | Org-domain-aligned pattern | |---|---|---| | Return-Path | `bounce@news.mybrand.com` | `bounce@bounce.mybrand.com` | | visible From: | `great@news.mybrand.com` | `service@mybrand.com` | | DKIM `d=` | `news.mybrand.com` | `mybrand.com` | ### Alignment The document uses **relaxed alignment** throughout ([RFC 7489 §3.1](https://emailmarketing.net/learn/authentication/dmarc)). Two domains are in relaxed alignment when their organizational domains match. | visible From: | Return-Path | DKIM `d=` | Alignment | |---|---|---|---| | `great@news.mybrand.com` | `bounce@bounce.news.mybrand.com` | `news.mybrand.com` | Relaxed | | `service@info.mybrand.com` | `bounce@bounce.mybrand.com` | `news.mybrand.com` | Relaxed | | `great@news.mybrand.com` | `bounce@news.mybrand.com` | `news.mybrand.com` | Strict | | `great@mybrand.com` | `bounce@brandofmine.com` | `brandofmine.com` | None | ## Domain reputation and ramp-up - Reputation builds quickly from sending activity on a subdomain, and filters use it together with content and IP reputation. - **An unknown domain is treated almost like a bad one.** A domain with no history gets extra scrutiny and caution. A domain with history lets the mailbox provider judge the quality of its behavior over time. A subdomain used properly benefits from the reputation of the organizational domain. - Reputation attaches to the **combination** of elements, not to the domain alone. Switching the sending domain (from the organizational domain to a subdomain, or the reverse), switching sending IP addresses, or changing headers can each require a **ramp-up for the new combination**. This matters when you restructure an existing program, not only when you launch one. There are two phases: **warm-up**, where the domain goes from unknown to noticed, and then **ramp-up**, where volume gradually reaches the planned long-term level. Strategies vary by provider, but some rules are common: - Stay consistent. Content characteristics and volumes should not change abruptly. - Check SMTP logs to find and deal with delivery issues while sending is under way. - Register for data programs where they exist (Google [Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools); Netease and Chengxin for Chinese providers). - Start low and go slowly. Plan for **~6 weeks of warm-up as an average** (daily volume schedules are in [Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices) and [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up)). - Monitor placement and open rates **for each mailbox provider**. ## Setup checklist ### Authentication Each protocol stores its data in DNS TXT records that the receiver checks. The protocol references cover the full mechanics. The points specific to sending domains are: | Protocol | Where the record lives | Key points | |---|---|---| | [SPF](https://emailmarketing.net/learn/authentication/spf) | DNS zone of the **Return-Path domain** | For example, TXT on `news.mybrand.com`: `v=spf1 include:_spf.example-esp.com ~all` | | [DKIM](https://emailmarketing.net/learn/authentication/dkim) | Zone of the signing domain, at `._domainkey.` | Keys of at least **1024 bits**. **Each sending subdomain should use a different selector**: separate selectors limit the damage from weak, stolen or old keys, and let different senders hold their own private keys. Rotate keys as the M3AAWG DKIM Key Rotation BCP describes | | [DMARC](https://emailmarketing.net/learn/authentication/dmarc) | TXT at `_dmarc.` of the **visible From: domain** | The goal is a policy on the **organizational domain**. A record on the subdomain is acceptable as an interim step. The From: domain must align with a valid DKIM `d=` **or** with a Return-Path domain that passes SPF | ### MX, role addresses, web presence - Every domain used in the **Return-Path, visible From:, Sender: and Reply-To:** should have a **proper MX record that points to a working mail server**. - **`abuse@` and `postmaster@` must exist, be read, and never bounce.** - Top-level domains or subdomains used in the visible From: should **resolve or redirect to a live, current web page** related to the sender. Users who want to check that a message is legitimate try the sending domain's website first. ## DNS setup: three delegation models This is the core of setting up customer domains at an ESP. There are three options, in increasing order of ESP control: ### 1. Direct setup The brand publishes the records itself, in its own zone. This is the only option when no third party (such as an ESP) is involved. A known limitation: **outdated registrar interfaces may be unable to publish DKIM records with stronger keys or with certain characters**. | Host | Type | Value | |---|---|---| | `news.mybrand.com.` | TXT | `v=spf1 include:spf.example-esp.com ~all` | | `news.mybrand.com.` | MX | `0 bounce.example-esp.com` | | `t.news.mybrand.com.` | A | `192.0.2.124` (tracking host) | | `myselec._domainkey.news.mybrand.com.` | TXT | `k=rsa; p=MIGfMA0GCSq…` | | `_dmarc.mybrand.com` | TXT | `v=DMARC1; p=reject; rua=mailto:dmarc-rua@mybrand.com` | ### 2. CNAME delegation — preferred by ESPs The brand publishes CNAME records that point into the ESP's zone, so the ESP can **update record values without involving the brand**. For example, it can rotate the DKIM public key without asking the customer to change their zone. This overcomes the limitations of direct setup while the brand keeps visibility of its zone. | Host | Type | Value | |---|---|---| | `news.mybrand.com.` | TXT | `v=spf1 include:_spf.example-esp.com ~all` | | `news.mybrand.com.` | MX | `0 bounce.example-esp.com` | | `t.news.mybrand.com.` | CNAME | `tracking.example-esp.com` (tracking host) | | `myselec._domainkey.news.mybrand.com.` | CNAME | `myselec.news-mybrand.com.dkim.example-esp.com` | | `_dmarc.news.mybrand.com` | CNAME | `dmarc.news-mybrand.com.example-esp.com` | SPF and MX records cannot be CNAMEs at a node that holds other data, so they stay direct even in this model. CNAME chains also count against [SPF's DNS-lookup limits](https://emailmarketing.net/learn/authentication/spf). ### 3. Nameserver (NS) delegation The brand delegates the subdomain, and everything under it, to the ESP's nameservers: | Host | Type | Value | |---|---|---| | `news.mybrand.com.` | NS | `ns.example-esp.com` | The benefit: the ESP handles the entire DNS setup and guarantees that the authentication configuration is correct. The drawback: the brand **loses full visibility of the zone**. It gives up control, which requires **strong trust in the ESP**. ## Migration: switching ESPs or changing the sending domain Consistency is key to domain reputation, so **keep the chosen domain over time**. Reputation builds gradually, and consistent sending patterns over time matter most. When you migrate (to a new ESP, or to a new domain because of a rename or a policy change): - Apply these practices to an existing, effective program **gradually and with care**, and watch deliverability metrics through every configuration change. - **Overlap period**: both ESPs can send at the same time if you add the new vendor's IP addresses to the SPF record and publish its DKIM selector. - **The MX record can point to only one vendor.** During the overlap, complaints and asynchronous bounces routed through MX may not reach the other vendor. Plan the migration around this loss of data. - Complete the switch **only when sending cadence and volume with the new vendor are consistent and sustained at the desired long-term volume**. ## Related M3AAWG documents This BCP refers to the [Senders BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp) (v3.0, Feb 2015; since replaced by Version 4.0, August 2026, which points back to this BCP for domain usage), "Trust in Email Begins with Authentication" (Feb 2015, summarized in [Email Authentication BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-email-authentication-bcp)), "Best Practices for Managing SPF Records" (Aug 2017), and "DKIM Key Rotation BCP" (Mar 2019). See the [M3AAWG Document Index](https://emailmarketing.net/learn/industry-best-practices/m3aawg-document-index). ## Related articles - [Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices), including the four domains in a message and domain warm-up schedules - [Advanced IP Segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation) - [SPF](https://emailmarketing.net/learn/authentication/spf), [DKIM](https://emailmarketing.net/learn/authentication/dkim) and [DMARC](https://emailmarketing.net/learn/authentication/dmarc) # Word to the Wise: Email Best Practices > Digest of the Word to the Wise "Email Best Practices" white paper (Laura Atkins, 2012) — delivery-focused best and worst practices for bulk senders. Source: emailmarketing.net — https://emailmarketing.net/learn/industry-best-practices/wttw-email-best-practices If you send bulk email, the practices below are the ones that decide whether your mail consistently reaches the inbox, and the worst practices are the ones that most often keep it out. They come from the Word to the Wise (WttW) white paper *Email Best Practices* (Laura Atkins, 2012), which deals with best practices for **delivery**, as opposed to best practices for communication strategy. WttW notes that the paper was first published in 2012 and that filtering has changed since then. Many of its recommendations still apply, and current information is on the [Word to the Wise blog](https://wordtothewise.com/blog) (see [Deliverability Community Resources](https://emailmarketing.net/learn/reference/deliverability-community-resources)). ## The Golden Rule > Send mail that recipients **want and expect**. In practice, this means that **all bulk email should be opt-in**. You can still acquire customers by email, but it is more complicated than buying a list of addresses and mailing it. [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability) and [Two Worlds of Email Deliverability](https://emailmarketing.net/learn/strategy/two-worlds-of-email-deliverability) develop the same principle. A key point: spammers invested heavily in getting mail delivered despite poor reputations, so ISPs and filtering companies built filters that **look at the whole of a sender's practice**. Bad practices in one stream can affect all of a sender's mail, even when the sender tries to keep good mail separate from bad. ## General best practices ### Only send opt-in mail Opt-in means that the recipient gives an email address to the sender **so that they can receive marketing mail from that sender**. Common gray areas, which are not opt-in when the sender decides for the recipient: - Giving an email address during a purchase (is that consent to marketing?) - Giving an address to one division of a company (is that consent for the other divisions?) This does not prohibit sending updates to customers or cross-marketing, but the sender must think about how to make sure the customer is **expecting** the mail. ### Comply with all local laws In the United States, CAN-SPAM requires all email to meet these criteria: | # | CAN-SPAM requirement | |---|---| | 1 | The sender must provide accurate routing information about the emails. | | 2 | Advertising emails must be clearly labeled as such. | | 3 | Recipients must be allowed to opt out. Opt-out mechanisms must be electronic and require only the recipient's email address and their choice to opt out. No password or other information may be required to process the opt-out. | | 4 | All emails must contain the physical address of the sender. | Important details: - **CAN-SPAM does not require permission.** US law does not make permission a requirement. - Other jurisdictions require permission to send marketing or commercial email, including the **EU (GDPR)** and **Canada (CASL)**. Sending without permission there can create legal liability. - In some jurisdictions, **permission cannot be shared or sold**, so even buying "opt-in" lists is illegal. - Splitting purchased lists by country to get around opt-in laws assumes that the seller compiled the data correctly, which is a bad assumption. What actually protects the sender from breaking opt-in laws by accident is getting the recipient's permission before sending. ### Practice good data hygiene - Research indicates that about **30% of email addresses are abandoned by their users every year**. - Abandoned addresses are dead weight: they drag down statistics and make it harder to measure how well the program works. - Senders should **regularly remove addresses that do not respond from their lists**. The exact rules for removal depend on the sender, the products and the sales cycle. ## Worst practices ### Sending mail without explicit permission This is the most widespread bad practice. A common case: companies add the addresses of buyers to marketing lists automatically, without asking. This is a very common source of delivery problems, especially for one-time purchases. For example, a buyer who bought a **gift** for someone else has no interest in future mail. They may report the sender as a spammer at a major ISP and never buy from the vendor again. ### Buying lists - Thousands of vendors sell "100% permission based opt-in lists", and many of these lists are nothing of the sort: they are harvested, compiled or stolen. - Because purchased lists have a history of causing delivery problems and blocklistings, **many ESPs prohibit purchased lists** outright. - Purchased lists often contain **[spam traps](https://emailmarketing.net/learn/reference/spam-traps)** and large numbers of addresses that cannot receive mail, which lowers the sender's reputation. - They are also poor tools for acquiring customers. The lists are resold again and again, the recipients are flooded with mail they did not ask for and ignore offers, and delivery problems can spread to the **entire email program**, not just the acquisition stream. ### Changing domains and from: addresses Recognition of the sender drives engagement and delivery, at two levels: - **ISPs** recognize senders by the combination of **IP address and sending domains**. - **Individual users** recognize email by what appears in their inbox (the from address). **Plan** any changes to domains, IP addresses and from addresses, to reduce the risk to delivery. (See [IP Warm-Up Recommendations](https://emailmarketing.net/learn/ip-management/ip-warm-up) for changes of IP address.) ### Affiliate programs - Careless affiliates can cause major delivery problems even for a sender's opt-in mail. Some affiliates hire **sub-affiliates** who spam on the brand's behalf without its knowledge. - Financial incentives attract unscrupulous mailers. Too much spam advertising a particular product or service can **damage the reputation of all mail for that product or service**, including legitimate opt-in mail, receipts and transactional mail. ## Conclusion: reputation tracks across streams - The best way to reach the inbox is to send mail that recipients want and expect, and to ask for permission first. - Make clear what recipients are signing up for, and **keep those promises**. Do not send daily email to someone who signed up for a monthly newsletter, and do not share lists with other vendors without explicit permission. - **Reputation can follow a sender across several mail streams.** Poor practices in acquisition marketing can affect retention and transactional email. Even when senders think their reputation cannot be tracked and applied across streams, it often is. (This is the argument for keeping streams separate, as described in [Advanced IP Segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation), but remember that separation does not make bad practice acceptable.) # Advanced IP Segmentation and Allocation > Segmenting mail streams into reputation realms — isolating transactional from marketing mail, grouping by quality, and sizing IP counts by volume. Source: emailmarketing.net — https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation If you send more than one kind of mail, the way you divide it across IP addresses decides whether trouble with one kind can damage the rest. Two questions shape the plan: 1. Which mail needs a **reputation of its own**, and so its own IP addresses? 2. How much **volume** does each group send? When all of your mail is one kind and nothing needs to be kept apart, [Basic IP Allocation](https://emailmarketing.net/learn/ip-management/basic-ip-allocation) is enough. ## Assumptions The advice here aims to deliver mail that recipients **want** and **expect**. Applied to mail that recipients do not want or expect, it can lower delivery instead, depending on the circumstances. ## The four steps 1. Give **transactional mail an IP address of its own**, apart from marketing mail. 2. List the **Mail Streams** you send. 3. Combine or divide those streams into **Reputation Realms**. 4. Set the **number of IP addresses** for each realm from its volume. ## Two terms - **Mail Stream**: a category of mail that differs from your other mail in both its content and its recipient list. An email service provider (ESP) has one stream per customer. A company whose business units send unrelated mail to unrelated lists has one stream per unit. Most senders have a single stream, such as their newsletter. - **Reputation Realm**: a set of IP addresses, domain names or both whose reputation is kept apart from every other realm. Realms exist so that mail in one realm cannot get mail in another realm blocked. ## Step 1: Isolate transactional mail Transactional mail is any message that a recipient triggers through their own action, such as an order confirmation or a password reset. Recipients are waiting for these messages, so they are the best-delivered mail you send. On an IP address of its own, transactional mail is protected from problems that your other mail causes. A dedicated address needs enough volume to sustain it. GreenArrow, a mail server vendor, puts the minimum at **1,000 messages per day**. Below that, many senders route transactional mail through a well-run shared IP pool instead. The [dedicated-IP volume floors table](https://emailmarketing.net/learn/operations/sending-infrastructure-practices#dedicated-ip-volume-floors-canonical) compares this floor with the general floor for any address and with the minimums ESPs set. ## Step 2: Identify your Mail Streams Usually there is only one. An ESP should treat each customer as a separate stream. To decide whether two kinds of mail are really separate streams, picture how an outsider would see them. A spam filter, or a researcher studying your mail, should find a clear difference. If they would conclude that it is the same mail in a different wrapper, it is one stream. ## Step 3: Form Reputation Realms No rule settles this step. It takes judgment. ### What a realm isolates A realm works like a firewall. When one group of mail runs into trouble, the other groups keep their own reputation and their mail keeps arriving. Separate IP addresses are the usual way to build that firewall. Receivers attach reputation to more than the sending address, though. For stronger separation, also give each realm its own value for the items below, which run from most to least important: 1. The domain in your open and click tracking links 2. The IP address that the tracking domain points to 3. The Return-Path domain 4. The domain in the reverse DNS names of your sending IP addresses. Change this one only when you need the strongest possible separation. Many different domains in reverse DNS resemble "domain snowshoeing", a spammer technique, and mail that merely looks like spam can be blocked. Changing items 1 and 2 alone makes the firewall much stronger. ### Separate mail by quality Many senders build a "high quality" realm and a "low quality" realm, or several realms in tiers of quality. Quality here combines: - **Permission**: stricter practices, such as confirmed opt-in, rank higher. - **Engagement**: more inbox opens, and more subscribers who engaged recently, rank higher. - **Complaints**: a lower complaint rate ranks higher. - **Content**: subjects common in spam, such as weight loss, stock tips and online pharmacies, rank lower. Keeping mail of similar quality together stops weaker mail from getting stronger mail blocked. Depending on the circumstances, more of your mail can then reach the inbox than if it all shared one realm. For an ESP, it means customers with poor practices cannot get customers with good practices blocked. The M3AAWG Sender Best Common Practices (Version 4.0, August 2026) make the same point for shared IP addresses: senders who share a pool should have similar content, complaint rates and bounce rates. ### Mix mail of different quality in one realm The opposite approach puts a large volume of strong mail and a smaller volume of weaker mail in the same realm. When the proportions and the quality are right, the weaker mail is delivered better because of the stronger mail, and the stronger mail loses nothing. When the weaker mail is too poor, or makes up too large a share, delivery of the stronger mail drops. This approach works only with close monitoring and careful planning. ### Divide one Mail Stream by quality You can also split a single stream, with its better segments in one realm and its weaker segments in another. Common ways to split it: - By where each subscriber's address was collected - By recent activity, with people who recently opened, clicked or subscribed in the high-quality group ### Use several realms for separation alone Sometimes you cannot tell which streams are strong and which are weak. You can still spread them across several realms, so that your whole reputation does not rest on a single realm. If one stream then goes badly wrong, the damage stays inside its own realm. ## Step 4: Size each realm by volume GreenArrow sizes the number of IP addresses for a realm from its daily volume: | Daily message volume | IP addresses | |---|---| | Under 40,000 | One | | From 40,000 up to 200,000 | Two | | Over 200,000 | Enough that each address sends 100,000 to 1,000,000 messages a day | If you split a Mail Stream across several realms, the realms together must not use more IP addresses than the table gives for the stream as a whole. ### Avoid too many addresses Snowshoeing is a spam technique that spreads volume over many IP addresses, so that each address stays too small to notice. Mailbox providers look for it, and they penalize senders who use many addresses for the volume they send. If you have been spreading mail this way, and your complaint rate is very high or your engagement is low, read [Two Worlds of Email Deliverability](https://emailmarketing.net/learn/strategy/two-worlds-of-email-deliverability) before you move your mail onto fewer addresses. ### Keep enough volume in each realm Each Reputation Realm should send at least **40,000 messages a week**. Below that, mailbox providers see too little of its mail to draw statistically significant conclusions about engagement and complaints. ## Related articles - [Basic IP Allocation](https://emailmarketing.net/learn/ip-management/basic-ip-allocation) - [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up) - [Two Worlds of Email Deliverability](https://emailmarketing.net/learn/strategy/two-worlds-of-email-deliverability) # Basic IP Allocation > How many sending IP addresses to use, based on daily volume, for a single homogeneous mail stream. Source: emailmarketing.net — https://emailmarketing.net/learn/ip-management/basic-ip-allocation When you set up a new mail server, you soon have to decide how many IP addresses to send from. The answer depends on how much mail you send each day, and using more addresses than your volume supports can harm your reputation. ## Who this guidance fits The figures below assume that all of your mail is **one kind**, so you have no reason to keep separate reputations on separate IP addresses. If you do need that separation, start with [Advanced IP Segmentation and Allocation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation). They also assume that your goal is to deliver mail that recipients **want** and **expect**. For mail that recipients do not want or expect, following this guidance can lower delivery instead of raising it, depending on the circumstances. ## IP addresses by daily volume GreenArrow, a mail server vendor, sizes the number of sending IP addresses like this: | Daily message volume | IP addresses | |---|---| | Under 40,000 | One | | From 40,000 up to 200,000 | Two | | Over 200,000 | Enough that each address sends 100,000 to 1,000,000 messages a day | ## Too many addresses look like snowshoeing Spammers use a technique called **snowshoeing**. They spread their volume thinly over a large number of IP addresses, so that no single address sends enough mail to draw attention. Mailbox providers know the pattern. When a sender uses many addresses for the amount of mail it sends, they penalize that sender. If you have spread your mail over many addresses, and your complaint rate is very high or your engagement is low, read [Two Worlds of Email Deliverability](https://emailmarketing.net/learn/strategy/two-worlds-of-email-deliverability) before you move your mail onto fewer addresses. ## Too little mail on each address Keep every IP address above **40,000 messages a week**. Mailbox providers judge an address by the engagement and complaints its mail produces. Below that volume, they see too little mail for those numbers to be statistically significant. That figure is the general floor for any address. A dedicated IP address for transactional mail can be justified at a lower volume, and each email service provider (ESP) sets its own minimum. The [dedicated-IP volume floors table](https://emailmarketing.net/learn/operations/sending-infrastructure-practices#dedicated-ip-volume-floors-canonical) compares these figures. ## Related articles - [Advanced IP Segmentation and Allocation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation) - [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up) # IP Warm-Up Recommendations > Why new sending IPs must be warmed up, what to expect, and a concrete ramp-up schedule (volume, pacing, audience selection). Source: emailmarketing.net — https://emailmarketing.net/learn/ip-management/ip-warm-up ## What these recommendations assume The schedule below is built for senders whose recipients **want** and **expect** their mail. For mail that recipients did not ask for or do not recognize, applying it can leave your deliverability worse off than a different approach would. [Two Worlds of Email Deliverability](https://emailmarketing.net/learn/strategy/two-worlds-of-email-deliverability) explains the reason. ## Why a warm-up is required A mailbox provider has no history for an IP address that has never sent mail, so it has no reason to trust it. Warming up means raising volume step by step until providers have seen enough good mail from the address to give it a reputation: the credibility that lets later campaigns through. The starting point is worse than a blank slate. GreenArrow reports that 99 times out of 100, a newly active IP address belongs to a spammer who was blocked elsewhere and has moved on. Providers therefore treat a new address with deep suspicion, and your reputation begins slightly below neutral. Providers also cap how much mail they will accept from a single IP address. The way through is to begin with small volumes, prove good behaviour at that level, and only then send more. ## What to expect Early campaigns will not show your best results. GreenArrow observes that in roughly 75% of cases, the first campaign sent from a new IP address is placed in the Gmail Spam folder. Spam-folder placement in the first days is normal and no cause for alarm. Providers learn from how recipients respond, so good mail earns better placement as the warm-up continues. ## What to do ### 1. Decide how many IP addresses to use and how to segment them [Basic IP Allocation](https://emailmarketing.net/learn/ip-management/basic-ip-allocation) and [Advanced IP Segmentation and Allocation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation) cover how many IP addresses to use and how to divide your mail between them. Give transactional email a dedicated IP address instead of sharing one with marketing email. When the warm-up involves several IP addresses, bring them online in stages: begin with **three**, and add one more every **three days**. A large group of addresses that all start sending on the same day is a pattern providers treat as highly suspicious. ### 2. Increase volume, but start with your best data - Aim for roughly **5,000 messages a day from each IP address to each mailbox provider** at first. Because the biggest provider usually holds about 25% of a list, that comes to about **20,000 messages per day per IP address** in total. - Raise the volume by **50% each week**, provided that: - providers are accepting the mail without high rates of deferral or failure, and - your sending has been steady. A week with no sending does not count toward the warm-up. - Send first to the recipients most likely to respond: those who **recently clicked or opened** one of your emails. Providers distrust new IP addresses by default, and your best content going to your most engaged recipients is the strongest answer to that distrust. - When those recent clickers and openers cannot fill 20,000 messages a day (or 5,000 a day for each provider) on every new IP address, **use fewer IP addresses**, so that each one still carries a healthy volume. > **How these figures compare with other sources.** The specific figures above (a start of ≈5,000 a day for each provider, an increase of +50% a week, three IP addresses at first, one more every three days, and ≈75% of first campaigns in Gmail's Spam folder) come from a single vendor, GreenArrow. They also predate the bulk-sender requirements of [Gmail](https://emailmarketing.net/learn/providers/gmail-sender-requirements) and [Yahoo](https://emailmarketing.net/learn/providers/yahoo-sender-requirements) that took effect in February 2024. The starting point of 5,000 a day for each provider sits exactly at Gmail's "bulk sender" threshold of 5,000-messages-per-day, so a warm-up at that volume must meet the requirements for authentication (SPF, DKIM, DMARC), one-click list-unsubscribe and a spam rate below the <0.3% ceiling from the first day. Other sources agree on the general shape of a warm-up but give different figures: > - **AWS SES** advises building a positive reputation over roughly **two to six weeks for each provider**, sending to your most engaged users first, and settling at around **~1,000 messages a day for each provider** to maintain your reputation. Its automatic warm-up ramps up over **45 days**, whatever the volume. ([docs](https://docs.aws.amazon.com/ses/latest/dg/dedicated-ip-warming.html)) > - **Twilio SendGrid** recommends starting far lower, at around **~50 messages on the first day**, and roughly **doubling the volume each sending day** until you reach your target, which typically takes **4–6 weeks**. ([docs](https://www.twilio.com/docs/sendgrid/concepts/reputation/warm-up-ip-addresses)) > > Treat the GreenArrow figures as one reasonable schedule, at the more aggressive end, not as a universal constant. Check the starting volume and the weekly increase against your ESP's current guidance and against live [inbox placement monitoring](#4-monitor-inbox-placement), and slow down if you see deferrals or placement in the Spam folder. ### 3. Throttle the speed of your sending Control how fast mail enters your MTA. While warming up, let each day's sending take **at least four hours** to go out, and **eight hours** where you can, although not every business can wait that long. Most sending platforms and MTAs offer a campaign speed or injection rate setting for this (for example, sending 20,000 messages at 5,000 an hour spreads delivery over four hours). Raise the speed as the warm-up progresses. ### 4. Monitor inbox placement Use an inbox placement or seed list monitoring tool for every campaign during the warm-up. It shows whether mail reaches the Inbox or the Spam folder at each provider, which tells you when to increase volume. ## Related articles - [Basic IP Allocation](https://emailmarketing.net/learn/ip-management/basic-ip-allocation) - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability) - [Advanced IP Segmentation and Allocation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation) # Address Acquisition Integrity: Legitimate Collection vs. Harvesting > The acquisition-integrity angle on list building — Spamhaus's confirmed-opt-in baseline, the acquisition metadata every address should carry, and why harvesting software (illegal in AU/NZ/CA and elsewhere) and purchased/appended/co-reg lists are the root cause of poor list quality. Source: emailmarketing.net — https://emailmarketing.net/learn/list-management/address-acquisition How an address got onto your list decides, more than anything else, whether its owner will engage with your mail or complain about it. The question here is whether each address was obtained by a method you can stand behind, and whether you can prove it. That means treating acquisition as a process you document and audit, knowing the illegitimate collection techniques, and knowing why several of them are also unlawful in their own right, harvesting software above all. [Consent Methods and the List-Quality Spectrum](https://emailmarketing.net/learn/list-management/consent-methods) looks at the same addresses from another angle: what kind of permission each one carries. It ranks the eight consent methods by quality and describes their complaint profiles. ## The baseline: confirmed opt-in plus proof Spamhaus's "Address Acquisition for Mailing Lists: The Basics" sets the minimum for legitimate collection at **confirmed opt-in (COI, also called double opt-in)**. The contact makes a voluntary, active decision to receive mail, and confirms it by clicking a link in an email before the address receives any campaign. Spamhaus attaches these requirements to a signup you can defend: - **Voluntary, active selection**: no pre-checked boxes. The contact takes the action. - **Transparent sign-up**: the contact knows who they are subscribing to and what they will receive. - **Web-form protection**: CAPTCHA or reCAPTCHA on the form, to hold back automated and malicious submissions (the same defense discussed in [Subscription Bombing](https://emailmarketing.net/learn/esp-operations/subscription-bombing)). - **Active email confirmation**: the COI click, which also stops typos and [spam traps](https://emailmarketing.net/learn/reference/spam-traps), because a trap can never complete the confirmation. ### Acquisition metadata to capture at signup Legitimacy is useful only if you can **prove** it later. Spamhaus recommends storing at least the following for every address: | Field | Why it matters | |---|---| | **Sign-up date and time in UTC** | Shows when consent was given, and sets the timing for sunset and re-permission | | **Acquisition channel or source** | Lets you isolate and quarantine a bad source when complaints or trap hits spike | | **Submitting IP address** | Evidence of a real submission. Separates organic signups from bulk injection | This record is what you show a **blocklist operator in a delisting dispute**, and what you rely on to answer a **GDPR erasure request or a right-to-object request** (see [Right to Object and Erasure](https://emailmarketing.net/learn/compliance/right-to-object-and-erasure)). No acquisition record means, in practice, no consent you can defend. The [M3AAWG Senders BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp) sets out the same record-keeping as proof of consent. Consent follows the address, not the person. Version 4.0 of that BCP (August 2026) says that when subscribers change the address on file, the new address should be confirmed the same way as a new signup. ## The core principle: consent is not transferable Every illegitimate method below fails one test: **permission given to one party does not transfer to another.** A contact who agreed to hear from Company A did not, by doing so, agree to hear from Company B, from its "partners", or from whoever bought the file. Spamhaus repeats this ("consent is not transferrable") as the reason why co-registration, renting or buying lists, and appending are all unsafe, however the transaction is documented. ## Illegitimate acquisition techniques | Technique | What it is | Why it fails | |---|---|---| | **Harvesting or scraping** | Software crawls the web and collects anything that looks like an address, or generates addresses by combining names with a domain (a dictionary or directory harvest attack) | There is no path to consent. Spamhaus warns of "serious blocking and delivery issues", lasting harm to reputation, and lower inbox placement. The highest exposure to [pristine traps](https://emailmarketing.net/learn/reference/spam-traps). **Also illegal in its own right** (see below). | | **Purchased lists** | Addresses bought outright | Consent does not transfer. The result is blocklisting, long-term damage to deliverability, damage to the brand, and legal exposure under GDPR and similar laws. The buyer also drags down the shared reputation of its existing opted-in mail. | | **Rented lists** | You pay a list owner to send your content to their file, and you never see the addresses | No relationship with the recipients. The owner and the sender share the damage to reputation. | | **Email appending ("epending")** | You match names or demographic data you hold to email addresses from a vendor, which creates addresses you were never given | It goes against core industry values (Spamhaus endorses the M3AAWG ban on appending). The contact never gave the address to you. | | **Co-registration or affiliate lists** | An address is captured on Company A's form under wording such as "…and our partners", then passed to Company B | Technically possible, but Spamhaus advises against it: "permission is not transferrable," so it "creates unacceptable risk for campaign damage." | Almost every ESP's acceptable use policy prohibits harvested, purchased, rented and appended lists, and lists from co-registration or affiliates. Using them is grounds for closing the account, on top of the damage to reputation and the legal risk. This is why acquisition audits are central to [Spam-Trap Incident Response](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response) and [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting). ## Harvesting software is separately illegal Beyond the harm to reputation, using address-harvesting software, or lists it generated, is a separate offence under the law of several jurisdictions. That makes harvesting the one acquisition method that is not only bad practice but a distinct legal violation, for the sender, for the supplier of the software, and often for the ESP. - **New Zealand, Unsolicited Electronic Messages Act 2007** (enforced by the Department of Internal Affairs, DIA): businesses must not use "electronic address harvesting software, or lists that have been generated using such software, for the purpose of sending unsolicited commercial electronic messages." The DIA stresses that **buying a database does not make you compliant**. Even when a seller claims "deemed consent" exists, the sender must prove consent when each message is sent, and a breach occurs "regardless of whether they believe consent existed due to the purchase of a database." Deemed consent is narrow. The address must have been **conspicuously published** in a business or official capacity, **without** a statement refusing unsolicited messages, and the message must **relate to the recipient's role or duties**. Enforcement ranges from a formal warning to **High Court action for pecuniary penalties, compensation and damages**. See [APAC Email Laws](https://emailmarketing.net/learn/compliance/apac-email-laws) for the NZ Act's levels of consent and maximum penalties. - **Australia, Spam Act 2003** ss 20–22: address-harvesting software and lists of harvested addresses must not be **supplied, acquired, or used** in connection with sending that breaks the consent rule. These are three separate contraventions. See [Australia Spam Act](https://emailmarketing.net/learn/compliance/australia-spam-act). - **Canada, CASL and PIPEDA**, and **US, CAN-SPAM**: harvesting and generating addresses by dictionary attack are named explicitly. Under CAN-SPAM they are an "aggravated violation" (15 U.S.C. 7704). In Canada, the Office of the Privacy Commissioner (OPC) handles them under PIPEDA. Supplying or selecting harvested addresses is a separate ground of liability that can reach the ESP itself. See [Enforcement Cases](https://emailmarketing.net/learn/compliance/enforcement-cases). In practice, a purchased file, or a "deemed consent" file offered by a broker, should be presumed unsafe and possibly harvested. The burden of proving otherwise is on the sender, and the sender usually cannot meet it. ## Why acquisition method is the root cause Problems that show up later in list quality, such as spam-trap hits, high complaint rates, spikes in hard bounces and blocklistings, are almost always **acquisition failures that surface late**. A pristine trap appears only in a file that was scraped, generated or bought. A recycled trap appears only in a file that brought old addresses back into use. A spike in complaints after a list swap almost always traces back to appended or transferred addresses whose owners never consented to hear from this sender. Fixing acquisition comes before every remediation procedure, and costs less than any of them: - The consequence for trap hits, from [Spam Traps](https://emailmarketing.net/learn/reference/spam-traps): "if your list processes allow spamtraps onto the list, it's likely you're also sending mail to actual people who don't want it." Traps are a signal of the acquisition defect, not the defect itself. - Recovery after an incident ([Reputation Incident Recovery](https://emailmarketing.net/learn/operations/reputation-incident-recovery)) always includes an audit and purge of acquisition sources, because warming up an IP address again on the same contaminated list simply earns the block again. ## Related articles - [Consent Methods and the List-Quality Spectrum](https://emailmarketing.net/learn/list-management/consent-methods) - [Spam Traps](https://emailmarketing.net/learn/reference/spam-traps), including pristine, recycled and typo traps - [List Hygiene and Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies), including validation at signup - [Spam-Trap Incident Response](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response) - [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting), on how ESPs examine a prospect's acquisition practices before onboarding - [Enforcement Cases](https://emailmarketing.net/learn/compliance/enforcement-cases) - [Australia Spam Act](https://emailmarketing.net/learn/compliance/australia-spam-act) - [APAC Email Laws](https://emailmarketing.net/learn/compliance/apac-email-laws) - [Consent Guidance Updates](https://emailmarketing.net/learn/compliance/consent-guidance-updates), on recent regulator positions on what consent now requires # Complaint Feedback Loops (RFC 6449) > How mailbox-provider feedback loops (FBLs) work — ARF report structure, enrollment and vetting, and operational recommendations for feedback providers and senders. Source: emailmarketing.net — https://emailmarketing.net/learn/list-management/complaint-feedback-loops When a recipient clicks "Report Spam" on your message, a feedback loop (FBL) can send you a report of that complaint, so you can stop mailing that person and find out what went wrong. Complaints are one of the main reputation signals that mailbox providers measure (see [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability)), and an FBL gives you direct access to that signal. RFC 6449, "Complaint Feedback Loop Operational Recommendations", describes how mailbox providers forward these complaints to senders. Its stated aim is "to provide Feedback Consumers with information necessary to mitigate Spam or the perception of Spam." ## Terminology | Term | Meaning | |---|---| | **Spam** (in the context of FBLs) | Any message the recipient chooses to complain about, whatever the author intended | | **Feedback Provider** | The organization that sends complaint reports, typically a mailbox provider | | **Feedback Consumer** | The organization that receives the reports: the sender of the message, or an ESP or ISP acting for it | | **ARF** | Abuse Reporting Format, the standard report format (RFC 5965) | ## How a complaint becomes a report 1. The user clicks "Report Spam" in the webmail interface or in the provider's mail client. If the provider offers no such button, an effective FBL is practically impossible. 2. The provider matches the message to an enrolled Feedback Consumer. Traditionally it uses the **IP address of the last hop** that handed the message to the provider, and more and more often the **DKIM `d=` domain**. 3. An ARF report is generated and sent **immediately, without review**, so the consumer receives it almost in real time. ### FBL routing by DKIM domain or by IP address A single DKIM `d=` value can cover many servers and IP addresses, and you can add or remove servers without changing the FBL registration ("when a Feedback Loop uses DKIM, no reconfiguration is necessary because the signing domain does not change"). FBLs based on IP addresses must be updated whenever the sending infrastructure changes. Prefer enrollment by DKIM domain where the provider offers it. It also fits naturally with [DMARC alignment](https://emailmarketing.net/learn/authentication/dmarc) and with separate signing domains for each stream (see [Advanced IP Segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation)). How enrollment works, according to M3AAWG's page of FBL resources: signing up by domain requires the mail to be signed with DKIM, and asks for both the signing domain (the `d=` value) **and the selector (the `s=` value)** from the DKIM signature. The selector used on production mail must therefore be known and stable when you enroll. Aggregated FBLs work differently. They total complaint counts by IP address, by domain, **or by an identifier the sender chooses**, which is the pattern Gmail implements with the `Feedback-ID` header (see [Google Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools)). The directory of signup pages for each provider is kept in [M3AAWG Document Index & FBL Ecosystem](https://emailmarketing.net/learn/industry-best-practices/m3aawg-document-index). Most traditional FBLs run through Validity's Universal Feedback Loop at fbl.validity.com. ## ARF report structure (RFC 5965) An ARF message is a MIME `multipart/report` message with three parts: | Part | Content | |---|---| | 1. Text for people to read | Standard wording that explains the report, and the provider's contact information | | 2. Metadata for machines to read (`message/feedback-report`) | The protocol version, the report type (`abuse`, `fraud`, …), the envelope sender (optional), and the time the message was received | | 3. Original message (`message/rfc822`) | A copy of the email that was reported. It is often **redacted**, especially the recipient's address, for privacy or legal reasons | Because the recipient's address is often redacted, senders **cannot rely on the To: address** in the returned message to identify who complained (see Automation below). ## Recommendations for feedback providers (mailbox providers) - **Application and vetting:** keep the application process simple, and verify that the applicant is authorized for the IP addresses or domains it claims. Check IP ownership against the origin ASN, WHOIS or RWHOIS records and reverse DNS. Verify contacts with a confirmation message sent to `abuse@` or `postmaster@`. - **Refusal:** you may refuse an application when the applicant appears to be enrolling falsely to get around delivery policies, or is already blocked for a bad reputation. Keep a documented, transparent appeals process. - **Report contents:** include a contact address for questions (ideally one that feeds a ticketing system). You may also include summary delivery statistics (volume, inbox rate, spam-trap hits). - **Ongoing maintenance:** periodically check enrolled consumers again against current criteria, and verify that the addresses receiving reports still work. - **Privacy:** report data must not be passed on beyond the approved recipient, and misuse justifies immediate termination. FBLs cross borders, so local data protection law governs what may be redacted or shared. The email address and IP address of the recipient who reported the message are the usual items redacted. - **Terms of use** should state the obligations of confidentiality, the requirement to keep contacts up to date, that access to an FBL gives **no special sending privileges**, and that enrollment is a privilege that can be withdrawn at any time for any reason. - **Unsolicited FBLs** (sending reports to senders who have not enrolled) are still debated. If you send them, send them only to mailbox or access providers, only after trying to make contact normally, and only to published WHOIS abuse addresses. Consumers who are not prepared may not be able to handle the volume or the format. ## Recommendations for senders (feedback consumers) ### Before enrolling - Working role addresses: `abuse@`, `postmaster@`. - A dedicated address to receive FBL reports. - Proof that you own your IP addresses: correct reverse DNS and WHOIS records. - Named contacts and escalation points. ### Handling each complaint - **Treat a complaint like an unsubscribe.** Make sure no further mail from that list reaches that recipient: remove the address, or add it to the suppression list. - **How widely to suppress** is a judgment call, and the aim is to reduce future complaints. Suppressing the address across an entire ESP is probably too broad. Suppressing it across all the segmented lists of one customer is probably right. - **The transactional exception:** sometimes the right action is to ignore the report. For example, a customer who reports their own airline tickets as spam still needs the remaining tickets. Suppress marketing mail, not the transactional stream (one reason to keep transactional mail separate; see [Advanced IP Segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation)). ### Measuring complaint rates correctly RFC 6449 points out several traps in the arithmetic: - **The day the message was read, not the day it was sent:** complaints are counted on the day the user read the message. A sender who mails Mon–Fri sees an inflated "rate" on Saturday, because complaints are divided by a tiny send count, or even zero. - **The inbox as denominator:** providers typically divide complaints by the number of messages **delivered to the inbox**, not by the number sent. For a sender with 500 of 10,000 messages in the inbox (9,500 in bulk), complaints are divided by 500. A bad reputation therefore makes the measured rate even worse. - The RFC gives a rough scale: 10 reports a day could signal serious problems for a small sender, but be normal background for one sending 300,000 a month. It cites a **2% complaint rate** as possible grounds for immediate blocking. Current provider thresholds are far stricter: Gmail wants < 0.1%. - **Watch trends, not only counts.** ISPs should watch complaints for each customer or IP address each day, because a sudden spike suggests a spammer's signup or a compromised system. ESPs should break complaints down by customer, list and campaign, and use the rate (complaints divided by messages sent) rather than absolute counts. ### Automation - **Small consumers** (lists of a few thousand addresses) need little or no automation, since ARF reports can be read in a mail client. A simple filter that adds the reported IP address to the Subject line makes patterns visible when you sort. - **Large consumers** must extract from each report the recipient who complained, the mailbox provider that sent the report, the responsible customer (for ESPs), the campaign and list identifiers, and optionally the source IP address and the DKIM `d=`. - **Because the recipient's address is often redacted**, put recipient and campaign identifiers in the message itself, where FBL processing will not strip them. The options are database primary keys (opaque, but you need database access), encrypted values (you need automated decryption), or encoding in the Message-ID. For example, `esp-423-27-42460@example.com` is opaque to outsiders but the sender can parse it. - **Reuse the bounce pipeline.** If the identifier converts to the same format as the VERP string used for bounce processing, the FBL processor can create a "fake" hard bounce and pass it to the existing bounce processor, which suppresses the address (see [Delivery Status Notifications](https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications)). - ISPs that consume reports mostly need the source IP address and the responsible customer. The IP address is usually in the ARF metadata, and otherwise in the Received headers. ## Security considerations The provider must make sure that reports go only to authorized consumers, and must establish the sender's identity from the connecting IP address or the DKIM signing domain, "both of which are hard to forge." This stops spammers from enrolling for networks they do not own in order to collect addresses and private data from the reports. ## Related articles - [List-Unsubscribe and One-Click Unsubscribe](https://emailmarketing.net/learn/list-management/list-unsubscribe), which lets users leave a list rather than complain - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability) # Consent Methods and the List-Quality Spectrum > The eight ways addresses end up on a mailing list — from confirmed opt-in to harvested — ranked by relationship ownership and complaint risk, with the acquisition rules that keep complaints down. Source: emailmarketing.net — https://emailmarketing.net/learn/list-management/consent-methods How an address got onto your mailing list is the best single predictor of whether it will engage, ignore your mail, bounce or complain. The acquisition methods used in the industry, including the ones no legitimate sender should use, can be ranked on one spectrum. The Messaging, Malware and Mobile Anti-Abuse Working Group (M3AAWG) formalizes the top three methods as opt-in "levels", with detailed requirements, in its [Sender Best Common Practices](https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp) (Version 4.0, August 2026). The spectrum below continues past those levels, down through the acquisition methods M3AAWG condemns, so that you can compare the whole range. ## The spectrum: own, borrow, or no relationship Ordered from best to worst practice: ``` GOOD ◄─────────────────────────────────────────────────────────► BAD Double Notified Single Opt-out Affiliate Rented Purchased Harvested opt-in opt-in opt-in └──── you own the relationship ────┘└─ borrowing someone ─┘└─ no relationship ─┘ else's relationship └─ the recipient asked you ─┘└────── trickery or no consent at all ──────┘ to contact them ``` Two questions place any method on the spectrum: 1. **Whose relationship is it?** With the opt-in methods, the recipient's relationship is with you. With affiliate, rented or purchased lists, you are borrowing or buying someone else's relationship. With harvested lists there is no relationship at all. **Consent is not transferable.** A subscriber's permission for Company A never extends to Company B. 2. **Did the recipient ask to be contacted?** Only the opt-in methods can answer yes. Every method from opt-out onward relies on inertia, on trickery, or on nothing. Complaint rates rise at every step along the spectrum, and complaints are among the strongest negative reputation signals that mailbox providers use (see [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks) for thresholds). ## The eight methods | Method | Mechanics | Complaint and risk profile | |---|---|---| | **Confirmed ("closed-loop") or double opt-in** | Signup triggers a confirmation email. The address is not mailed until the recipient clicks a link or replies. | The lowest complaint rate. It blocks typos, forged signups and [spam traps](https://emailmarketing.net/learn/reference/spam-traps), because a trap address can never complete confirmation. M3AAWG Level 3 ("best"). M3AAWG also says that when a subscriber changes their address, the new one should go through the same confirmation. | | **Notified opt-in** | Signup triggers a welcome email, but the address joins the list without confirmation. | Popular. It produces more complaints than double opt-in, because typos and maliciously submitted addresses enter the list. M3AAWG Level 2. If the welcome email bounces, M3AAWG says to process it as a bounce and take the address off the list. | | **Single opt-in** | The recipient knowingly checks an empty "sign me up" box on a form (at checkout or registration). No confirmation or welcome message follows. | Open to abuse and to pollution by typos. Complaint and bounce rates are higher, and they can escalate into delivery problems. M3AAWG Level 1: "use with extreme caution." | | **Opt-out (pre-checked or automatic)** | The address is added automatically, through a pre-checked box or on purchase, and the recipient must unsubscribe or uncheck the box to avoid mail. | Recipients feel tricked, and complaint volumes are large. M3AAWG treats the two mechanisms differently. Adding someone who gave an address at checkout, with no notice that marketing would follow, is what it calls implied consent: not a best practice, and to be avoided where possible. A pre-checked box fares worse: an extra purpose "must not be opt-in by default", and the consent box M3AAWG recommends is a distinct, unchecked one. Under [CASL](https://emailmarketing.net/learn/compliance/casl), implied consent is legal only in narrow, time-limited circumstances. If you use either at checkout, switch to an unchecked box or to confirmation. | | **Affiliate lists** | Company A shares addresses with "partners", often through signup language such as "…and relevant partners". | Recipients who signed up with Company A do not recognize Company B, and they complain. The complaint rate is high, and delivery problems tend to persist. | | **Rented lists** | The sender pays a list owner to send the sender's content to the owner's list, usually once. The sender never sees the addresses. | No relationship with recipients, and high bounce and complaint rates. The list owner **and** the sender share the reputation damage. Under CAN-SPAM, "even if you hire another company to handle your email marketing, you can't contract away your legal responsibility to comply with the law" (FTC; see [CAN-SPAM](https://emailmarketing.net/learn/compliance/can-spam)). | | **Purchased lists** | Addresses bought outright. | Recipients never opted in to hear from the buyer. Expect spam flags, damaged relationships with the brand, invalid addresses and pristine spam traps. Buying a list also lowers delivery to the sender's existing opted-in audience, because it drags down the shared reputation. Most reputable email service providers (ESPs) refuse this business outright. | | **Harvested ("scraped") lists** | Addresses collected by crawling the web for anything shaped like `something@domain.com`, or by dictionary and directory harvest attacks that guess patterned corporate addresses (`jdoe@`, `john.doe@`). | A spammer technique. There is no consent and no relationship, complaints, bounces and pristine trap hits are at their highest, and collecting addresses this way is illegal in several jurisdictions. | The anti-spam policy of practically every ESP prohibits harvested, purchased, rented and affiliate lists. Using them is grounds for terminating the account, on top of the reputation damage. ### The existing-business-relationship trap **An existing business relationship with someone does not make it okay to add them to a mailing list.** Customers who are added automatically, or through an unclear signup, mark mail as spam simply because they do not recognize the sender or never wanted the mail. At the point of purchase, offer the option to subscribe instead of subscribing people automatically. The law is more permissive than good practice here. CAN-SPAM permits mailing without prior consent, and the implied consent CASL grants for an "existing business relationship" is time-limited (see the [compliance overview](https://emailmarketing.net/learn/compliance)). But what is legal is not what keeps complaint rates survivable. M3AAWG's principle is that recipient expectations outrank what a privacy policy technically allows. ## Acquisition rules that keep complaints down Complaints are one of the largest single influences on sender reputation, so design your acquisition practice to prevent them: - Never use a purchased, harvested or scraped list of any kind - Have a direct relationship with every address on the list - Confirm new signups (double opt-in) - Ask people whether they want to subscribe, and never sign them up automatically - Make the signup process explicit: what people are signing up for, when mail starts, and how often it will arrive - Use a consistent From name and address - Use subject lines that truthfully describe the content - Honor opt-outs promptly (see [List-Unsubscribe](https://emailmarketing.net/learn/list-management/list-unsubscribe); Gmail and Yahoo now require one-click unsubscribe from bulk senders) - Comply with the anti-spam law of every region you send to ([CAN-SPAM](https://emailmarketing.net/learn/compliance/can-spam), [CASL](https://emailmarketing.net/learn/compliance/casl), [PECR](https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing) and GDPR, among others). A single address in a jurisdiction is enough to bring its law into play, so follow the strictest rules that apply - Keep the list current, and **never reactivate old or previously invalid addresses**. A hard-bounced address may since have been turned into a recycled [spam trap](https://emailmarketing.net/learn/reference/spam-traps), and mailing an unsubscribed address is illegal in most jurisdictions. This matters especially when you migrate to a new ESP: never carry hard bounces or unsubscribes into the new platform as active contacts - Send on a regular schedule, so the list never goes stale The consent method sets list quality at the point of entry. [List Hygiene and Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies) covers keeping that quality over time, and adds validation at signup (syntax and MX checks, CAPTCHA, typo detection) on top of the consent method. ## Related articles - [M3AAWG Senders BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp), including the formal opt-in levels 1–3 - [List Hygiene and Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies) - [Spam Traps](https://emailmarketing.net/learn/reference/spam-traps) - [Complaint Feedback Loops](https://emailmarketing.net/learn/list-management/complaint-feedback-loops) - [Seven-Step Delivery Model](https://emailmarketing.net/learn/foundations/seven-step-delivery-model) - [Compliance overview](https://emailmarketing.net/learn/compliance) # List-Unsubscribe and One-Click Unsubscribe (RFC 2369 & RFC 8058) > Exact syntax and semantics of the List-* header fields and the one-click List-Unsubscribe-Post mechanism, including DKIM requirements and why major mailbox providers mandate them. Source: emailmarketing.net — https://emailmarketing.net/learn/list-management/list-unsubscribe If you send bulk or marketing mail, the "Unsubscribe" link that Gmail, Yahoo, Apple Mail and Outlook.com show next to your sender name comes from headers you add to each message. Two RFCs define this standard, machine-readable unsubscribe mechanism: - **RFC 2369** (1998) defines the `List-*` header fields, including `List-Unsubscribe`. - **RFC 8058** (2017) adds `List-Unsubscribe-Post`, which turns the HTTPS version into a **one-click** action that mail clients can carry out for the user without loading a web page. ## RFC 2369: the List-* header fields RFC 2369 defines six header fields for messages distributed by a mailing list: | Header | Purpose | Notes | |---|---|---| | `List-Help` | Full instructions for the list | Considered the most important field; acceptable as the only field implemented | | `List-Unsubscribe` | Command or URL to leave the list | The field that mailbox providers act on | | `List-Subscribe` | Command or URL to join the list | | | `List-Post` | How to post to the list | Special value `NO` for lists that do not accept posts (announcement lists) | | `List-Owner` | Contact for the list administrator | | | `List-Archive` | How to reach the list archives | | ### Syntax rules - The content of each field is **one or more URLs in angle brackets**: `` or ``. Whitespace inside the brackets is ignored. Systems that generate the fields must not put whitespace inside brackets, but clients should tolerate badly formatted entries. - **Several alternative URLs** MAY be given as a comma-separated list of URLs in angle brackets. **The order shows preference, from left to right**: a client uses the leftmost protocol it supports (for example, HTTPS first, with `mailto:` as a fallback). - Comments in parentheses may follow a URL: `List-Post: NO (posting not allowed on this list)`. - A message may contain **at most one of each field**. - The fields **MUST only be generated by the list or sending system, never by end users**. - Fields implemented for a list SHOULD appear on **all** messages that list distributes. - Rules for clients parsing the fields: if the field content starts with anything other than `<`, the field SHOULD be ignored. Characters after a closing `>` are ignored, unless the next character that is not whitespace or part of a comment is a comma. A comma-separated item that is not a URL in angle brackets causes the rest of the field to be ignored. - A sublist that redistributes a parent list's mail should replace the parent's `List-Help`, `List-Subscribe`, `List-Unsubscribe` and `List-Owner` with its own, and keep `List-Archive` unless it provides its own. ### Examples (from the RFC) ``` List-Unsubscribe: List-Unsubscribe: , List-Help: , List-Subscribe: , List-Post: List-Owner: List-Archive: (Web Archive) ``` For `mailto:` URLs, clients are expected to show a confirmation dialog (with the destination and the command) before sending. ## RFC 8058: one-click unsubscribe (List-Unsubscribe-Post) A plain HTTPS `List-Unsubscribe` URL cannot safely be opened automatically. Anti-spam scanners, link prefetchers and security proxies follow GET links, which would unsubscribe users who never asked to leave. RFC 8058 solves this. The signal RFC 8058 defines is **based on POST**, and only a deliberate action in the mail client produces it. ### Header syntax ``` list-unsubscribe-post = "List-Unsubscribe-Post:" 0*1WSP postarg CRLF postarg = "List-Unsubscribe=One-Click" ``` The header value is **exactly** `List-Unsubscribe=One-Click`, and nothing else is valid. ### Requirements on the sender | Requirement | Level | |---|---| | The message has a `List-Unsubscribe` header that contains **one HTTPS URI** (other URIs, such as `mailto:`, MAY also be present) | MUST | | The HTTPS URI contains enough information to identify the recipient **and** the list, so the unsubscribe completes without any further input | MUST | | The URI includes an opaque part that is hard to forge (for example, an HMAC of the recipient and the list), checked on the server | SHOULD | | The unsubscribe endpoint completes the action **without any further interaction** with the user (no login, no confirmation form) | MUST | | The POST endpoint does not return HTTPS redirects (redirected POST requests have historically been unreliable) | MUST NOT | | The message has at least one **valid DKIM signature** whose `h=` tag covers **both** `List-Unsubscribe` and `List-Unsubscribe-Post` | MUST | If the required DKIM signature is missing or invalid, the mail receiver SHOULD NOT offer one-click unsubscribe. This is what stops an attacker from injecting forged unsubscribe headers. ### POST semantics (what the mailbox provider sends) When the user clicks the unsubscribe control in the client, the mail receiver sends an HTTPS **POST** to the URI from `List-Unsubscribe`, with the key and value from `List-Unsubscribe-Post` as the body: - `Content-Type`: `multipart/form-data` (SHOULD) or `application/x-www-form-urlencoded` (MAY). - Body: the single pair `List-Unsubscribe=One-Click`. - The request **MUST NOT** include cookies, HTTP authorization or any other context information. The endpoint therefore cannot rely on a session, only on the URI itself. - The receiver MUST NOT send the POST without the user's consent. It sends it only after an explicit action by the user, never in advance. ### Examples (from the RFC) ``` List-Unsubscribe: List-Unsubscribe-Post: List-Unsubscribe=One-Click POST /unsubscribe/opaquepart HTTP/1.1 Host: example.com Content-Type: application/x-www-form-urlencoded Content-Length: 26 List-Unsubscribe=One-Click ``` With a `mailto:` alternative and `multipart/form-data`: ``` List-Unsubscribe: , List-Unsubscribe-Post: List-Unsubscribe=One-Click POST /unsubscribe.html/opaque=123456789 HTTP/1.1 Host: example.com Content-Type: multipart/form-data; boundary=---FormBoundaryjWmhtjORrn Content-Length: 124 ---FormBoundaryjWmhtjORrn Content-Disposition: form-data; name="List-Unsubscribe" One-Click ---FormBoundaryjWmhtjORrn-- ``` ### Security model - Limiting the POST body to one fixed pair stops the header from being used to trigger arbitrary form submissions. - Leaving out cookies and authorization prevents the unsubscribe from being linked to the user's other activity on the web. - As with the classic `List-Unsubscribe`, anyone with a copy of the message can unsubscribe the recipient. The opaque part of the URI reduces this risk but does not remove it. ## Why Gmail and Yahoo mandate it Since February 2024, Gmail and Yahoo have required **bulk senders** (Gmail's threshold is ~5,000+ messages a day to its users) to include RFC 8058 one-click unsubscribe on commercial and promotional mail, and to honor unsubscribes **within two days**. The reasons follow directly from the basics of deliverability (see [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability)): - An unsubscribe with no friction is the alternative to the **"report spam" button**. Every user who unsubscribes instead of complaining protects your complaint rate (Gmail says to keep the spam rate below 0.10% and never let it go above 0.30%). - The requirement for DKIM to cover the headers ties the unsubscribe to an authenticated domain, which complements [DMARC alignment](https://emailmarketing.net/learn/authentication/dmarc). - Because the POST carries no cookies or context, honoring it needs infrastructure on the sender's side that actually maps the opaque token to a real suppression. That makes it a good indicator of whether a sender manages its lists competently. ### Sender implementation checklist 1. Add both headers to every commercial or list message, and keep `mailto:` as a fallback URI next to the HTTPS one. 2. Sign with DKIM, and include both headers in the signature's `h=` list. 3. Make the endpoint idempotent, free of redirects and instant: suppress the address on the POST, with no login and no "are you sure?" step. 4. Send one-click unsubscribes to the same suppression list as complaints from [feedback loops](https://emailmarketing.net/learn/list-management/complaint-feedback-loops), and process them within 48 hours at the latest (the Gmail and Yahoo requirement above). 5. Keep the unsubscribe link in the message body as well. The headers add to it; they do not replace it. ## What M3AAWG's Sender Best Common Practices add The Messaging, Malware and Mobile Anti-Abuse Working Group (M3AAWG) sets out industry practice for unsubscribes in its *Sender Best Common Practices* (Version 4.0, August 2026, section 4.6). Version 4.0 makes one-click unsubscribe a requirement in M3AAWG's own guidance, citing the rules of the major mailbox providers: - **One-click is a requirement.** To meet the updated requirements of major mailbox providers, senders "must implement one-click unsubscribe (List-Unsubscribe-Post) in the headers as described in RFC 8058" (section 4.6, item 6c). The same item still says senders **should** adopt the RFC 2369 `List-Unsubscribe` header itself. - **Keep the address out of the link.** The unsubscribe link **should not** show the subscriber's email address, and should use an encoded reference instead of clear text (item 14). Section 2.8 extends this to every action URL in a message, including tracking and preference links. The address should not appear in clear text or in an encoding that is easy to reverse, such as base64. An encrypted value, or an identifier with no relation to the recipient that only the sender can map, is far better. The opaque part of an RFC 8058 URI already works this way. - **No delay, but no deadline.** Senders **must** process every unsubscribe request without delay (item 2), and **should** tell recipients during the process how long removal will take and which lists it covers (item 3). M3AAWG gives no number of days. The 48-hour and two-day figures on this page come from Gmail and Yahoo, not from M3AAWG. - **No login.** Subscribers **must** be able to unsubscribe without logging in to a preference center or passing any other security challenge (item 12). This matches the RFC 8058 rule that the endpoint completes the action without further interaction. # Apple iCloud Mail — Postmaster Requirements > Apple's published requirements for sending bulk email to iCloud Mail (mac.com, me.com, icloud.com), its filtering model, and its escalation path. Source: emailmarketing.net — https://emailmarketing.net/learn/providers/apple-icloud-mail If you send bulk email to addresses at **mac.com**, **me.com** or **icloud.com**, your mail must meet every one of Apple's requirements, or it will be rejected. Unlike Gmail or Yahoo, Apple publishes no numeric thresholds, but it states plainly that **all requirements must be met or the email will be rejected**. Apple sets out its rules in a single postmaster document, support article 102322, last published on 2025-02-25. ## Requirements for sending bulk email Every item below is required, and failing any of them is grounds for rejection: | # | Requirement | |---|-------------| | 1 | Send only to recipients who **explicitly subscribed**: no purchased lists, rented lists or email appends | | 2 | Offer an **unsubscribe link** so the recipient can unsubscribe immediately | | 3 | Add **ARC headers** to forwarded emails | | 4 | Comply with **RFC 5321** and **RFC 5322** | | 5 | Publish **reverse DNS (PTR)** with your domain to help identify your IPs | | 6 | Use **consistent sending IPs and domains**, but **segment marketing and transactional streams** | | 7 | Use a **consistent `From:` name and address** that clearly identifies your brand | | 8 | Authenticate with **SPF** and **DKIM** | | 9 | The sending domain **must publish a DMARC policy** | | 10 | Track temporary and permanent **SMTP errors** from Apple's servers and act on them | | 11 | Have a standard **bounce-handling policy** | | 12 | Periodically **remove inactive subscribers** | | 13 | **Never reactivate** addresses already on your unsubscribe or suppression list | Apple also points senders to M3AAWG's best communication practices as a reference standard. Two requirements stand out compared with other providers: the explicit requirement to **add ARC headers when forwarding**, and the mandate to **separate marketing from transactional mail** in different streams (see [Advanced IP Segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation)). ## How iCloud Mail filters - **No allowlist.** Apple explicitly does not offer one. Filtering decisions come from sender reputation, tracked through **IP reputation, domain reputation, content checks and user feedback**. - **No feedback loop (FBL).** Apple does not offer one either. Because you get no complaint signal back, list hygiene is the only substitute. Apple's own advice: - periodically suppress inactive or disengaged subscribers; - remove addresses that bounce consistently; - honor unsubscribe requests as soon as possible. - Junk mail is detected and blocked **before it reaches the inbox**, and even legitimate mail can occasionally be misfiled as junk. With no FBL and no allowlist, hygiene based on engagement is all you can rely on at iCloud. The "wanted and expected" principle in [Foundations](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability) applies with no safety net. ## Apple's own authentication posture (inbound and outbound) - iCloud Mail authenticates **all inbound mail** with SPF and DKIM. - iCloud Mail **honors the DMARC policy of the sending domain** on inbound mail. - All iCloud domains publish SPF records and sign all outbound mail with DKIM. - All iCloud domains publish a DMARC policy of **`p=quarantine`** (in effect since **July 2, 2018**). Mail that claims to come from an iCloud address but fails SPF and DKIM should go to Junk. - To find Apple's outbound IP ranges, query the **SPF records** of mac.com, me.com and icloud.com. They are the published source of truth for Apple's outbound IP addresses. In practice, never put a spoofed `@icloud.com`, `@me.com` or `@mac.com` address in your `From:` header. Receivers that enforce Apple's quarantine policy will send it to Junk. See [DMARC](https://emailmarketing.net/learn/authentication/dmarc). ## Diagnosing rejections and the unblock process There is no self-service form to request unblocking. The process is: 1. **Read the SMTP error.** Apple's mail servers return SMTP errors that explain why a connection or message was rejected, and most include a **URL with more information**. Check your mail logs. 2. **Fix the problem using the requirements table above.** Apple's first recommended remedy is to "follow the best practices". 3. **Escalate to the postmaster team** only if steps 1–2 do not resolve the problem. Email **icloudadmin@apple.com** with **all** of the following: - your company name - your email domain - the IP addresses of the affected mail servers - the SMTP errors received from iCloud mail servers - a detailed description of the issue, including **when it started** People who are not administrators (end users) should contact Apple Support instead, because icloudadmin@ is only for system administrators. # B2B / Corporate-Gateway Deliverability > Delivering to corporate mail protected by secure email gateways — how Proofpoint, Mimecast, and Barracuda filter differently from consumer mailbox providers, their delisting paths, link-rewriting systems, and how to warm, diagnose, and measure B2B sends. Source: emailmarketing.net — https://emailmarketing.net/learn/providers/b2b-gateway-deliverability When you send to business addresses (`@company.com`), your mail is usually not filtered by a consumer mailbox provider such as Gmail or Yahoo. It passes first through a **secure email gateway (SEG)** that the recipient organization's IT administrator chooses and configures: Proofpoint, Mimecast, Barracuda, Cisco IronPort, or Microsoft 365's Exchange Online Protection. Gateways answer to the administrator, not to the recipient, and they behave very differently from consumer providers. Below are the gateway model and the three major third-party gateways. For filtering in M365 tenants, see [Microsoft sender requirements](https://emailmarketing.net/learn/providers/microsoft-sender-requirements). > Source note: the Proofpoint Essentials pages on mail flow and URL Defense require a login on help.proofpoint.com, so the content here comes from Wayback Machine snapshots (May 2025 and March 2025 respectively). The Mimecast support article on URL Protect definitions is behind a Cloudflare check, so its content comes from a July 2025 Wayback snapshot. ## How gateway filtering differs from consumer mailbox providers | Dimension | Consumer providers (Gmail, Yahoo, Outlook.com) | Corporate gateways (Proofpoint, Mimecast, Barracuda) | |---|---|---| | Who sets policy | The provider's global filter, plus engagement models for each user | The recipient organization's IT administrator, for each tenant | | Primary signals | Engagement (opens, replies, deletes), complaint rate, reputation of the domain and IP address | Static reputation feeds for IP addresses and domains, content rules, allow and block lists set by the administrator | | Engagement feedback | Opens, moves and complaints feed the filter | Essentially none: user behavior rarely influences filtering | | Complaint loop | Feedback loops (FBLs, in ARF format) available to senders | No FBLs; "complaints" show up as blocks set by the administrator | | Sender visibility | Postmaster tools (Google Postmaster Tools, SNDS) | None: you learn from bounces, from silence, or from the recipient | | Failure mode | Spam folder | SMTP rejection, silent quarantine (listed in a digest for the administrator), or a hold set by the administrator | | Recovery path | Fix behavior, wait for reputation to recover | Delisting portals, plus asking the recipient's administrator to allowlist you | | Consistency | One policy per provider | Every tenant is different. The same gateway can accept your mail at one company and reject it at the next | What this means for a sender: - **Reputation is closer to all or nothing.** You are either on a blocklist or low reputation tier, or you are not. No personalization for individual users can partly save you. - **Quarantine is invisible.** Many gateways accept the message (250 OK), then hold it in a quarantine that the recipient sees only in a daily digest. Your logs show "delivered", and the recipient says they never got it. - **One administrator's decision covers thousands of mailboxes.** A block at a large enterprise domain removes the whole domain at once. In the same way, one allowlist entry fixes it at once. - **Identify the gateway from the MX record** before you diagnose: `*.pphosted.com` or `*.ppe-hosted.com` means Proofpoint; `*.mimecast.com` means Mimecast; `*.barracudanetworks.com` or an on-premises Barracuda appliance means Barracuda; `*.mail.protection.outlook.com` means Microsoft 365 (EOP). ## Proofpoint ### Order of mail flow and filtering (Essentials) Proofpoint Essentials processes inbound messages in this order: 1. **Reputation checks on DNS and IP address**: **PDR** (Proofpoint Dynamic Reputation) and **CSI** (Cloudmark Sender Intelligence). 2. **DNS validity checks** (inbound sender DNS check). 3. **Attachment Defense** (if licensed). 4. **Anti-virus scanning**. Neither the customer nor Proofpoint can ever release a message blocked as a virus. 5. **Anti-spoofing scan**: DMARC, DKIM and SPF. 6. **Filters**: custom filters set by the administrator, and safe and block sender lists. Executables (`.exe`, `.dll`, `.bat`, `.js`, and others) are blocked before custom filters run. Any filter that triggers **Quarantine** or **Allow** skips the anti-spam step. 7. **Anti-spam** content engine. 8. **URL Defense scan and rewrites** (if licensed). Custom filters **do not bypass** this step: even mail exempted by an allow filter still has its links rewritten. In practice, PDR and CSI rejections at connection time happen before any content is seen, so the fix is IP reputation. Quarantine events come from policy or content, so the fix is content or an allowlist entry from the administrator. An "Allow" entry from the administrator bypasses spam scoring, but not URL rewriting or virus checks. ### PDR and ipcheck.proofpoint.com **PDR (Proofpoint Dynamic Reputation)** is an IP reputation system driven by machine-learning classification of content. It aims to identify compromised IP addresses and IP addresses in botnets. Once identified, an IP address is **delayed (deferred) or blocked** for every recipient Proofpoint protects, all at once. A sudden wave of deferrals or rejections at many unrelated business domains at the same time is the classic symptom of a PDR listing. - **Check and delist:** `https://ipcheck.proofpoint.com/` (which redirects to `proofpoint.com/us/ipcheck`). Enter the IP address to see whether it is blocklisted or delayed, and submit information or a delisting request from the same tool. - **Follow-up:** email `delist-request@proofpoint.com` if the tool does not resolve it. Inquiries can take **72 hours** to process. There is **no phone support** for delisting. - Proofpoint customers get faster handling through the support portal. Everyone else can use only the tool and the email address. - If a specific organization that Proofpoint protects blocks you (a policy decision, not global reputation), Proofpoint will not act on your request. **The recipient organization must open the ticket**, because only its authorized support contacts can contact Proofpoint Support. ### URL Defense (link rewriting) URL Defense rewrites every URL in delivered mail so that it passes through `urldefense.proofpoint.com` (or `urldefense.com`), and scans the destination when the link is clicked. The rewritten (v2) format looks like this: ``` https://urldefense.proofpoint.com/v2/url?u=http-3A__www.google.com&d=DwMBaQ&c=...&r=...&m=...&s=...&e= ``` | Parameter | Meaning | |---|---| | `u` | the original URL, encoded (`:` becomes `-3A`, `/` becomes `_`) | | `d` | debug flags | | `c` | PPS cluster ID | | `r` | the recipient of the message | | `m` | a message identifier | | `s` | digital signature preventing tampering | | `e` | blank marker for the end of the URL | Behavior that matters to senders: - **Interaction with DKIM:** by default, URL Defense rewrites URLs in DKIM-signed mail, which **breaks the DKIM signature** after delivery. This matters when the mail is forwarded onward (see [ARC](https://emailmarketing.net/learn/authentication/arc)). Administrators can turn off rewriting for DKIM-signed messages. - **Exemptions set by the administrator** exist for a domain or IP address, for a sender address, for URLs in plain text, and for bare IP addresses. This is what you ask a recipient's administrator to configure if rewriting is damaging your links. - If the link text shows a URL that differs from the actual `href`, the URL in the visible text is rewritten and becomes the link. This is why a "pretty" display URL placed over a tracking link can end up pointing somewhere unexpected in protected mail. - When a link is judged malicious, the user sees a block page and the URL in the browser changes. To report a false positive to Proofpoint, you need the **original** rewritten link from the email, not the URL of the block page. - Proofpoint offers no official public decoder for URL Defense links in Essentials. Third-party decoders exist, because the `u=` parameter can be decoded mechanically. - Because links are scanned at click time, Proofpoint's infrastructure fetches your links. See [Why click metrics lie](#why-click-metrics-lie-security-scanners) below. ### Proofpoint support paths (summary) | Situation | Path | |---|---| | IP address delayed or blocked globally (PDR or CSI) | ipcheck.proofpoint.com, then follow up at `delist-request@proofpoint.com`; ~72 h; no phone | | Blocked by one specific protected organization | Ask that organization's administrator; only its authorized contacts can open Proofpoint tickets | | SORBS listings (historically operated by Proofpoint) | Through the SORBS website only | ## Mimecast ### URL Protect (link rewriting) Mimecast rewrites all links in inbound email and scans the destination in real time when a link is clicked (it checks the domain and validates the URL before letting the user through). Rewritten links point to a **regional Mimecast domain** (for example, `protect-eu.mimecast.com/s/...`; the exact host depends on the grid or region that hosts the account). Each **URL Protect definition** sets the configuration, and a policy applies it. These are the main settings a sender may run into: - **Rewrite mode:** *Relaxed* rewrites only valid URLs with top-level domains. *Moderate* adds IP addresses. *Aggressive* rewrites anything shaped like a URL, and is the only mode that rewrites URLs containing illegal characters. - **URL category scanning** blocks links by category. Compromised, Phishing & Fraud, Malware and Botnets are blocked at every level. **Spam Sites** and **Suspicious** are blocked at Moderate and Aggressive. Private IPs, and the extra **machine-learning zero-day model**, apply only at Aggressive. A tracking or landing domain in the "Spam Sites" or "Suspicious" category is therefore blocked for most tenants. - **Action on an unsafe URL:** Allow (logged), **Warn** (an interstitial page; the user may continue) or **Block** (a block page). URLs in attachments cause the attachment to be stripped instead. Browser Isolation (a remote safe-browsing session) may replace direct access for suspicious sites. - **All clicks are logged**, and every click is scanned again. This is another source of bot traffic in sender analytics. - Links are rewritten as **HTTPS by default**. URLs in the subject line can be removed or rewritten (rewritten links are up to 200 characters, which visibly changes the subject). Plain-text mail can be converted to HTML specifically so its links can be rewritten ("Create Missing HTML Body"). - The **Ignore Signed Messages** option skips rewriting for digitally signed mail, to preserve the signatures. - **Display URL Destination Domain** appends the real destination domain to the rewritten link, for example `protect-eu.mimecast.com/s/1dBvZWHZ?url.uk.m.mimecastprotect.com`. - **Advanced similarity checks** flag links that look similar to the tenant's internal or monitored domains. Lookalike or cousin sending domains can trip this check even when they are legitimate. - Scanning of URLs in attachments covers HTML, TXT and PDF files, archives, and Office and OpenOffice formats up to **50 MB** (encrypted files over **40 MB** are treated as malicious). QR codes in images are scanned, and a malicious verdict on a QR code can **Reject** or **Hold** the whole message (a defense against "quishing"). - **User Awareness** pages can challenge a percentage of clicks with an interstitial page before letting the user through. A click can therefore be logged even when the person never reaches your page. - Mimecast never rewrites its own `login*.mimecast.com` domains. Delisting: Mimecast blocks senders both through its own global reputation checks and through the policies of each tenant. Its SMTP rejection text names the class of reason (reputation, or a named policy). That tells you whether to use Mimecast's channels for senders or to contact the recipient's administrator. A rejection that cites a specific tenant policy needs that tenant's administrator, exactly as with Proofpoint. (Mimecast's troubleshooting article on rejected and deferred messages was not among the sources used here, so guidance for individual codes from that page is not covered yet.) ## Barracuda ### Barracuda Reputation Block List (BRBL) and removal Barracuda runs its own public DNSBL (query zone `b.barracudacentral.org`). Both Barracuda appliances and third parties consult it (see [Blocklists](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus)). To request removal, use `https://www.barracudacentral.org/rbl/removal-request`: - **Required fields:** the IP address of the email server, a contact email address and a phone number. **Optional:** the Barracuda customer name or email, and the reason for removal. - Requests with a valid justification are typically investigated and processed **within 12 hours**. - Requests without valid information are **ignored**, and duplicate submissions are disregarded. Submit once, with a real explanation of the cause and the remediation. - The form only collects requests. Barracuda does not publish its listing criteria or an appeal procedure. ### How allow and block lists work (Email Security Gateway) The administrator's lists live on the appliance's BLOCK and ACCEPT pages. They cover **IP addresses, domains and subdomains, and sender or recipient email addresses**: - **Allowlisted mail skips spam scoring but is still scanned for viruses.** IP controls and checks for banned attachments still apply. Allowlisting is not a full bypass. - In the message log, **"Allowed"** means the message passed all filters, and **"Allow Listed"** means it matched an explicit allow entry. The distinction helps when a recipient's administrator reads their logs to you. - **Sender spoof protection** rejects external mail that uses the tenant's own domain in the From header. It can be set globally or for each domain, and the global setting **overrides allowlist entries for individual users**. This is a common reason mail still bounces after "they allowlisted us": you put the recipient's own domain in the From header. - **Custom sender filters** match on **Envelope From, Header From and Reply-To**. All three identities matter, not only the visible From address. - **SPF checking is off by default** because of the DNS overhead. When it is on, it can tag or block failures, and quarantine is recommended for `none` results. **IP addresses of known forwarders bypass SPF, rate control and IP reputation checks.** **DKIM verification** uses a lot of CPU and is off by default. Barracuda warns that HTML lines over **990 characters** can break DKIM validation. **DMARC** enforcement is available through the Cloud Protection Layer. - **Invalid bounce suppression** tags outbound mail with an encrypted token and rejects bounces that lack it. This is one reason delivery status notifications (DSNs) sent to senders protected by Barracuda sometimes bounce back. - Barracuda appliances score content, and each tenant's administrator sets the spam scoring thresholds. Identical mail can therefore be tagged at one Barracuda site and pass clean at another. Barracuda rejections typically include a URL at `barracudanetworks.com/reputation` with the listed IP address. That URL leads directly to the BRBL removal form above. ## Practical guidance for senders ### Warming into B2B lists - The usual [IP warm-up](https://emailmarketing.net/learn/ip-management/ip-warm-up) logic applies, but the feedback is different. Gateways give you no postmaster dashboards and no FBLs, so **watch the bounce text and deferral rates for each receiving domain**, not engagement. - Gateways rely heavily on **static reputation at connection time** (PDR, CSI, BRBL, Spamhaus). A brand-new IP address with no history triggers deferrals and rate limits similar to greylisting; an IP address with a bad history triggers outright rejection. Check the IP address against ipcheck.proofpoint.com, `b.barracudacentral.org` and the major public blocklists **before** the first send. - B2B lists concentrate risk: one enterprise domain may be 5–10% of the list. **Warm up separately for each receiving domain**, and when a domain returns a storm of 4xx deferrals, back off for that domain alone rather than pausing everything. - Corporate lists decay faster than consumer lists (churn from job changes is commonly estimated at 20–30%/yr). Stale B2B lists hit high rates of unknown users, which gateways and their reputation feeds treat as a strong spam signal. Verify addresses thoroughly before warming up. - Warming by engagement ("send to recent openers first") barely helps here, because gateways do not watch opens. What helps is **clean authentication, with SPF, DKIM and DMARC all passing and aligned**, since gateways run explicit anti-spoofing steps early in the pipeline. Valid rDNS and HELO also help. ### Interpreting gateway bounces | Symptom | Likely meaning | Action | |---|---|---| | 5xx at connection or early in the SMTP session, citing reputation, a DNSBL, or a reputation URL | Global reputation block (PDR, CSI, BRBL or Spamhaus) | Delist through the vendor portal; fix the root cause first | | 4xx deferrals across many unrelated business domains at once | Dynamic delay in the style of PDR, or throttling of a new IP address | Slow down, verify the IP address's health, retry; delist if it persists | | 5xx citing "policy", "local policy", "prohibited by administrator", or a rule name | Tenant administrator's policy | Only the recipient organization can fix it; ask your contact to request allowlisting | | 250 accepted, recipient never sees it | Quarantine or hold, listed in a digest | The recipient searches the quarantine; the administrator releases the message and allowlists you | | Bounce on mail with the recipient's own domain in From | Sender spoof protection | Never use the recipient's domain in From; use your own authenticated domain | | DSNs sent to your bounce address bounce themselves | Invalid bounce suppression (token validation) | Expected; make sure your Return-Path handling does not loop | Always capture the **full SMTP reply text**. Gateway rejections usually name the vendor and the class of reason, and often give the exact URL for remediation. ### Why click metrics lie (security scanners) Every major gateway rewrites links and **fetches them from the vendor's infrastructure**. It does this at delivery time (sandboxing or pre-scanning), at click time (URL Defense, URL Protect, Microsoft Safe Links), and sometimes repeatedly. Each fetch hits your click-tracking redirect and is recorded as a "click". The effects, and how to detect them: - **B2B click rates are inflated and cannot be trusted** as engagement signals. A pattern of "clicked every link within 1 second of delivery" is a scanner, not a person. - Heuristics for filtering bot clicks out of event data: clicks within seconds of delivery; **all** links in a message clicked (including the unsubscribe and footer links); clicks from data-center IP ranges or from the gateway vendor's autonomous system number (ASN); HEAD requests or user agents that are not browsers; several recipients at the same domain "clicking" identically. - **Never treat a click on an unsubscribe or confirmation link as intent** from a B2B recipient, because scanners follow those links too. Use the POST behavior of [one-click List-Unsubscribe](https://emailmarketing.net/learn/list-management/list-unsubscribe), and require an explicit confirming action before any destructive change that a GET request would trigger. - With Mimecast's Warn and User Awareness interstitials, the gateway may log a real click that never reaches your page. Conversely, Browser Isolation infrastructure may fetch your page instead of the user's device. - This is the corporate counterpart of the proxy opens caused by Apple MPP. For how tracking pixels work, how MPP proxy opens behave, and how to design sunset policies on distorted data, see [Tracking and Measurement Distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion) in `operations/`. - Rewriting also affects the deliverability of forwarded mail. URL Defense breaks DKIM on the signed messages it rewrites, so any filter that checks forwarded corporate mail further along sees broken signatures. ### Asking recipients for allowlisting If a meaningful share of your list is B2B, publish an allowlisting request that the recipient's IT team can act on. Ask them to allow the following, in order of preference: 1. **Your sending IP ranges.** An allow at connection level beats content filtering, and on Barracuda an allow for a known forwarder or IP address also bypasses SPF and rate control. 2. **Your envelope-from (Return-Path) domain and your DKIM domain**, not only the friendly From address. Gateway sender filters match Envelope From, Header From and Reply-To separately. 3. **Exemption from link rewriting** for your tracking domain (in Proofpoint, "Exclude URLs that contain specified domains"; in Mimecast, exceptions in the definition), if rewriting breaks your links or your analytics matter. Set expectations with customers. On most gateways, allowlisting still leaves virus scanning, attachment blocking and IP controls active. It applies to one tenant, so it must be requested at every important recipient organization. And it does not survive the recipient switching to another gateway vendor. ### What does NOT work - Remediating engagement ("win-back campaigns to improve reputation"), because gateways do not measure engagement. - Waiting for a listing to expire. BRBL and PDR listings persist until you delist, or until the behavior behind them stops being observed. Use the portals. - Contacting the gateway vendor about a block set by a tenant's policy. Vendors act only on their own global reputation listings; the tenant owns its blocks. - Rotating IP addresses to escape a listing. Listings derived from content (PDR classifies by content; Barracuda scores content) follow the mail stream to the new IP address, and fresh IP addresses bring back the throttling problem. See [reputation monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring) for the general delisting workflow. # Comcast / Xfinity — Postmaster: Error Codes, Rate Limits, Unblocking > Comcast (comcast.net / Xfinity) sender policy: full BL/RL/ES/DM error-code table, SenderScore-based rate limits, connection and recipient limits, blocklist removal, and FBL. Source: emailmarketing.net — https://emailmarketing.net/learn/providers/comcast-xfinity-postmaster If your mail to comcast.net or Xfinity addresses is deferred or rejected, the code in the bounce tells you why and what to do next. Comcast's postmaster documentation is unusually explicit. It names the blocklists Comcast consults, publishes a table of rate limits based on SenderScore, and runs a self-service unblock form 24/7. The documentation used to live at `postmaster.comcast.net` and is now served through the Xfinity Service Policy Assurance (SPA) portal at `spa.xfinity.com/help/postmaster`. Comcast states that all its policies and thresholds are subject to change. > Where these details come from: the SPA portal is a JavaScript application, so the codes and thresholds below were captured from the archived `postmaster.comcast.net` pages (snapshots from 2021–2022) that the portal replaced. Treat the numeric thresholds as indicative, and check the current values on the live portal before a critical decision. ## Core acceptance requirements ("avoiding blocks") | Rule | Detail | |---|---| | RFC compliance | All email must comply with the relevant RFCs | | Reverse DNS | Comcast checks the reverse DNS (rDNS) of the sending IP address. It refuses connections without a valid **PTR** record plus an **MX or A** record | | Static IP addresses only | Mail from dynamic or residential IP space is not accepted. An IP address is classified as dynamic if its rDNS "does not comply with standard static naming conventions" | | DNSBLs | Comcast consults external blocklists (historically Spamhaus Zen, Cloudmark CSI, Return Path (SenderScore), and Vade (earlier documented as TrendMicro MAPS)). A listing on any of them blocks you | | List hygiene | High volumes of undeliverable mail get the IP address blocked. **Every 550 "Not our customer" must be treated as an unsubscribe** by bulk mailers | | Abuse management | Enforce acceptable use policies (AUPs) and deal with compromised accounts. Dictionary and directory harvest attacks quickly lead to IP blocks | | DMARC | Comcast validates DMARC on inbound mail and enforces the sending domain's policy (see DM000001 below). It sends daily aggregate reports from `dmarc-support@alerts.comcast.net` | ## Hard limits | Limit | Value | |---|---| | Simultaneous connections for each sending IP address | **25** | | Emails in each SMTP session | **1,000** | | Recipients for each message | **100** | | Maximum message size | **15 MB** | | Delisting requests | At most **5** for each IP address per day, and at most **20** different IP addresses per day (block removal form) | ## Rate limiting (RL codes) Traffic that is rate limited receives a **4xx temporary failure**. The correct response is to retry later, and Comcast's own advice when rate limits apply is to **shorten your retry interval**. New IP addresses must warm up: limits rise each day as a history of clean volume builds (see [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up)). | Code | Basis | |---|---| | RL000001 | Sender reputation from **SenderScore**, plus authentication of the sending server, however many domains send from it | | RL000002 | Sender reputation and volume metrics from **Cloudmark** | | RL000003 | The history of volume and of the quality of that volume; independent of the number of domains; applies to IPv4 and IPv6 | Hourly throughput by SenderScore (RL000001), as published. Two versions of the table existed, and both are shown: | SenderScore | Recipients per hour (later table) | Recipients per hour (earlier table) | |---|---|---| | N/A (no score) | 120 | 300 | | 0–15 | 1,200 | 1,200 | | 16–25 | 3,600 | 3,600 | | 26–30 | 6,000 | 7,200 | | 31–50 | 12,000 | 14,400 | | 51–70 | 24,000 | 50,400 | | 71–85 | 42,000 | 72,000 | | 86–100 | 60,000 | 86,400 | These rates are subject to successful authentication. ## Blocklist error codes (BL series) The BL code is a **bitmask of the external lists the IP address is on**. Each bit position stands for one list. Reading BLxxxxxx from right to left, the lists are Spamhaus Zen, Cloudmark CSI, the Return Path SenderScore blocklist, and the Vade Threat List (documented earlier as TrendMicro MAPS). The remedy is always the same: fix the outbound spam problem, then request removal **from the listing service itself**. Comcast copies the listing; it does not own it. | Code | Listed on | |---|---| | BL000000 | Comcast's own filters: sending patterns "characteristic of spam". Use Comcast's removal form | | BL000001 | Spamhaus Zen | | BL000010 | Cloudmark Sender Intelligence (CSI) | | BL000011 | CSI + Spamhaus Zen | | BL000100 | Return Path Reputation Network Blocklist (SenderScore) | | BL000101 | Return Path + Spamhaus Zen | | BL000110 | Return Path + CSI | | BL000111 | Return Path + CSI + Spamhaus Zen | | BL001000 | Vade Threat List (VTL) | | BL001001 | VTL + Spamhaus Zen | | BL001010 | VTL + CSI | | BL001011 | VTL + CSI + Spamhaus Zen | | BL001100 | VTL + Return Path | | BL001101 | VTL + Return Path + Spamhaus Zen | | BL001110 | VTL + Return Path + CSI | | BL001111 | VTL + Return Path + CSI + Spamhaus Zen | ## Policy error codes (ES, DM) | Code | Meaning | Remediation | |---|---|---| | ES000001 | Sending from a dynamic or residential IP address **inside Comcast's network**. Subscribers may send only through smtp.comcast.net | This block cannot be lifted. Use Comcast webmail or its submission service, or contact Commercial Services (`support_biz@cable.comcast.com`) to run a server | | ES000010 | Sending from IP space that Comcast classifies as dynamic or residential (usually because the rDNS does not look static) | Change the rDNS to a static naming convention. If your provider cannot, escalate to Customer Security Assurance | | DM000001 | The message was rejected because the **sending domain publishes DMARC `p=reject`** and the message failed both DKIM and SPF for that domain | Fix authentication and alignment (see [DMARC](https://emailmarketing.net/learn/authentication/dmarc)) | ## Generic SMTP errors | Code or text | Meaning | |---|---| | 421 Too many sessions opened | More than 25 simultaneous connections from the IP address | | 421 Reverse DNS failure : Try again later | The rDNS lookup returned SERVFAIL (the authoritative DNS is misconfigured or down). Temporary failure; retry | | 421 Try again later | Generic temporary failure; retry | | 452 Too many emails sent on this session | More than 1,000 messages in the session | | 452 Too many recipients for message | More than 100 recipients for the message | | 550 Not our customer | The recipient does not exist. Bulk mailers must treat this as an unsubscribe | | 550 …too many invalid recipients | The whole message is refused for all recipients. Clean the list and send again | | 550 Invalid sender domain | The sending domain has no valid A or MX record | | 550 Account not available | The recipient's account is currently unavailable | | 552 Message size exceeded | Larger than 15 MB | | 554 PTR lookup failure | The PTR lookup returned NXDOMAIN: the connecting IP address has no reverse DNS | ## Blocklist removal process 1. Find the code in the bounce. Every non-delivery notice (NDN) links to the FAQ that explains the block. 2. For codes from external lists (BL000001 and higher), fix the problem, then request delisting from the list operator (Spamhaus, CSI, SenderScore or Vade). Comcast honors the removal. 3. For Comcast's internal blocks (BL000000), submit the **Blocked Provider Request Form** on the postmaster portal. The required fields are your name, email address, daytime and evening phone numbers, the domain of the blocked IP address, your role (email administrator, executive, subscriber or Comcast subscriber), the blocked IP addresses, and a description of the issue. You can also state what you have done to fix it (spam filtering in place, rDNS made static and consistent). The limits are **5 submissions per day** and, according to third-party documentation, up to **20 IP addresses per day**. The form is monitored **24/7**, and simple blocks usually clear in well under an hour. 4. Escalation: **Customer Security Assurance, 888-565-4329**, referred to on the pages for ES, RL and DM codes when self-service cannot resolve the problem. ## Feedback loop (FBL) - Sign up at **feedback.comcast.net**. Registration can be based on **IP addresses or on DKIM** (the DKIM option launched as a beta). - Reports use the **Abuse Reporting Format (ARF)** and are generated when a user clicks "This is Spam". They include the full message headers, but the complainant's address is removed and is never restored. - You must be the party responsible for the sending server. On shared servers, the owner of the server should sign up. - The historical acceptance criteria were: a SenderScore of **≥ 60** accepted; **30–60** accepted only if the IP address is on no DNSBL; **< 30** rejected. A refusal comes with an explanation and the steps to fix the problem, and you can apply again at any time. - Comcast reserves the right to stop sending feedback to any party at any time. ## Comcast's outbound infrastructure (for receivers) Consumer mail leaves from the hosts `resqmta-*.sys.comcast.net` and `resdmta-*.sys.comcast.net` (published ranges 96.103.146.x, 96.102.19.x and 96.102.200.x) and from the IPv6 ranges 2001:558:fd00::/…. Bulk messaging goes through a separate platform (MDP) at 96.114.127.0/27 and 68.87.28.32/27, plus two IPv6 /120s. Check the live portal for the current list. # Gmail Email Sender Guidelines > Google's requirements for delivering to personal Gmail accounts — authentication, spam-rate thresholds, one-click unsubscribe, bulk-sender rules, and the enforcement timeline. Source: emailmarketing.net — https://emailmarketing.net/learn/providers/gmail-sender-requirements If you send mail to **personal Gmail accounts**, meaning addresses ending in `@gmail.com` or `@googlemail.com`, Google's Email Sender Guidelines set out what you must do for that mail to be accepted and delivered. The requirements have been enforced since **February 1, 2024**, and have become stricter over time (see [Enforcement timeline](#enforcement-timeline)). Scope: - The guidelines and Google's enforcement apply **only to mail sent to personal Gmail accounts**. Messages sent to Google Workspace accounts are not covered. However, all senders, including Google Workspace users, must meet the guidelines when they send to personal Gmail accounts. - Google Workspace senders who send large volumes are also subject to the Gmail Spam and abuse policy. ## Who counts as a bulk sender > "A bulk sender is any email sender that sends close to 5,000 messages or more to personal Gmail accounts within a 24-hour period." How this works: - **Volume is counted for each primary (organizational) domain, including its subdomains.** Google's example: 2,500 messages a day from `solarmora.com` plus 2,500 a day from `promotions.solarmora.com` make a bulk sender, because all 5,000 came from the primary domain `solarmora.com`. - **Bulk sender status is permanent**: "Bulk sender status doesn't have an expiration date." Falling below 5,000 a day later does not remove the status. - Note the words "close to 5,000". Do not treat 4,999 as safe. ## Requirements for ALL senders (any volume) | Area | Requirement | |---|---| | Authentication | Set up **SPF or DKIM** for your sending domains | | DNS | Valid **forward and reverse DNS** (PTR) records for sending IP addresses. The sending IP address must match the IP address of the hostname in its PTR record, and the forward lookup (A or AAAA) of that hostname must resolve back to the same IP address | | Transport | Use a **TLS connection** to transmit email (no specific TLS version is stated) | | Spam rate | Keep the user-reported spam rate in Postmaster Tools **below 0.10%**, and **never let it reach 0.30% or higher** | | Message format | Comply with **RFC 5322** (Internet Message Format) | | From header | Do not impersonate Gmail in `From:` headers. Gmail applies a **DMARC quarantine** enforcement policy on `gmail.com`, so spoofing it will hurt delivery. Use a single email address in the `From:` field | | Message-ID | Every message needs a valid `Message-ID:` header | | Headers | Headers that may appear only once (`From`, `To`, `Subject`, `Date`) must appear exactly once. No duplicate or malformed headers | | Content | No content hidden with HTML or CSS. Web links must be visible and understandable. HTML must conform to standards. Do not mix different types of content (for example, a receipt with promotions) in one message | | Forwarding | If you regularly forward mail or run a forwarding service (mailing lists, gateways), follow Google's *Best practices for forwarding email to Gmail*. Add **ARC headers** so that Gmail can see the original authentication results, and keep the original authentication intact where possible | ## Additional requirements for bulk senders (≈5,000+/day) Everything above, **plus**: | Area | Requirement | |---|---| | Authentication | **Both SPF and DKIM**, not one or the other | | DMARC | Publish a **DMARC record** for the `From:` domain. A minimum policy of `p=none` is acceptable | | Alignment | For direct mail, the `From:` header domain must be **aligned** with the SPF domain or the DKIM domain (relaxed alignment on the organizational domain is enough) | | DKIM key | A key of at least **1024-bit**. **2048-bit** is recommended | | One-click unsubscribe | Marketing and subscribed (promotional or commercial) messages must support **RFC 8058 one-click unsubscribe** with both headers:
`List-Unsubscribe: `
`List-Unsubscribe-Post: List-Unsubscribe=One-Click` | | Visible unsubscribe | A clearly visible unsubscribe link in the message body as well | | Honor unsubscribes | Process unsubscribe requests within **48 hours** | Details of one-click unsubscribe, from Google's FAQ: - It is required only for **marketing and promotional** messages. Transactional messages are excluded. - A `mailto:` `List-Unsubscribe` on its own does **not** meet the requirement, because RFC 8058 requires the HTTPS POST mechanism. - Other unsubscribe links in the message body do not have to be one-click. - One-click unsubscribe may remove the recipient from that specific mailing list only, not necessarily from all mail from the sender. ## Enforcement timeline | Date | What changed | |---|---| | **February 1, 2024** | The requirements take effect for senders to personal Gmail accounts. Bulk senders (5,000+/day) must authenticate with SPF, DKIM and DMARC, avoid unwanted mail, and make unsubscribing easy. Enforcement began as "gradual and progressive": first temporary errors on part of the non-compliant traffic, then rising rejection rates | | **June 1, 2024** | Deadline for senders that already include an unsubscribe link to add **one-click unsubscribe** to all commercial and promotional messages | | **June 2024** | Bulk senders with a user-reported spam rate **> 0.3%** become **ineligible for mitigation** (escalations to delivery support) | | **November 2025** | Gmail is "ramping up its enforcement on non-compliant traffic". Non-compliant messages meet disruptions, including **temporary and permanent rejections** | ### Mitigation eligibility Google's escalation (mitigation) form for bulk senders only helps senders who already comply: - A sender is ineligible while its user-reported spam rate is **> 0.3%**. - Eligibility returns once the spam rate stays **below 0.3% for 7 consecutive days**. - Full authentication (SPF, DKIM, DMARC) and a working one-click unsubscribe are prerequisites. - The spam rate and other Postmaster Tools data are calculated and updated **daily**. ## Non-compliance error codes Gmail reports failures to meet the guidelines with 4.7.x temporary errors (rate limiting), which escalate to 5.7.x permanent rejections. All Gmail SMTP errors carry the identifier `gsmtp` (and `gcdp` when a Workspace administrator's custom rule caused them). | Requirement failed | Temporary (rate-limited) | Permanent (blocked) | |---|---|---| | PTR or reverse DNS | 451-4.7.23 (also 421-4.7.0 "no PTR record") | 550-5.7.25 | | SPF or DKIM (unauthenticated) | 421-4.7.26 | 550-5.7.26 | | SPF failed | 421-4.7.27 | 550-5.7.27 | | DKIM failed | 421-4.7.30 | 550-5.7.30 | | No DMARC record | 421-4.7.40 | 550-5.7.40 | | From: not aligned with SPF or DKIM | 421-4.7.32 | 5.7.32 | | No TLS | 421-4.7.29 | 550-5.7.29 | | Unusual or unsolicited volume | 421-4.7.28 | 550-5.7.28 | | Suspicious SPF record entries | 451-4.7.24 | 550-5.7.24 | | IPv6 sending guidelines (PTR or authentication) | None | 550-5.7.1 "does not meet IPv6 sending guidelines" | The full list of errors, including format and reputation errors, is in [Gmail troubleshooting](https://emailmarketing.net/learn/providers/gmail-troubleshooting). To recover from rate limiting (SMTP 4.7.28 quota errors): wait at least **10 minutes**, then resume with a **single connection**. If that works, add connections **one at a time**. If the single connection still fails, wait another 10 minutes. ## Sending-practice recommendations (non-binding but weighted) - Send from **consistent IP addresses**. Use different IP addresses for different types of message (for example, notifications and promotions), and consistent `From:` addresses for each category. See [Advanced IP segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation). - Increase volume **gradually**, at steady rates, and avoid bursts. See [IP warm-up](https://emailmarketing.net/learn/ip-management/ip-warm-up). - On **shared IP addresses**, every sender's activity affects the shared reputation. Monitor the IP address against blocklists and in Postmaster Tools. - Do not buy email lists, send unsolicited mail, or use opt-in forms with pre-checked boxes (regional law may prohibit them). - Monitor **affiliates** and drop any that send spam: "If your brand is associated with marketing spam, other messages sent by you might be marked as spam." ### Display name rules A sender's display name must identify only that sender, and reflect a consistent, clear and accurate identity. The display name must not contain subject-line text or message content ("URGENT REQUEST", "TIME IS RUNNING OUT"), deceptive emoji, the recipient's own name, or anything that imitates a threaded conversation (deception in the style of "Re:"). ## Compliance verification Use [Google Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools), in particular the **Compliance status dashboard**, to check each requirement, and the Spam Rate dashboard to track the thresholds of 0.10% and 0.30%. After a fix, changes in compliance status can take up to 7 days to appear. ## Related articles - [DMARC](https://emailmarketing.net/learn/authentication/dmarc), on SPF, DKIM, DMARC and alignment - [Yahoo sender requirements](https://emailmarketing.net/learn/providers/yahoo-sender-requirements) - [Microsoft sender requirements](https://emailmarketing.net/learn/providers/microsoft-sender-requirements) - [Google Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools) # Gmail Filtering Internals > How Gmail actually decides placement — per-domain authenticated-sender reputation, ML/LLM spam and phishing classification, tabbed-inbox categorization, and the per-user personalization signals that make one-size diagnosis impossible. Source: emailmarketing.net — https://emailmarketing.net/learn/providers/gmail-filtering-internals If your mail reaches the inbox for some Gmail users and the spam folder for others, the reason lies in how Gmail decides placement. The [Gmail sender requirements](https://emailmarketing.net/learn/providers/gmail-sender-requirements) tell you what Gmail checks. What follows is what Gmail does with the result. Two facts dominate, and they explain why Gmail deliverability resists one-size-fits-all diagnosis: 1. **Reputation is computed on the authenticated sending domain, not on the IP address.** This is the reverse of most receivers, which center reputation on IP addresses. Authentication is the prerequisite that makes a message possible to score at all. 2. **Placement is learned for each user.** The same message from the same sender can reach the inbox for one recipient and the spam folder for another, because Gmail lets a user's own history of reporting and marking override the sender's general reputation. There is no single answer to "am I reaching the inbox at Gmail?", only a distribution across recipients. This is documented rather than inferred, mainly from Google's own research (Taylor, CEAS 2006; Taylor, Fingal and Aberdeen, NIPS 2007) and from its help and blog pages. The 2006 paper describes a system from the beta period, and the mechanisms have since been rebuilt on machine learning (see [ML classification](#ml-spam-and-phishing-classification)). But the paper is the only place where Google has set out the logic of reputation concretely, and its principles still describe how the system behaves: scoring on the authenticated domain, self-correction through user votes, and a middle band handed to a statistical filter. Treat the formulas as illustrations of the model, not as the code that runs today. ## The authenticated-domain reputation model Source: **"Sender Reputation in a Large Webmail Service"**, by Bradley Taylor of Google, CEAS 2006 (Third Conference on Email and Anti-Spam). Gmail launched as a beta in April 2004, and the paper describes the reputation system built during that beta. ### Why the domain, not the IP Google rejected IP reputation as the primary key because the IP "is a crude form of authentication". The same sender may not always use the same IP. Because of forwarding, the connecting IP is not always the true sender. IP addresses in `Received` headers cannot be authenticated reliably. And when several domains share a set of IP addresses, one spamming domain "can ruin the reputation for all the other domains." Gmail therefore classifies mail by **who is sending (the authenticated domain)** rather than by **what the content is**. The paper noted Gmail as "the only one" of the major reputation systems that worked on the authenticated domain rather than the IP. These are the authentication methods used to establish the domain, and how they were distributed in the mail arriving at Gmail: | SPF authentication method | Share of SPF-authenticated mail | Mechanism | |---|---|---| | Plain SPF | 52% | A published SPF record | | Best-guess SPF | 38% | No SPF record, or a failing one: assume the mail is authenticated if the sending IP is in the same range as the domain's A or MX records, **or** if the reverse DNS name of the sending IP matches the domain claimed in the email | | PTR zone | 10% | If plain and best-guess SPF both fail, and the sender is a subdomain of the DNS zone of the PTR, treat the mail as if it came from the zone itself (for example, `subdomain.example.com` from an IP with the PTR `host.example.com`) | DomainKeys, the predecessor of DKIM, was the other signal. Gmail adopted it early, partly because SPF breaks under forwarding while a signature survives. Google's recommendation, then and now, is to **implement both**, so that if forwarding or changes to the message break one, the other still authenticates: "if both are present, it is that much stronger of an authentication signal." Authentication rates were very different for wanted and unwanted mail, so authentication is itself a reputation signal: | Method | Nonspam (wanted) | Spam (unwanted) | |---|---|---| | Both SPF and DomainKeys | 20% | 1.5% | | SPF only | 53% | 39% | | DomainKeys only | 1% | 0.5% | | Not authenticated | 26% | 59% | | **Authenticated (any)** | **about 75%** | **about 40%** | ### How the reputation number is computed Every delivered message logs an event with its classification and authentication. Four counters accumulate for each authenticated domain: | Variable | Meaning | |---|---| | `autononspam` | times mail from this sender went to the inbox automatically | | `autospam` | times mail from this sender went to the spam folder automatically | | `manualnonspam` | times a user hit **Not Spam** on this sender | | `manualspam` | times a user hit **Report Spam** on this sender | Reputation is a number in the range **0–100**: "you can think of the reputation as the probability that a given sender's mail is not spam." 0 is the most spammy, and 100 the least. ``` good = autononspam + manualnonspam − manualspam total = autospam + autononspam reputation = 100 × good / total ``` The refined version limits the manual terms, so that a small number of votes cannot dominate, and guards against division by zero (if `total = 0`, there is no reputation): ``` manualnonspam2 = min(autospam, manualnonspam) manualspam2 = min(autononspam, manualspam) good2 = autononspam + manualnonspam2 − manualspam2 reputation = 100 × good2 / total ``` Worked examples from the paper: - `weliketospam.com` sends 100 spam messages. 60 land in the spam folder automatically and 40 get into inboxes as false negatives, which gives a reputation of **40**. When 30 users then mark the spam that was missed, the reputation drops to **10**. - `weneverspam.com` sends 100 messages. 5 wrongly go to the spam folder as false positives, which gives a reputation of **95**. When 3 users unmark them, the reputation rises to **98**. The reputation also works as an expected false-positive rate. For a sender with a reputation of 2, with the spam-folder threshold set below a reputation of 5, "about 2% of the time you'll have false positives on that sender's mail." ### Self-correction, vote-weighting, and recovery dynamics - Reputations are computed **over many days**, so a solid domain "can build up a very solid reputation" and "a little blip of spam ... is absorbed as noise." The other side is that a domain that spams for a long time and later cleans up **takes a few days to recover**. - **Both the Report Spam and the Not Spam buttons are critical.** With only spam reports as input, the reputation has no way to move back up after a filter mistake, so it cannot correct itself. Google calls having both buttons "critical for the success" of the system. - **Not every user votes, and votes are rate-limited.** Only a subset of users, "the ones that will provide the best information", are counted, and users who never report spam or nonspam are excluded. To stop users with heavy mail from dominating, each user is limited to **one spam report per domain per hour**, that is, up to **24 votes per domain per day**. ### How the reputation is used (the three-way split) After authenticating the sender and computing the domain reputation, Gmail acts as follows: 1. A reputation **above a threshold** sends all of the sender's mail to the **inbox**. 2. A reputation **below a threshold** sends all of it to the **spam folder**. 3. **In between (or unknown)**, the message goes, with the reputation value, to a **statistical spam filter that makes the final judgement** on content. Crucially, **a user can override the general policy for individual sender addresses**. This is the documented reason why placement differs between users. ### What the reputation distribution looked like - Spammy domains cluster tightly around **0**, and domains with wanted mail cluster in the **90–100** range. For legitimate bulk senders, a score **below 90** is "a reflection of less-than-ideal sending practices". Hygiene that is not quite good shows up as a middling score, not as a zero. - Selected domain reputations (2006, illustrating the model): `aol.com` 98.5; `yahoo.com` 95.6 with SPF and 95.0 with DomainKeys (DK); `hotmail.com` 95.4; `ebay.com` 95.2 with SPF against 98.2 with DomainKeys; `earthlink.net` 93.3 with SPF against 98.0 with DK. Domains flagged as spam scored 1.5–3.3. - The gap between SPF and DomainKeys for `ebay.com` is instructive. eBay signed only its transactional mail with DomainKeys, and transactional mail "would likely be more wanted by users than other mail," so the signed stream scored higher. This is an early illustration of **stream separation** paying off (see [advanced IP segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation) and [sending infrastructure practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices)). ### Documented failure modes and the sender rules that follow The paper calls out these problems, and all of them are still live concerns: - **Forwarding:** users forward mail (including spam) with tools such as `procmail` that rewrite the envelope sender. The forwarded spam then authenticates as the forwarder, and "hurts the reputation of the forwarding domain unfairly." The rule that follows is not to authenticate mail you are only forwarding unless you have filtered out the spam first, because signing it means taking responsibility for the resulting stream. [ARC](https://emailmarketing.net/learn/authentication/arc) later addressed the same problem. - **Mailing lists:** a list domain (the paper's example is Yahoo Groups, signed as `yahoogroups.com`) can have a good overall reputation while individual groups within it send spam, so blanket trust "will allow some spam through." Users also often find **reporting a list as spam easier than unsubscribing**, which hurts the list sender's reputation "worse than it needs to be". This is an argument for a prominent unsubscribe option with little friction (see [List-Unsubscribe](https://emailmarketing.net/learn/list-management/list-unsubscribe)). Sender policies the paper recommends: 1. Authenticate with **both** SPF and DomainKeys or DKIM (you may already have best-guess SPF implicitly). 2. **Do not authenticate mail you are only forwarding**, unless you filtered out spam first. 3. Keep spammers and zombie machines off your network, and follow good practices for bulk sending: "if a sender is doing something bad such as using single opt-in instead of double opt-in, it simply translates into a poor reputation and a greater likelihood of ending up in the spam folder." **Users enforce Gmail's bulk guidelines** through the reputation, not a rulebook. ## ML spam and phishing classification The reputation model above answers the question "is this sender trusted?". For everything in the ambiguous middle band, the verdict on content comes from machine learning (ML) classifiers that have been rebuilt and scaled up repeatedly. - **"The War Against Spam: A Report from the Front Line"** (Taylor, Fingal and Aberdeen, NIPS 2007 Workshop on Machine Learning in Adversarial Environments) presents Gmail's spam filtering as a real-world success story for adversarial machine learning: the overwhelming majority of spam is positively identified, with high precision (few false positives). The adversarial framing matters. Spammers adapt, so filters must retrain continuously instead of running a fixed set of rules. - **2014: a rebuild at TensorFlow scale.** Google's rule-based filters had reached about 99% accuracy. From 2014, Google added **machine learning algorithms built on TensorFlow** that "continuously regenerate" the spam filters, finding new patterns and adapting "far quicker than previous manual systems." The reported outcome: **more than one billion Gmail users avoid spam**, at roughly **99.9%** effectiveness. - **Claims about the security model in 2017** (Google, May 31 2017): **over 99.9% accuracy** in blocking spam and phishing, and **50–70% of all mail Gmail receives is spam**. Classifiers combine **thousands of signals for spam, malware and ransomware** with **heuristics on attachments** and **sender signatures**. Phishing defenses combine **Google Safe Browsing** with **analysis of the reputation and similarity of URLs**. A model for early phishing detection can **selectively delay** risky messages for deeper analysis, which affects **less than 0.05% of messages on average**. Warnings at click time, warnings on replies to external recipients, and defenses against ransomware and polymorphic malware complete the picture. - **2024: large language model classifiers.** Google deployed **a large language model (LLM) trained on phishing, malware and spam** that blocks **20% more spam** and reviews **1,000× more spam reported by users each day**, together with a second "supervisor" model that evaluates **hundreds of threat signals** when a risky message is flagged. See [holiday tightening](#holiday-period-tightening) below. What this means for senders: the classifier is a moving target, trained on everything users report. There is no content allowlist to satisfy, because the filter optimizes for what users treat as wanted. This is the mechanism behind the guidance in [content and design for deliverability](https://emailmarketing.net/learn/operations/content-and-design-for-deliverability): avoid spam patterns and optimize engagement, rather than follow a keyword checklist. ## Inbox categorization (the tabs) Categorization is a **separate decision, made after acceptance**, from the verdict between inbox and spam. A message that has already earned the inbox is then sorted into one of five default categories (in Gmail's "Default" inbox type). **Landing in a category tab other than Primary is not a deliverability failure.** Promotions is the inbox, not spam. | Category | Google's definition | |---|---| | **Primary** | "Emails from people you know and messages that don't appear in other tabs." | | **Social** | "Messages from social networks and media-sharing sites." | | **Promotions** | "Deals, offers, and other promotional emails." | | **Updates** | "Automated confirmations, notifications, statements, and reminders that may not need immediate attention." | | **Forums** | "Messages from online groups, discussion boards, and mailing lists." | Mechanics: - Users turn categories on or off in **Quick Settings**, then **Default inbox type**, then **Customize**. Turning categories off entirely requires switching to a different inbox layout. Because the recipient controls which tabs exist, a sender cannot assume that a given recipient even has a Promotions tab. - **Senders cannot choose a tab in advance.** Recipients move messages between tabs by **drag and drop** (with an Undo), which teaches Gmail their preference so that it will "sort your email more accurately" over time. This is another override by the individual user. - Asking engaged readers to drag your mail to Primary is legitimate and effective. See [content and design](https://emailmarketing.net/learn/operations/content-and-design-for-deliverability) for the content factors (personalization, a conversational style, a limited number of images and links) that push mail toward Primary rather than Promotions. ### Category prediction as an ML problem Source: **"Email Category Prediction"**, by Zhang, Garcia Pueyo, Wendt, Najork and Broder (Google, WWW 2017 Companion). The key points for senders: - **About 90% of consumer email is generated by machines.** Categorization targets templated mail (shopping receipts, promotional campaigns, booking confirmations, bill reminders), not mail between people. - The approach uses **template discovery** and the **"causal threads"** of email sequences, because legitimate machine mail follows predictable patterns (an order, then a shipping confirmation, then a delivery alert). Predictable sequences that match their templates classify cleanly; erratic structure does not. - Comparison of models: **neural networks (multilayer perceptrons, or MLPs, and long short-term memory networks, or LSTMs) far outperform** a Markov chain baseline, with **LSTMs slightly ahead of MLPs**. The applications named include filling calendars, shipment alerts, targeted advertising and spam detection, so categorization feeds back into filtering. ## Per-user personalization signals Beyond the vote on spam and nonspam, Gmail runs an **importance** model for each user, and spam controls for each user. These are the mechanisms that make placement individual. **Importance markers** (help topic "Importance markers in Gmail"). Gmail predicts which messages matter to each user from: - how often the user communicates with the sender (frequency); - which messages the user opens and replies to; - **keywords in the emails the user usually reads**; - interactions: starring, archiving, deleting. Users see a yellow importance marker, can correct it (which trains the model), and can find flagged mail with `is:important`. A user can turn off predictive marking ("Don't use my past actions to predict which messages are important") or hide the markers entirely. These settings are changed in the browser but apply across the apps. **Spam controls that feed personalization** (help topic on how Gmail sorts spam): | User action | Effect on future placement | |---|---| | **Report spam** | The message is added to Spam; "as you report more spam, Gmail identifies similar emails as spam more efficiently." Google receives a copy and may analyze it to protect all users. | | **Not spam** | Recovers the message and teaches Gmail that this sender is wanted (the `manualnonspam` vote). | | **Block sender** | "Even when you remove their emails from Spam, Gmail still automatically identifies their emails as spam." A hard override for that user. | | **Add sender to Google Contacts** | "Gmail stops sending their messages to Spam." A hard allow for that user. | | **Unsubscribe** | Offered inline for senders the user opted in to. A less damaging exit than Report Spam. | | **Filters** | Rules the user creates can label or prioritize a sender's mail. | The common thread: **the recipient's own history can override the sender's overall reputation in both directions.** A sender with a strong domain reputation still lands in spam for any recipient who blocked them or repeatedly reported them. A sender with a weak reputation reaches the inbox for recipients who added them to Contacts or clicked Not Spam. ## Holiday-period tightening Google publicly tightens its filters around periods of heavy fraud. For the **2024 holiday season** (blog post, Dec 2024): - Gmail blocks **more than 99.9% of spam, phishing and malware**. - The newly deployed **LLM classifier** and **supervisor model** (see [ML classification](#ml-spam-and-phishing-classification)) launched **before Black Friday**. - Result: users reported **35% fewer scams** reaching inboxes in the first month of the holiday season, compared with the previous year. - The holiday scam patterns Gmail strengthened its defenses against: **invoice scams** (fake invoices that invite the recipient to phone a number to dispute them), **celebrity scams** (impersonation or false endorsement), and **extortion scams** (threats that cite a home address or a personal detail). What this means for senders: filter thresholds are **not constant throughout the year**. A stream with a borderline reputation that reaches the inbox in a quiet month can tip into spam during a tightening period. Build a margin of reputation before Q4, and do not launch new streams or re-warm into the holiday peak. ## Sender takeaways: what actually moves Gmail placement 1. **Authenticate so that your mail can be scored, then build the domain's reputation.** Use SPF and DKIM aligned to the [From domain](https://emailmarketing.net/learn/providers/gmail-sender-requirements). Reputation attaches to that authenticated domain, not to your IP. Unauthenticated mail mostly cannot be scored, and it correlates with spam (about 60% of spam is unauthenticated, compared with about 26% of wanted mail). 2. **The one metric that directly drives the model is the user's spam vote.** Report Spam pushes reputation down; Not Spam and adding the sender to Contacts push it up. Keep the spam rate in [Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools) below **0.10%**, and never let it reach **0.30%**. Those are the [sender requirement](https://emailmarketing.net/learn/providers/gmail-sender-requirements) thresholds that correspond to this vote. 3. **Reputation changes slowly in both directions.** Days of consistent behavior build it, a single bad blip is absorbed as noise, and recovery after sustained abuse "takes a few days." There is no overnight fix; see [reputation incident recovery](https://emailmarketing.net/learn/operations/reputation-incident-recovery). 4. **Separate your streams.** Even in 2006, transactional mail signed separately from marketing mail scored higher, because recipients want the two streams to different degrees. Segment by [sending domain or subdomain](https://emailmarketing.net/learn/operations/sending-infrastructure-practices) and by content type. 5. **Categorization is not deliverability.** Promotions is the inbox. Improve tab placement with content (personalization, a conversational tone, fewer images and links), not by trying to game the classifier: you cannot choose a tab in advance. 6. **Personalization for each user defeats one-size-fits-all diagnosis.** Importance markers, blocks, Contacts and overrides for individual addresses all apply recipient by recipient, so "where does my mail land at Gmail?" has no single answer, only a distribution. Seed inbox tests sample a handful of fresh accounts with no history of their own, and therefore **cannot represent** what an engaged (or disengaged) real recipient sees. Trust the trends in aggregate reputation and spam rate in Postmaster Tools over any screenshot of a single inbox (see [tracking and measurement distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion)). > Note on sources: Gmail help answer **6596** ("Gmail inbox tabs and categories") overlaps with the Gmail tabs guidance in [Content and Design](https://emailmarketing.net/learn/operations/content-and-design-for-deliverability) and with the categorization material above. It was not used separately, because it adds nothing beyond answer 3094499, which is already cited. ## Related articles - [Gmail Sender Requirements](https://emailmarketing.net/learn/providers/gmail-sender-requirements), the checkable rules and spam rate thresholds that feed this model - [Gmail SMTP Troubleshooting](https://emailmarketing.net/learn/providers/gmail-troubleshooting), including the messages for reputation blocks - [Google Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools) - [Content and Design for Deliverability](https://emailmarketing.net/learn/operations/content-and-design-for-deliverability) - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability) - [ARC](https://emailmarketing.net/learn/authentication/arc), the later fix for the forwarding problem described in the 2006 paper # Gmail SMTP Errors and Troubleshooting > Complete catalog of Gmail SMTP reply codes with their enhanced status codes, meanings, and fixes. Source: emailmarketing.net — https://emailmarketing.net/learn/providers/gmail-troubleshooting When Gmail rejects, defers or rate-limits your mail, the SMTP reply tells you why and what to fix. Google publishes the full list of reply codes its servers return for inbound mail, collected below with their meanings and fixes. Every error that Gmail generates ends with the identifier **`gsmtp`**. Errors that also contain **`gcdp`** were triggered by a custom rule that a Google Workspace administrator set up on the receiving domain, not by Gmail's own filtering. General rules of thumb: - **4xx** codes are temporary, so retry later. Many 4.7.x codes are deliberate **rate limiting**, which escalates to a permanent 5.7.x block if you do not fix the underlying problem. - **5xx** codes are permanent for that message. Fix the cause before you send again. - The 4.7.x and 5.7.x pairs about compliance (SPF, DKIM, DMARC, TLS, PTR, alignment) map directly to the [Gmail sender requirements](https://emailmarketing.net/learn/providers/gmail-sender-requirements#non-compliance-error-codes). ## Temporary failures (4xx) | Code | Message (abridged) | Meaning and fix | |---|---|---| | 450-4.2.1 | User "is receiving email too quickly" / "at a rate that prevents delivery" | Rate limit on the recipient's side; resend later | | 450-4.2.1 | "Peak SMTP relay limit exceeded for this customer" | Workspace SMTP relay limit; contact the account administrator | | 452-4.2.2 | "The recipient's inbox is out of storage space" | The recipient must free up Google storage | | 421-4.3.0 | "Temporary System Problem. Try again later" | Issue on Google's side; retry | | 451-4.3.0 | "Email server has temporarily rejected this message" | Retry later | | 451-4.3.0 | "Multiple destination domains per transaction is unsupported" | Send to one destination domain per SMTP transaction (RFC 5321) | | 451-4.4.2 | "Timeout - closing connection" | Network or session timeout; retry | | 421-4.4.5 | "Server busy, try again later" | Retry with backoff | | 451-4.5.0 | "SMTP protocol violation" | Fix how the client handles the protocol, following RFC 5321 | | 452-4.5.3 | "Domain policy size per transaction exceeded" | Retry that recipient in a separate transaction | | 452-4.5.3 | "Your message has too many recipients" | Reduce the number of recipients per message | | 421-4.7.0 | "Connection expired, try reconnecting" / "Try again later, closing connection" | Reconnect and retry | | 421-4.7.0 | "IP not in whitelist for RCPT domain" | The receiving (Workspace) domain accepts only allowlisted IP addresses | | 421-4.7.0 | "The IP address sending this message does not have a PTR record" | Add matching PTR and forward DNS records | | 421-4.7.0 | "TLS required for RCPT domain, closing connection" | Deliver over TLS | | 421-4.7.0 | "This message is suspicious due to the very low reputation of the sending IP / sending domain" | Reputation block; see reputation recovery below | | 421-4.7.0 | "This message is suspicious due to the nature of the content" | Content flagged; review the message content | | 454-4.7.0 | "Too many login attempts" / "Cannot authenticate due to a temporary system problem" | Throttling of client authentication; retry later | | 451-4.7.23 | "The sending IP address for this message doesn't have a PTR record" | Add a PTR record | | 451-4.7.24 | "The SPF record of the sending domain has one or more suspicious entries" | Clean up the SPF record (remove compromised or suspicious includes) | | 421-4.7.26 | "Rate limited because it is unauthenticated" | Set up SPF or DKIM | | 451-4.7.26 | "Unauthenticated email from *domain* is not accepted due to domain's DMARC policy" | The DMARC policy of the From: domain itself rejects unauthenticated use; authenticate with aligned SPF or DKIM | | 421-4.7.27 | "Rate limited because SPF authentication didn't pass" | Fix SPF | | 421-4.7.28 | "Unusual rate of email" from your IP address / IP netblock / DKIM domain / SPF domain / a URL domain in the body; or "sender exceeded the quota" | Rate limiting for spam patterns, keyed to that identifier. To recover, wait ≥10 minutes, resume with one connection, and add connections one at a time | | 421-4.7.29 | "Rate limited because you're not using a TLS connection" | Turn on TLS | | 421-4.7.30 | "Rate limited because DKIM authentication didn't pass" | Fix DKIM | | 421-4.7.32 | "Rate limited because the From: header isn't aligned" with the SPF or DKIM domain | Achieve DMARC alignment; see [DMARC](https://emailmarketing.net/learn/authentication/dmarc) | | 421-4.7.40 | "Rate limited because the sending domain doesn't have a DMARC record" | Publish a DMARC record (at minimum `p=none`) | ## Permanent failures (5xx) ### Recipient and addressing | Code | Message (abridged) | Meaning and fix | |---|---|---| | 550-5.1.1 | "The email account that you tried to reach does not exist" | Hard bounce: remove the address and check for typos | | 553-5.1.2 | "We weren't able to find the recipient domain" | Bad domain; check the spelling and the MX record | | 553-5.1.3 | "The recipient address is not a valid RFC 5321 address" | Fix the address syntax | | 553-5.1.7 | "The sender address is not a valid RFC 5321 address" | Fix the syntax of the envelope sender | | 550-5.2.1 | "The email account that you tried to reach is inactive" | Disabled account; suppress it | | 550-5.2.1 | User "is receiving email at a rate that prevents delivery" | Rate limit on the recipient | | 552-5.2.2 | "The recipient's inbox is out of storage space and inactive" | Suppress, or wait | | 550-5.4.5 | "Daily user sending limit exceeded" / "Daily SMTP relay limit exceeded for user" | Outbound limits of Gmail or Workspace reached | | 554-5.4.6 | "Message exceeded 50 hops" | Probably a mail loop; investigate forwarding chains | | 550-5.5.3 | "Too many recipients for this sender" | Reduce the number of recipients | ### Size limits | Code | Message (abridged) | Meaning and fix | |---|---|---| | 552-5.3.4 | Message exceeded size limits | The whole message is too large | | 552-5.3.4 | "The number of attachments exceeds Google's limit" | Send fewer attachments | | 552-5.3.4 | Header size limits exceeded: total headers, a header value, a header name, or the `Subject:` header | Shrink the headers | ### Protocol and session | Code | Message (abridged) | Meaning and fix | |---|---|---| | 502-5.5.1 | "Unimplemented command" / "Unrecognized command" / "Too many unrecognized commands, goodbye" | Fix the behavior of the SMTP client | | 503-5.5.1 | "Bad sequence of commands" / "EHLO/HELO first" / "RCPT first" / "No DATA after BDAT" (RFC 3030) | A bug in the order of commands in the client | | 501-5.5.2 / 555-5.5.2 | "Syntax error" | Malformed SMTP command | | 501-5.5.4 | "HELO/EHLO argument invalid" / "Empty HELO/EHLO argument not allowed" | Send a valid fully qualified domain name (FQDN) in HELO or EHLO | | 530-5.7.0 | "Must issue a STARTTLS command first" (RFC 3207) / "Authentication required" | Start TLS, or authenticate, before sending | | 523-5.7.10 | "No commands allowed to pipeline after STARTTLS" | Violation of RFC 3207 | | 501-5.7.11 | "Syntax error (no parameters allowed)" | Violation of RFC 3207 | | 554-5.7.0 | "Too many unauthenticated commands" | Session terminated | | 503-5.7.0 | "No identity changes permitted" | Do not switch the authenticated identity during a session | ### Content, format, and policy | Code | Message (abridged) | Meaning and fix | |---|---|---| | 554-5.6.0 | "Email message is malformed. Not accepted" | Fix compliance with RFC 5322 | | 552-5.7.0 | "Content presents a potential security issue" | Blocked attachment or file type (see Gmail's list of blocked file types) | | 550-5.7.1 | "The user or domain that you are sending to has a policy" prohibiting the mail | Policy of the receiving Workspace domain (`gcdp` errors); contact the recipient's administrator | | 550-5.7.1 | "This message is likely unsolicited email" / "likely suspicious due to the very low reputation" of the sending IP or domain | Spam or reputation block; see recovery below | | 550-5.7.1 | RFC 5322 violations: a missing or invalid `From:`, multiple `From:` headers, multiple addresses in `From:`, no valid `Message-ID:`, duplicate headers, a malformed header, a non-compliant `From:` value, encoded-word syntax in a header, a Unicode character in a header that does not allow it | Fix how messages are generated, following RFC 5322 | | 550-5.7.1 | "This message does not meet IPv6 sending guidelines" | Over IPv6, PTR records and authentication are mandatory; fix them or send over IPv4 | | 550-5.7.1 | "This email has been rate limited" | Sending or receiving limits | | 550-5.7.1 | "The IP you're using to send email is not authorized" | Mail sent directly from a dynamic or consumer IP address; relay through your provider's SMTP server instead | | 550-5.7.1 | "Invalid credentials for relay" / "Daily SMTP relay sending limit exceeded for this customer" | Configuration or limits of the Workspace SMTP relay | | 550-5.7.0 | "Email relay denied" (invalid credentials or suspended account) | Register the sending IP address in the Workspace SMTP relay settings, or the relay account is suspended for spam | ### Authentication and sender-requirement blocks | Code | Message (abridged) | Meaning and fix | |---|---|---| | 550-5.7.24 | "SPF record of the sending domain has one or more suspicious entries" | Clean up the SPF record | | 550-5.7.25 | "The sending IP address doesn't have a PTR record" | Add a PTR record | | 550-5.7.26 | "Blocked because the sender is unauthenticated" | Set up SPF or DKIM | | 550-5.7.26 | "The (E)MAIL FROM domain has an SPF record with a hard fail policy" (`-all`) but the message failed SPF | Fix the SPF record, or send from an authorized IP address | | 550-5.7.26 | "Unauthenticated email from *domain* is not accepted due to domain's DMARC policy" | The DMARC policy of the From: domain requires aligned authentication | | 550-5.7.27 | "Didn't pass SPF authentication" | Fix SPF | | 550-5.7.28 | "Unusual rate of unsolicited email originating from your IP address" | Block for spam volume; stop, fix list hygiene, and warm up again | | 550-5.7.29 | "Wasn't sent over a TLS connection" | Turn on TLS | | 550-5.7.30 | "Didn't pass DKIM authentication" | Fix DKIM | | 5.7.32 | "Blocked because the From: header isn't aligned" with SPF or DKIM | Fix DMARC alignment | | 550-5.7.40 | "The sending domain doesn't have a DMARC record" | Publish DMARC | ### Client-authentication errors (submission, not deliverability) | Code | Message (abridged) | Meaning and fix | |---|---|---| | 535-5.7.80 | "Username and Password not accepted" | Bad credentials, or sign-in blocked | | 534-5.7.90 | "Application-specific password required" / "Please log in with your web browser" | Use app passwords or OAuth | | 534-5.7.14 | "Please log in through your web browser and then try again" | Account security challenge | | 504-5.7.40 | "Unrecognized authentication type" / "XOAUTH is no longer supported" | Use OAuth 2.0 (XOAUTH2) | ## Recovering from blocks and throttling - **Temporary 4.7.x failures are throttling**, not final verdicts. Google's guidance is to "completely stop sending for a short period of time, then resume sending at a slower rate", which in effect means [warming up](https://emailmarketing.net/learn/ip-management/ip-warm-up) again. - **Rate-limit quota errors (4.7.28)**: wait at least 10 minutes, resume with a single connection, and add connections one at a time. If a single connection still fails, wait another 10 minutes. - **Reputation blocks** ("very low reputation of the sending IP/domain"): check the IP Reputation and Domain Reputation dashboards in [Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools), fix the source of spam, and give it time. Reputation recovers only through sustained sending that follows the rules. - **Listings on public blocklists (RBLs)**: Gmail also consults public blocklists. Request delisting directly from the blocklist operator. - **Persistent blocks on compliant traffic**: use Google's Bulk Sender Escalation Form. Mitigation is not available while your spam rate in Postmaster Tools is above 0.3% (see [sender requirements](https://emailmarketing.net/learn/providers/gmail-sender-requirements#mitigation-eligibility)). # GMX / WEB.DE (United Internet) — Postmaster Requirements > Sender requirements for GMX, WEB.DE and mail.com (United Internet): mandatory aligned DKIM, strict header/DNS rules, RFC 8058 unsubscribe, error-message format, and the CSA path. Source: emailmarketing.net — https://emailmarketing.net/learn/providers/gmx-web-de-postmaster If your list has European recipients, some of them use GMX, WEB.DE or mail.com, which dominate the German consumer mailbox market. These providers are stricter than most on two points: **DKIM is mandatory (SPF alone is not enough)**, and **generic reverse DNS is rejected outright**. All three are operated by United Internet (1&1) and share one postmaster policy, published in parallel at `postmaster.gmx.net`, `postmaster.web.de` and `postmaster.mail.com`. ## Infrastructure and DNS requirements | Requirement | Detail | |---|---| | Static IP | The delivering server must have a static IP address. IP addresses from dial-up or dynamically assigned ranges are **not accepted** | | Reverse DNS (PTR) | Must resolve to an FQDN **that belongs to the sender's own domain**. Generic provider defaults (for example `123-123-123-123-static.ihrprovider.tld`) "usually result in rejection" | | Forward DNS | The sending domain must have valid **MX or A records** | | HELO or EHLO | Must be a valid **FQDN** | | Blocklists | Neither the IP address nor the domain may be listed on known blocklists (they suggest checking with dnsbl.info) | ## Message-format requirements (RFC 5321 and 5322) - Headers must comply with **RFC 5321** and **RFC 5322**. - Required header fields: **`Date`, `From`, `Message-ID`** (and `Sender` if applicable). - Each of **`BCC`, `CC`, `Date`, `From`, `Sender`, `Subject`, `To`** may appear **only once**. - The `Date` (date, time and time zone) must be correct, and must not differ significantly from the actual time of sending. ## Authentication: DKIM mandatory, aligned - **DKIM is mandatory**: "the use of a valid DKIM signature is mandatory." - **SPF is only recommended.** In their words: "We require DKIM as a minimum requirement; SPF alone is not sufficient." - **DMARC is recommended** to prevent spoofing and phishing. - The DKIM `d=` domain must **align with the `RFC5322.From` domain**, at least in relaxed mode: | DKIM domain (`d=`) | From domain | Mode | |---|---|---| | example.com | child.example.com | relaxed (accepted) | | child.example.com | example.com | relaxed (accepted) | | example.com | example.com | strict | | child.example.com | child.example.com | strict | This is the same concept of alignment that DMARC uses (see [DMARC](https://emailmarketing.net/learn/authentication/dmarc)), but United Internet requires DKIM alignment as a condition of acceptance even when the domain has no DMARC policy. ## Bulk-sender requirements - **Explicit consent only**, ideally through **double opt-in**. - Follow the **M3AAWG** and **CSA** guidelines. Taking part in the CSA is recommended (below). - **Unsubscribe:** every email must contain an unsubscribe option that is easy to find and understand. The preferred method is **RFC 8058** one-click List-Unsubscribe. If a message complies, GMX and WEB.DE show an **unsubscribe button** in their interface. If RFC 8058 is not met, a **valid reply address** must be provided instead. - **List hygiene:** avoid invalid, inactive or outdated addresses, and regularly remove addresses that cannot be delivered. "If many messages are sent to unknown or deactivated addresses, this can lead to temporary suspension" of acceptance. - **Sender identity:** the sender must be clearly and unambiguously identifiable, the content must be relevant, and the frequency appropriate. - **Warm-up caveat:** for mass mailings, "our system may throttle delivery despite IP warm-up". Expect temporary failures on new IP addresses even with a proper ramp-up (see [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up)). ## Error messages United Internet documents the **structure** of its SMTP errors rather than a complete table of codes: - **5xx** codes are permanent errors, and **4xx** codes are temporary errors. - Every rejection contains an SMTP status code, a description of the problem, and a **URL with diagnostic parameters**. The URL points to the matching postmaster page (`https://postmaster.gmx.net/...`, `postmaster.web.de` or `postmaster.mail.com`), which gives explanations and solutions. Always follow that URL, because it identifies the exact reason for the block. - Example: `554 gmx.net (mxgmx104) Nemesis ESMTP Service not available / No SMTP service / IP address is block listed.` The connecting IP address is on a blocklist, and the URL in the message explains how to fix it. ## Filtering behavior, allowlisting, feedback loop - **No allowlist:** "GMX does not offer this service". According to GMX, following the requirements makes allowlisting unnecessary. - **Behavior similar to greylisting:** they delay or reject mail from servers that show "unmistakable characteristics that indicate a spamming server." - Filtering is based on both **IP addresses and content**. If a message is wrongly classified, submit its extended headers through their contact form (`https://postmaster.gmx.net/en/contact`). - **No public FBL of their own.** In practice, complaint feedback for GMX and WEB.DE is available through the **CSA** (certified senders receive complaint data as part of certification). The postmaster site itself points bulk senders to the CSA instead of offering a direct FBL signup. ## Certified Senders Alliance (CSA) and trustedDialog - **CSA**: a positive-list project of eco (Verband der deutschen Internetwirtschaft) together with the DDV. GMX and WEB.DE and several other European providers check certification, and United Internet recommends that senders of newsletters and advertising take part. Information: certified-senders.org. - **trustedDialog**: a paid brand-protection standard from United Internet Media. It combines sender authentication with verification that the content is intact, and in return shows a **seal and brand logo in the inbox**, gives recipients more confidence that the sender is authentic, and (according to United Internet Media) improves open and click rates. It is mainly relevant for large consumer brands that mail German users. ## GMX outbound servers (for receivers / verification) Mail that genuinely comes from GMX arrives from these published hosts: | Role | Hostname | IPs | |---|---|---| | Outbound | mout.gmx.net | 212.227.15.15, 212.227.15.18, 212.227.15.19, 212.227.17.20, 212.227.17.21, 212.227.17.22 | | Bounce handling | mout-bounce.gmx.net | 212.227.15.44–46, 212.227.17.26, 212.227.17.28, 212.227.17.29 | | Lower reputation (forwarded by customers) | mout-xforward.gmx.net | 82.165.159.12–14, 82.165.159.40–42 | ## If GMX blocks you 1. Read the bounce. It contains the exact reason and a postmaster URL. 2. Fix the root cause against the requirements above (the delisting form will not help while problems with PTR, DKIM or consent remain). 3. Contact the abuse team through the postmaster contact form, and provide your email address, contact address, name, **the date of the attempted send, the recipient domain, and the exact error message or mailer-daemon text**. Bounces caused by full inboxes or by a recipient's misconfiguration are not "blocklisting", and do not belong on that form. # Microsoft Escalation Channels > The remediation map for Microsoft blocks: Office 365 anti-spam IP delist portal (sender.office.com), delist@microsoft.com for 5.7.511, the Outlook.com sender support form, SNDS/JMRP prerequisites, what each channel needs, and realistic timelines. Source: emailmarketing.net — https://emailmarketing.net/learn/providers/microsoft-escalation-channels When Microsoft blocks your mail, the channel that can lift the block depends on which of Microsoft's systems applied it. Microsoft runs **two separate filtering systems, each with its own remediation paths**, and escalating to the wrong one wastes days. Start by classifying the block: | Symptom | System | Channel | |---|---|---| | NDR `550 5.7.606–649 Access denied, banned sending IP` from a **business or tenant** recipient (a custom domain on Microsoft 365) | EOP (Office 365) | Delist portal `https://sender.office.com` | | NDR `550 5.7.511 Access denied, banned sender` | EOP (Office 365), on the list that needs deeper investigation | Email `delist@microsoft.com` | | `550 5.7.703 ... Tenant Allow Block List` | A block set by a single recipient tenant | Only that tenant's administrator can fix it; there is no Microsoft channel | | `421 RP-001/002/003`, `550 SC-001..004`, `DY-001/002`, `OU-001/002`, or mail sent to Junk at **@outlook.com, @hotmail.com, @live.com or @msn.com** | Consumer Outlook.com | Sender support form (below), after the SNDS and JMRP prerequisites | For what each code means, see [Microsoft Sender Requirements](https://emailmarketing.net/learn/providers/microsoft-sender-requirements). For diagnosing tenant mail from its headers, see [Microsoft Filtering Internals](https://emailmarketing.net/learn/providers/microsoft-filtering-internals). ## Channel 1: Office 365 Anti-Spam IP Delist Portal (sender.office.com) Use this channel for IP addresses on the EOP **blocked senders list** (NDR range `5.7.606–649`, whose message itself points to the portal). It is self-service, and works one IP address at a time. Process: 1. Go to `https://sender.office.com`. 2. Enter the **email address that received the NDR** and the **IP address from the error message** (one email address and one IP address per visit), and pass the CAPTCHA. 3. Microsoft sends a verification email to that address. Click the confirmation link to return to the portal. 4. Select **Delist IP**. You need the exact NDR text (the IP address and the code) and a working mailbox at the address you enter. On timing, Microsoft states that results vary and that full removal **can take up to 24 hours or longer**. Delisting removes only the block at the edge. Mail must still pass EOP and MDO filtering, including composite authentication, and if the traffic stays abusive the IP address is blocked again. As with any [blocklist removal](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus), fix the root cause (a compromise, list quality, authentication) before you delist. ## Channel 2: delist@microsoft.com (error 5.7.511) `550 5.7.511 Access denied, banned sender` means the IP address is on a list that requires **further investigation by Microsoft**, and the self-service portal explicitly cannot fix it. Forward the bounce to **`delist@microsoft.com`**, including the **full NDR text and the IP address**. Microsoft states that it will respond **within 48 hours** with next steps. Expect questions about the traffic, and have evidence of volume, consent and remediation ready. ## Channel 3: Outlook.com sender support form (consumer mailboxes) This channel is only for deliverability problems at consumer Outlook.com, meaning "any address @msn.com, @Outlook.com, @hotmail.com, or @live.com". Use it for mail sent to Junk, for `SC-004` complaint blocks once you have remediated, for throttling (`RP-00x`) that does not recover, and for requests for mitigation during warm-up. **Prerequisites Microsoft expects before you file** (requests without them tend to get standard denials): 1. Check that you comply with the Outlook.com policies page (authentication, PTR records, connection limits; see [Microsoft Sender Requirements](https://emailmarketing.net/learn/providers/microsoft-sender-requirements)). 2. Enroll the IP addresses in **SNDS and JMRP**, or refresh their enrollment. New IP addresses must be added to your JMRP account. See [Microsoft SNDS & JMRP](https://emailmarketing.net/learn/postmaster-tools/microsoft-snds-jmrp). SNDS data (filter color, complaint rate, share of RCPT failures) is also the evidence you will cite in the ticket. 3. Check the troubleshooting FAQ for your exact error code first. **Where the form lives**: Microsoft's support article "Sender Support in Outlook.com" (`https://support.microsoft.com/en-us/outlook/sender-support-in-outlook-com`) and the postmaster troubleshooting page both link to the form. It was historically at `https://sendersupport.olc.protection.outlook.com/pm/Troubleshooting`, and can also be reached through the redirector `https://go.microsoft.com/fwlink/?LinkID=614866`. The postmaster and SNDS pages have moved to `https://substrate.office.com/ip-domain-management-snds/`, and the old `sendersupport.olc.protection.outlook.com` domain is deprecated from **June 22, 2026**. Expect the redirector link to send you to the form's current location. For the live link, follow the postmaster Troubleshooting page (`https://substrate.office.com/ip-domain-management-snds/Postmaster/Troubleshooting`). **What to include**: the affected sending IP addresses, the exact SMTP error string or code, the sending domains, a description of the mail stream (volume, opt-in method), and the remediation you have done (JMRP suppression, list cleaning, authentication fixes). **Realistic flow and timeline** (widely reported by practitioners; this is not an official service level): - The form produces an **automated response**, which often says "no problem detected" or offers a generic conditional mitigation. - **Reply to that automated email** to escalate to a human agent. Responses come from `olcsupport.office.com` addresses, and a human response typically takes from one to several business days. - When mitigation is granted, it is usually temporary or conditional. Reputation must be rebuilt through sending behavior, at low volume first. - New IP addresses need **~2+ weeks** of reputation building at Outlook.com. SPF on a domain that already has a good reputation speeds up the ramp-up. There is also a separate **Outlook.com consumer delisting form** at `https://support.microsoft.com/supportrequestform/8ad563e3-288e-2a61-8122-3ba03d6b8d75`, linked from Microsoft's EOP delisting article for blocks on the consumer side. Read the troubleshooting FAQ before you submit it. ## Channel 4: problems only the recipient tenant can fix (no Microsoft channel) In some cases **no Microsoft channel for senders exists**: when the headers show `SFV:SKB` or `SFV:BLK` (the recipient's block lists), when a Tenant Allow/Block List entry blocks you (`5.7.703`), or when mail is quarantined as high confidence phishing because of a URL or domain the tenant has blocked. The recipient organization's administrator must remove the entry, or submit the message to Microsoft as a false positive through the Defender Submissions page (`https://security.microsoft.com/reportsubmission`). A submission is also the only way to get an allow for verdicts of malware or high confidence phishing. Give the recipient's administrator the full headers and the field guide in [Microsoft Filtering Internals](https://emailmarketing.net/learn/providers/microsoft-filtering-internals). ## Escalation checklist (consultant runbook) 1. **Classify** the block from the exact SMTP code or the verdict in the headers (see the table at the top). 2. **Fix the root cause first**: authentication alignment, compromised hosts, the causes of complaints, list hygiene. Microsoft blocks again senders whose remediation exists only on paper. 3. **Enroll in SNDS and JMRP** before any contact about consumer mailboxes, and pull the SNDS view of the days of the incident. 4. **Use the narrowest channel**: the portal for 606–649; `delist@microsoft.com` for 5.7.511; the sender support form for consumer Outlook.com issues; the recipient's administrator for blocks set by a tenant. 5. **Keep the paper trail**: ticket IDs and the automated responses. Replies to the automated email are what reach people. 6. **Verify after mitigation**: watch the SNDS filter results and run seed tests on consumer mailboxes. Increase volume gradually, as after a [warm-up](https://emailmarketing.net/learn/ip-management/ip-warm-up). ## Related articles - [Microsoft Sender Requirements](https://emailmarketing.net/learn/providers/microsoft-sender-requirements), with the catalog of error codes and policies - [Microsoft Filtering Internals](https://emailmarketing.net/learn/providers/microsoft-filtering-internals), on reading the verdict headers - [Microsoft SNDS & JMRP](https://emailmarketing.net/learn/postmaster-tools/microsoft-snds-jmrp), the mandatory prerequisites - [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus), since OU-001 blocks are driven by Spamhaus # Microsoft Filtering Internals (EOP / Defender for Office 365) > Reading X-Forefront-Antispam-Report and X-Microsoft-Antispam headers, SCL and BCL scales with per-level actions, compauth reason codes, how EOP/MDO layers filter, and Tenant Allow/Block List mechanics from the sender's perspective. Source: emailmarketing.net — https://emailmarketing.net/learn/providers/microsoft-filtering-internals When your mail to a business that uses Microsoft 365 lands in Junk or quarantine, the message headers tell you why. Below is how Exchange Online Protection (EOP) filters inbound mail for **business tenants**, and how a sender or consultant reads its verdict. This is a different system from the filtering of consumer Outlook.com mailboxes (descended from SmartScreen, and visible in SNDS), which [Microsoft Sender Requirements](https://emailmarketing.net/learn/providers/microsoft-sender-requirements) covers. The two systems share reputation inputs, though, and B2B senders depend on EOP verdicts. To diagnose a message, get a copy of it as delivered (or as junked or quarantined) from a Microsoft 365 recipient, and extract the full headers. Read three headers in order: `Authentication-Results` (did authentication pass?), `X-Forefront-Antispam-Report` (what was the verdict, and why?) and `X-Microsoft-Antispam` (BCL). Microsoft's own parser is the Message Header Analyzer at `https://mha.azurewebsites.net/`. ## How the layers stack 1. **Connection filtering at the edge of the service**, based on IP address. Most spam is caught here. The inputs are Microsoft's blocked senders list (see [Microsoft Escalation Channels](https://emailmarketing.net/learn/providers/microsoft-escalation-channels)), the tenant's IP Allow and Block lists, and IP reputation. Entries in a tenant's IP block list drop mail at the edge. 2. **Anti-spam policies (content filtering)** classify each message as bulk, spam, high confidence spam, phishing, or high confidence phishing, and stamp SCL and BCL values. There are three tiers of policy: the **default** policy, **custom** policies created by administrators, and the **Standard and Strict preset security policies**. The presets have progressively more aggressive defaults, and for the recipients they include, preset settings override custom policy settings. 3. **Anti-phishing, spoof intelligence and composite authentication**: Microsoft's implicit authentication layer (`compauth`), which judges the From domain even when no DMARC record exists. 4. **Add-ons in Defender for Office 365 (MDO)**: impersonation protection (for users, for domains, and through mailbox intelligence), Safe Links and Safe Attachments. They exist only in tenants with MDO licenses, and they produce the `CAT` values marked as MDO only below. Policy changes take up to 1 hour to apply. When several detections fire, the policies apply in order of precedence and the verdict with the highest priority wins. ## X-Forefront-Antispam-Report header The header is a list of field:value pairs separated by semicolons, for example `...CTRY:;LANG:hr;SCL:1;SRV:;IPV:NLI;SFV:NSPM;PTR:;SFTY:;...`. Fields that Microsoft does not document are internal diagnostics. The documented fields are: | Field | Meaning | |---|---| | `ARC` | ARC evaluation: `AAR` (recorded Authentication-Results), `AMS` (message signature), `AS` (header signature with `cv=` chain validation: none, pass or fail) | | `CAT` | Threat category applied (see table below) | | `CIP:[IP]` | Connecting IP address, which you can use in the tenant's IP Allow and Block lists | | `CTRY` | Source country or region, from the connecting IP address (may differ from the originating IP address) | | `DIR` | Direction: `INB` inbound, `OUT` outbound, `INT` internal | | `H:[helostring]` | HELO or EHLO string of the connecting server | | `IPV:CAL` | Spam filtering skipped, because the source IP address was on the tenant's IP Allow List | | `IPV:NLI` | IP address not found on any IP reputation list | | `LANG` | Country code of the message language (for example, `ru_RU`) | | `PTR:[ReverseDNS]` | PTR (reverse DNS) record of the source IP address | | `SCL` | Spam confidence level (scale below) | | `SFTY` | Marker for a phishing safety tip: `9.19` domain impersonation, `9.20` user impersonation, `9.25` first-contact safety tip | | `SFV` | Spam filtering verdict (table below) | | `SRV:BULK` | Identified as bulk by the BCL threshold. With `MarkAsSpamBulkMail` on (the default), bulk mail is marked as spam at SCL 6 | | `X-CustomSpam:[ASFOption]` | Matched an Advanced Spam Filter (ASF) setting (content heuristics such as embed tags, JavaScript in HTML, or an empty message). The field is added after mail flow rules run, so rules cannot act on it | ### CAT (category) values | Value | Meaning | Value | Meaning | |---|---|---|---| | `AMP` | Anti-malware | `INTOS` | Intra-org phishing | | `BIMP` | Brand impersonation (MDO) | `MALW` | Malware | | `BULK` | Bulk | `OSPM` | Outbound spam | | `DIMP` | Domain impersonation (MDO) | `PHSH` | Phishing | | `FTBP` | Anti-malware common-attachments filter | `SAP` | Safe Attachments (MDO) | | `GIMP` | Mailbox-intelligence impersonation (MDO) | `SPM` | Spam | | `HPHSH` or `HPHISH` | High confidence phishing | `SPOOF` | Spoofing | | `HSPM` | High confidence spam | `UIMP` | User impersonation (MDO) | ### SFV (spam filtering verdict) values | Value | Meaning | |---|---| | `SFV:NSPM` | Marked as not spam; delivered normally | | `SFV:SPM` | Marked as spam by content filtering | | `SFV:BLK` | Blocked: the sender is on the recipient user's Blocked Senders list (filtering skipped) | | `SFV:SFE` | Allowed: the sender is on the recipient user's Safe Senders list (filtering skipped) | | `SFV:SKA` | Filtering skipped: the sender or domain is on the allowed list of the anti-spam policy; delivered to the Inbox | | `SFV:SKB` | Marked as spam: the sender or domain is on the blocked list of the anti-spam policy | | `SFV:SKN` | Marked as not spam before filtering (for example, a mail flow rule set SCL -1 or a bypass) | | `SFV:SKS` | Marked as spam before filtering (for example, a mail flow rule set SCL 5–9) | | `SFV:SKQ` | Released from quarantine to the intended recipients | How a consultant reads these: `SKA`, `SFE` and `SKN` mean the recipient side has allowlisted you. That is fragile, because placement depends on an override, not on reputation. `SKB` and `BLK` mean the recipient side has blocked you explicitly. No amount of reputation work on the sender side fixes that; the recipient organization must remove the entry. ## SCL: Spam Confidence Level The SCL is stamped as an X-header on every inbound message. Filtering never stamps the values 2, 3 or 4. SCL 7 is typically set not by spam filtering itself, but by analyst grading, DMARC failures or mail flow rules. | SCL | Definition | Default action | |---|---|---| | -1 | Filtering skipped (safe sender or recipient, or IP Allow List) | Inbox | | 0, 1 | Not spam | Inbox | | 5, 6 | **Spam** | Default and custom policies, and Standard preset: Junk folder. Strict preset: quarantine | | 7, 8, 9 | **High confidence spam** | Default and custom policies: Junk folder. Standard and Strict presets: quarantine | ## BCL: Bulk Complaint Level The BCL is stamped in the `X-Microsoft-Antispam` header (for example, `X-Microsoft-Antispam: BCL:5;`). Microsoft assigns it, based on complaint behavior, to mail from recognized **bulk senders** ("gray mail"), whether the sources are internal to Microsoft or external. This is the header that matters most to ESPs, because it is in effect Microsoft's published complaint reputation score for each sender. | BCL | Meaning | |---|---| | 0 | Not from a bulk sender | | 1–3 | Bulk sender generating **few** complaints | | 4–7 | Bulk sender generating a **mixed** number of complaints | | 8–9 | Bulk sender generating a **high** number of complaints | Thresholds and actions (a message is treated as Bulk when its BCL **meets or exceeds** the threshold): | Policy | BCL threshold | Action at or above the threshold | |---|---|---| | Default and new custom anti-spam policies | **7** | Junk Email folder | | Standard preset security policy | **6** | Junk Email folder | | Strict preset security policy | **5** | Quarantine | What this means for a sender: **mail at BCL ≤ 3 reaches the Inbox everywhere. BCL 4 is sent to Junk by tenants with the Strict preset (the recommended minimum for opting in to the Promotions folder feature is 5). BCL 5–6 is sent to Junk or quarantined by tenants using preset policies. BCL ≥ 7 is sent to Junk by default in every tenant.** Recipient administrators can tune the threshold, and can see the bulk volume of each sender in the "bulk senders insight" in the Defender portal. **Promotions folder (preview, 2026)**: tenants can choose to deliver bulk mail that is **below** the BCL threshold (even bulk mail at BCL 0) to a Promotions folder instead of the Inbox. They do this with a mail flow rule that stamps `X-MS-Exchange-Organization-BulkStamping: 1`, plus the "Bulk moves enabled" setting in the anti-spam policy. Microsoft 365 learns from users moving messages into and out of the folder. Mail still reaches the Inbox if the sender is on the user's Safe Senders list. For senders, this means that even bulk mail with no complaints may stop landing in Microsoft 365 Inboxes because of how it is classified, much as Gmail's tabs work. ## Authentication-Results and composite authentication Microsoft stamps the standard `spf=`, `dkim=` and `dmarc=` results (see [Authentication-Results Header](https://emailmarketing.net/learn/authentication/authentication-results-header)), plus fields specific to Microsoft: - The `dmarc=` values include the nonstandard **`bestguesspass`**: no DMARC record exists, but the message would have passed if one did. - `action=` on DMARC: `oreject` (rejected under the policy); `pct.quarantine` or `pct.reject` (failed DMARC but was delivered, because `pct` < 100 randomly exempted it); `permerror`; `temperror`. - **`compauth`** is composite authentication: Microsoft's combined verdict from SPF, DKIM, DMARC and signals in the message, evaluated against the **From (5322.From) domain**. A `compauth=fail` result does not guarantee the message goes to Junk if the other signals are clean. - **`reason`** is a three-digit code that explains the compauth result: | Code | Meaning | |---|---| | 000 | Failed explicit authentication: DMARC fail with `p=quarantine` or `p=reject` | | 001 | Failed implicit authentication: no authentication records, or weak ones (SPF `~all` or `?all`, DMARC `p=none`) | | 002 | The organization's policy explicitly prohibits this pair of sender and domain from spoofing | | 010 | DMARC fail with reject or quarantine, and the sending domain is one of the organization's own accepted domains (spoofing within the organization) | | 1xx (100–130) | Passed: 100 SPF or DKIM passed with alignment. 101 DKIM by the From domain. 102 MAIL FROM and From aligned, and SPF pass. 103 or 104 PTR aligns with the From domain. 108 DKIM fail attributed to a legitimate earlier hop. 109 no DMARC record, but it would pass. 111 DMARC temperror or permerror, but SPF or DKIM aligned. 112 DNS timeout on the DMARC lookup. 115 sent from an M365 organization where From is an accepted domain. 116 the MX of the From domain aligns with the PTR of the connecting IP address. 130 a trusted ARC sealer overrode the DMARC failure | | 2xx (201, 202) | Soft pass on alignment of PTR or subnet (`compauth=softpass`) | | 3xx, 4xx, 9xx | Not checked, or bypassed (`compauth=none`) | | 501, 502 | DMARC not enforced: a valid NDR with an established contact, or a valid NDR for the organization's own mail | | 6xx (601) | Failed implicit authentication; 601 means spoofing of an accepted domain within the organization | | 7xx (701–704) | DMARC not enforced, because the organization has a history of legitimate mail from this infrastructure | | 905 | DMARC not enforced, because of complex routing (an on-premises or third-party hop before M365) | Reason 001 is the code ESP consultants see most often. It means the sender had **no authentication, or weak authentication**, and Microsoft sent the message to Junk on suspicion from implicit authentication. The fix is aligned SPF and DKIM, plus a DMARC record. This is the same remediation as for the Outlook.com [May 2025 mandate](https://emailmarketing.net/learn/providers/microsoft-sender-requirements). ## Tenant Allow/Block List (TABL): what recipient tenants control The TABL is a list of overrides for each tenant, at `https://security.microsoft.com/tenantAllowBlockList`. It applies during mail flow and at the time of a click. The types of entry are: **domains and email addresses** (matched on the **From (5322.From) address**, not on MAIL FROM), **spoofed senders**, **URLs**, **files**, **IP addresses** and Teams domains. **Block entries take precedence over allow entries.** Entries take effect within ~5 minutes. What a block does: | Blocked entity | Effect | |---|---| | Domain or email address | The message is treated as **high confidence phishing** and quarantined (not merely treated as spam). The tenant's own users also cannot send to it (`550 5.7.703 ... blocked by your organization using Tenant Allow Block List`) | | URL or file | The message is quarantined as high confidence phishing or as malware, respectively | | IP address | Dropped at the edge of the service | | Spoofed sender | Manual override of an allow from spoof intelligence | Expiry of block entries: for domains and addresses, files and URLs, entries expire after **30 days** by default (this can be set to 90 days or to never). Entries for spoofed senders, IP addresses and Teams **never expire**. How allow entries work, and why "just get them to allowlist us" has limits: - Administrators **cannot directly create allow entries for verdicts of malware or high confidence phishing**. For those, the message, URL or file must be submitted to Microsoft through the Submissions page (`https://security.microsoft.com/reportsubmission`) and confirmed clean; only then can an allow entry be created. Messages identified as malware or high confidence phishing are **always filtered, whatever the allow entries say**. - Direct allow entries for domains and addresses, and for URLs, can override only these verdicts: bulk, spam, high confidence spam, and phishing that is not high confidence. - Allow entries for domains and addresses, files and URLs are kept for **45 days after the filtering system last judges the entity clean**, and are then removed automatically (or an administrator sets them to expire ≤30 days after creation). Allow entries for spoofed senders never expire. Microsoft may automatically remove allow entries it considers unnecessary, and sends an alert when it does. - An allowed sender still goes through the rest of the stack. The message must also pass authentication, URL and file checks, because an allow entry skips only the filters tied to the allowed entity. - URL allows created through a submission automatically cover variations and sub-paths of the reported URL. What this means for a sender: if your mail is judged high confidence phishing at a customer's tenant, the recipient's administrator cannot simply allowlist you. The usual causes are a URL or domain **blocked** in their TABL, or detection of spoofing or impersonation. The path goes through a submission to Microsoft by the administrator. Ask the recipient's administrator to submit the message as a false positive; Microsoft's review may create the allow entry. ## FAQ material relevant to external senders Microsoft's anti-spam FAQ documents these causes when legitimate mail is sent to Junk at Microsoft 365, and their fixes: | Cause | Fix | |---|---| | Authentication failure (SPF, DKIM or DMARC, leading to compauth fail) | Correct SPF, DKIM and DMARC for the sending domain | | Sender reputation (history of the IP address or domain, blocklists, low volume) | Check third-party blocklists and a valid PTR record, and review [SNDS](https://emailmarketing.net/learn/postmaster-tools/microsoft-snds-jmrp) | | Content triggers (too many links, URL shorteners, form tags, embedded scripts, image-only messages) | Review the content; the recipient may have ASF options turned on | | BCL met the tenant's threshold | Not spam, but a bulk classification; reduce complaints, or the recipient tunes the threshold or safe senders | | Recipient overrides (mail flow rule, block list in a policy, user's Blocked Senders) | Only the recipient can remove them | | An intermediate filtering service hides the true source IP address | The recipient turns on Enhanced Filtering for Connectors ("skip listing") | Microsoft's own list of outbound best practices for reaching Microsoft 365: - The sending domain resolves in DNS. (**With no A or MX record, mail is routed through Microsoft's high-risk pool, whatever its content.**) - The source IP address has a PTR record. - HELO or EHLO and MAIL FROM are consistent and based on a domain, and HELO matches the PTR record. - SPF is correct. - Mail is **DKIM-signed with relaxed canonicalization**, because strict header canonicalization can break when mail passes through the service. - WHOIS records are accurate. - Bounces use the format of RFC 3464. - Addresses that return an NDR as nonexistent are removed. - SNDS is monitored. Outbound throttling inside the service matters when a compromised customer sends through Microsoft. A user who sends >50% spam within a time window is blocked from sending, and outbound spam is routed through the **high-risk delivery pool** (separate IP addresses) to protect the normal pool. ## Related articles - [Microsoft Sender Requirements](https://emailmarketing.net/learn/providers/microsoft-sender-requirements), on consumer Outlook.com policies, error codes and the 2025 authentication mandate - [Microsoft Escalation Channels](https://emailmarketing.net/learn/providers/microsoft-escalation-channels) - [Microsoft SNDS & JMRP](https://emailmarketing.net/learn/postmaster-tools/microsoft-snds-jmrp) - [Authentication-Results Header](https://emailmarketing.net/learn/authentication/authentication-results-header), the RFC 8601 baseline that Microsoft extends # Microsoft Outlook.com Sender Requirements > Outlook.com postmaster policies, the May 2025 high-volume (>5,000/day) SPF+DKIM+DMARC mandate (Junk folder or 550 5.7.515 rejection, depending on the Microsoft source), connection limits, and SMTP error code reference. Source: emailmarketing.net — https://emailmarketing.net/learn/providers/microsoft-sender-requirements Microsoft's postmaster guidance for senders delivering to consumer Outlook.com mailboxes (outlook.com, hotmail.com, live.com, msn.com). It covers the authentication mandate for high-volume senders announced in April 2025 and enforced from **May 5, 2025**, plus the standing technical and policy requirements that apply to all senders. Comparable mandates exist at Yahoo (see [Yahoo Sender Requirements](https://emailmarketing.net/learn/providers/yahoo-sender-requirements)) and Gmail; Microsoft's own sources disagree on whether non-compliant high-volume mail is junk-foldered or **rejected at SMTP time** with `550 5.7.515` — see [Enforcement behavior and timeline](#enforcement-behavior-and-timeline). ## High-volume sender requirements (effective May 5, 2025) Applies to **domains sending more than 5,000 emails per day** to Outlook.com. Enforcement is at the **sending-domain** level. | Mechanism | Requirement | |---|---| | SPF | **Must pass** for the sending domain. The domain's DNS record must accurately list authorized sending IP addresses/hosts. | | DKIM | **Must pass** to validate email integrity and authenticity. | | DMARC | Publish **at least `p=none`**, and the message must **align with either SPF or DKIM (preferably both)**. | ### Enforcement behavior and timeline - **April 2025 (announcement)**: senders urged to audit and update SPF, DKIM, and DMARC records before enforcement. - **Tech Community announcement (published April 2, 2025; updated April 30, 2025)**: the original text said that after May 5, 2025, non-compliant high-volume mail would be **routed to the Junk folder**, with rejection "in the future (date to be announced)". The April 29 update struck that paragraph and replaced it: "we have made a decision to **reject** messages that don't pass the required authentication requirements … This change will state taking effect on May 5th as originally stated." The same post's unstruck "What's Changing?" section still says "Non‐compliant messages will first be routed to Junk. If issues remain unresolved, they may eventually be rejected," so the post is internally inconsistent. - **Outlook.com postmaster Policies page (no published or updated date shown; retrieved September 11, 2026)**: "Messages from high-volume senders that do not meet these requirements will be sent to the junk folder. If issues remain unresolved, messages may be rejected" with the `550; 5.7.515` error below, "Effective May 5th, 2025". - **The two sources disagree.** The Tech Community update says rejection from May 5, 2025; the postmaster page says the Junk folder first, rejection possibly later. The postmaster page gives no date, so which one is newer can't be established from the pages alone. Plan for either outcome: non-compliant mail may land in Junk or be rejected. - Rejection string (given by both sources, for messages that are rejected): `550; 5.7.515 Access denied, sending domain [SendingDomain] does not meet the required authentication level.` - Outlook additionally "reserves the right to take **negative action**, including filtering or blocking — against non-compliant senders, especially for critical breaches of authentication or hygiene." - Senders below 5,000/day are not initially targeted by enforcement, but Microsoft states all senders benefit from the same practices; small-sender enforcement is not ruled out. ### Hygiene recommendations for large senders Published alongside the mandate as best practices (not SMTP-enforced, but grounds for negative action): | Practice | Detail | |---|---| | Compliant P2 (Primary) sender addresses | The **From or Reply-To address must be valid, reflect the true sending domain, and be able to receive replies** | | Functional unsubscribe links | Easy, clearly visible opt-out, particularly for marketing/bulk mail; must be "easy to find and reliable when clicked" | | List hygiene & bounce management | Remove invalid addresses regularly to reduce spam complaints, bounces, and wasted messages | | Transparent mailing practices | Accurate subject lines, no deceptive headers, recipients must have consented | To verify compliance, inspect the `Authentication-Results` header on mail received at an Outlook.com mailbox (Microsoft documents header reading at learn.microsoft.com, "message-headers-eop-mdo"). ## Standing policies for all senders From the Outlook.com postmaster policy page: - Comply with the Microsoft Services Agreement and Anti-Spam Policy, plus **CAN-SPAM** and the laws of the sender's jurisdiction; unsubscribe claims must be honored per FTC guidance. - The unsubscribe mechanism must be "clearly documented and easy for recipients to find and use." - **RFC 2821 / RFC 2822** (SMTP / message format) compliance is mandatory. - **Valid reverse DNS (PTR)** records required for sending IPs. - Mail from **dynamic IP space** is not accepted. - No insecure relays or open proxies. - **No namespace mining** (probing for valid addresses without sending mail). ### Connection and retry limits | Rule | Value | |---|---| | Simultaneous connections | Max **500** without prior arrangement | | Repeated non-delivery | Stop sending to an address after multiple non-delivery responses | | Permanent errors | Do **not retransmit** a message after any **500–599** SMTP response | ## SMTP error codes Outlook.com's documented deferral and rejection codes. `421` codes are temporary (reputation-based throttling); `550` codes are permanent. | Code | Meaning | Remediation | |---|---|---| | `421 RP-001` | Sending IP has exceeded the rate limit allowed (IP/domain reputation) | Improve reputation; slow down; escalate via sender support | | `421 RP-002` | Rate limit exceeded on this connection (reputation) | Same as RP-001 | | `421 RP-003` | Connection limit exceeded (reputation) | Reduce simultaneous connections (≤500); improve reputation | | `550 5.7.515` | Sending domain (>5,000/day) does not meet required authentication level | Pass SPF and DKIM; publish DMARC (`p=none` minimum) with alignment | | `550 SC-001` | Rejected for policy reasons — spam-like content or poor reputation | Review content and reputation; request mitigation | | `550 SC-002` | Namespace mining behavior detected | Verify machines aren't compromised; stop address-harvesting | | `550 SC-003` | IP appears to be an open proxy/relay | Close the relay; remediate before requesting delisting | | `550 SC-004` | IP blocked due to user complaints | Enroll in JMRP; remove complainers; request mitigation | | `550 DY-001` | Mail from dynamic IPs is not accepted | Send from static IP space (Spamhaus PBL lists dynamic ranges) | | `550 DY-002` | Sending pattern suggests a compromised or virus-infected host | Clean the host; contact ISP | | `550 OU-001` | Generic policy rejection (third-party listing) | Check/request removal via Spamhaus | | `550 OU-002` | Rejected for spam characteristics or reputation | Review content, authentication, and reputation | Additional documented remediation notes: verify reverse DNS; allow **48 hours** of propagation after updating sender-authentication DNS records when a domain's purpose changes; enroll in JMRP to see what recipients mark as junk. ## Reputation and monitoring tools Microsoft provides two free programs — **SNDS** (per-IP reputation data: complaint rates, spam-filter verdicts) and **JMRP** (a feedback loop returning the full message when a recipient marks it junk/phishing). Both are covered in [Microsoft SNDS & JMRP](https://emailmarketing.net/learn/postmaster-tools/microsoft-snds-jmrp). Abuse can be reported to Microsoft at `report_spam@outlook.com` in RFC 2822 or ARF format. ## Related - [DMARC](https://emailmarketing.net/learn/authentication/dmarc) — alignment, record syntax, moving to enforcement - [Yahoo Sender Requirements](https://emailmarketing.net/learn/providers/yahoo-sender-requirements) — the parallel 2024 Yahoo mandate - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability) — why complaint and engagement signals drive filtering # Provider Escalation and Mitigation Channels > The cross-provider map of sender-support, mitigation, and unblock channels — Google, Yahoo, Apple, Microsoft — with the exact forms, required fields, eligibility gates, and the evidence to gather before any escalation. Source: emailmarketing.net — https://emailmarketing.net/learn/providers/escalation-and-mitigation-channels When a mailbox provider blocks or misfiles your mail after you have fixed the cause, you ask that provider for mitigation. Every major provider offers a different channel with different prerequisites, and all of them share one property: **escalation only helps senders who already comply**. Providers use these channels to clear the blocks that remain on traffic that has been fixed. They do not use them to override their filters for senders who have not fixed the root cause. Fix first, and escalate second. ## Universal preparation: evidence to gather before any escalation Every provider form or postmaster mailbox asks for part of the same set of evidence. Put it together before you open any ticket: | Evidence | Details | |---|---| | Exact error strings | The full SMTP reply text from your logs, word for word, including enhanced status codes, any provider identifiers (for example Gmail's `gsmtp` or `gcdp` suffix) and any URLs in the text | | Timeline | When the problem started, whether it is intermittent or constant, and what changed around that date (new IP addresses, a new customer, a jump in volume, a template change) | | Affected infrastructure | Sending IP addresses (one per line, because several forms read them that way), PTR records, sending domains, and which streams and customers use them | | Authentication state | Proof that SPF, DKIM and DMARC currently pass with alignment for the affected domain (an `Authentication-Results` header from a delivered message is ideal) | | Volume history | Daily volume to the affected provider over the preceding weeks. Providers check for spikes before they grant mitigation | | Reputation data | Current spam-rate and complaint figures from the provider's own dashboard ([Google Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools), [Microsoft SNDS](https://emailmarketing.net/learn/postmaster-tools/microsoft-snds-jmrp), [Yahoo performance feeds](https://emailmarketing.net/learn/providers/yahoo-performance-feeds)) | | Full headers of an affected message | Recent ones. Google requires headers from messages **less than 12 days old** | | Remediation already performed | What you fixed and when. The escalations that get mitigated are the ones that list concrete corrective actions | ## Google (Gmail) Google runs two escalation channels, and both are subject to a strict eligibility rule. The marketing page at `gmail.com/postmaster` only points to the Postmaster Tools console at `postmaster.google.com`. ### Eligibility gate (applies to both channels) Since June 2024, bulk senders with a user-reported spam rate **above 0.3%** are **not eligible for mitigation**. They become eligible again only after the spam rate in Postmaster Tools stays **below 0.3% for 7 consecutive days**. Full SPF, DKIM and DMARC authentication and a working one-click unsubscribe are prerequisites. See mitigation eligibility in [Gmail sender requirements](https://emailmarketing.net/learn/providers/gmail-sender-requirements#mitigation-eligibility). ### Channel 1: "Report delivery issue" inside Postmaster Tools (preferred) Google's newer escalation path, which you can track, is inside the Postmaster Tools console (documented at support.google.com/mail/answer/16740603). Use it for messages **wrongly classified as spam or phishing, rejected, or failing temporarily**. Prerequisites: 1. The domain is **verified** in Postmaster Tools. 2. The domain **complies with the sender guidelines** (SPF and DKIM authentication), and the domain in the `From:` header matches the domain you report under. Procedure: 1. Sign in to Postmaster Tools. 2. Open **Report delivery issue** (in the menu at the bottom left). 3. Select the domain from the dropdown, then **Create new report**. 4. Fill in the message details. The **"Get message info for me"** helper fills in the form for you: open the affected message, choose **Show original**, copy the raw message, paste it into the form field, and click **Get info**. 5. Submit the report. Track its progress under **Reported issues** on the domain dashboard, where each escalation has a status. Google publishes no commitment on response time for this channel. ### Channel 2: the Sender Contact Form (older escalation form for bulk senders) The standalone form at `support.google.com/mail/contact/bulk_send_new` ("Sender Contact Form") is still open. However, Google's own text on it now recommends using the **Report delivery issues** flow in Postmaster Tools instead, because it is easier to track. | Field | Required | |---|---| | Name | no | | Email address | yes | | Issue type (dropdown) | yes | | Short summary of issue | yes | | Detailed description | yes | | Email headers (depending on the issue type) | conditional | The issue-type dropdown offers: 1. "Your messages are incorrectly classified as Spam or Phishing" 2. "You get SMTP temp-fails or rejects" 3. "Other" The form states these rules: - Follow the Sender Guidelines **before** you request mitigation. - Submitted headers must come from messages **less than 12 days old**. - Leave **at least 2 weeks between submissions** so that changes can take effect. - Monitor results in Postmaster Tools rather than waiting for a reply. ### What Google mitigation can and cannot fix The channel handles misclassification and the blocks that remain on traffic that **complies** (for example, 5.7.x blocks that persist after remediation, or "Suspected spam" delivery errors in the dashboard). It cannot override the 0.3% gate, replace fixes to authentication, or guarantee inbox placement. For fixes you can make yourself, error by error, see [Gmail SMTP troubleshooting](https://emailmarketing.net/learn/providers/gmail-troubleshooting). ## Yahoo (including AOL) Yahoo's entry point for escalation is `senders.yahooinc.com/contact/`, which leads to four paths: | Path | Channel | |---|---| | Problems delivering mail to AOL or Yahoo mailboxes | **Sender Support Request**, the Salesforce "Email a Specialist" form (embedded iframe: `https://vzmmemberservices.my.salesforce-sites.com/?fc=SSR`) | | Report abuse coming from AOL or Yahoo domains | The Report Abuse form (on the same Salesforce site, `?fc=ReportAbuse`). Include the full message text and headers | | Setting up and managing the Complaint Feedback Loop | Leads to the [CFL page](https://emailmarketing.net/learn/providers/yahoo-complaint-feedback-loop). When the page was captured, the contact page said its newer CFL signup form was temporarily down, and it fell back to the same "Email a specialist" flow in Yahoo Help | | General and developer questions | `mail-questions@yahooinc.com` (general) and `mail-api@yahooinc.com` (developer and API) | ### Sender Support Request: full field list The form offers **New request** and **Status update** (choose one; required). These fields were captured from the live form (\* marks a required field): | Field | Notes | |---|---| | Email address\* (entered twice) | Where Yahoo replies | | Name\*, role at the company\* | | | Company name\*, postal address\*, phone number\* | | | URL of the application or service\* | Its domain **must match the domain of your privacy policy URL** | | Mailing information for each active mail server\* | IP address, reverse DNS record and associated domain, with **one mail server entry per line**. For issues that involve several IP addresses, list every affected IP address, one per line | | Do you use an ESP?\* (yes or no), and which one\* | ESP customers name their provider | | Do you sign with DKIM?\* (yes or no) | | | Type of email sent\* | For example marketing, transactional, forum postings, newsletters, personal, other | | Subscription process\* | For example confirmed or double opt-in, single opt-in, opt-out, co-registration, affiliate marketing, other | | Subscriber count\* and emails sent per month\* | | | ISP checkbox | Check it if you are an Internet Service Provider | | Privacy Policy URL\* and Subscription Form URL\* | | | Do you remove bouncing addresses?\* (yes or no) | | | Unsubscribe-processing time\* | How long it takes to remove an address | | Error message (optional) | The exact text of the error you are seeing | | Additional information (optional) | Use it for the timeline and the account of your remediation | The form is protected by hCaptcha. Much of it asks about **list practices** (opt-in method, bounce handling, how quickly unsubscribes are processed): Yahoo evaluates the sender's whole program, not only the block. ### Realistic expectations - Yahoo publishes **no service-level agreement (SLA)** for responses from sender support. - There is **no formal whitelisting program**. For large launches or legal notifications, the same Sender Support Request is the channel. Yahoo may adjust reputation, but it never guarantees inbox delivery (see [Yahoo sender requirements](https://emailmarketing.net/learn/providers/yahoo-sender-requirements)). - For IP addresses or domains that were just blocked, submit the request **including the error and diagnostic codes** (deferrals prefixed with TS or PH, and 5xx codes; see [Yahoo SMTP error codes](https://emailmarketing.net/learn/providers/yahoo-smtp-error-codes)). - The Sender Hub also offers a **Sender Hub Insights** dashboard, available after you log in, that shows aggregated delivery statistics for your domain. Check it, and the [performance feeds](https://emailmarketing.net/learn/providers/yahoo-performance-feeds), before and after you escalate. ## Apple (iCloud Mail) Apple has **no self-service unblock form, no allowlist and no FBL**. The escalation path is the postmaster mailbox **icloudadmin@apple.com**, for system administrators only. Contact it only after you have read the SMTP error (Apple's rejections include a URL that explains them) and fixed the problem against the published requirements. The message must include the company name, the email domain, the affected IP addresses, the SMTP errors word for word, and a description that says when the issue started. The full procedure and table of requirements are in [Apple iCloud Mail](https://emailmarketing.net/learn/providers/apple-icloud-mail). (Apple's en-US and en-CA pages for document 102322 have identical content.) ## Microsoft (Outlook.com and Office 365) Microsoft's channels are documented separately in [Microsoft escalation channels](https://emailmarketing.net/learn/providers/microsoft-escalation-channels): the SNDS review, the Outlook.com sender support and mitigation flow for blocks in the RP and SC series, and the Office 365 portal for delisting IP addresses. See also [Microsoft sender requirements](https://emailmarketing.net/learn/providers/microsoft-sender-requirements) and [SNDS & JMRP](https://emailmarketing.net/learn/postmaster-tools/microsoft-snds-jmrp). ## Other providers (quick pointers) - **Comcast Xfinity**: a block-removal form (limited to 5 requests a day) and a CSA phone line. See [Comcast Xfinity postmaster](https://emailmarketing.net/learn/providers/comcast-xfinity-postmaster). - **GMX, WEB.DE and mail.com**: a form to report blocklisting. Complaint feedback comes through CSA certification, not through a direct FBL. See [GMX and WEB.DE postmaster](https://emailmarketing.net/learn/providers/gmx-web-de-postmaster). - **Blocklist operators** (Spamhaus and others) have entirely separate escalation processes. See [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus). ## Operating discipline 1. **Diagnose and remediate before you escalate.** Every provider answers a sender that does not comply by pointing back to its requirements page. 2. **One clean, complete submission** works better than repeated partial ones. Google explicitly asks for 2 weeks between submissions. 3. **Escalate from the provider's own data** (Postmaster Tools, SNDS, Yahoo feeds), so that your claim matches what the provider sees. 4. **Log every escalation** (channel, date, evidence submitted, outcome). Blocks that keep coming back at the same provider are a problem with your sending program, not with a ticket. To recover volume after mitigation, see [reputation monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring). # Yahoo Complaint Feedback Loop (CFL) > How Yahoo's DKIM-domain-based Complaint Feedback Loop works: enrollment via Sender Hub, ARF report format, and operational rules. Source: emailmarketing.net — https://emailmarketing.net/learn/providers/yahoo-complaint-feedback-loop If you send mail to Yahoo users, you can receive a report each time one of them marks your message as spam. Yahoo's Complaint Feedback Loop (CFL) sends these reports in **ARF (Abuse Reporting Format)**. The reports let you **suppress complainers from further campaigns** and adjust your targeting and frequency. This matters because spam votes directly damage sender reputation, and count toward Yahoo's 0.3% complaint threshold (see [Yahoo Sender Requirements](https://emailmarketing.net/learn/providers/yahoo-sender-requirements)). ## Key properties | Property | Value | |---|---| | Basis | **Domain-based, DKIM only.** Only mail signed with DKIM is supported, because DKIM is how Yahoo identifies the sender actually responsible | | IP-based FBL | **Not offered.** Yahoo no longer supports CFL reporting based on IP addresses or CIDR ranges | | Report format | ARF | | Coverage | All consumer domains hosted by Yahoo, including AOL (thousands of hosted domains) | | Who should enroll | Bulk email senders. ESPs usually enroll DKIM domains on behalf of their clients | ## Enrollment (via Sender Hub) 1. **Create your Sender profile** on Yahoo Sender Hub (senders.yahooinc.com). 2. **Add and verify your domains**: the DKIM `d=` domains you sign with. 3. **Enroll each domain** in the CFL. Notes: - Enrollments made through Yahoo's **old form, from before Sender Hub, did not carry over**. You had to enroll again through Sender Hub. ARF reports for old enrollments stopped on **August 1, 2024**, with no grace period. - The **reporting address can be any email address you control**. Ownership is verified during enrollment, and you can reuse the same verified address to enroll more domains. - Enrolling the organizational domain does not enroll all its subdomains. **ARF reports are sent for the enrolled DKIM domains that match the signature** on the message that received the complaint. Enroll each signing domain. - To check the status of enrollments, edit them or delete them, go to **Manage Services**, then **Complaint Feedback Loop**, in your Sender Hub profile. ## Report mechanics - All reports use the **Abuse Reporting Format (ARF)** and contain **at least three MIME parts**: a plain-text part, machine-readable metadata in MIME format, and the headers of the original message. - Report messages arrive with: - From header display name: **"Yahoo! Mail AntiSpam Feedback"** - SMTP sender: **feedback@arf.mail.yahoo.com** - A DKIM signature with the domain **arf.mail.yahoo.com** (verify the signature before you trust the reports or automate actions on them) - When a message has several DKIM signatures, Yahoo evaluates all of them for the CFL (and also for DMARC alignment and reputation). ## Operational use - **Automate suppression.** Parse incoming ARF reports, and immediately unsubscribe or suppress the recipient who complained. Continuing to mail people who complained adds to the reputation damage. - **Monitor the complaint rate.** Comparing CFL volume with the volume delivered to Yahoo is the practical way to track your position against the 0.3% threshold. The `complaints` metric in the [Performance Feeds](https://emailmarketing.net/learn/providers/yahoo-performance-feeds) gives an aggregate view. - **Diagnose segments.** A spike in ARF reports after a change in content, frequency or audience identifies the campaign or segment at fault. ## Related articles - [Yahoo Sender Requirements](https://emailmarketing.net/learn/providers/yahoo-sender-requirements), including the 0.3% complaint threshold - [Yahoo Deliverability Performance Feeds](https://emailmarketing.net/learn/providers/yahoo-performance-feeds), for aggregate complaint and placement metrics - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability), on how complaints affect reputation # Yahoo Email Deliverability Performance Feeds > Yahoo's server-side data feeds for senders: the Placement Feed (inbox/spam/folder/error/complaints) and Campaign Performance Feed (engagement metrics), with schemas and SLAs. Source: emailmarketing.net — https://emailmarketing.net/learn/providers/yahoo-performance-feeds If you want to know whether your mail reaches the inbox or the spam folder at Yahoo, without relying on seed lists, Yahoo's performance feeds give you that answer. They are the only direct way to see ground-truth placement data at this major mailbox provider. The feeds report email placement and engagement **taken directly from the Yahoo mail servers**, rather than from tracking pixels or from seed or panel data. Yahoo presents this as more respectful of privacy than pixel tracking, and more representative than panel sources with small samples, given that Yahoo has hundreds of millions of active users. ## The two feeds ### Placement Feed The Placement Feed tracks where messages land (inbox, spam, folders), as well as errors and complaints. The data is filtered by an **allowlist of sender domains or sender IP addresses that the feed's user supplies**. | Dimensions | Metrics | |---|---| | `dkim_domain`, `sender_domain`, `ip_address`, `xheader`, `xheader_value` | `inbox_delivers`, `spam_delivers`, `folder_delivers`, `error_delivers`, `complaints` | The `xheader` and `xheader_value` dimensions let a sender break results down by a custom X-header (for example, a campaign ID added to outgoing mail). ### Campaign Performance Feed The Campaign Performance Feed measures engagement after delivery, broken down by sender domain and campaign. It is filtered by a **sender allowlist of sender domains**. | Dimensions | Metrics | |---|---| | `declared_template_namespace`, `declared_template_id`, `declared_template_goal`, `delivery_type`, `client`, `sender_domain`, `sender_email`, `engagement_date`, `user_local_hour`, `is_scrubbed` | `delivered`, `opened`, `link_clicked`, `deleted`, `marked_read`, `forwarded`, `starred`, `archived`, `moved`, `push_notif_opened`, `replied`, `marked_spam`, `dwell_time_read`, `dwell_time_glance`, `dwell_time_skim` | The engagement signals go deep. They include deletions, replies, spam votes, opens of push notifications, and categories of dwell time (read, glance and skim). These are the same kinds of signals that mailbox providers use internally for reputation (see [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability)). ## Feed specifications | Spec | Placement Feed | Campaign Performance Feed | |---|---|---| | Reporting granularity | Hourly | Hourly | | Delivery granularity | Hourly | Daily | | SLA (data latency) | 12 hours | 48 hours | | Retention | 30 days | 30 days | | File format | Avro | Avro | | Timezone | UTC | UTC | | Filtering | Allowlist of sender domains or sender IPs | Allowlist of sender domains | ## Access Yahoo publishes no pricing, no formal eligibility criteria and no way to enroll yourself. Contact **mail-questions@yahooinc.com** to learn about the program and its access requirements. ## How it fits a deliverability workflow - **Placement monitoring**: replace or check seed-list testing at Yahoo with actual counts of inbox and spam placement for each domain and IP address. Watch `error_delivers` alongside your SMTP logs (see [Yahoo SMTP Error Codes](https://emailmarketing.net/learn/providers/yahoo-smtp-error-codes)). - **Complaint-rate tracking**: `complaints` divided by `inbox_delivers` approximates the rate that Yahoo checks against its **0.3% threshold** ([Yahoo Sender Requirements](https://emailmarketing.net/learn/providers/yahoo-sender-requirements)). Combine it with the suppression of individual recipients through the [Complaint Feedback Loop](https://emailmarketing.net/learn/providers/yahoo-complaint-feedback-loop). - **Engagement optimization**: dwell time and action metrics (deletions compared with reads, `user_local_hour`) help decide on content, segmentation and send times for each campaign or template. - **Stream comparison**: the `dkim_domain` and `ip_address` dimensions show how separate mail streams perform compared with each other (see [Advanced IP Segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation)). ## Related articles - [Yahoo Sender Requirements](https://emailmarketing.net/learn/providers/yahoo-sender-requirements) - [Yahoo Complaint Feedback Loop](https://emailmarketing.net/learn/providers/yahoo-complaint-feedback-loop) - [Yahoo SMTP Error Codes](https://emailmarketing.net/learn/providers/yahoo-smtp-error-codes) # Yahoo Sender Requirements & Best Practices > Yahoo Mail's requirements for all senders and bulk senders (authentication, one-click unsubscribe, 0.3% complaint threshold) plus recommendations on list hygiene, infrastructure, and reputation. Source: emailmarketing.net — https://emailmarketing.net/learn/providers/yahoo-sender-requirements If you send to Yahoo Mail addresses, your mail must meet Yahoo's published sender requirements to reach the inbox. Yahoo began enforcing them in **February 2024**, with a gradual rollout, and began enforcing the List-Unsubscribe policy in **June 2024**. The requirements apply to **all domains and consumer brands hosted by Yahoo Mail**, including AOL and the other domains Yahoo hosts. **Yahoo Japan operates independently** and is not covered. Mail that fails the requirements may be delivered to spam, or rejected outright with an error code (see [Yahoo SMTP Error Codes](https://emailmarketing.net/learn/providers/yahoo-smtp-error-codes)). ## Requirements for all senders | Requirement | Detail | |---|---| | Authentication | Implement **SPF or DKIM at a minimum** | | Complaint rate | Keep the spam complaint rate **below 0.3%** | | DNS | Valid **forward and reverse (PTR) DNS records** for sending IP addresses | | Standards | Comply with **RFC 5321** and **RFC 5322** | ## Additional requirements for bulk senders Yahoo does not publish a volume threshold that defines a "bulk sender": a bulk sender is one that sends a significant volume of mail. For enforcement, a "sender" is evaluated at the level of the **authenticated domain or the From header domain**, and Yahoo uses all the information available (content, IP and so on) to review compliance. | Requirement | Detail | |---|---| | SPF **and** DKIM | Both must be implemented, not just one | | DMARC | Publish a valid DMARC policy of **at least `p=none`**, and **DMARC must pass**. A `rua` tag for aggregate reports is recommended. **Relaxed alignment is acceptable**: the From header domain must align with the SPF domain or the DKIM domain. | | List-Unsubscribe header | A working **List-Unsubscribe header that supports one-click unsubscribe** on marketing and subscribed messages. **The POST method of RFC 8058 is highly recommended**; the `mailto:` method is acceptable. | | Visible unsubscribe | An obvious, visible unsubscribe link in the message body that **does not require a login**. Body links may lead to preference pages, but they do not replace the header | | Unsubscribe honoring | Honor unsubscribe requests **within 2 days**, with no grace period beyond that | | Complaint rate | Spam rate below **0.3%**, calculated on mail delivered to the inbox | | DNS and RFC | The same forward and reverse DNS, and compliance with RFC 5321 and RFC 5322, as for all senders | ### Scope of one-click unsubscribe - It applies **only to promotional or marketing messages**, not to transactional messages (order confirmations, password resets). - If a class of message that does not require it generates many complaints, Yahoo suggests adding unsubscribe options anyway. - When the List-Unsubscribe header is set up correctly according to RFC 8058 **and** the sender has enough reputation and engagement, Yahoo webmail shows a blue "Unsubscribe" option next to the From address. Test it at https://mail.yahoo.com/. ### Spoofing counts against you Spoofed mail that uses your domain **counts toward Yahoo's enforcement thresholds**. If your domain is being spoofed, move DMARC to an enforcement policy (`p=quarantine` or `p=reject`). See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) for how to reach Enforcement safely. ## Authentication details - **DKIM key length**: at least **1024 bits**, with **2048 bits recommended**. - **Multiple DKIM signatures**: Yahoo evaluates all signatures for DMARC alignment, for reputation calculation and for the Complaint Feedback Loop. Several signatures that do not pass do not add up to a DMARC pass. - **SPF**: publish the specific set of IP addresses authorized to send. - **ARC** (Authenticated Received Chain): recommended for mail that is forwarded. - Yahoo publishes `p=reject` for its own domains, so mail that spoofs From addresses such as @yahoo.com is rejected. ## Recommendations beyond the requirements ### List acquisition and hygiene - Send only to users who **specifically requested** the mail: no purchased lists, and no pre-checked opt-in boxes. - Use **double opt-in** (a confirmation click) to improve list quality. - Set expectations at signup (what mail to expect, how often, and what it looks like), and **keep to the frequency the list was set up for**, without raising it unexpectedly. - Monitor hard and soft bounces and inactive recipients, and **remove invalid recipients promptly**. - Periodically send a **reconfirmation email to inactive subscribers**. ### Infrastructure - Publish **valid, meaningful, non-generic reverse DNS (PTR) records** that reflect your domain name, and avoid names that look like dynamically assigned IP addresses. - **Separate mail streams**: do not send bulk or marketing mail from the IP addresses (or DKIM domains) you use for transactional mail, alerts or user mail. See [Advanced IP Segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation). - Keep servers patched, and make sure they are not **open relays or open proxies** (Yahoo rejects mail from these). - Add Border Gateway Protocol (BGP) routes for IP space you own. - **Connection management**: limit the number of messages per SMTP connection, reconnect if the connection ends without an error code, and open concurrent connections with restraint. Yahoo publishes no specific limits per connection or on concurrency. ### Monitoring and reputation - Enroll all DKIM domains in the [Complaint Feedback Loop](https://emailmarketing.net/learn/providers/yahoo-complaint-feedback-loop), and suppress complainers. - Yahoo's reputation inputs include **IP reputation, URL reputation, domain reputation, sender reputation, autonomous system number (ASN) reputation, DKIM signatures, DMARC authentication**, and user spam votes. - A good domain reputation alone does not guarantee the inbox. A combination of factors (high complaints, obfuscated URLs, missing rDNS, non-compliance with RFCs) can still send mail to spam. Rules set by individual users override the system's decisions. - Control spikes in traffic, and warm up new IP addresses gradually. See [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up). - Yahoo evaluates complaint rates for enforcement **continuously**, and domains with high complaint rates may be deferred. ### Compliance - Follow the **CAN-SPAM Act**: no false or misleading headers, and no deceptive subject lines. ## Operational FAQ points | Topic | Yahoo's answer | |---|---| | Whitelisting | There is no formal allowlisting program. For large launches or legal notices, submit a Sender Support Request. Reputation may be adjusted, but inbox delivery is never guaranteed. | | New IP addresses or domains blocked | Submit a Sender Support Request that includes the error and diagnostic codes from your logs. | | Maximum message size | Approximately **25 MB** of attachments. It varies with several factors, and neither users nor the Postmaster team can configure it. | | Reporting abuse by Yahoo users | Mark the message as spam in the product, or use Yahoo's Report Abuse form, with the full message text and headers. | | BIMI logo not displaying | Requirements: a valid SVG record for Brand Indicators for Message Identification (BIMI), a DMARC policy of quarantine or reject, bulk mail being sent, and enough reputation and engagement. Allow time for DNS propagation, and verify at https://mail.yahoo.com/ with the cache cleared. | ## Related articles - [Yahoo Complaint Feedback Loop](https://emailmarketing.net/learn/providers/yahoo-complaint-feedback-loop), to monitor the complaints that count toward the 0.3% threshold - [Yahoo SMTP Error Codes](https://emailmarketing.net/learn/providers/yahoo-smtp-error-codes) - [Yahoo Deliverability Performance Feeds](https://emailmarketing.net/learn/providers/yahoo-performance-feeds) - [DMARC](https://emailmarketing.net/learn/authentication/dmarc) - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability) # Yahoo SMTP Error Codes > Yahoo Mail's SMTP error/deferral categories (4XX temporary, 5XX permanent, TS* deferrals, PH* content blocks) with causes and recommended actions. Source: emailmarketing.net — https://emailmarketing.net/learn/providers/yahoo-smtp-error-codes When Yahoo Mail defers or rejects your mail, its SMTP response tells you whether to retry and what to fix. Yahoo documents these errors (Delivery Status Notifications, DSNs) **by category rather than in an exhaustive table of individual codes**. Extended tokens such as `TS*` (temporary deferrals) and `PH*` (blocks for content or phishing) appear in the DSN text next to the numeric code. When you contact Yahoo about persistent errors, include the **exact error and diagnostic codes from your logs** in a Sender Support Request. ## Top-level classes | Class | Codes | Meaning | Retry? | |---|---|---|---| | 4XX temporary | 421, 451 | A temporary problem is blocking delivery | Yes, retry later | | 5XX permanent | 550, 553, 554 | A permanent problem, and the message is refused | **No.** Never retry, and remove addresses that generate 5xx bounces | ### Causes of 4XX (421 and 451) temporary errors - Yahoo observed unusual traffic patterns from your sending server's IP address. - The message had characteristics of spam. - Mail from your server has been generating complaints from Yahoo users. - Yahoo mail servers were busy at the time of connection. - Other suspicious behavior triggered **dynamic deprioritization** of your server. - Your name server was temporarily unavailable. - A temporary error prevented Yahoo from determining the authentication results for your domain. Action: review Yahoo's Sender Requirements & Recommendations (see [Yahoo Sender Requirements](https://emailmarketing.net/learn/providers/yahoo-sender-requirements)) and retry later. If you do not administer the mail server, contact its administrator. ### Causes of 5XX (553 and 554) permanent errors - The recipient address is invalid. - The message failed authentication against the DMARC or DKIM policy of the sending domain. - Yahoo does not accept the content, for policy reasons. - Other suspicious behavior led to permanent rejection of the SMTP connection. - **The IP address is listed by Spamhaus.** Check https://www.spamhaus.org. Action: do **not** retry. Consistent 5xx errors signal a widespread problem, and list managers should have a policy for removing addresses that generate 5xx bounces. ## Error categories | Category | Typical codes | Cause | Recommended action | |---|---|---|---| | RFC compliance failures | 4xx or 5xx | Duplicate headers, badly formatted headers, incorrect MIME types, and other violations of RFC 5321 and 5322 | Fix how messages are built so that they comply with the RFCs | | From domain that does not resolve (RFC 5321 or 5322) | 451 (timeout or SERVFAIL) or 554 (permanent failure) | The domain to the right of the @ in MAIL FROM or in the header From does not appear valid. Yahoo checks that it exists with an **SOA query**, so subdomains used in MAIL FROM or the header From need **SOA records**, not only A or MX records (even wildcard ones) | Make sure every subdomain used in From or MAIL FROM resolves and is covered by an SOA record | | Excessive user complaints | Deferral or rejection | Mail that generates too many spam votes from Yahoo users | Monitor your reputation (even senders with a good reputation get spam votes). If the error persists for more than 48h, or follows changes to content or policy, review outgoing mail for objectionable content or practices. On shared IP addresses, traffic from other domains may be hurting you, so consider dedicated IP addresses. Check that recipients opted in properly | | Excessive unsolicited messages | Deferral or rejection | Very high volume from a single IP address, which is typical of unsolicited bulk mail. Often a **new IP address ramped up too fast** | Do not resend until you have reviewed your practices. Warm up IP addresses slowly (see [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up)). Confirm that all recipients asked for the mail. If the error persists for more than 48h, review content and practices | | Excessive unknown recipients | Rejection | A server sending to many invalid recipients. It may be an **open relay or open proxy**, and Yahoo does not accept mail from these | Secure your servers, remove bouncing addresses from lists, and examine outbound queues for abuse by spammers | | Authentication failures | Rejection | Failed SPF, DKIM or DMARC verification. Yahoo rejects mail for a DKIM failure when the signing domain publishes a policy requiring all its mail to be DKIM-signed, the domain is in the DKIM `d=` tag, and the message could not be authenticated (a missing or bad signature) | All senders: SPF or DKIM. Bulk senders: SPF, DKIM and DMARC. Senders on Microsoft 365 or Google Workspace: configure DKIM following their guides. Mailing lists (listservs): put the list address in From: and the actual sender in Reply-To:. Forwarded mail: consider ARC | | Content-based blocks | **PH\*** errors | Content Yahoo does not accept: viruses, phishing, ransomware, other malware, or links to any of these | Examine outbound queues for objectionable content, and secure servers against abuse | | Recipient does not exist | 554 (for example `554 delivery error: dd This user doesn't have a yahoo.com account (user@yahoo.com) [-5]`) | The Yahoo account does not exist | Never retry. Remove the address from your list, and confirm the address with the recipient directly | | Message temporarily deferred | **TS\*** errors (421) | Substantial complaints from Yahoo users, objectionable or spam-like content, **poor IP reputation (of the IP address or its /24 subnet)**, or unusual traffic patterns | Retrying later is acceptable. Review outgoing content. Servers that do not send bulk mail (personal, corporate, education or ISP servers) should check their queues for abuse by spammers. If the error continues over an extended period, submit a Sender Support Request with the error and diagnostic codes | | Resources temporarily unavailable | 4xx | Yahoo mail servers were busy at the time of connection | Usually brief. Retry after a short period | | Other policy errors | 550, 554 | A **null MX record (RFC 7505)**. A header that is too big (From, Subject, To). A Date out of range. A header value that cannot be decoded (From, Subject). An address that contains unusual or forbidden characters (for example `,$%?{}<>`) | Fix the record, header or address at fault | ## Reading a Yahoo bounce A Yahoo failure notice (from "MAILER-DAEMON" or "Mail Delivery Subsystem", with a subject such as "Failed Delivery") has two parts: the reason for the bounce, then a copy of the original message. Here is an example of the line reporting what the remote host said: ``` Remote host said: 554 delivery error: dd This user doesn't have a yahoo.com account (testing123@yahoo.com) [-5] - mta123.mail.mud.yahoo.com ``` The most common cause of failure is an invalid recipient address. If the account "doesn't exist", check the spelling. If bounces continue, the account may have been closed or moved. ## Related articles - [Yahoo Sender Requirements](https://emailmarketing.net/learn/providers/yahoo-sender-requirements), the requirements whose violation causes most of these errors - [Yahoo Complaint Feedback Loop](https://emailmarketing.net/learn/providers/yahoo-complaint-feedback-loop), to prevent deferrals caused by complaints - [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up), to avoid "excessive unsolicited messages" errors on new IP addresses # Content and Design for Deliverability > Content-level filtering factors — spam-trigger-word myths vs reality, image/text balance, link practices, headers, subject lines, Gmail tabs, and engagement-optimizing design. Source: emailmarketing.net — https://emailmarketing.net/learn/operations/content-and-design-for-deliverability Reputation and list quality weigh most in filtering decisions (see [Foundations](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability)), but content is the one filtering input you control directly on every message you send. Litmus reports that **70% of emails show at least one spam-related issue** that could keep them out of the inbox. Modern spam filters are machine learning systems, trained on spam and phishing patterns and adjusting in real time. Content rules are therefore best understood as avoiding spam patterns and optimizing engagement, not as a fixed checklist of keywords. ## Spam trigger words: myth vs. reality **Myth**: certain words ("free", "buy now", "sale") automatically send mail to spam, and avoiding a magic list of words guarantees inbox placement. **Reality**: specific trigger words are not a problem in themselves; what matters is how they are used. A genuinely free offer described as free is fine. A misleading "free" claim, or a "flash sale" that repeats every week, generates spam complaints and list churn, and it is those complaint and engagement signals that sink placement. Filters trained on real user feedback punish deceptive patterns, not vocabulary. Some content patterns still genuinely match spam: | Pattern | Why it hurts | |---|---| | Misleading subject lines or false claims | They drive complaints, and deception is the core signal filters target | | ALL CAPS and strings of exclamation marks | A strong, classic correlate of spam | | Excessive symbols ($$$, walls of emoji) in subjects | Same | | Misspellings (especially deliberate spellings meant to evade filters) | A historic spammer technique | | HTML-only messages with no text part | Poorly received by providers, and they render badly when images are blocked | ## Image, text and link balance - **Higher ratios of text to images and of text to links are better.** Too many images or links relative to text trigger spam flags. Filters are suspicious of emails dominated by images, because the all-image email is a classic technique for evading filters. - Providers commonly **block images by default**, so an email made only of images shows the recipient nothing, which hurts the engagement signals that drive placement. Always send **multipart (text and HTML)** or text only. - Include **alt text** on images. It preserves meaning when images are blocked, supports screen readers, and reduces complaints driven by frustration. - Readable layouts and adequate contrast affect engagement, and engagement affects placement. Broken links and missing images frustrate subscribers and reduce clicks. - Test rendering in the major clients before sending. A message that displays broken in one client silently loses the engagement signal from that provider. ## Link practices - **Link domains should match the sending domain**, or at least share the same organizational root. Links that point to unrelated domains are a phishing pattern. - **Avoid public URL shorteners.** Spammers use them heavily, and some filters penalize them outright. - Avoid **too many links**, and never send **broken links**. - Use a **branded click-tracking domain (with SSL)** rather than the shared tracking domain of an email service provider (ESP). It aligns tracking links with your brand or root domain, keeps the behavior of other senders on a shared tracking domain from affecting you, and measurably increases the likelihood of clicks. ## Headers and structural details - **The From domain must match the actual sending domain.** This is a DMARC alignment issue, not only a cosmetic one, and Microsoft's Hotmail is particularly strict. Even `mail.example.com` against `example.com` can be enough to send mail to the spam folder at some receivers. See [DMARC](https://emailmarketing.net/learn/authentication/dmarc). - Gmail scrutinizes the **Message-ID and Received headers**. A malformed Message-ID (missing the `< >` brackets, or the wrong domain after the `@`) reads as spamware. If your infrastructure generates Message-IDs correctly, do not override them in application code. - **Personalize the To: field** with the recipient's actual address, and use the recipient's name in the greeting. - Include a working **unsubscribe link and List-Unsubscribe headers**. Several providers (notably Hotmail and Outlook) filter mail that lacks them, and one-click unsubscribe is a requirement for bulk senders at Gmail and Yahoo. An unsubscribe option that is hard to find turns into spam complaints, which are a far more damaging signal. - Include a **physical mailing address**, and ideally a link to your privacy policy (CAN-SPAM requires the unsubscribe mechanism and the postal address). ## Subject lines - The subject line is the first thing a recipient sees. It drives the decision to open, and opens drive placement. - Never mislead. A mismatch between subject and body is a top cause of complaints and a direct filtering signal. - Keep symbols to a minimum and avoid all caps. - **A/B test subject lines systematically.** Testing for a winning variant (with reporting on confidence in the winner) is the content experiment with the most leverage on open rates. Measure against the benchmark of an open rate of at least 33% (see [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring) for the full table of thresholds). ## Gmail tabs (Primary, Promotions, Updates, Social, Forums) - Gmail's algorithms decide tab placement after delivery. Senders cannot choose a tab in advance, but content shapes the outcome. - **Promotions is not spam.** Studies show that emails in the Promotions tab did not suffer the feared decline in open rates, and landing there is normal for marketing mail. - Factors that push mail toward Primary: personalization (for example, inserting the first name, with fallbacks), a conversational one-to-one style, and a limited number of images and links. Heavily templated mail that is dominated by images and dense with links is sorted to Promotions. - Users can drag a message to another tab and tell Gmail to keep doing that, so asking engaged readers to move you to Primary is legitimate and effective. - Seed testing tools can predict the tab placement of a given message before sending (see [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring)). ## Engagement-optimizing practices Content earns inbox placement indirectly, by producing the engagement signals that providers reward: - **Relevance and targeting matter more than anything else.** Segment and personalize. Content that does not match the segment shows up as unsubscribes and complaints. - **Make it easy to reply.** Send from an address that accepts replies, and invite them. Replies and forwards are among the strongest positive signals, and a real conversation "does wonders" for reputation. - **Set expectations at signup and honor them**, for example with a welcome series that states the content and frequency. Then match frequency to engagement: reduce frequency as a recipient's engagement drops. Sending often to unengaged profiles damages reputation, while sending too little to engaged ones only loses revenue. - **Provide value beyond offers** (educational content, useful information). Streams of pure promotion wear out engagement. - **Test content before sending.** Run messages through a spam filter or seed test (for example, Mail-Tester or commercial tools) to catch content flags before a live send, and change one variable per test. - Track opens, clicks, read time, deletions without reading, replies and forwards, complaints, and spikes in unsubscribes for each campaign. Content problems show up here first. Production speed is also a risk close to content. Teams now produce campaigns in 1–3 days (compared with 2+ weeks in 2024), and a sharply increased sending cadence can itself look suspicious to providers if volume jumps with it. ## Related articles - [Reputation Monitoring and Remediation](https://emailmarketing.net/learn/operations/reputation-monitoring), on metric thresholds and the testing and monitoring stack - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability), on how engagement signals feed filtering - [Two Worlds of Email Deliverability](https://emailmarketing.net/learn/strategy/two-worlds-of-email-deliverability), on why wanted and expected content beats gaming the filters # Deliverability Metrics and Benchmarks > Concrete definitions of bounce, complaint, and engagement metrics, with the numeric thresholds major ESP guides consider healthy — and the corrective actions when a metric goes out of range. Source: emailmarketing.net — https://emailmarketing.net/learn/operations/metrics-and-benchmarks To know whether your mail is healthy, you need to track the same signals mailbox providers use to decide whether it is wanted and expected (see [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability)). Below are the definitions of those metrics and the numeric targets published by major ESP guides: AWS SES, Postmark, Twilio SendGrid and Klaviyo, with open-rate bands from Braze and Bird. Where the sources differ, every figure is given with its attribution. The [canonical threshold table](#canonical-threshold-table) below collects the thresholds in one place. For dated industry survey figures to compare these targets with, see [Deliverability Benchmarks](https://emailmarketing.net/learn/reference/deliverability-benchmarks). It covers Validity's seed-measured inbox, spam and missing rates by provider and industry, and engagement benchmarks for each industry, all attributed to their vendors. ## Message lifecycle events Twilio SendGrid lists nine primary events in a message's lifecycle. The names are labels from its interface, but every sending infrastructure produces equivalent states: | Event | Definition | |---|---| | Processed | Message received by the sending system and queued for delivery | | Dropped | Not sent at all (for example, the address is on a suppression list, bounced before, or the content was flagged as spam) | | Deferred | Receiving server temporarily refused; delivery is retried (SendGrid retries for up to 72 hours) | | Bounce | Receiving server rejected the message; often indicates invalid or outdated addresses | | Delivered | Accepted by the receiving server. This does **not** mean Inbox; the message may still land in Spam | | Open | Recipient (or a proxy, see below) rendered the message | | Click | Recipient clicked a tracked link | | Spam report | Recipient marked the message as spam (a complaint) | | Unsubscribe | Recipient clicked an unsubscribe link | ## Bounces A **bounce** occurs when an email cannot be delivered to the intended recipient. - **Hard bounce**: a permanent failure. The address or domain does not exist, authentication fails (SPF, DKIM or DMARC misalignment), or there are severe reputation or blocklist issues. SMTP reply codes are in the **5.X.X** range (for example, 550). - **Soft bounce**: a temporary failure. The mailbox is full, the receiving server is overloaded or temporarily unavailable, or a temporary block applies to content or reputation. SMTP reply codes are in the **4.X.X** range (for example, 421, 451, 452). Sending systems typically retry soft bounces at intervals over several days before giving up. (Code 250 means the message was accepted and delivery is complete.) A high hard-bounce rate tells receivers that you do not know your recipients, which is a strong negative reputation signal. Remove hard-bouncing addresses immediately and never send to them again; see [List Hygiene and Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies). ### Bounce composition (transactional mail) Postmark's transactional bounce data breaks down as follows: **80%** hard bounces, **10%** soft bounces, **3.5%** spam complaints and ISP blocks, **2.5%** delayed, **2.5%** auto-responders, and **1.5%** other (DNS errors, DMARC rejections, challenge verification, unsubscribes). Automate hard-bounce handling first. ## Complaints A **complaint** occurs when a recipient clicks "Mark as Spam" (or its equivalent) in their mail client. Some mailbox providers, but not all, report complaints back to senders through a **feedback loop** (see [Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices)). Accumulated complaints tell the provider you are sending spam, which directly harms deliverability and sender reputation. ## Opens and clicks: measurement caveats Open rates are inflated by **Apple Mail Privacy Protection (MPP)** and by Gmail's image prefetching, which load the open pixel without a person reading the message. SendGrid's guidance is to identify proxy opens (for example, by the prefetch user agents in event data) and to **prioritize click and conversion metrics over open rates** when you judge engagement. ## Canonical threshold table The thresholds below are collected from several sources, so other guidance can refer to one set of numbers. Where the sources genuinely differ, the range is given with attribution, and a stricter vendor "house number" is labelled as such rather than presented as consensus. ### Reading thresholds by scope Read this part first. The numbers below partly disagree because **they are not the same measurement.** A rate depends on three things, and two thresholds are comparable only if all three match: - **Who measures it**: the mailbox provider (Gmail or Yahoo, measuring what their users do), or the sending side (your ESP or MTA, measuring what your logs and feedback loops see). A provider sees only the complaints its own users file. A sender sees only bounces and the complaints feedback loops (FBLs) return. - **The reputation entity (network, IP or domain)**: reputation is tracked at all three at once. Blocklists list **IP addresses** (Spamhaus SBL and CSS) and **domains** (DBL) separately. Gmail Postmaster Tools reports **IP reputation** and **domain reputation** on separate dashboards. AWS SES enforces at the **account** level to protect its shared-IP **network**. - **The denominator**: complaints or bounces divided by mail **sent**, by mail **delivered**, or by mail **delivered to the inbox**. Gmail's spam rate is user reports divided by mail delivered to the inbox, counting only DKIM-authenticated mail, so a low Gmail number can hide mail Gmail has already routed to spam. SES and Klaviyo divide by mail delivered. The raw events are the same, but the percentage differs. | Scope | What it is | Who measures it | Example threshold | |---|---|---|---| | **Network or shared pool** | aggregate reputation of an ESP's shared IP space | sending infrastructure (AWS SES, per **account**) | SES pause at 0.5% complaint rate or 10% bounce rate | | **IP** | reputation of a single sending IP | blocklists; provider dashboards for IP reputation | Spamhaus listing; Gmail IP Reputation dashboard | | **Sender domain** | reputation of the From or DKIM domain the recipient sees | mailbox provider (Gmail or Yahoo, per **domain**) | Gmail 0.1% target and 0.3% ceiling (divided by mail delivered to the inbox) | **Which line you act on depends on your role:** - **Sender (you own the domain):** the mailbox provider's ceiling for each **domain** determines your inbox placement. Keep the Gmail and Yahoo complaint rate under **0.1%**, and never let it approach **0.3%**. The numbers on your ESP dashboard are an early warning, not the target. - **ESP operator (shared platform):** one number cannot protect every scope, so you need **three** guards: (1) a guard for the **network or pool** that protects the reputation of shared IP addresses (the SES-style line for each account); (2) a guard for each **domain**, so each customer stays under the Gmail and Yahoo ceiling; and (3) a tighter guard for each **tenant or IP address**, which catches a bad sender before either of the others trips (well below 0.3%, near 0.1% or your own house line). See [Account Enforcement](https://emailmarketing.net/learn/esp-operations/account-enforcement), [Outbound Monitoring](https://emailmarketing.net/learn/esp-operations/outbound-monitoring) and [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture). - **Compliance:** a rising complaint rate signals a problem with **consent quality** before it signals a deliverability problem. Sustained complaints above about 0.1% point to a problem with permission or expectations, not a technical one (see [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods)). ### Complaint (spam) rate | Line | Value | Scope and who measures it | Denominator | |---|---|---|---| | Consensus healthy target | **< 0.1%** (≤ 1 per 1,000) | sender side, per account or list: AWS SES, Postmark, SendGrid | mail delivered | | Klaviyo house number (stricter) | **< 0.01%** (≤ 1 per 10,000) | sender side, per account or list: Klaviyo (deliberately conservative, not consensus) | mail delivered | | "High" in practice | even **0.08%** can be high | sender side: SendGrid | mail delivered | | **Gmail and Yahoo violation ceiling** | **0.3%**, which must never be reached | **mailbox provider, per sender domain**: the Google and Yahoo bulk-sender rules of Feb 2024 | **mail delivered to the inbox** (Gmail: DKIM-authenticated mail delivered to the inbox) | | SES enforcement (network or pool) | review at **0.1%**, pause at **0.5%** | **infrastructure, per AWS account**. It protects the shared-IP network and is not a target that keeps deliverability safe; see [Account Enforcement](https://emailmarketing.net/learn/esp-operations/account-enforcement) | mail delivered | **These lines are not directly comparable.** The provider measures the Gmail and Yahoo **0.3%** ceiling against mail delivered to the inbox for each domain, while the sender-side and SES numbers are measured against mail delivered, at the scope of an account or pool. Because Gmail's denominator excludes mail already sent to spam, **your ESP dashboard can read 0.1% of delivered mail while your Gmail spam rate is already near the 0.3% limit**. In practice, senders should aim for the provider target of **< 0.1%** for each domain. ESP operators should set their own auto-pause lines for pools and tenants below the 0.3% ceiling (near 0.1%), and never at SES's looser 0.5% network line. ### Bounce rate | Line | Value | Source and meaning | |---|---|---| | Klaviyo house number (aspirational) | total bounce rate **< 1.0%** | Klaviyo, stricter than consensus | | Healthy during warm-up | **< 2%** | Postmark (domain warm-up guide) | | Operating ceiling | keep the hard-bounce rate **under 5%** | AWS SES ("reasonable and attainable goal, but isn't a universal rule across all ISPs"); Postmark (for the whole domain) | | Absolute ceiling | **never exceed 10%** | Postmark: investigate immediately at or above this rate | | SES enforcement | hard bounces under review at **5%**, account may be paused at **10%** | AWS SES (per **account**, at network or pool scope); see [Account Enforcement](https://emailmarketing.net/learn/esp-operations/account-enforcement) | **Scope note:** the bounce rate is by nature a **sender-side** metric. No mailbox provider publishes a bounce ceiling, because bounces are what your MTA observes, not what recipients do. All the lines above are therefore measured by the sender. They differ by the entity they apply to: Klaviyo and Postmark quote quality lines for each **list** or domain, while SES enforces for each **account** to protect its shared-IP **network**. They also differ by denominator: hard bounces divided by mail sent, or total bounces divided by mail delivered. The complaint rate above is different, because there the binding ceiling is set by the mailbox provider for each domain. ### Open rate (after MPP) Since Apple Mail Privacy Protection, a raw open rate is really a rate of pixel loads, inflated by machine opens (see [Open and Click Tracking Mechanics](https://emailmarketing.net/learn/operations/open-and-click-tracking-mechanics) and [Tracking and Measurement Distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion)). Read every open benchmark according to whether it **includes machine opens** (raw pixel loads, inflated by MPP) or **excludes machine opens** ("human" opens, with prefetches and bots filtered out): | Basis | Healthy | Spam-folder warning | Source | |---|---|---|---| | Machine opens included (raw) | **≥ 33%** | Not stated | Klaviyo | | Machine opens excluded (human, no prefetch) | **> 25%** (Braze) or **> 35%** (Bird) indicates widespread inbox placement | **< 20%** suggests placement in the spam folder | Braze, Bird; see [Open and Click Tracking Mechanics](https://emailmarketing.net/learn/operations/open-and-click-tracking-mechanics#opens-as-a-deliverability-signal--the-honest-reading) | The older GreenArrow band of "5%–20%+ for good senders" predates MPP and is outdated as a benchmark for raw opens (see [Two Worlds](https://emailmarketing.net/learn/strategy/two-worlds-of-email-deliverability)). Do not use it to judge a modern list with many Apple users. Whatever the number, judge **audience** engagement on clicks and conversions, not opens, and use the trend in open rate only as a rough signal of placement. ## Corrective-action triggers Postmark's domain warm-up guide pairs each metric breach with a concrete change in volume. The pairs are useful during any ramp-up (see also [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up)): | Trigger | Action | |---|---| | Bounce rate exceeds 3% | Reduce volume 40–50% | | Open rate falls below 10% | Reduce volume 25–30% and refocus on engaged subscribers | | Spam complaints exceed 0.1% | Immediately identify and pause the affected segments | | Throttling or deferrals from a provider | Reduce daily volume 20–30% or spread sends across more hours | | Listed on a major blocklist | Stop sending immediately; delist; restart at significantly reduced volume | The same guide sets a general rule: **never** increase volume until you have reviewed performance **for each receiving provider**. If engagement and bounce rates look normal, the next day's increase is likely safe. ## Content quality as a metric input Beyond behavioral rates, receivers run **content filters** over every message. AWS SES gives this guidance for staying on the right side of them: - Modern content filters adapt continuously and do not use a fixed set of rules. Third-party services for seed and content testing can identify content that triggers filters before you send. - Check every URL in the message against DNS-based blocklists (DNSBLs) such as URIBL.com and SURBL.org. - **Avoid link shorteners.** When spammers abuse a shortening service and it is denylisted, every message that links through it is filtered. - Test that every link points where you intend. - Link to up-to-date Privacy Policy and Terms of Use pages from each email. - For content you send often (for example, daily deals), vary the content of each send. Repetitive identical content reads as spam. Postmark adds three recommendations: avoid shortened URLs (especially bit.ly), limit image-heavy layouts, and always include a plain-text alternative to the HTML part. Tiny changes can trigger content filtering. In one Postmark case, adding a phone number to a template triggered Gmail's spam filtering. When placement drops after a template change, revert the changes one at a time to isolate the cause. ## Related articles - [List Hygiene and Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies), on what to do with the addresses behind bad metrics - [Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices), on feedback loops and reputation monitoring tools - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability) # Delivery Events and Diagnostics > The delivery-event taxonomy an ESP/MTA emits (processed, deferred, delivered, bounce, blocked, dropped, spam-report, open, click), plus insights reporting, delay diagnosis, and engagement-quality scoring — the instrumentation layer beneath the troubleshooting playbooks. Source: emailmarketing.net — https://emailmarketing.net/learn/operations/delivery-events-and-diagnostics When you need to know what happened to a message, or why a campaign is underperforming, the answer starts in the event stream. Every message an email service provider (ESP) handles passes through a series of states. Each change of state is an **event** that the platform records and can stream to you. Bounce and complaint rates, estimates of inbox placement for each provider, delay analysis and engagement scores are all built from these events. The SendGrid Event Webhook is used below as the reference example, because it is fully specified. After the events come the reporting, delay diagnosis and engagement scoring built on them. For the thresholds these events feed and the corrective actions they trigger, see [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks). For step-by-step diagnosis, see [Delivery Troubleshooting Playbooks](https://emailmarketing.net/learn/operations/delivery-troubleshooting-playbooks). Both rely on the data described here. ## The event taxonomy Events fall into three families. **Delivery events** record what the sending system and the receiving servers did with the message. **Engagement events** record what the recipient did. **Account events** record changes of status at platform level. SendGrid's Event Webhook posts these as JSON. The names are SendGrid's labels, but every sending infrastructure produces equivalent states. ### Delivery events | Event | Meaning | What triggers it | |---|---|---| | **processed** | The platform accepted the message and can deliver it | The message was injected, validated and queued for the outbound mail transfer agent (MTA) | | **deferred** | The receiving server **temporarily** refused the message | A 4.x.x reply from the remote MTA (greylisting, a rate limit, "try again later"); the platform retries | | **delivered** | The receiving server accepted the message (`250 OK`) | The remote MTA returned a 2.x.x success reply to `DATA` | | **bounce** | The receiving server rejected the message | A 5.x.x permanent rejection (or a temporary failure after all retries were used up), returned during the SMTP session or later in an asynchronous delivery status notification (DSN) | | **blocked** | A *soft* bounce subtype: a temporary rejection for reasons of reputation, content or a technical problem | The remote MTA rejected the message, but not because the address is invalid; recorded as a bounce with `type: "blocked"` | | **dropped** | The **platform itself** refused to send, so the message never left | The recipient is on a suppression list (after an earlier bounce, unsubscribe, spam report or invalid address), the content was flagged as spam, a header or template was invalid, or a quota was exceeded | The distinctions an operator needs to know well: - **A deferral is not a bounce.** A deferral is a temporary refusal that the platform keeps retrying. It becomes a bounce only if the retries run out. Persistent deferrals are the classic sign of throttling or rate limiting (see [Delay and latency diagnosis](#delay-and-latency-diagnosis)). - **Bounced and blocked are different.** SendGrid records both as a `bounce` event and tells them apart with the `type` field. `type: "bounce"` is a hard bounce, which is permanent (for example, the address does not exist). `type: "blocked"` is a soft bounce: a temporary rejection because of reputation, content or a technical problem. In the Bounces & Blocks reports in the interface, a **Bounce** means an invalid email address (one that never existed or was deactivated), while a **Block** means the message was rejected for "content and reputation issues or technical failures." A block is the receiver's judgment of you, not of the address, and it can clear once the reputation or content problem behind it is fixed. See [Blocklists and Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus). - **A drop is the platform protecting you, or your own mistake.** The platform suppressed the send before transmitting it. Most drops are healthy, because suppressing a known-bad address protects reputation. A spike in drops for unexpected reasons (an invalid template, an exceeded quota) points to a defect on the sending side, not to a problem at the receiver. [Suppression-List Architecture](https://emailmarketing.net/learn/esp-operations/suppression-list-architecture) explains how suppression is scoped. - **Delivered does not mean in the inbox.** `delivered` is posted when the receiving server answers `250 OK`. After that, the receiver may still put the message in the inbox, queue it, file it in the spam or junk folder, drop it silently, or (at Gmail) sort it into a tab, and the sending platform receives **no further signal** about any of it. The only later evidence is recipient engagement (opens and clicks). A high delivered rate with near-zero engagement is the typical sign of mail going to the spam folder. This is why inbox placement can only be *estimated*, with seed tests and provider postmaster dashboards, and never read directly from the delivery events. See [Tracking and Measurement Distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion) and [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring). ### Bounce classification For `bounce` events, SendGrid adds a `bounce_classification` that places the SMTP failure in a category of cause an operator can act on: | Classification | Meaning and what the operator should do | |---|---| | **Invalid Address** | The address does not exist or never existed. Remove it permanently (list hygiene) | | **Mailbox Unavailable** | The mailbox is full or temporarily unreachable. Often soft; may recover | | **Technical** | A DNS, connection, protocol or TLS failure, on the infrastructure side | | **Content** | The message content triggered a rejection or filtering. Fix the content or links | | **Reputation** | The reputation of the sending IP address or domain caused the rejection. Work on reputation | | **Frequency/Volume** | The sending rate or volume is too high for the receiver. Throttle (see [MTA Delivery Tuning](https://emailmarketing.net/learn/operations/mta-delivery-tuning)) | | **Unclassified** | The failure could not be mapped to a category | The Content and Reputation categories feed engagement quality scoring (below) as an early warning, because they show that the receiver is judging you, not that the address is bad. ### Engagement events | Event | Meaning | What triggers it | |---|---|---| | **open** | The recipient displayed the HTML message | The open-tracking pixel loaded (Open Tracking must be enabled) | | **click** | The recipient clicked a tracked link | A wrapped link was followed (Click Tracking must be enabled) | | **spamreport** | The recipient marked the message as spam (a *complaint*) | The recipient's "mark as spam" action, passed on through the provider's feedback loop | | **unsubscribe** | The recipient clicked the global link to opt out of all mail | Subscription Tracking is enabled | | **group_unsubscribe** | The recipient unsubscribed from one suppression group | A group unsubscribe link or the preferences page | | **group_resubscribe** | The recipient subscribed to a group again | The preferences page (Subscription Tracking enabled) | Two cautions keep the engagement events from misleading you: - **Machine opens.** SendGrid sets `sg_machine_open: true` when Apple Mail Privacy Protection (MPP), rather than a person, generated the open. Filter these out of any real measure of engagement. Gmail's image prefetching also triggers opens without a person. See [Tracking and Measurement Distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion) and [Non-Human Interactions](https://emailmarketing.net/learn/operations/non-human-interactions). - **spamreport is your complaint signal.** It is the part of the provider feedback loop that the sender sees. A sustained spamreport rate is the most damaging single input to reputation. See [Complaint Feedback Loops](https://emailmarketing.net/learn/list-management/complaint-feedback-loops). ### Account events SendGrid emits `account_status_change` when the platform changes an account's standing for compliance reasons (phishing, high spam rates, "other bad behavior"). The `type` field gives the action, in increasing severity: | `type` | Effect | |---|---| | `compliance_suspend` | Blocks delivery; queues messages and bounces them at delivery time | | `compliance_deactivate` | Blocks delivery; rejects queues; deletes queued messages; bans the user after 48 hours | | `compliance_ban` | Blocks delivery; rejects and deletes queues; removes console access; cancels billing; removes IP addresses | | `reactivate` | Returns the account to active status | For how an ESP operator detects and contains these problems and applies the enforcement ladder, see [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts), [Outbound Monitoring](https://emailmarketing.net/learn/esp-operations/outbound-monitoring) and [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture). ## Event payload fields The webhook JSON has a common set of fields plus fields specific to each event. These are the fields you correlate to answer "what happened to this message?" | Field | Type | Events | Meaning | |---|---|---|---| | `email` | string | all | Recipient address | | `timestamp` | int (UNIX) | all | When the event occurred | | `event` | string | all | Event type identifier | | `sg_event_id` | string | all | Unique event ID (URL-safe, ≤100 characters), the key for removing duplicates | | `sg_message_id` | string | all | Unique message ID, the key that joins all events for one message | | `smtp-id` | string | delivery events, plus bounce, spam and group events | Message-ID assigned by the originating system | | `category` | string or array | delivery and engagement | Custom tags the sender sets to organize mail | | `asm_group_id` | int | most | Unsubscribe (suppression) group ID | | `marketing_campaign_id` and `_name` | int and string | delivery and engagement | Campaign identifiers | | `pool` | object `{name, id}` | processed | IP pool the message was sent from | | `ip` | string | delivered, open, click, group unsubscribe and resubscribe | Sending IP address (delivered) or recipient IP address (engagement) | | `response` | string | delivered, deferred | Full text of the receiving server's response | | `reason` | string | bounce, deferred, dropped | Readable reason for the error or drop | | `status` | string `X.Y.Z` | bounce, dropped | Enhanced status code (see [Enhanced Status Codes](https://emailmarketing.net/learn/bounce-handling/smtp-enhanced-status-codes)) | | `attempt` | int | deferred | Number of delivery attempts so far | | `type` | string | bounce, account | `bounce` or `blocked`, or the account status action | | `bounce_classification` | string | bounce | Category of cause (table above) | | `tls` | bool | bounce, delivered | Whether the connection used TLS | | `url` | string | click, group unsubscribe and resubscribe | The URL involved | | `url_offset` | int | click | Zero-based position of the link in the HTML (repeated URLs get different positions) | | `useragent` | string | open, click, group unsubscribe and resubscribe | Client program that generated the event | | `sg_machine_open` | bool | open | True if Apple MPP generated the open | | `unique_args` | object | delivery and engagement | Custom parameters supplied by the sender | > SendGrid warns never to put personal data in `category` or `unique_args`. The platform may use these fields for internal operations, they cannot be redacted, and they may be kept for a long time. A typical diagnostic query joins all events that share an `sg_message_id` and sorts them by `timestamp` to rebuild the full history of one message: processed, then deferred one or more times, then delivered, then opened. Another aggregates by `event`, `bounce_classification` and receiving domain to find which provider is rejecting which category of mail. ## Deliverability-insights reporting A diagnostic dashboard built from the event stream follows the "Deliverability Insights" pattern (in SendGrid, under **Stats**, then **Deliverability Insights**). Its data is roughly **48 hours** behind real time. It has four views: | View | Shows | |---|---| | **Overview** | Processed ("how much mail you tried to send"), Delivered (% accepted by mailbox providers), Bounce & Blocked (% not delivered) and Unique Opens (% of *delivered* messages that were opened), as trends over time | | **Mailbox Providers** | The same metrics for each provider (Gmail, Yahoo, Microsoft, AOL, …): delivered rate, open rate, and the split between bounces and blocks | | **Bounces & Blocks** | The two failure types separately: a **Bounce** is an invalid address; a **Block** is a rejection for reasons of content, reputation or a technical problem | | **Spam & Unsubscribes** | Complaints and opt-outs, by provider | The most important design choice is **segmenting by mailbox provider**. A combined delivered rate of 95% can hide a complete block at one provider. Reputation is held separately at each provider, so diagnosis and remediation must be done provider by provider too (see [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring) and [Per-Provider Tuning Baselines](https://emailmarketing.net/learn/operations/per-provider-tuning-baselines)). SendGrid publishes these thresholds for reading this view: | Signal | Threshold | |---|---| | Block rate | Target **≤ 3%** at each main mailbox provider | | Spam report rate | **≥ 0.1%** at any single provider is excessive | | Bounce rate | **consistently over 5%** is concerning | | Sunset trigger | No opens or clicks for **3 months**: stop mailing that address | These are consistent with the thresholds gathered from several sources in [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks): the consensus of ≤0.1% complaints and <5% bounces, and the 0.3% line that Gmail and Yahoo treat as a violation. ## Delay and latency diagnosis "Delay" can mean two very different things, and confusing them sends the diagnosis in the wrong direction. **1. Delay at the receiver (deferrals and throttling).** The message has left the platform, but the receiver is holding it back through greylisting, rate limiting or "try again later". This shows up as **deferred** events with a rising `attempt` count and a 4.x.x `response`. The platform retries on a schedule. SendGrid retries deferred messages for up to **72 hours**, then turns the message into a bounce. Persistent deferrals concentrated at one provider mean you are going beyond what that provider accepts in rate or volume. The remedy is to shape traffic for that receiver (reduce concurrency or rate, spread the send over more hours), not to retry more. See [MTA Delivery Tuning](https://emailmarketing.net/learn/operations/mta-delivery-tuning) and [Greylisting (RFC 6647)](https://emailmarketing.net/learn/rfc/rfc6647-greylisting). **2. Delay on the platform or at injection (stuck in Processing).** The message never reaches a receiver; it stays in the **processed** state. SendGrid documents several causes: - **A volume limit on a new dedicated IP address.** A volume cap applies for the first **3 days** on a new dedicated IP address, to prevent abuse. Increase volume gradually with the [IP warm-up](https://emailmarketing.net/learn/ip-management/ip-warm-up) process. - **A compliance hold.** For an account under review, or one where unusual activity was detected, sending is paused until the Compliance team confirms. - **Backpressure in the MTA queue.** Very high sending volume can back messages up in the outbound MTA queue. Pause sending or bring another IP address online. - **Suspension of a dormant account.** Accounts with no logins are suspended automatically. Messages stay pending for up to **72 hours**. If the underlying problem is not resolved by then, they become **hard bounces**. **3. Transport latency (integration and network).** The message is slow getting into the platform. SendGrid's guidance focuses on throughput and the network path: - Use the official client libraries (C#, PHP, Ruby, Node.js, Python, Go, Java) rather than code written from scratch. - SMTP throughput: up to **5000 messages per connection**, and up to **1000 `To:` recipients per message** (through the `x-smtpapi` header). - Open more concurrent connections, up to a recommended **maximum of ~10 concurrent connections**. - Network diagnostics: `hping` and `Test-NetConnection` measure response time and TTL, and **anything above ~150 ms** of response time is a first warning sign. Traceroute mode shows the latency at each hop; watch for sudden jumps between hops. Header analyzers (such as Google's) show the message's path through each MTA and how long it waited at each hop. Wireshark captures the SMTP conversation for close inspection. Diagnose in this order. Check the `event` state first. **processed** points to a platform or compliance issue; **deferred** points to throttling by the receiver; **delivered but no engagement** points to the spam folder, which is a placement problem, not a delay. Use transport latency tools only once you have confirmed the message is leaving the platform normally. ## Engagement-quality scoring The highest level of aggregation turns the whole event stream into a single health score. SendGrid's **Engagement Quality (SEQ) API** is the reference example. It returns a score from **1 to 5**, where higher means better engagement and deliverability. The score lets an operator rank senders and subusers at scale and spot a decline before it becomes a reputation incident. A score is generated only with **open tracking enabled** and **≥ 1,000 messages sent in the previous 30 days**. Scores are kept for a maximum of **90 days**. The endpoints return scores for the account and for each subuser. The score combines five weighted components, which are the event signals described above, condensed: | Component | What it measures | |---|---| | **Engagement Recency** | The % of unique addresses mailed in the past **30 days** that also engaged (opened or clicked) in the past **90 days** | | **Unique Open Rate** | The lowest rate over the last **7 and 30 days** at the **top 5 mailbox providers**, excluding Apple machine opens and messages not delivered | | **Bounce Rate** | The permanent bounce % over the last 7 and 30 days, using the **higher** (worse) of the two | | **Bounce Classification** | Gives weight to bounces classified as **Reputation** or **Content**, the categories where the receiver is judging you | | **Spam Rate** | Recent spam complaints over a **7-day** window | The design shows what a platform actually treats as quality: recent engagement (are you mailing people who still want the mail?), real rather than machine opens at the providers that matter, permanent bounces moving in the wrong direction, reputation and content bounces in particular, and complaints. An ESP can use these scores to group subusers into [IP pools](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture), flag underperforming senders for [outbound monitoring](https://emailmarketing.net/learn/esp-operations/outbound-monitoring), and decide when to move senders between shared and dedicated infrastructure. ## Related articles - [Delivery Troubleshooting Playbooks](https://emailmarketing.net/learn/operations/delivery-troubleshooting-playbooks) - [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks) - [Enhanced Status Codes (RFC 3463)](https://emailmarketing.net/learn/bounce-handling/smtp-enhanced-status-codes), for reading the `status` field - [Delivery Status Notifications (RFC 3464)](https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications), the format of asynchronous bounces - [Tracking and Measurement Distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion), on why opens and clicks mislead - [MTA Delivery Tuning](https://emailmarketing.net/learn/operations/mta-delivery-tuning) - [Complaint Feedback Loops (RFC 6449)](https://emailmarketing.net/learn/list-management/complaint-feedback-loops) - [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring) # Delivery Troubleshooting Playbooks > Symptom-driven decision procedures (symptom → hypothesis → discriminating test → fix) for the four delivery failure modes — not delivered, delayed, in spam, missing — with per-provider branches and a scenario library. Source: emailmarketing.net — https://emailmarketing.net/learn/operations/delivery-troubleshooting-playbooks When a customer or a dashboard reports a delivery problem, start from the symptom and run the test that tells the likely causes apart. Each playbook below gives that test and says where each result leads. A checklist tells you what is true about reputation, content or infrastructure. Diagnosis works differently: you narrow the possible causes one test at a time. The playbooks are written so that a person or an automated agent can follow one from the top and stop at the first branch that matches. The playbooks point to more detailed material: the error code catalogs for [Gmail](https://emailmarketing.net/learn/providers/gmail-troubleshooting) and [Yahoo](https://emailmarketing.net/learn/providers/yahoo-smtp-error-codes) and the [enhanced status codes](https://emailmarketing.net/learn/bounce-handling/smtp-enhanced-status-codes), the [reputation monitoring stack](https://emailmarketing.net/learn/operations/reputation-monitoring), [Microsoft filtering internals](https://emailmarketing.net/learn/providers/microsoft-filtering-internals) and the [escalation channel map](https://emailmarketing.net/learn/providers/escalation-and-mitigation-channels). When the diagnosis finds systemic damage, [reputation incident recovery](https://emailmarketing.net/learn/operations/reputation-incident-recovery) covers what to do next. ## Step 0: was the message accepted? Every delivery problem belongs to one of two very different classes, and the first job is always to find out which. Do not run a spam-placement playbook on a message that never received a 250. Do not run a bounce playbook on a message that was accepted and then placed in the junk folder. | | **Not accepted** (transfer failed) | **Accepted** (transfer succeeded) | |---|---|---| | SMTP evidence | 4xx (deferred, will retry) or 5xx (bounced, gave up) | `250 ... OK` recorded in your logs or your MTA | | Recipient sees | Nothing, or the sender receives a non-delivery report (NDR) or bounce | The message is somewhere on the recipient's side | | Postmark event | `Bounced`, `Delayed`, `Queued`, `Processed` | `Delivered` | | Runs playbook | **A** (not delivered) or **B** (delayed) | **C** (in spam) or **D** (missing) | **How to establish acceptance:** - **In your own MTA or ESP logs:** read the last SMTP response for that recipient. A `250` means the receiver took responsibility for the message. Any other response means it did not. - **API senders (the Postmark model):** a `Delivered` event means the remote server returned `250 2.0.0 OK`. `Delivered` means acceptance, not inbox placement: the message can still go to spam or be dropped later. `Processed` means the message was handed to the sending MTA and is waiting for the remote server's verdict. `Queued` means the platform accepted the message but has not sent it yet. Check whether the account or stream is paused for high bounce or complaint rates, and check the platform's status page. - **Microsoft 365 on the recipient's side:** run a **message trace** (Exchange admin center, then mail flow, then message trace). `Delivered` in the STATUS column means accepted. For any other status, the Details view gives a "How to fix it" explanation. Trace data appears 10 min to 1 hr after sending. Traces older than 7 days are available only as CSV and can take up to an hour to generate. If you cannot find the message in your logs at all, the problem happened before delivery: the send never took place. Common reasons are a paused stream, an API error, a suppression-list hit, or a filter or rule on the sending side. Check the sending platform's own response code before you blame the receiver. --- ## Playbook A: message not delivered (bounced or rejected, 5xx) **Symptom:** the sender's logs show a permanent failure, or the sender received an NDR. The receiver refused the message outright. The signal that tells causes apart is the **rejection text**, not the numeric code alone. Read the full SMTP response and the enhanced status code ([RFC 3463 class](https://emailmarketing.net/learn/bounce-handling/smtp-enhanced-status-codes): `5.1.x` for addressing, `5.7.x` for policy or security). Route by what the text says: | Rejection says… | Hypothesis | Test that tells causes apart | Fix | |---|---|---|---| | "user unknown", "mailbox does not exist", `5.1.1`, `550 5.1.1` | Invalid recipient | Is it one address or many? One points to a typo or a churned address. Many point to a list-quality problem | Suppress the address (a hard bounce means permanent suppression). If many: audit the acquisition source and see [list hygiene](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies) | | "quota exceeded", "mailbox full", "out of storage", `5.2.2` | The recipient's mailbox is full | A single recipient, and temporary | Treat it as a soft, temporary failure: retry, then suppress after repeated failures. It does not reflect on your reputation | | Names a **blocklist** (Spamhaus, Barracuda, SpamCop, SURBL) or says "listed in DNSBL" | The IP address or domain is blocklisted | A DNSBL lookup on every sending IP address and domain | Find the root cause first, then request delisting. See [blocklists](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus) and the [delisting workflow](https://emailmarketing.net/learn/operations/reputation-monitoring#blocklist-delisting-workflow). Do not request delisting before you fix the behavior | | "banned sending IP", "access denied", reputation language, `5.7.x` | The provider has blocked you for reputation | Is it one provider or all of them? One provider with a red dashboard points to reputation at that provider | Follow the provider branch below, and escalate through the [provider's channel](https://emailmarketing.net/learn/providers/escalation-and-mitigation-channels) | | Mentions content, links or attachments, "message content rejected", or "spam" in a 5xx | A content filter blocked the message | Run a seed test or a spam check on the exact message, and remove elements one at a time | Fix the content ([content and design](https://emailmarketing.net/learn/operations/content-and-design-for-deliverability)): remove URL shorteners and fix the HTML | | Authentication language: SPF, DKIM or DMARC failure, `5.7.1`, `5.7.26`, "unauthenticated" | Authentication failure | Inspect `Authentication-Results` and check the DMARC policy | Fix alignment ([DMARC](https://emailmarketing.net/learn/authentication/dmarc)). Authentication is mandatory for bulk senders at Gmail and Yahoo | | HELO or EHLO error, `501 5.5.4`, "invalid HELO", nonroutable IP address | Connection identity or reverse DNS (rDNS) | Verify that a PTR record exists and matches, and that HELO gives a fully qualified domain name (FQDN), not a private IP address | Fix rDNS and HELO. Receivers, including Microsoft, reject mail that advertises `10.x`, `172.16–31.x` or `192.168.x` | | "too many messages", or rate or connection language (`421`, `4.7.x`, which is technically a deferral) | Rate limiting | See Playbook B | Slow down. See [MTA delivery tuning](https://emailmarketing.net/learn/operations/mta-delivery-tuning) | **Provider-specific 5xx branches** (for the reputation and content rejections in the table above): - **Gmail:** [Gmail SMTP Troubleshooting](https://emailmarketing.net/learn/providers/gmail-troubleshooting) lists the full catalog of `421` and `550-5.7.x` codes with a fix for each. Gmail's own guidance on non-delivery also lists sending more than 500 messages a day or one message to more than 500 recipients (the limits for personal Gmail accounts), a recipient that does not exist, a recipient whose storage is full, and a malformed HELO or EHLO. - **Microsoft:** for `550 5.7.606-649 Access denied, banned sending IP [x.x.x.x]`, use the **delist portal** at `sender.office.com` ([Microsoft escalation channels](https://emailmarketing.net/learn/providers/microsoft-escalation-channels)). For diagnosis from headers, the spam confidence level (SCL) and the bulk complaint level (BCL), see [Microsoft filtering internals](https://emailmarketing.net/learn/providers/microsoft-filtering-internals). Microsoft's full list of NDR codes is in its guide "Email non-delivery reports in Exchange Online." - **Yahoo:** the code catalog is in [Yahoo SMTP Error Codes](https://emailmarketing.net/learn/providers/yahoo-smtp-error-codes). - **B2B and corporate gateways** (Proofpoint, Mimecast, Barracuda, M365 tenants): these use entirely different reputation systems and delisting portals. See [B2B gateway deliverability](https://emailmarketing.net/learn/providers/b2b-gateway-deliverability). --- ## Playbook B: message delayed or deferred (4xx, "Delayed", stuck in the queue) **Symptom:** the message is not delivered yet but has not failed permanently. The sender's queue shows `4xx` or `421`, or Postmark shows `Delayed`: the remote server asked to wait, and Postmark retries most domains every ~10 min for up to 12 hours before it bounces the message. The receiver is saying "not now", and the diagnosis is about why and for how long. Deferrals have four common causes. They look identical at first, and each needs a different response: | Cause | Signature | Test that tells causes apart | Response | |---|---|---|---| | **Greylisting** | The first message from a new combination of IP address and sender is deferred, and it clears when retried from the same IP address | Does it deliver on the next attempt with no change? Is the deferral tied to the combination of IP address, sender and recipient? | Do nothing except retry from the same IP address. This is why keeping a sender on the same pool or IP address matters. See [greylisting](https://emailmarketing.net/learn/rfc/rfc6647-greylisting) | | **Throttling or rate limiting** | Deferrals rise with volume and concentrate at one provider: `421`, "try again later", `4.7.28` | Do deferrals grow with your sending rate? Is it one provider? | Reduce concurrency and rate to that destination, and back off. See [MTA delivery tuning](https://emailmarketing.net/learn/operations/mta-delivery-tuning) and [per-provider baselines](https://emailmarketing.net/learn/operations/per-provider-tuning-baselines) | | **Reputation deferral (before a block)** | Sustained 4xx responses that do not clear, a provider dashboard that is getting worse, often before a hard block | Is your reputation in Google Postmaster Tools (GPT) or Smart Network Data Services (SNDS) trending down? Does the deferral text mention reputation? | Treat it as an early incident: run Playbook C and see [incident recovery](https://emailmarketing.net/learn/operations/reputation-incident-recovery). Do **not** simply retry harder | | **Recipient server down, or network trouble** | Deferrals to one destination domain whatever your rate, and connection timeouts | Is it one destination domain, temporary, and unrelated to your volume? | Wait and keep the normal retry schedule. Microsoft's own guidance names "the intended destination isn't responsive" as the most likely cause of a delay | **The critical mistake to avoid** is responding to a reputation deferral by retrying more aggressively. Retrying hard against a provider that is deferring you for reputation turns a soft block into a hard block. To tell throttling from a coming block, slow down. A throttle clears when you slow down. A reputation problem persists, and the dashboard gets worse. **Microsoft:** `host xxxx.outlook.com [x.x.x.x]: 451 4.7.550 Access denied, please try again later` means that Microsoft has temporarily restricted the IP address because it detected suspicious activity and is evaluating it. The restriction lifts automatically once the traffic is judged acceptable. Reduce volume, let the evaluation run, and do not escalate immediately. **Deferrals of one-time passwords (OTP) and other transactional mail** need special handling. For the user, a deferred one-time password has failed, even though SMTP still considers it in transit. If transactional mail shares a stream or IP address with marketing mail, and the marketing volume triggers throttling, the OTP is deferred too. This is the argument for [stream separation](https://emailmarketing.net/learn/operations/sending-infrastructure-practices), with transactional mail on its own subdomain and pool. To diagnose it, compare the timestamps of OTP deferrals with the times of marketing send bursts. --- ## Playbook C: accepted but placed in spam or junk **Symptom:** the logs show `Delivered` or `250`, but the message is in the spam or junk folder, or in a Gmail tab that the sender does not count as the inbox. This is the placement problem, and it is the most common ticket a deliverability consultant receives. There is no SMTP signal: the receiver accepted the message and then decided where to route it. The tests that tell causes apart are dashboards, headers and seed tests, not response codes. ### C-1. Scope the failure first The most valuable early test is whether the problem affects **one provider or all providers**. The answer splits the possible causes in two: - **All providers point to a cause on the sender's side.** Every filter sees an authentication, content, list or reputation problem. Start with authentication and content. - **One provider points to that provider's reputation or filter.** Go to the provider branch (C-3). A message that reaches the inbox at Yahoo but goes to spam at Gmail does not have a content problem. It has a Gmail reputation problem or a Gmail personalization problem. Establish the scope with a **seed or inbox-placement test** across providers (Litmus, Validity/Everest, GlockApps, Mailgun), and keep its limits in mind. Seed addresses have no engagement history with you, so they miss the personalization for each user and tend to be conservative (see [the limits of placement measurement](https://emailmarketing.net/learn/operations/reputation-monitoring#4-seed--inbox-placement-testing) and [tracking distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion)). Compare seed results with Postmaster Tools and with live engagement at each provider. ### C-2. Tests on the sender's side (when mail goes to spam at every provider) Run these in order, and stop when a test reveals the cause: 1. **Authentication.** Inspect the headers of a message that was delivered to junk. `Authentication-Results:` must show `spf=pass dkim=pass` **and** DMARC alignment (the `From` domain matches the DKIM `d=` domain or the Return-Path domain). Every major provider flags unauthenticated mail as high risk, and the bulk-sender rules at Gmail and Yahoo disqualify it. Verify that SPF stays within the [10-lookup limit](https://emailmarketing.net/learn/authentication/spf), that DKIM verifies, and that a custom Return-Path is in place for alignment. See [DMARC](https://emailmarketing.net/learn/authentication/dmarc). 2. **Complaint rate.** This is the most damaging signal. Postmark's working rule is that a complaint rate above **0.1%** (1 per 1,000) predicts a drop in deliverability, and Google enforces a hard ceiling of **0.3%** (see [Gmail requirements](https://emailmarketing.net/learn/providers/gmail-sender-requirements)). Check complaint data for each provider in [GPT](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools) and in [SNDS and JMRP](https://emailmarketing.net/learn/postmaster-tools/microsoft-snds-jmrp). 3. **Bounce rate.** A high rate of invalid addresses looks like a spammer's list practices. Postmark's working ceiling is a hard-bounce rate below 5%, and never above 10%. Klaviyo's stricter target is a total bounce rate below 1%, and Postmark's healthy rate during warm-up is below 2%. The full range, with each figure attributed, is in the [canonical threshold table](https://emailmarketing.net/learn/operations/metrics-and-benchmarks#canonical-threshold-table). High bounces point to a list-quality problem that is damaging reputation. 4. **Content.** Run the exact message through a check based on SpamAssassin (Postmark Spam Check's target is a score below 5, and negative is better) and through mail-tester. Common triggers are URL shorteners (bit.ly) instead of branded links, messages made only of images or with oversized images, broken or incomplete HTML, link and image domains that do not match the `From` domain, and a missing or broken unsubscribe link. If a **template change came just before the drop**, revert it step by step, removing one element at a time, to isolate the trigger. See [content and design](https://emailmarketing.net/learn/operations/content-and-design-for-deliverability). 5. **Reputation.** Check domain and IP reputation in the provider dashboards and with DNSBL lookups. A poor rating here means the cause is accumulated history, not this one message. See [incident recovery](https://emailmarketing.net/learn/operations/reputation-incident-recovery). ### C-3. Placement branches for each provider (when mail goes to spam at one provider) | Provider | Test that tells causes apart | What it shows | Route | |---|---|---|---| | **Gmail** | [Google Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools): domain and IP reputation (Bad, Low, Medium, High), the spam-rate dashboard, authentication pass rates | A drop in domain reputation from High to Medium predicts placement in the junk folder. Gmail personalizes for each user based on their contact history, so one Gmail user can receive a campaign in the inbox while another receives the same campaign in spam. Seed results that disagree with real placement are therefore expected | Send only to engaged Gmail users and encourage positive engagement. GPT shows no data below its volume thresholds, so diagnose through engagement instead | | **Microsoft** (Outlook.com and M365) | Inspect the headers: **SCL** and **BCL** in `X-Forefront-Antispam-Report`, and `compauth` | A high SCL means a spam verdict based on content or reputation. A high BCL means a penalty for bulk mail. The header tells you which filter fired. [Microsoft filtering internals](https://emailmarketing.net/learn/providers/microsoft-filtering-internals) decodes it in full | For a false positive, the recipient submits the message to Microsoft for analysis. Check the filter color in [SNDS](https://emailmarketing.net/learn/postmaster-tools/microsoft-snds-jmrp) (green, yellow or red) and any trap hits, and escalate through [Microsoft's channels](https://emailmarketing.net/learn/providers/microsoft-escalation-channels) | | **Yahoo and AOL** | [Yahoo performance feeds](https://emailmarketing.net/learn/providers/yahoo-performance-feeds) and the complaint feedback loop (FBL) | Placement is driven by complaints, and Yahoo gives engagement a lot of weight | Suppress complainers and send only to engaged recipients. See [Yahoo requirements](https://emailmarketing.net/learn/providers/yahoo-sender-requirements) | | **Apple iCloud** | There is no sender dashboard, so infer placement from seed tests and engagement | Mail Privacy Protection (MPP) inflates opens, so treat opens as unreliable. Placement depends on authentication and reputation | [Apple iCloud](https://emailmarketing.net/learn/providers/apple-icloud-mail) | | **B2B gateway** | The gateway's own IP reputation checker (ipcheck.proofpoint.com, barracudacentral.org) | Placement depends on the tenant policy set by the administrator and on the gateway's reputation data, not on consumer-style filtering | [B2B gateway deliverability](https://emailmarketing.net/learn/providers/b2b-gateway-deliverability) | ### C-4. Microsoft: the workflow for mail placed in Junk Microsoft documents this path for a false positive: 1. Confirm that the message was delivered (message trace STATUS = Delivered, not blocked). 2. Have the recipient **report the message to Microsoft** as a false positive for analysis. 3. Verify that the sender is not advertising a nonroutable IP address and is not failing reverse DNS. 4. Confirm that the From name and subject are transparent and that redirect domains are consistent: all links go to one domain, not to a scattered set such as `unsubscribe.bulkmailer.com`, `profile.excite.com` and `options.yahoo.com`. 5. For a systemic reputation problem, work with SNDS and sender support. --- ## Playbook D: message "missing" (accepted, not in the inbox, not in spam) **Symptom:** the logs show `Delivered`, but the recipient cannot find the message anywhere, neither in the inbox nor in spam. This is the hardest case to diagnose, because the receiver reported success. The possible causes, from most to least likely: 1. **The message is in spam or junk and the recipient did not look there.** This is the most common explanation. Have the recipient search every folder, including the Gmail tabs (Promotions, Updates, Social), Outlook's Focused and Other views, and Junk. Then run Playbook C. 2. **The message was filtered out or dropped after acceptance.** The provider accepted it and then discarded it through aggressive reputation filtering. The provider dashboard and, at Microsoft, a message trace reveal a filter verdict made after acceptance. This is a reputation problem: see Playbook C-3 and [incident recovery](https://emailmarketing.net/learn/operations/reputation-incident-recovery). 3. **A rule or a forward on the recipient's side.** An inbox rule moved or deleted the message, or a broken forward lost it. Microsoft's first triage step is to have the user check **Outlook on the web**. If the message is there but not in the desktop or mobile app, the problem is the app or a local rule, not delivery. For Outlook issues that affect a single user, run Microsoft's **Support and Recovery Assistant**. 4. **Delivery to the wrong address.** An alias or a typo happened to match a valid mailbox. Confirm the exact recipient address in your logs. 5. **A service incident.** Before a deep investigation, check the provider's service health (Microsoft 365 admin center, then Service health, or the provider's status page). A degraded receiving service delays or misroutes mail across the whole organization, and no fix on the sender's side is needed. **One user or many** is the key question in Playbook D. If one recipient is missing a message, the cause is the mail app, a rule or the address (use the tools above). If many recipients at one provider are missing messages, the cause is reputation or filtering (Playbook C). If many recipients across all providers are missing messages, the cause is authentication or an incident on the sending side. --- ## Scenario library (worked examples) Concrete tickets and the branch each one takes: | Ticket | Playbook | Test, finding and fix | |---|---|---| | "Delivered but spam at Gmail only" | C, one provider | A seed test confirms that only Gmail is affected. GPT shows domain reputation at Medium. Content is not the cause, because Yahoo delivers to the inbox. Send only to engaged Gmail users, encourage engagement, and expect recovery over weeks | | "Sudden Microsoft junk-foldering after years of inboxing" | C-3 Microsoft | The header shows a jump in SCL or BCL. SNDS turned yellow or red, or shows trap hits. A recent change in list or volume is the trigger. Suppress the bad segment, submit the false positive, and use [Microsoft's escalation channels](https://emailmarketing.net/learn/providers/microsoft-escalation-channels) | | "Transactional OTP deferred at Yahoo" | B, throttling | Deferrals coincide with a marketing burst on the shared stream. Move transactional mail to its own stream and pool, and the deferral clears | | "Open rates collapsed at one provider" | C, or a measurement artifact | First rule out [distortion from MPP and bot clicks](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion), since opens are unreliable after MPP. If clicks and conversions also fell, placement really dropped: run Playbook C | | "New IP: mail suddenly rejected / deferred" | A or B | Read the text. `5.7.1` citing the IPv6 guidelines means the authentication and PTR requirements in [IPv6 sending](https://emailmarketing.net/learn/operations/ipv6-sending). `451 4.7.550` from Microsoft means a throttle on a new IP address: let it ramp up, which takes weeks. Greylisting means retrying from the same IP address | | "Bounces spiked overnight, one provider" | A, reputation | Run DNSBL lookups and check the dashboard. If it is a blocklisting or a provider reputation block, fix the root cause and then follow the [delisting workflow](https://emailmarketing.net/learn/operations/reputation-monitoring#blocklist-delisting-workflow). If volume also spiked, suspect a [compromised account](https://emailmarketing.net/learn/esp-operations/compromised-accounts) | | "Recipient says never arrived, log says Delivered" | D | Search all folders first. Then ask whether one user or many are affected. For a single user, test Outlook on the web | --- ## Escalating to the provider (when self-service is exhausted) Before you open a provider channel, run the playbooks until you have a specific hypothesis backed by evidence. Provider support closes tickets that arrive without a diagnosis. Bring the sending IP addresses and domain, the exact SMTP rejection or NDR text, sample headers (`Authentication-Results`, `X-Forefront-Antispam-Report`), screenshots of the GPT or SNDS dashboards, the date the problem started, and what you changed around that date. [Escalation and Mitigation Channels](https://emailmarketing.net/learn/providers/escalation-and-mitigation-channels) and [Microsoft Escalation Channels](https://emailmarketing.net/learn/providers/microsoft-escalation-channels) map the channels: Google's bulk-sender form and its eligibility condition (0.3% over 7 days), Microsoft's delist portal (`sender.office.com`) as distinct from sender support, Yahoo sender support, and Apple's `icloudadmin@` address. Each channel fixes only some problems. Delist portals clear IP blocks. They do not clear content or complaint problems, which correct themselves only after the sender's behavior changes. ## Related articles - [Reputation Monitoring and Remediation](https://emailmarketing.net/learn/operations/reputation-monitoring), including the delisting workflow - [Reputation Incident Recovery](https://emailmarketing.net/learn/operations/reputation-incident-recovery) - [Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices), on Postmark's 5-area framework: authentication, content, engagement, reputation and infrastructure - [MTA Delivery Tuning](https://emailmarketing.net/learn/operations/mta-delivery-tuning) - [Per-Provider Tuning Baselines](https://emailmarketing.net/learn/operations/per-provider-tuning-baselines) - [Gmail SMTP Troubleshooting](https://emailmarketing.net/learn/providers/gmail-troubleshooting) - [Microsoft Filtering Internals](https://emailmarketing.net/learn/providers/microsoft-filtering-internals) - [Yahoo SMTP Error Codes](https://emailmarketing.net/learn/providers/yahoo-smtp-error-codes) - [Escalation and Mitigation Channels](https://emailmarketing.net/learn/providers/escalation-and-mitigation-channels) - [Enhanced Status Codes](https://emailmarketing.net/learn/bounce-handling/smtp-enhanced-status-codes) - [Delivery Status Notifications](https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications) # List Hygiene and Sunset Policies > How to acquire addresses safely, validate them at signup, handle bounces and complaints operationally, and sunset unengaged recipients before they hurt reputation. Source: emailmarketing.net — https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies The addresses on your list decide the metrics that mailbox providers use to score you (see [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks)). Keeping those metrics healthy means managing each address through its whole life: how you acquire it, how you validate it at signup, how you handle its bounces and complaints, and when you stop mailing it because it no longer engages (sunset). ## Acquisition: dos and don'ts **Never rent, buy or scrape email lists.** The guides from all three ESPs agree, for concrete reasons: - Purchased lists contain large numbers of invalid addresses, which make hard bounce rates spike (AWS SES). - They contain **spam traps**: addresses placed specifically to catch senders who are not legitimate. Hitting one can damage delivery rates and reputation "irrevocably" (AWS SES). - Scraping or harvesting addresses (bots crawling websites for them) is especially risky, because none of the recipients opted in (SendGrid). Grow the list legitimately instead. Give people opportunities to provide their address voluntarily: landing pages that explain what the email program offers, display ads that lead to an opt-in, and explicit, documented consent before any sending (SendGrid). ## Validation at signup | Practice | Detail | Source | |---|---|---| | Double opt-in | Send a confirmation link at signup, and do **not** mail the address until it is clicked. This removes hard bounces caused by typos and proves intent. | AWS SES, SendGrid | | Syntax and MX validation | When the form is submitted, check that the address is well formed (`recipient@example.com`) and that the domain has valid MX records. | AWS SES | | CAPTCHA on signup forms | Prevents bots from signing up and poisoning the list. | SendGrid | | Detection of typos and disposable addresses | Validate at signup to flag disposable domains and suggest corrections for common typos (for example, through a validation API). | SendGrid | | Reject role and watchdog aliases | Addresses such as `postmaster@`, `abuse@` and `noc@` almost never sign up on purpose. They can be added maliciously as sabotage, and by custom they are reserved for people who watch for abuse. | AWS SES | | Guard content generated by users | Forum registrations and form submissions can be filled with spammers' content. Never put user input into outbound mail without checking it. | AWS SES | | Validation through the welcome email | Send a welcome email to every new address, and automatically remove addresses whose welcome email bounces. | SendGrid | A welcome message also sets expectations. Recipients who understand why they are getting mail complain less (see [Foundations](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability)). ## Spam traps There are two kinds (SendGrid): - **Pristine traps (honeypots)**: addresses that never signed up for anything, placed by ISPs and anti-spam organizations. You can only get them from purchased or scraped lists. - **Recycled traps**: real addresses that their owners abandoned and that were later turned into traps. After roughly **12 months** without activity, an abandoned address is either switched off completely (so it produces hard bounces) or converted into a spam trap. Recycled traps are why a sunset policy based on engagement is necessary, even for lists built entirely on consent. An address that stopped engaging a year ago may now be a trap. ## Bounce handling These rules come from AWS SES and Postmark: - **Remove hard bounces immediately.** Never send again to an address that hard-bounces. Repeated hard bounces add up and harm your reputation with that ISP. Postmark's practice for transactional systems is to suspend delivery to the address automatically, and to require someone to reactivate it after the underlying problem is fixed. - **Retry soft bounces, then treat them as hard.** Sending systems retry soft bounces at intervals over the following days. If an address soft-bounces repeatedly across sends, treat it as a hard bounce and suppress it. - **A full mailbox is usually permanent in practice.** According to SendGrid, only about **8.5%** of addresses with a full mailbox become active again within 30 days. Track repeated mailbox-full responses, and suppress addresses that show the pattern consistently. - **Make sure you receive your bounce notifications.** The address that collects bounce and complaint notifications must itself accept mail. Avoid using a mailbox hosted by an ISP for this, because a flood of bounce notifications may be sent to the spam folder or dropped. If you cannot avoid it, check the spam folder, and never mark bounce messages as spam (AWS SES). - **Make bounces traceable.** A bounce identifies the mailbox that refused the message. To connect it to a campaign, add an X-header with a value your internal tracking system can trace (AWS SES). ### Operational tactics for transactional bounces (Postmark) For product or transactional email, a bounce often means a user you cannot reach. That is a product problem, not only a list problem: 1. Stop delivery to the address immediately after a hard bounce or a spam complaint (this protects reputation) 2. Alert the support team automatically so they can investigate 3. Show the affected user a notice in the application when they log in ("we can't reach your email") 4. Record the bounce event on the account 5. Let the user reactivate delivery themselves after correcting their address 6. Use other channels (SMS, a secondary email address) when they are available 7. Notify account administrators and collaborators when an important user's email bounces 8. Optionally, show automatic replies (out-of-office messages) where people work together 9. Process bounce webhooks in the application code instead of polling 10. Use a sandbox environment for testing, so that test sends never reach real recipients ## Complaint handling - Keep the complaint rate below **0.1%** (see [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks) for the full table of thresholds). - When a recipient complains about a **marketing** email, stop sending them marketing email immediately. If the program also sends **transactional or notification** mail, it may be acceptable to keep sending those types of message to that recipient (AWS SES). - Complaint notifications from feedback loops usually hide the address of the person who complained. Add custom X-headers or identifiers to the message body, so that you can identify and suppress the address (AWS SES). - Check that your own systems are not filtering complaint notifications as spam. ## Unsubscribe and preference management - One-click unsubscribe (RFC 8058 `List-Unsubscribe`) is required by Google's and Yahoo's rules for bulk senders, and it is a basic CAN-SPAM requirement (SendGrid). - Put a clear unsubscribe link in the footer. When unsubscribing is difficult, people complain instead. - Offer a **preference center** with control over frequency and a "down-subscribe" option (fewer emails rather than none). It keeps the subscriber while reducing negative signals (SendGrid). ## Sunset policies A **sunset policy** "reduces the frequency that an email address receives campaigns or suppresses it entirely based on engagement, or lack thereof" (SendGrid). Addresses that do not engage pull down engagement rates, and after ~12 months without activity they may become hard bounces or recycled spam traps. A complete sunset process, combining the sources: 1. **Define inactivity** by how recently the address opened or clicked. Remember that open tracking is inflated, so give clicks more weight (see [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks)). 2. **Reduce frequency first** for segments that are cooling, rather than cutting them off. 3. **Check the address's status through other channels** where possible, such as website logins or purchase history, before you mail an address that has been dormant for a long time (AWS SES). 4. **Run a re-engagement campaign** as the last step: a message saying you have not heard from the recipient and asking them to confirm they still want the mail. AWS calls this a *win-back* campaign, and SendGrid a *re-engagement campaign*, "one last chance". 5. **Remove the people who do not respond.** After the win-back campaign, remove every recipient who did not respond (AWS SES). 6. If you mail a list that has not been contacted for a long time, send a welcome-style message first, reminding recipients who you are and why they receive your mail. This reduces complaints (AWS SES). Sending less often to fewer, better recipients usually increases delivery to the inbox (see [Two Worlds of Email Deliverability](https://emailmarketing.net/learn/strategy/two-worlds-of-email-deliverability)). ## Related articles - [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks), the thresholds that list hygiene protects - [Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices), including the feedback loops that feed suppression # Mandated and Regulatory Email > How to send legally required bulk notices — breach notifications, recalls, policy changes — to entire databases (including suppressed and unengaged addresses) without destroying sender reputation. Source: emailmarketing.net — https://emailmarketing.net/learn/operations/mandated-and-regulatory-email Some messages must reach recipients regardless of engagement, consent status, or deliverability metrics: senders can be legally required or compelled to mail their entire database — including addresses that are long-unengaged, unsubscribed, or previously suppressed. This is exactly what normal deliverability practice forbids (see [List Hygiene and Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies)), which is why these sends need a dedicated process. M3AAWG's guidance is explicit: this process is **only** for mandated messages that are an exception to normal sending practices and likely to be of special relevance to the recipient — never for standard marketing or transactional notices. ## Definition and examples Mandated (high-risk) emails inform individuals of a significant change in policy, help them mitigate damage, offer assistance, or provide noncommercial information about their account. Typical examples: | Type | Example | |---|---| | Breach notification | Account compromise disclosure with password reset / free credit monitoring offer | | Product recall | Health and safety notices | | Policy change | Privacy-policy or terms-of-service updates | | Account status | Noncommercial notices about the recipient's account | ## Why these sends are deliverability-dangerous - They are bulk messages **highly likely to exhibit poor delivery metrics** — elevated bounces (dead addresses back on the list) and complaints (recipients who unsubscribed or forgot the brand). - They may need to go to individuals who were **previously suppressed or unsubscribed** — reintroducing exactly the negative signals that suppression exists to prevent (see [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks) for the thresholds at stake). - Volume spikes to a whole database break normal sending patterns and can trigger anti-spam mechanics at receivers (see [Foundations](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability) on how providers score senders). Each organization bears the responsibility to determine whether a high-risk send is necessary, balancing it against the potentially abusive nature of the messages and how frequently they occur. Keep them non-intrusive and minimally disruptive to users and mailbox providers. ## Pre-send preparation (sending organization) **Notify mailbox providers in advance.** Use each MBP's preferred point of contact (`postmaster@mailboxprovider.com` or its postmaster contact page — see the [providers/](https://emailmarketing.net/learn/providers) articles for known channels). Send personalized notifications to the MBPs most relevant to the audience; where appropriate, use a personal contact or industry groups, at the discretion of the sending platform and the organization. **Coordinate internally and externally:** - Consult your ESP for technical requirements and solutions that maximize effectiveness and minimize impact on IP and domain reputation. - Provide guidance, instructions, and timelines from the relevant regulators or legal team. - Internal teams (social, call center, frontline staff) should coordinate a consistent message across all customer-service channels. - Determine whether information is needed for auditing purposes, and what that entails. ## Infrastructure and authentication choices | Practice | Detail | |---|---| | Dedicated alias | Use a new email alias for these notifications instead of the usual marketing alias (e.g., `notice@sub.example.com`) | | Branded, verified domain | Send from a branded organization domain, unequivocally verified with domain authentication (per the [M3AAWG Email Authentication BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-email-authentication-bcp)) | | **No cousin domains** | Do **not** use a newly registered cousin domain (a variation of the normal sender domain) or register a new domain for these notices — that pattern is indistinguishable from phishing | | SPF + DKIM + DMARC | All three configured on the sending domain — see [SPF](https://emailmarketing.net/learn/authentication/spf), [DKIM](https://emailmarketing.net/learn/authentication/dkim), [DMARC](https://emailmarketing.net/learn/authentication/dmarc) | | TLS | Supported on the sending server for receivers that implement it | | Dedicated IP range | Some mailbox providers encourage reserving an IP range exclusively for mandated-email notification addresses (see [Advanced IP Segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation)) | ## Message content and identification - From name like "[Organization name]: Notification"; "Important notification" in the subject line. - **Minimal tracked elements**: limit links to only those required — or none at all. - Content exclusively relevant to the issue, **no marketing at all**. - Plain or minimal template style appropriate to the notification type (see [Content and Design for Deliverability](https://emailmarketing.net/learn/operations/content-and-design-for-deliverability)). - **Suspend marketing communications during the notification period** — the mandated message should not compete with promotional mail. ## Audience segmentation and list handling Decide who must receive the message based on the actual requirements of the notification, and sequence the send **from least risky to most risky** communication groups: 1. Impacted users 2. Active users 3. Subscribed users 4. Unsubscribed users 5. Bounced users — **exclude known dead addresses entirely**; they will never reach the intended recipient and only generate reputation damage For known bounce addresses and users who have previously reported the brand as spam, use **alternative contact channels** instead of email: postal mail, SMS, website notification, social media, or traditional media (newspaper, radio, TV). Some recipient groups are inherently complicated to reach by email; alternative methods may satisfy the mandate with zero deliverability cost. ## ESP tasks: coordinating with mailbox providers ESPs often cannot influence message content much — it is typically written by legal counsel to satisfy the organization's obligations under the notice. The ESP's role is coordination and pacing. Advance notifications to MBPs should include: - Contact details for the organization or agency where recipients can get more information, plus a copy of the message itself if possible - Sending volumes and the days required - The sending infrastructure to be used: sending domains/hostnames, IP addresses (ideally a reserved range), dates and times, volume expectations During the send: - **Throttle sending speed over time** to avoid volume peaks that burden receiving networks and trigger anti-spam mechanics. - Verify SPF, DKIM, DMARC, and TLS are in place before the first message leaves. **Contractual preparation:** consider defining a preferred breach/mandated-email process in the customer contract or Data Protection Agreement in advance, so the workflow exists before the emergency does. ## Post-send Monitor the send like any high-risk event: bounce and complaint rates against the thresholds in [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks), blocklistings and provider dashboards per [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring). Addresses that hard-bounce or complain during the mandated send go back into normal suppression — the mandate exception ends with the notification period, and normal [sunset policy](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies) resumes. ## Related - [List Hygiene and Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies) — the normal rules this send temporarily overrides - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability) — why unengaged-database sends are penalized - [M3AAWG Senders BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp) — the baseline these practices deviate from, deliberately and narrowly - [Provider articles](https://emailmarketing.net/learn/providers) — postmaster contact points for advance notification # MTA Delivery Tuning > Outbound queue theory and delivery tuning as a discipline — queue-age diagnosis, per-destination concurrency and rate shaping, connection reuse, adaptive backoff and dead-site detection, scheduler fairness, and bounce-driven traffic-shaping automation. Source: emailmarketing.net — https://emailmarketing.net/learn/operations/mta-delivery-tuning If your outbound queues are growing or providers are deferring your mail, the cause is often how hard your mail server pushes each destination. Delivery tuning covers how a mail transfer agent (MTA) decides that pressure, and how operators diagnose and correct delivery congestion. The concepts below apply to any MTA. The models for queue diagnosis, concurrency feedback and scheduling come from Postfix's documentation, and the models for shaping rules and automation come from KumoMTA's. Every serious MTA, commercial or open source, implements some version of each. For the concrete numbers for each provider that these mechanisms enforce, see [Per-Provider Tuning Baselines](https://emailmarketing.net/learn/operations/per-provider-tuning-baselines). ## Why this is a deliverability discipline Mailbox providers enforce caps on connections per sender, on message rate and on messages per connection, and they answer violations with 4xx deferrals (often `421`) or throttling penalties. An MTA that pushes past those limits turns good mail into deferred mail and ages its queues. At providers that score "unusual traffic patterns", it also damages IP reputation. Delivery tuning is the practice of keeping outbound pressure just under each destination's tolerance, backing off automatically when the destination signals distress, and diagnosing queue problems quickly when they appear. ## Queue-age distribution as diagnosis (the "qshape" model) The single most informative view of an outbound MTA is a two-dimensional table, with **destination domain on one axis and message age on the other**, and counts in each cell. Postfix ships this view as `qshape`. Age buckets are fine-grained for recent mail, typically 5, 10, 20, 40, 80, 160, 320, 640, 1280 and 1280+ minutes, with a total column for each domain. Run it separately against the incoming and active queues (mail being worked on now) and against the deferred queue (mail that has already failed temporarily). Reading rules: 1. **Problems live in the top left.** Large counts for a single domain in the young buckets mean an active, ongoing problem. A concentration in old ages means a past problem that is now draining. 2. **Concentration on a domain identifies the bottleneck.** Sort by row total. The domains that dominate are where delivery is failing or throttled. 3. **A backlog in the active queue matters more than a backlog in the deferred queue.** Mail stuck in the active queue blocks new work, while deferred mail is only waiting for a retry. 4. **A full active queue with an incoming queue that is not full** means that one or more destinations drain more slowly than mail arrives for them. 5. **A view by sender detects backscatter.** Pivoting the same table by sender instead of recipient shows when bounce messages (MAILER-DAEMON) dominate the queue, which means the load is self-inflicted bounce processing, not fresh mail. Characteristic patterns: | Pattern | Signature in the age table | Diagnosis | |---|---|---| | Healthy | Incoming and active queues nearly empty; small deferred totals spread across old buckets | Normal operation | | Deferred backlog, old ages | Large deferred totals, with counts growing toward the oldest buckets; short incoming and active queues | A past problem already resolved, with retries draining. "high volume of deferred mail is not a direct cause for alarm" by itself | | Bounce backscatter | As above, but the sender view shows mostly MAILER-DAEMON | An earlier bad send (for example, to a list hit by a dictionary attack) still generating bounce work | | Active-queue saturation | Active count near its cap (Postfix example: 9,996 of a limit of 10,000; 20,000 in later versions), almost all in the youngest bucket, with one domain dominating | A destination is draining far more slowly than mail arrives. Delivery agents are tied up, and new mail is delayed for all destinations | | High-volume destination backlog | One domain with large counts in every bucket younger than the start of the problem, and still growing | The destination has been down or throttling since roughly the oldest affected bucket; congestion is ongoing | Scale expectations (Postfix figures, indicative for any store-and-forward MTA): a deferred queue handles roughly 100,000–1,000,000 messages, and good performance is unlikely beyond that. ## Per-destination concurrency shaping MTAs open a limited number of parallel connections to each destination, and adapt that number according to delivery outcomes. This is deliberately similar to TCP slow start. - **Initial concurrency** is small (Postfix default: 5 simultaneous deliveries), so that a new or recovering destination is probed gently. - **Maximum concurrency** caps parallelism for each destination (Postfix default: 20). Overrides for individual destinations are how provider caps are honored, for example for a provider that tolerates only 2 connections. - **Positive feedback** raises concurrency after successful deliveries, and **negative feedback** lowers it after connection or handshake failures. The feedback increment is a function of the current concurrency N: - `+1` per success gives an exponential ramp (5, then 10, then 20): fast, but prone to oscillation; - `+1/N` per success gives a linear ramp, one extra slot after N successes: the gentlest; - `+1/√N` sits in between. Fractional feedback combined with integer truncation gives natural hysteresis: concurrency only steps up after `1/g(N)` consecutive successes. - **The asymmetry matters.** Negative feedback is applied at the start of a sequence of failures ("reverse hysteresis"), so that overload is corrected immediately, not after a full window of failures. - Measured effect (Postfix scheduler tests against a receiver that enforces concurrency limits with `421` responses): fixed feedback of ±1 deferred about 50% of mail; `1/N` feedback deferred about 16.5%; `1/√N` about 24.5%. Gentler feedback sharply reduces deferrals at receivers that enforce limits. - Caveat: feedback below 1 has little effect when volume to a destination is low, because deliveries are too infrequent for the counters to move. ### Dead-site detection and penalty boxes This is separate from concurrency feedback. When a whole cohort of delivery attempts (N attempts, where N is the current concurrency) fails with connection or handshake errors, the destination is declared **dead** after a configurable number of failed cohorts (Postfix default: 1 cohort). Dead destinations go into a penalty box, where they are skipped entirely for a period, instead of being hammered at a concurrency of 1. Separating "the site is down" from "the site is slow" lets concurrency feedback stay gentle without wasting delivery agents on unreachable hosts. ## Rate shaping, connection reuse, and the shaping-parameter vocabulary Beyond concurrency, modern MTAs shape traffic to each destination along several independent axes (the names come from KumoMTA, and every MTA has equivalents): | Parameter (concept) | Meaning | Typical global default (KumoMTA) | |---|---|---| | Connection limit | Maximum simultaneous connections to the destination | 10 | | Connection rate | Maximum new connections per unit of time | 100 per minute | | Message rate | Maximum messages per unit of time, regardless of connections | 100 per second | | Deliveries per connection | Messages sent before an SMTP session is closed and reopened | 100 | | Idle timeout | How long a cached connection may stay idle before it is closed | 60 s | | Data timeouts | Timeouts for the DATA phase and the final dot | 30 s and 60 s | | TLS mode | Opportunistic or Required, per destination | Opportunistic | | Consecutive connection failures before delay | The number of failures that triggers backoff | 100 | **Connection reuse** (sending many messages over one connection) is a big lever. Setting up a connection, negotiating TLS and the receiver's accounting for each connection all cost more than an extra `MAIL FROM`. But providers cap messages per connection and answer the excess with errors such as "Max message per connection reached", so the right value depends on the provider (50 for Gmail, 20 for Yahoo, 5 for Apple in community baselines). A related setting is the number of recipients per copy of a message (Postfix default: 50 recipients per copy; larger recipient lists are split into parallel copies). **Destination grouping (MX rollup)**: shaping limits should apply to each receiving infrastructure, not to each recipient domain. Thousands of hosted domains share the MX fleets of Google or Microsoft. Rolling up all the domains whose MX records match a suffix (for example, `.google.com` or `.googlemail.com`) into one shaping bucket prevents you from accidentally multiplying your effective connection count by the number of recipient domains. Conversely, a provider whose MX names are regional silos (for example, Mimecast site names) should be limited per MX site, not per provider. ## Retry scheduling and adaptive backoff on 4xx Mail that failed temporarily (4xx) is given a future timestamp with **exponential backoff** between a floor and a ceiling (Postfix defaults: minimum 300 s, maximum 4,000 s), and the deferred queue is scanned again periodically (by default every 300 s). Messages that cannot be delivered within the **queue lifetime** (default 5 days; bounces often get their own lifetime, also 5 days) are returned as permanent failures. Operational rules: - **Do not shorten retry intervals to "clear the backlog."** Retrying undeliverable mail more often saturates the active queue and ties up delivery agents on dead sites, which starves deliverable mail. Fixing the cause always works better than retrying harder. - **Timeouts limit worst-case throughput.** For example, with 100 delivery agents, a destination with 2 MX hosts of which one is down, and a connect timeout of 30 seconds, throughput tops out at about 6 messages per second, because half the connection attempts use up a full timeout. Shorter connect timeouts (and trying the next MX quickly) restore throughput during partial outages. - **Isolate problem destinations.** Give destinations that are chronically slow or unreliable a dedicated delivery pool with shorter timeouts and adjusted concurrency, or move them to a fallback "graveyard" relay with its own retry schedule, so that they cannot degrade mainstream delivery. ## Scheduler fairness and preemption Inside the MTA, a scheduler decides which message gets the next free delivery slot: - **Round-robin across transports and destinations** makes sure that no single destination monopolizes delivery agents. - **First in, first out (FIFO) within a destination**, by the time mail entered the queue, except for preemption. - **Preemption** lets small messages get past bulk ones without starving the bulk mail. As a large message's recipients are delivered, it accumulates "delivery slots" (one for every K delivered recipients; Postfix default cost K=5). A candidate to preempt it is picked by maximizing `enqueue_time / recipient_count` (the oldest relative to its size first), and needs a minimum number of slots (default 3). **Slot loans** (by default up to 3 slots, at a 50% discount) let a small message jump ahead immediately and "pay back" the advance from later deliveries. This expedites mail the size of transactional messages without giving up fairness to bulk campaigns. It is the equivalent, inside the MTA, of the practice among email service providers (ESPs) of separating transactional and bulk streams. ## Bounce-driven traffic-shaping automation Static shaping tables set the ceiling, and automation adjusts below it in real time by parsing what providers say in their SMTP responses. The model is KumoMTA's Traffic Shaping Automation, which runs as a separate daemon that watches delivery logs and pushes configuration back to the MTA. It can be clustered, so that all nodes react together: - **Match**: regex rules over the text of bounce and deferral responses, scoped to a provider or site, a tenant, or a campaign. - **Trigger**: fire immediately, or only past a threshold (for example, 2 matches an hour, which tells a one-off from a pattern). - **Act**: either **Suspend** (stop sending to that destination from that queue entirely) or **SetConfig** (tighten a shaping parameter: drop `connection_limit` to 1, cap `max_message_rate` at 1 per minute, cut `max_deliveries_per_connection`). Suspension scoped to a tenant exists for responses that indicate a sender problem (for example, missing authentication) rather than a traffic problem. - **Expire**: every action has a duration (commonly 15 minutes–4 hours). When it lapses, normal shaping resumes automatically. This makes automated throttling self-healing: no operator has to remember to remove the throttle. Representative community rules (see [Per-Provider Tuning Baselines](https://emailmarketing.net/learn/operations/per-provider-tuning-baselines) for the full table): - Gmail "unusual rate" responses: cap at 10 messages per minute for 30 minutes. - Yahoo `[TSS04]` complaint deferrals: suspend for 2 hours. - Outlook "exceeded the maximum number of connections": a connection limit of 1 for 1 hour. - A generic default rule matches the family of texts seen across providers, such as "temporarily deferred", "rate limited due to IP reputation" and "Server busy", and drops both the message rate to 1 per minute and connections to 1, for 90 minutes. Design principles for building your own rules: 1. **Parse the provider's words, not only the code.** `421` alone is ambiguous, while `[TS02]`, `[TS03]` and "Max message per connection reached" each call for a different response (see the error code guides for [Gmail](https://emailmarketing.net/learn/providers/gmail-troubleshooting), [Yahoo](https://emailmarketing.net/learn/providers/yahoo-smtp-error-codes) and [Microsoft](https://emailmarketing.net/learn/providers/microsoft-sender-requirements)). 2. **Match the action to the complaint.** For complaints about connections, cut connections. For complaints about volume, cut the message rate. For deferrals about reputation or complaints, and for blocklistings, suspend and let the reputation cool. For content rejections, suspend and alert a person, because throttling will not fix content. 3. **Throttle harder for reputation signals than for mechanical limits.** Hitting a connection cap is a tuning miss; "deferred due to user complaints" is a reputation event. 4. **Keep durations short, and let rules fire again.** A penalty of 30–120 minutes that renews while the provider keeps complaining converges on the right rate without permanently crippling the queue. ## Layering shaping configuration Keep shaping data in layers, so that updates do not destroy local knowledge: a vendor or default layer, a community or shared layer, and a local layer with your own rules. Later layers override earlier ones, with an explicit option to "replace everything for this domain". Never edit the distributed layers in place, because upgrades overwrite them. Most deployments need local rules, because the shared baselines are deliberately not all-encompassing. ## Related articles - [Per-Provider Tuning Baselines](https://emailmarketing.net/learn/operations/per-provider-tuning-baselines), with community-maintained starting values for each provider - [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up), the policy for ramping volume that these mechanisms enforce - [Enhanced Status Codes](https://emailmarketing.net/learn/bounce-handling/smtp-enhanced-status-codes), the vocabulary of codes that automation rules parse - [Gmail SMTP Troubleshooting](https://emailmarketing.net/learn/providers/gmail-troubleshooting) - [Yahoo SMTP Error Codes](https://emailmarketing.net/learn/providers/yahoo-smtp-error-codes) - [Comcast and Xfinity](https://emailmarketing.net/learn/providers/comcast-xfinity-postmaster) # Non-Human Interactions (NHI) and Email Metrics > M3AAWG's Nov 2020 study of automated "bot clicks" from security scanners — <10% B2C vs 20–80% B2B click/open inflation, why filtering NHI out is unreliable, and the practices that reduce it. Source: emailmarketing.net — https://emailmarketing.net/learn/operations/non-human-interactions If your click or open rates look higher than real engagement could explain, software may be clicking your links and opening your messages before your recipients do. These non-human interactions (NHI) can inflate business-to-business (B2B) metrics by a large margin, and they cannot be filtered out reliably. The figures below come from a study by the Messaging, Malware and Mobile Anti-Abuse Working Group (M3AAWG): *M3AAWG Exploring the Impact of Nonhuman Interactions on Email Send Metrics*, November 2020 (M3AAWG-136). The document gives its own address as m3aawg.org/sites/default/files/nhi.pdf. The original queue URL on m3aawg.org now returns a 404 error, so the document was retrieved through the Wayback Machine (snapshot 2025-12-11). NHI, also called "automated clicks", is the automated handling of received email by software rather than by the recipient. It typically happens during **security scans by a mailbox provider's antivirus and security software**. The system follows the links in an email and visits the target site to analyze its content (looking for malware and phishing pages). Along the way it registers a "click" or an "open" for the campaign and pollutes website analytics. The scanning patterns are deliberately hard to recognize, so that bad actors cannot get around the scanning. Symptoms range from clicks on some of the links to **every link in every email to a domain being clicked in quick succession**. What began as a statistical anomaly has become "a major issue affecting email campaign metrics in a massive way". Senders who relied on open and click rates to measure performance may need additional measures of success. NHI on clicks is closely related to the way Apple Mail Privacy Protection (MPP) and Gmail's image prefetching inflate opens (see [Metrics & Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks)). ## Measured impact (M3AAWG benchmark study) Method: the study used benchmark data from large and small ESPs and from B2B and business-to-consumer (B2C) senders across the industry, in some cases covering several years of send, click and open data. It set out to test whether browser **user-agent strings could reliably identify NHI**, and whether NHI could be reliably filtered out to recover a true click rate. | Segment | NHI impact on metrics | Notes | |---|---|---| | **B2C** | Generally **< 10%** | Large volumes go to a smaller set of large consumer inbox providers. The figure was consistent throughout the research. **The impact is weaker for more reputable brands** | | **B2B** | **20–80%** | Enterprise anti-spam software is stricter on inbound mail. The range correlated with recipient engagement: **the lower the engagement at an inbox provider, the higher the probability of NHI scans** | The study could not break NHI levels down by vertical market segment in a meaningful way. An overall effect across the industry is hard to quantify, because **filter vendors and internet service providers (ISPs) actively hide their scanning from detection**, which they must do so that filters are not circumvented. Any filtering effort therefore leaves a margin of error in "NHI-adjusted" rates. The study did find a strong **correlation between reputation and NHI**. M3AAWG recommends building and maintaining a positive reputation to reduce the impact of NHI on open and click rates. ## Business impact - **E-commerce**: automated clicks and opens can **trigger marketing automations and follow-up emails**. Unreliable metrics make planning for return on investment (ROI) and return on ad spend less accurate. The cost is more in lost opportunities than in lost revenue. - **Media and content marketing**: clicks and site visits are often the conversion metric itself. Strategies based on guaranteed clicks, opens or article views can no longer rely on those numbers. This directly reduces advertising and subscription revenue, and threatens marketing revenue that depends on lead generation. M3AAWG advises strengthening **form and email verification** to keep list quality high. - **Brand and ESP reputation**: as engagement indicators become less reliable, it gets harder to segment by engagement and to sunset recipients. List quality then declines, and real engagement falls, which lowers domain reputation. ESPs that host **click-tracking links on their own domains** are also exposed. - **List hygiene**: NHI produces false "engagement". List cleaning based on last activity **can keep addresses on the list that were only ever "active" because of NHI**, which defeats re-engagement series and policies for removing unengaged addresses ([List Hygiene & Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies)). - **Harm to recipients**: NHI may trigger actions the recipient never agreed to, such as completing a double or confirmed opt-in, confirming details, joining a new list, leaving a current list, or registering interest in items they do not care about. The result is more unwanted mail, abuse complaints and damage to the brand. ## Best practices that reduce NHI (from the research) - **Use HTTPS for every link.** Tracking links that mix secure and non-secure addresses appear to be targeted disproportionately. An HTTP advertiser link behind an HTTPS tracking link "seems to trigger the most unwanted behavior." - **Send separate campaigns to confirmed engaged recipients and to non-engaged recipients**, especially where inbox placement at certain domains is a problem. - **Monitor content quality** at the level of links and beyond (for example, the ratio of images to text). "Aggressive" marketing, such as emoticons in subject lines or large catch words, tends to attract more NHI. - **Sender reputation matters**: NHI is considerably lower for senders whose recipients are highly engaged. The standing guidance also applies. Follow the [Senders BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp) for deliverability and engagement, and the [Email Authentication BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-email-authentication-bcp), which lets providers attach reputation to the sender's brand. Good content practices reduce the impact of NHI. Version 4.0 of the [M3AAWG Sender Best Common Practices](https://www.m3aawg.org/senderbcp) (August 2026) reads engagement the same way during domain warm-up. A sharp rise in opens or clicks can mean security filters are inspecting the mail more closely, while a fall can mean it is landing in the junk folder. ## Conclusions and limits - There is **no definitive guide to mitigation**. The study's data covers only the interactions that could be identified as NHI, not 100% of it. - Scanners use **simulated behavior designed to be indistinguishable from natural human interactions**. Identifying it is already very difficult and "will become nearly impossible in the future." - Removing NHI changes the numbers, but a sender can never be sure it caught everything, and the effort may not be worth it. If every ESP filters NHI differently, metrics become even harder to compare. - In short, NHI has measurable and significant consequences. Re-evaluate how you use engagement data to decide mailing frequency or segmentation, and allow for the inflation when you read click and open dashboards. # Open and Click Tracking Mechanics > How ESPs actually count opens and clicks — pixel and link-wrapping mechanics across Pardot, Eloqua, Bird, Customer.io, and Braze — with unique-vs-total definitions, the "read rate" concept, and what each metric does and doesn't prove. Source: emailmarketing.net — https://emailmarketing.net/learn/operations/open-and-click-tracking-mechanics Before you trust an open rate or a click rate, it helps to know how the number was produced. Every engagement metric an email service provider (ESP) reports, whether open rate, click rate, click-to-open rate or read rate, is derived from two changes made to the message when it is sent: a tracking pixel and rewritten links. Below is how platforms implement and count these events, how they define unique and total counts, and exactly what each number can and cannot prove. The privacy features and scanners that distort these counts (Apple Mail Privacy Protection (MPP), Microsoft Safe Links, link detonation by security gateways, image proxies) are covered in depth in [Tracking and Measurement Distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion). The thresholds these metrics feed are in [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks). ## Open tracking: the pixel An open is inferred, never observed. The ESP places a transparent **1×1 image** (a "tracking pixel", "beacon" or "web bug") in the HTML body. Its URL, on a tracking domain, encodes the recipient's unique identifier. When the mail client displays the message and loads remote images, the request reaches the tracking server, which records an open with the requesting IP address, user agent and time. Because the event is an image request, some facts hold on every platform: - **No image load means no open.** Clients with images turned off, plain-text reading panes and text-only clients produce false negatives. An "open rate" is really a pixel-load rate. - **Any image load counts as an open**, including the sender's own previews, a campaign forwarded or posted on the web, and a template that reuses a tracking code. - **Plain-text parts cannot be tracked.** A pixel only exists in HTML, so a message displayed as text produces no open. For this reason Pardot calls an open detected by the pixel an **"HTML open"**: there is no such thing as a text open. - **Total and unique counts differ.** Raw pixel requests are *total* opens, so a recipient who reloads the message counts each time. ESPs remove duplicates to get *unique* opens for each recipient, because they know which identifier belongs to which subscriber. Benchmarks and comparisons between platforms should always use the **unique** rate. ### The click-to-open fallback Several platforms record an open when a click arrives from a recipient with no earlier open. The reasoning is that a click proves the message was viewed, even if the pixel never loaded because images were off. - **Eloqua** states this explicitly: "If a clickthrough occurs without a recorded email open for that RecipientID, Oracle Eloqua automatically records an email open along with the clickthrough." Eloqua therefore detects opens in two ways: when the pixel loads, and when a click implies an open. - **Customer.io** builds it into its definition: an open is counted "when the recipient's email client loads an invisible image (tracking pixel) **or** when the recipient clicks one of the links in the email." This fallback is why audiences that click a lot but keep images off (much of B2B) still show opens. It is also why, since MPP, a click is the only signal that shows a genuine human open by an Apple Mail recipient whose pixel loaded automatically (see [distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion)). ## Click tracking: link wrapping Click tracking rewrites every `href` in the message at send time so that it points to the ESP's redirect domain (often called the "tracking", "click" or "links" domain), with the destination and the recipient encoded. When someone clicks, the redirect server records the request and sends an HTTP redirect to the real URL. Only the sending platform can do this, because the links must be rewritten before the message leaves. That is why analytics-only tools cannot offer click tracking, and why link wrapping belongs to the ESP. Clicks are a stronger signal than opens for these reasons, but not a clean one: - **The redirect domain carries a reputation.** URL blocklists and content filters evaluate the link domains in the body, so a shared redirect domain spreads reputation, good or bad, across every sender that uses it. Tracking hostnames branded for each customer keep reputations separate. Bird serves click and open tracking from **a branded tracking hostname on your own domain**: a CNAME under the sending domain (by default `links.yourdomain.com`), over HTTPS, through which it rewrites the visible links. - **Scanners inflate clicks.** Security gateways (Safe Links, Proofpoint, Mimecast) "detonate" wrapped links by requesting them seconds after delivery, and each request registers as a click no person made. For details and ways to tell bots from people, see [Tracking and Measurement Distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion). - **Unique and total counts** work in the same way as for opens. Total clicks count every request; unique clicks count one for each recipient (some platforms also show unique clicks for each link). ### Tracking must be switched on before it runs A message does not get tracking automatically just because it has links. Bird tracks a send only when all three of these conditions are true: 1. the flag on the send (`track_opens` or `track_clicks`, true by default) is true. A `false` on a send always turns tracking off, whatever the domain settings; 2. tracking is enabled for the domain; 3. the tracking **CNAME has been verified**: "Click and open tracking only run once that CNAME has verified; until then nothing is rewritten or pixelled." Bird reports whether the tracking CNAME is ready separately from whether the domain can send (`capabilities.tracking` and `capabilities.sending`). A domain can therefore send mail while recording no engagement, without any warning. In practice, when a customer's open and click data suddenly drops to zero, the cause is often a broken or unverified tracking CNAME, not a change in the audience. ## Bot and non-human filtering built into the count Scanners request pixels and wrapped links as well as people do, so mature platforms filter out machine activity before it reaches the main metric, instead of simply reporting raw requests. - **Customer.io** shows both sides explicitly. Since **2025-03-20**, a **Human Opened** metric excludes Apple MPP, Gmail prefetching, bots and scanners. Since **2025-04-20**, a **Human Clicked** metric excludes security scanners, bots, proxies and other non-human patterns. The matching **Machine Opened** and **Machine Clicked** metrics capture the automated events that were excluded. Nothing is counted twice: "if a single email was opened by both a machine and a human, that counts as one in the aggregate metric." All opens in Apple Mail are counted as non-human, and an open is counted as human again only if the recipient also clicks, so human opens are undercounted. - **Pardot (Account Engagement)** includes **Metrics Guard** in all accounts. It detects bursts of opens or clicks from one IP address, using thresholds. The thresholds are "conservative averages of peak email activity within a certain time frame across the Account Engagement ecosystem", and when an IP address goes over one, "activity tracking on that location is paused until the activity level falls back below the threshold." It filters out most scanner activity without blocking legitimate visitors, but it cannot catch every bot: activity below the thresholds is still recorded. - **Eloqua** stores automatic opens and clicks from email scanning tools, and automatic opens from Apple's privacy features, **separately** from real contact engagement, instead of counting them as engagement. - **Bird** marks opens requested by a proxy with `is_prefetched: true`, and defines its open rate as **"unique non-prefetched opens over delivered"**. Prefetched opens are removed from the main rate, not just labeled. - **Braze** offers reports that "either exclude or include machine opens (like Apple's MPP)." If you run an ESP, never compare an unfiltered open rate with one filtered for bots, and know which of the two your platform's default dashboard shows. On lists with many Apple users, the gap between "opens" and "human opens" is often 30–70%. ## What the platforms actually name and expose | Platform | An open is counted when… | Click counted as open | Bot handling | Notable metric definition | |---|---|---|---|---| | **Pardot (Account Engagement)** | The HTML pixel loads ("HTML open"); there is no text open | Not documented | Metrics Guard: burst thresholds for each IP address pause tracking | Also reports **read rate** (tiers of time spent on the message, see below) | | **Eloqua** | The pixel loads, *or* a clickthrough arrives with no earlier open for that RecipientID | Yes, explicitly | Automatic opens by scanners and Apple stored separately from engagement | By default the pixel is `` at the bottom of the message | | **Bird** | A pixel load that was not prefetched | (an open on any tracked event) | `is_prefetched:true` excluded from the open rate | Open rate = unique opens not prefetched ÷ delivered; **rates are calculated on the time of the event, not the time of the send** | | **Customer.io** | The pixel loads **or** a link is clicked | Yes, in the definition | Human and Machine Opened and Clicked (2025); nothing counted twice | Metrics use **delivered** messages as the base by default (configurable); events on messages > 6 months old are ignored | | **Braze** | A 1×1 pixel loads (a proxy for an open) | Not documented | Reports can include or exclude machine opens | Presents the unique open rate as a proxy for inbox placement (see below) | Watch the base of each rate. Customer.io and Bird calculate engagement rates against **delivered** messages, and Bird attributes engagement to the **time of the event**, so a click today on last week's send appears in today's numbers. Two platforms can report different "open rates" for identical behavior only because they choose different denominators and time attribution. Before comparing, always confirm the numerator (unique? filtered for humans?) and the denominator (delivered? sent?). ## Read rate: a different measurement entirely "Read rate" is not a pixel metric. It measures **how long a message stayed open in the foreground, or in focus,** before the reader moved on, sorted into tiers. Pardot reports **deleted (< ~2 s), skimmed (~2–8 s) and read (> ~8 s)**. The data comes from a different source than opens: - According to oimetrics, read rates come from **a panel of monitored inboxes**. They are estimated rates, not direct measurements, so expect them to differ from your own opens. - They are **unique rates, not total rates**. They are calculated by observing when a subscriber marks or keeps a message as read, not by loading a pixel, so they **mostly avoid the effect of Apple MPP**. MPP inflates pixel opens, but it does not invent time spent reading. - Their value for deliverability: "read rates use the same methodology as ISPs, like Gmail and Outlook," so they "more accurately estimate what ISPs are calculating" for engagement scoring. Read rate is therefore closer than any pixel open to the engagement signal the mailbox provider calculates itself. - Compare read rate only with the **unique open rate, not the total open rate**; "higher is better." A panel read rate estimates how a list performs as a whole; it says nothing reliable about any single recipient. Its value is as a check on pixel opens and as a proxy for the provider's own engagement calculations. A healthy read rate alongside a collapsing open rate points to distortion of the pixel by MPP, not to a real fall in engagement. ## Opens as a deliverability signal: the honest reading Braze states the current position plainly: a pixel load is "more likely to indicate **inbox placement** as opposed to a human being actually selecting your message and choosing to read it." That is the useful way to see opens when you run an ESP: - **A unique open rate that excludes machine opens and is over ~25% indicates widespread inbox placement.** Below ~20% suggests placement in the spam folder, and a **steady downward trend often comes before deliverability problems** (Braze). Bird's dashboard marks an open rate above **35%** as "Healthy", and a delivery rate above **95%** as healthy. Treat these specific numbers as calibrated by each vendor, not as universal. They are ranges that **exclude machine opens**. A benchmark on raw opens that include machine opens, such as Klaviyo's ≥33%, cannot be compared with them. The [canonical threshold table](https://emailmarketing.net/learn/operations/metrics-and-benchmarks#canonical-threshold-table) sorts the open rate figures by whether they include or exclude machine opens. - Mailbox providers judge engagement on data that senders **cannot see**: "time-to-open, time-to-click, forwards, replies, deleted, etc." (Braze). Your open metric is a rough shadow of the provider's real model, and read rate is a slightly less rough one. - So, to judge how engaged an audience is, and to decide on sunset and re-engagement, rely on **clicks and conversions rather than opens**. To judge placement, the trend of the aggregate open rate is still a legitimate early warning: a drop means messages stopped reaching the inbox. The rule in practice is to use opens for the direction of placement, and clicks and conversions for decisions about engagement. ### What each metric does and doesn't tell you | Metric | Proves | Does **not** prove | |---|---|---| | Delivered | The receiving MX server accepted the message | Whether it went to the inbox or the spam folder | | Open (raw pixel) | An image was requested (by a client, a proxy or a scanner) | That a person saw it, when or where, or on which device | | Unique human open | A person's client displayed images at least once | Attention, or that people who did not open did not read (images off) | | Aggregate open **trend** | The direction of change in inbox placement | Actual placement, or the interest of any one recipient | | Click (raw) | A wrapped link was requested | That a person clicked (scanners detonate links) | | Unique human click | A person acted on the message | That the destination was reached (warning pages can block it) | | Read rate (panel) | An estimated distribution of reading time, resistant to MPP | What happened for any one recipient; it is an estimate from a sample | | Conversion or activity on the site | A real session and a completed goal | (the strongest positive signal, and the hardest to fake) | ## Related articles - [Tracking and Measurement Distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion), on how MPP, Safe Links, link detonation and image proxies break these counts - [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks) - [List Hygiene and Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies), on engagement definitions that depend on which events you trust - [Content and Design for Deliverability](https://emailmarketing.net/learn/operations/content-and-design-for-deliverability), including tracking domain reputation and link handling - [Customer Domain Authentication](https://emailmarketing.net/learn/esp-operations/customer-domain-authentication), including branded tracking CNAME setup for customers # Per-Provider Tuning Baselines > Community-maintained per-provider MTA shaping baselines — connection limits, messages per connection, rates, TLS requirements, and automated-throttle rules — from the KumoMTA shaping files, attributed and dated. Source: emailmarketing.net — https://emailmarketing.net/learn/operations/per-provider-tuning-baselines When you configure how your MTA shapes traffic to each destination, you need concrete values to start from. The values below come from the shaping files that the KumoMTA project maintains publicly. There are two files: - the `policy-extras/shaping.toml` file maintained by the vendor, with defaults and the major providers (several sections are marked "provided directly by" the provider); - the `community/shaping.toml` file contributed by the community, with more providers and automation rules driven by bounces. **Fetched 2026-07-20 from the `main` branch.** These values drift as providers change their policies. Treat them as attributed starting points to check against your own deferral data, not as facts about current provider limits. See [MTA Delivery Tuning](https://emailmarketing.net/learn/operations/mta-delivery-tuning) for what each parameter means and how the automation model works. How to read the tables: - **MX rollup**: limits apply to each **receiving MX infrastructure**, so all recipient domains that resolve to the same set of MX hosts share one bucket. Provider blocks match by MX suffix. For example, anything with an MX under `.google.com` or `.googlemail.com` counts as "google", which covers Gmail **and** domains hosted on Google Workspace. According to the file's note of 2024-09-03, their MX hostnames resolve to common IP addresses, so they are shaped together. - **`provider_connection_limit` vs `connection_limit`**: the provider variant is enforced across the whole provider rollup, and the plain variant applies to each site. Mimecast deliberately uses limits for each site, because each Mimecast site name is a separate regional fleet of MTAs. - Where a cell is blank, the global default applies. ## Global defaults | Parameter | Default | |---|---| | connection_limit | 10 | | max_connection_rate | 100/min | | max_deliveries_per_connection | 100 | | max_message_rate | 100/s | | idle_timeout | 60 s | | data_timeout / data_dot_timeout | 30 s / 60 s | | enable_tls | Opportunistic | | consecutive_connection_failures_before_delay | 100 | | remember_broken_tls | 3 days | A **default automation rule**, for all destinations, matches the family of deferral messages that many providers use: `Messages from temporarily deferred`, `All messages from will be permanently deferred`, `has been temporarily rate limited due to IP reputation`, `Unfortunately, messages from weren't sent`, `Server busy. Please try again later from`. On a match, it sets `max_message_rate = 1/minute` **and** `connection_limit = 1` for **90 minutes**. ## Provider baselines | Provider (MX match) | Conn. limit | Deliveries per conn. | TLS | Other | |---|---|---|---|---| | Google (`.google.com`, `.googlemail.com`) | 5 (provider-wide) | 50 | **Required**: Google tempfails and rate-limits injection without TLS | consecutive_connection_failures_before_delay = 5 | | Yahoo (`.yahoodns.net`), values "provided by Yahoo directly" | default (10) | 20 | default | | | Microsoft consumer (`.olc.protection.outlook.com`) | 5 (provider-wide) | 50 | default | The consumer, O365 and DANE sets of MX hosts are separate groups of edge servers, shaped separately | | Office 365 (`.mail.protection.outlook.com`) | 5 (provider-wide) | 50 | default | | | Office 365 DANE (`.mx.microsoft`) | 5 (provider-wide) | 50 | default | DANE left off in the baseline (DNSSEC is not ready at most sites) | | Apple iCloud (`.icloud.com`) | 10 (provider-wide) | 5 | default | Note the very low number of deliveries per connection | | Comcast (`comcast.net`), "provided directly by Comcast" | 25 | 1000 | Required | idle_timeout = 30 s; consecutive_connection_failures_before_delay = 24 | | Mimecast (`.mimecast.com`, `.mimecast.co.za`, `.mimecast-offshore.com`), "provided directly by Mimecast" | 10 **per site** | 100 | default | For each site, not provider-wide (regional fleets) | | mail.com, "provided directly by mail.com" | default | 100 | default | | | Orange (`.orange.fr`) | 2 (provider-wide) | 100 | Required | | | GMX and WEB.DE (`.web.de`, `.gmx.net`) (community) | 4 | 20 | Required | consecutive_connection_failures_before_delay = 5 | | Yahoo Japan (`yahoo.co.jp`) (community) | 2 | 20 | default | max_message_rate = 10/s; a separate fleet of MX hosts from Yahoo itself | | Barracuda (`.barracudanetworks.com.`) (community, dated 2026-03-27) | 10 (provider-wide) | 15 | Required | | | Netvigator (`.netvigator.com.`) (community, dated 2026-03-27) | 5 (provider-wide) | 10 | Required | | | KPN (`.kpnmail.nl.`) (community) | 10 | 10 | Required | | | Tencent QQ (`.qq.com`) (community) | 4 | 8 | Required | | | NetEase 163.com (`.netease.com`) (community) | 4 | 7 | RequiredInsecure (TLS forced, but certificates not validated) | | | Mailgun smarthost (`smtp.mailgun.com`), "provided directly by Mailgun" for senders relaying through Mailgun | 7000 | 3 | default | A smarthost, not a mailbox provider | ## Automated-throttle rules per provider (community-contributed) The community file adds these adjustments on top of the baselines, in response to bounces. A trigger of `N/hr` means the rule fires once the response has matched N times in an hour, and every action expires after its duration. For what each response means, see the error codes for [Gmail](https://emailmarketing.net/learn/providers/gmail-troubleshooting), [Yahoo](https://emailmarketing.net/learn/providers/yahoo-smtp-error-codes), [Microsoft](https://emailmarketing.net/learn/providers/microsoft-sender-requirements), [Apple](https://emailmarketing.net/learn/providers/apple-icloud-mail), [Comcast](https://emailmarketing.net/learn/providers/comcast-xfinity-postmaster) and [GMX and WEB.DE](https://emailmarketing.net/learn/providers/gmx-web-de-postmaster). | Provider | Response matched (regex, abridged) | Trigger | Action | Duration | |---|---|---|---|---| | Gmail | "Our system has detected that this message" | 5/hr | Suspend | 1 h | | Gmail | "Our system has detected an unusual rate" | 2/hr | max_message_rate = 10/min | 30 m | | Gmail (example, shipped commented out, because it suspends whole tenants) | "This message does not have authentication information" | None | SuspendTenant | 3 h | | Yahoo | `[TS02]` (unusual traffic patterns, submit IPs for review) | 3/hr | max_message_rate = 1/min | 30 m | | Yahoo | `[TS03]` (unusual traffic patterns) | 3/hr | max_message_rate = 10/min | 30 m | | Yahoo | `421 4.7.0 [TSS04]` (deferred, user complaints). The vendor file also has: any `[TS?S04]` leads to Suspend for 2 h, with no threshold | 2/hr | Suspend | 2 h | | Yahoo | `421 4.7.0 [TSS05]` (deferred, user complaints) | 2/hr | Suspend | 4 h | | Yahoo | `421 [IPTS04]` | 2/hr | Suspend | 2 h | | Yahoo | `421 [IPTS05]` | 2/hr | Suspend | 4 h | | Yahoo | `553 5.7.1 [BL` (IP listed by Spamhaus) | 5/hr | Suspend | 2 h | | Yahoo | "Max message per connection reached" | 3/hr | max_message_rate = 10/min | 1 h | | Yahoo Japan | "VS98-IP0 deferred" (`553 Mail from not allowed`) | 2/hr | Suspend | 1 h | | Yahoo Japan | `421 [TSS04]` or `421 [IPTS04]` (volume or complaints) | 2/hr | Suspend | 1 h | | Yahoo Japan | "Timeout waiting for command" | 2/hr | Suspend | 30 m | | GMX and WEB.DE | "Too many connections" | 3/hr | connection_limit = 1 | 30 m | | GMX and WEB.DE | "Reject due to policy restrictions." | 5/hr | max_message_rate = 1/min | 1 h | | GMX and WEB.DE | "Reject due to policy violations." | 5/hr | Suspend | 1 h | | GMX and WEB.DE | `554 … Reject due to policy restrictions.` | 5/hr | Suspend | 2 h | | Outlook | "Unfortunately … part of their network is on our block list" | 5/hr | Suspend | 2 h | | Outlook | "Access denied, please try again later" | 5/hr | Suspend | 1 h | | Outlook | "Server busy. Please try again later" | 5/hr | Suspend | 30 m | | Outlook | same "Server busy" text (second rule) | 3/hr | max_message_rate = 1/min | 15 m | | Outlook | "has been temporarily rate limited" | 3/hr | Suspend | 30 m | | Outlook | "exceeded the maximum number of connections" | 2/hr | connection_limit = 1 | 1 h | | Outlook | "exceeded maximum number of messages per connection" | 2/hr | max_deliveries_per_connection = 2 | 1 h | | Outlook | "Connection refused … exceed max concurrent connections. IB007" | 2/hr | connection_limit = 1 | 1 h | | Outlook | "Temporary server error. Please try again later" | 5/hr | Suspend | 1 h | | Apple | "Service unavailable - try again later" | 5/hr | Suspend | 15 m | | Apple | `[BS02] Temporary server error.` | 5/hr | Suspend | 15 m | | Apple | `[HCM1] Your mail from was deferred` | 3/hr | Suspend | 15 m | | Apple | "rejected due to having a domain present in the Spamhaus DBL" | 3/hr | Suspend | 4 h | | Comcast (vendor file) | `RL0000` (rate limited) | 2/hr | max_connection_rate = 10000/h | 2 h | | Comcast (vendor file) | `RL000010` (domain throttled) | Immediate | SuspendTenant | 5 m | | Orange | "Trop de connexions" | 2/hr | connection_limit = 1 | 1 h | | Orange | "Service refuse" | 2/hr | Suspend | 1 h | | Orange | "Client host blocked for spamming issues" (variant with the Cloudmark reset URL) | 5/hr | Suspend | 2 h | | Orange | "Client host blocked for spamming issues … spamhaus" | 5/hr | Suspend | 2 h | | Mimecast | "Internal resource temporarily unavailable" | 3/hr | Suspend | 30 m | | Netvigator | "Too many messages for this session" | 3/hr | Suspend | 30 m | | QQ | `550 Sender frequency limited` / `550 Ip frequency limited` / `550 Connection frequency limited` / `550 Domain frequency limited` / `550 Mail content denied` | 5/hr each | Suspend | 1 h | | 163.com | `451 DT:SPM` (anti-spam deferral) | 5/hr | Suspend | 15 m | | 163.com | `421 Too many connections` | 2/hr | connection_limit = 1 | 1 h | | 163.com | `554 DT:SPM` | 2/hr | connection_limit = 1 | 1 h | | 163.com | `550 RP:ORQ` or `554 HL:ITC` (daily limit reached) | 2/hr each | Suspend | 1 h | ## Reading the pattern Across providers, the community's throttling logic follows the design principles in [MTA Delivery Tuning](https://emailmarketing.net/learn/operations/mta-delivery-tuning): - Responses about mechanical limits (too many connections, or too many messages per session) get a parameter cut for about an hour. - Brief capacity problems ("server busy", "service unavailable") get short suspensions of 15–30 minutes. - Reputation events (deferrals for user complaints, blocklist rejections) get the longest suspensions (2–4 hours), because continuing to send through them makes reputation worse. Note also how low the baselines are compared with the global default. The biggest providers are shaped to 5 connections across the provider, and several regional providers (Orange, Yahoo Japan) to just 2. ## Caveats - The values are what worked for KumoMTA operators as of the fetch date. Providers change limits without notice, and the reputation of each IP address affects what a given sender actually gets. Check the values against your own deferral logs. - Several entries carry dates in the file (Barracuda and Netvigator are marked 2026-03-27, and the note on the Google and Workspace rollup is dated 2024-09-03). Each row has its own freshness. - The community file states explicitly that its rules are contributed as-is, and must be combined with the vendor's defaults file for full coverage. - These are limits that senders impose on themselves, not guarantees published by providers, except where a row is marked "provided directly by" the provider (Yahoo, Comcast, Mimecast, mail.com, Mailgun). # Placement Measurement Methodology > How inbox placement is actually measured — seed lists, subscriber panels, pixel/read-rate telemetry, and mailbox-provider dashboards — and the systematic bias each method carries, including Google Postmaster Tools' no-data blind spots. Source: emailmarketing.net — https://emailmarketing.net/learn/operations/placement-measurement-methodology When you quote an inbox placement rate, you are quoting an estimate, because nobody outside a mailbox provider can see directly where a delivered message landed. SMTP tells you that a message was accepted (250 OK), but says nothing about whether it went to the inbox, to spam or to a Promotions tab, or was silently dropped. Every placement number an operator quotes therefore comes from one of four indirect methods, and **each method is wrong in a known, systematic direction**. Choose the method that fits your question, and correct for the bias built into its answer. For the monitoring program these methods feed, see [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring). For why the engagement signals behind some methods are themselves distorted, see [Tracking and Measurement Distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion). For the most detailed dashboard from a single mailbox provider, see [Google Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools). ## The four measurement methods at a glance | Method | What it observes | Real recipients? | Engagement captured? | Sees missing or blocked mail? | Provider coverage | Systematic bias | |---|---|---|---|---|---|---| | **Seed list** | Placement of a test message in dedicated test mailboxes | No | No | Yes | Broad (100s of providers) | Conservative and noisy: no engagement history, tiny sample | | **Subscriber panel** | Placement and behavior in real, monitored mailboxes of consenting people | Yes | Yes | No | Narrow (a few big webmail providers) | Optimistic: excludes mail that is missing or blocked at the gateway | | **Pixel or read-rate telemetry** | Open events on your own real sends | Yes (implicitly) | Opens only | Indirectly (a drop implies filtering) | Any provider you send to | Distorted by Apple Mail Privacy Protection (MPP) prefetch, proxies and scanners | | **Provider dashboard** | The receiver's own view of your reputation and spam rate | Yes (all of them) | Complaints, aggregate | Partially (delivery errors) | One provider each; only the major providers publish one | Blind below a volume floor; delayed; covers consumer mailboxes only | No single method is enough, and honest programs triangulate. The sections below explain how each method is built and where it misleads. ## Method 1: Seed lists (and personal test accounts) A **seed test** sends a copy of the campaign to a curated list of seed addresses. These are dedicated test mailboxes that the seed vendor maintains across many mailbox providers, spam filters and regions. The test reports where each copy landed: the inbox, spam, a specific tab (Gmail's Primary, Promotions, Updates, Social or Forums), a folder of a corporate filter, or **missing** (accepted and then dropped, or blocked at the gateway). Done well, the seeds are injected into the production send itself (the same message, the same infrastructure and IP, the same send window), so that their treatment approximates that of the real campaign rather than that of a test copy built by hand. What seed testing is genuinely good for: - **Quality checks before launch**: catching authentication failures (SPF, DKIM, DMARC), broken rendering and dead links before the real list sees them. - **Comparison between providers**: isolating a problem such as "we inbox everywhere except Microsoft." - **Testing changes**: one variable at a time, such as a new template, tracking domain or sending IP. - **Incident triage**: a quick read on whether a live problem comes from content, authentication or reputation. - **New programs with no history**: a panel needs your mail to reach real engaged users before it can say anything, whereas seeds report placement "irrespective of user-initiated or engagement-based filtering." For a cold program, a seed list may be the only signal available. ### Where seed lists lie The criticisms from Mailgun, the Certified Senders Alliance (CSA) and Suped agree on the same structural flaws: 1. **No engagement, while modern filters run on engagement.** Seed addresses do nothing. In the CSA's words, they "don't open or read emails, click on links, unsubscribe or complain." Placement at Gmail, Microsoft and Yahoo is now dominated by subscriber behavior (opens, clicks, forwards, complaints, deletes, saves), so a metric with no engagement input at all can differ sharply from what real subscribers experience. A seed result is a snapshot of how filters score content, authentication and reputation with no human in the loop. 2. **Providers do not treat seeds as real recipients.** Mailgun states plainly that "mailbox providers don't treat seed inboxes the same as actual recipients." Seed mailboxes have no history of receiving your mail, so their placement leans conservative (no accumulated goodwill), and they miss the personalized filtering that a real, engaged subscriber would benefit from. 3. **A tiny, unrepresentative sample.** A handful of test addresses cannot stand in for thousands of real recipients who vary in volume, timing and list quality. The results show a **single moment**, not an ongoing pattern. 4. **Both false positives and false negatives occur.** Seeds may show the inbox while real subscribers are filtered, or the reverse. **One poor seed result is usually noise**, so act only on a pattern repeated across several sends. 5. **Cost.** Professional seed list services are a recurring expense. Testing with your own personal accounts removes the cost but keeps every other limitation (a small sample, unrepresentative conditions, no real reputation dynamics). Practical rule: use seeds as a **directional signal and a quality gate**, review them separately for each mailbox provider, and cross-check them against real-world data (DMARC aggregate reports, complaint rates, bounce logs, blocklist status) before you change anything. ## Method 2: Subscriber panels A **panel** is a body of real mailboxes, owned by actual people who consent to be monitored by the measurement vendor. Validity (formerly Return Path) calls its panel a "Consumer Network", and others build equivalents. When your mail reaches a panelist, the vendor observes not only placement but also **behavior**: inbox or spam, whether the message was read, whether it was reported as spam, and other user actions. Panel data can therefore reveal the **filtering factors and thresholds based on engagement that non-interactive seeds cannot see**, which are exactly the signals that drive placement at the large providers. ### Where panels lie Their weaknesses mirror those of seeds: 1. **Narrow coverage of providers.** A panel only measures providers where it has enough panelists, historically the big consumer webmail services (Google, Microsoft's Outlook.com, Yahoo and, in the 2018 data, AOL). It says little about corporate or business-to-business (B2B) gateways, regional providers, or the long tail that seeds reach. 2. **No visibility of missing or blocked mail, so the number runs optimistic.** Panel measurement only sees mail that was accepted at the gateway and delivered to a panelist's mailbox. Mail blocked or dropped upstream never enters the denominator, so **inbox placement rates from panels are structurally higher than rates from seeds.** Validity's own illustration from 2018 (below) shows the size of this gap. 3. **Bias from the panel's composition.** Results reflect the demographics, provider mix and behavior of the panel, which may not match your audience. ### The seed-vs-panel gap, quantified (dated: 2018) > Note on sources: the figures below come from the **Return Path (now Validity) 2018 Deliverability Benchmark**, which sampled more than 2 billion promotional messages sent from July 2017 to June 2018 across 140+ mailbox providers. The cuts of panel and industry data use about 17,000 senders, 2 million panelists and 2 billion messages to Microsoft, Google, Yahoo and AOL. **The absolute rates are old and have been superseded** by newer benchmarks (see [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring) for current Litmus figures, and [Deliverability Benchmarks](https://emailmarketing.net/learn/reference/deliverability-benchmarks) for current inbox, spam and missing rates measured with Validity seeds, by provider, region and industry). They are cited here only because the report puts the two methods side by side on identical mail. The relationship between the methods is the lesson that lasts. The same 2018 period, the same population of senders, two methods: | Metric | Panel data | Seed data | |---|---|---| | Global inbox placement | **91%** | **85%** | | Spam-folder rate | 9% | 6% | | Missing or blocked rate | **N/A** (not measurable) | **10%** | The panel's 91% and the seed's 85% describe the same mail. The gap of 6 points is almost entirely the roughly 10% of mail that seeds counted as missing or blocked and that the panel never saw. In Validity's own words: "inbox placement rates calculated with panel data do not factor in missing/blocked emails, so the resulting inbox placement rate will always be higher." **Whenever you compare two placement numbers, first ask which method produced each one.** A "91%" and an "85%" can be the same reality measured in two ways, not a real difference. A second panel cut, dated but illustrative, is worth keeping. In 2018, placement at the top four providers averaged 96% at AOL, 92% at Gmail, 92% at Yahoo and **75% at Outlook**. Microsoft was already the hardest major mailbox provider to reach in 2018, consistent with the pattern of Microsoft being the strictest that persists in current benchmarks. ## Method 3: Pixel and read-rate telemetry as a placement proxy Your own open tracking does not measure placement, but a collapse in it is a placement signal, because a message must reach the mailbox before any pixel can fire. This is the cheapest, broadest and most timely method (it covers every provider you actually send to, in real time), and also the most contaminated. [Tracking and Measurement Distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion) explains the full mechanics. These are the points that matter when you use opens as a proxy for placement: - **Apple MPP fires the pixel when it prefetches on the receiving side**, for nearly every message delivered to an Apple Mail user, engaged or not. This makes individual opens almost worthless as a sign of attention, but it turns the aggregate MPP open rate into a de facto **proxy for inbox delivery in the Apple segment**, because an MPP open still requires the message to have reached the mailbox. - **A sudden drop in the aggregate open rate at one provider, while others hold steady**, is the classic sign of mail going to spam at that provider. It is the most sensitive early warning most senders have, precisely because it runs on your full real audience rather than on a sample. - It cannot tell the inbox from the Promotions tab, cannot see missing mail directly, and is polluted by opens from scanners and proxies. It tells you whether placement moved, not where it moved to. Confirm the direction and the location with a seed test or a dashboard. ## Method 4: Mailbox-provider dashboards, and their blind spots Provider dashboards ([Google Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools), [Microsoft SNDS and JMRP](https://emailmarketing.net/learn/postmaster-tools/microsoft-snds-jmrp), Yahoo feeds) are the only "real data" straight from the receiver: the provider's own verdict on your reputation, your spam complaint rate and your authentication pass rates. They are authoritative where they report at all. Their weakness is not bias but **absence**: the dashboard goes blank exactly when a small or new sender most wants an answer. ### Google Postmaster Tools' no-data conditions Google Postmaster Tools (GPT) shows nothing, or shows gaps in a chart that is otherwise populated, for several distinct reasons. It matters to tell them apart, because "no data" is routinely misread as "a problem": | Cause of missing or blank data | What is actually happening | |---|---| | **Below the privacy volume floor** | Gmail suppresses reputation and dashboard data when a domain or IP has too little qualified traffic, to protect recipients' privacy. This is the most common cause and is not a fault. | | **Only @gmail.com counts** | Volume is measured against **personal Gmail recipients only**. Google Workspace and business mailboxes, and other domains, do not count toward the threshold. A "high-volume" B2B sender can be below the threshold at Gmail. | | **Low-volume days omitted** | Individual days with little volume are dropped for privacy, which produces gaps in an otherwise populated series. A gap means "too few that day", not zero. | | **Domain or subdomain scope mismatch** | Data is tied to the exact verified authentication domain, and the verified domain must match the **DKIM `d=` signing domain**. Traffic on the root domain and on subdomains is reported separately, so verifying the wrong one shows a blank. | | **Reporting gaps without backfill** | Google has had periods when reputation data stopped and came back later **without backfilling** the missing dates. This is an outage on Google's side, not a problem with your sending. | | **Reputation-chart retirement** | Google retired the legacy High, Medium, Low and Bad reputation charts around **September 30, 2025**, and historical reputation views became unreliable whatever your volume. | ### The volume you need, and how fast data appears Google publishes **no fixed minimum**. These thresholds were observed by practitioners (Suped), and all of them count **personal Gmail recipients per day**: | Daily Gmail volume | Dashboard behavior | |---|---| | **Under about 100 per day** | Sparse: often no data, many missing days | | **About 100–300 per day** | Intermittent: some dashboards populate, but daily movement is weak | | **Hundreds per day** | Usually useful, consistent trend data | | **5,000+ per day** | This is the line for bulk senders in the [Gmail requirements](https://emailmarketing.net/learn/providers/gmail-sender-requirements), a compliance threshold and **not** the threshold for display. You get useful data well below it | Plan on **hundreds of messages a day to personal Gmail addresses** for reliable dashboards. Once the volume is enough, the timing is: | Signal | Delay before it appears or updates | |---|---| | Initial data after a new domain is verified | About 24–48 hours | | Spam-rate metric | About 1–2 days | | Domain reputation trend | About 1–2+ days | | Compliance status | Up to **7 days** (a rolling calculation) | In Google's own words, dashboard data is "usually updated within 24 hours, but can take longer." There is **no retroactive data**. A domain enrolled after an incident has no history for the period of the incident, which is why every authentication domain should be enrolled before problems occur. The general blind spot: **every provider dashboard is an instrument for consumer mail, above a floor, and delayed.** Below the floor, and for B2B or corporate destinations that publish no dashboards at all, you are back to seeds and panels. ## When to trust which | The question you're answering | Reach for | Why | |---|---|---| | "Will this campaign render and authenticate before I send it?" | Seed list | Quality checks before sending are exactly what seeds do, and engagement does not matter for a check of rendering or authentication | | "At which providers is my mail going to spam right now?" | Panel and seed | Seeds for broad coverage, including missing mail; the panel for the major providers driven by engagement | | "Did placement just move for my real audience?" | Pixel or read-rate trend | The broadest and most timely; a drop in open rate at one provider is the earliest warning | | "What does Gmail actually think of my reputation?" | Google Postmaster Tools | The receiver's own verdict, authoritative where it reports | | "Am I reaching the inbox with a new or cold program?" | Seed list | Panels and dashboards need real engaged volume that you do not have yet | | "How bad is my missing or blocked mail?" | Seed list | The only method that measures mail accepted and then dropped, or blocked at the gateway | | "What is my true complaint rate at Microsoft?" | SNDS and JMRP | Complaints reported by the provider beat any inference | | "What is my inbox rate at a corporate B2B gateway?" | Seed list (with caution) | No panel or dashboard covers these; seeds are the only lens, and a thin one | Two rules follow from the whole table: - **Never compare one placement number with another without knowing both methods.** Panel rates are higher than seed rates by construction, because the panel excludes blocked and missing mail. A vendor that quotes a higher number may simply be using panel data. - **Corroborate before acting.** Seeds and pixel trends bring up candidates; DMARC reports, complaint rates, bounce logs, blocklist status and provider dashboards confirm them. One bad seed result, or one day's dip in opens, is noise until a second method agrees. ## Related articles - [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring), including the monitoring stack these methods feed and current benchmark inbox rates - [Tracking and Measurement Distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion) - [Google Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools) - [Microsoft SNDS and JMRP](https://emailmarketing.net/learn/postmaster-tools/microsoft-snds-jmrp) - [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks), the thresholds these measurements are judged against - [Deliverability Testing Tools](https://emailmarketing.net/learn/reference/deliverability-testing-tools), including seed and inbox placement vendors # Reading Received Headers: Hops, Delays, and What They Prove > How to read the Received trace fields of a delivered message: the field syntax, bottom-to-top order, which hops you can trust, computing per-hop delay across time zones, and how Received relates to Authentication-Results. Source: emailmarketing.net — https://emailmarketing.net/learn/operations/reading-received-headers Every SMTP server that accepts a message adds a `Received:` line to the top of it. Read together, those lines record the route the message took and when each host received it. They are the first thing to check when a message arrived late or by an unexpected path. Some of the lines are reliable evidence and some are only claims, and this article explains how to tell which is which. The rules come from [RFC 5321](https://emailmarketing.net/learn/rfc/rfc5321-smtp) §4.4 (trace information) and [RFC 5322](https://emailmarketing.net/learn/rfc/rfc5322-message-format) §3.6.7 (trace fields). The relationship with `Authentication-Results` comes from RFC 8601 (see [the Authentication-Results header](https://emailmarketing.net/learn/authentication/authentication-results-header)). ## Where Received lines come from RFC 5321 §4.4: "When an SMTP server receives a message for delivery or further processing, it MUST insert trace ("time stamp" or "Received") information at the beginning of the message content." Three consequences follow directly from the same section: - **Each line is written by the receiving host, not the sender.** A `Received:` line records one host accepting the message. - **Lines are only added at the top.** "SMTP servers MUST prepend Received lines to messages; they MUST NOT change the order of existing lines or insert Received lines in any other location." - **Existing lines are not edited or removed.** "An Internet mail program MUST NOT change or delete a Received: line that was previously added to the message header section." These are requirements on compliant software, not guarantees about every message. RFC 3848 §3 notes that "some people in a misguided attempt to hide information about their internal servers will strip Received headers of useful information", so a chain can have gaps. When the message leaves SMTP at final delivery, the delivering server also adds `Return-Path:`, which holds the envelope `MAIL FROM` address. RFC 5321 §4.4 says the delivered message will "begin with a return path line, followed by one or more time stamp lines." RFC 5322 §3.6.7 treats these fields as "strictly informational, and any formal interpretation of them is outside of the scope of this document." There's nothing to validate: a `Received:` line is only as trustworthy as the host that wrote it. ## Field syntax RFC 5321 §4.4 defines the line (abridged; `FWS`/`CFWS` are folding whitespace and comments from RFC 5322): ``` Time-stamp-line = "Received:" FWS Stamp Stamp = From-domain By-domain Opt-info [CFWS] ";" FWS date-time Opt-info = [Via] [With] [ID] [For] [Additional-Registered-Clauses] ``` A line can be folded over several physical lines, so unfold it before reading. The clauses, in order: | Clause | What it records | Who supplies the value | |---|---|---| | `from` | The host that handed the message over. RFC 5321: it "SHOULD contain both (1) the name of the source host as presented in the EHLO command and (2) an address literal containing the IP address of the source, determined from the TCP connection." The parenthesized part (`TCP-info`) is "Information derived by server from TCP connection not client EHLO." | The **name before the parentheses** is what the client said in `EHLO`. **The address inside the parentheses** is what the receiving server observed on the connection. | | `by` | The host that received the message and wrote this line. | The receiving server. | | `via` | The link type (`TCP`). RFC 5321: "'Via' is primarily of value with non-Internet transports." | The receiving server. | | `with` | The protocol: `SMTP` or `ESMTP` in RFC 5321, plus names registered with IANA. RFC 3848 registered `ESMTPS` (STARTTLS negotiated), `ESMTPA` (SMTP AUTH succeeded), `ESMTPSA` (both), and `LMTP` with its `A`/`S`/`SA` variants. | The receiving server, describing **this hop only**. | | `id` | An identifier chosen by the receiving server, an atom or a `msg-id`. RFC 5321: it "MAY contain an '@'… but this is not required." RFC 5321 doesn't define what it identifies. | The receiving server. If you operate that host, look the value up in its logs. | | `for` | The recipient. RFC 5321: "If the FOR clause appears, it MUST contain exactly one `` entry, even when multiple RCPT commands have been given." | The receiving server. It is optional. | | `; date-time` | When this host received the message, in RFC 5322 `date-time` format. RFC 5321 forbids the obsolete forms, "especially two-digit years". | The receiving server's own clock. | Don't read the `with` keyword as proof of encryption or authentication. RFC 3848 §3 says these keywords "can be modified by an active attacker" and "do not provide any real-world security assurance." The grammar allows comments (`CFWS`) between clauses, so implementations add parenthesized free text. The content of those comments isn't standardized, so don't parse it as if it were. ## Reading order: bottom to top Every server prepends its own line, so the lines read newest first: - The **bottom** `Received:` line is the earliest hop recorded: the first server that accepted the message and wrote a line. - The **top** `Received:` line is the most recent hop. - Compare the `by` host of each line with the `from` host of the line above it. They often won't be written the same way, because the `from` name is the client's `EHLO` claim, and a host's `EHLO` name can legitimately differ from the name it writes in `by`. A mismatch is a reason to look closer, not proof that a hop is missing or a line is false. The IP addresses in the `from` parentheses are the better thread to follow. To trace the route, start at the bottom and read up. ## Which hops you can trust Knowing where the lines came from tells you how far to trust them. 1. **A line is only as reliable as the host that wrote it.** Any SMTP client can open a connection and write anything into the message content before `DATA` ends, including text that looks like earlier `Received:` lines. RFC 5321 §7.1: "it is feasible for even fairly casual users to negotiate directly with receiving and relaying SMTP servers and create messages that will trick a naive recipient into believing that they came from somewhere else." 2. **Your servers preserve whatever they were given.** Existing lines "MUST NOT" be changed or deleted, so a receiving server keeps the fabricated lines along with the real ones. 3. **So you can trust only the lines your own receiving infrastructure added.** Here "your own" means the receiving side's ADMD, the administrative domain RFC 8601 §1.2 describes as being inside its "trust boundary". Find the lowest line whose `by` host is one of your own servers. That is the **first trusted hop**, the moment the message entered your infrastructure. 4. **In the first trusted hop, trust only what your server observed.** That means its timestamp, its `id`, its `with` protocol, and the **IP address in the `from` parentheses**, which came from the TCP connection. The `from` name before the parentheses came from the client's `EHLO` and is a claim. 5. **Everything below the first trusted hop can be forged.** Lines below it were already in the message when your server accepted it. They may be accurate: a legitimate sender's own relays write accurate lines, and they help you debug that sender's side. But the connecting IP in the first trusted hop is the only address in the chain your infrastructure verified. The same logic applies when you're the sender reading a copy that reached a mailbox you don't operate. Only the lines added by the **receiving** provider's infrastructure are the receiver's observations. The lines below them are your own systems' records, which you can check against your own logs. ## Per-hop delay Each timestamp marks when *that* host received the message. The difference between two adjacent timestamps is how long the message spent between one receipt and the next: queued on the lower host, or in transit from it. ### Normalize time zones first RFC 5321 §4.4 asks servers to use numeric offsets: "SMTP servers that create Received header fields SHOULD use explicit offsets in the dates (e.g., -0800), rather than time zone names of any type. Local time (with an offset) SHOULD be used rather than UT when feasible." RFC 5322 §3.3 defines the offset: "+hhmm means +(hh * 60 + mm) minutes, and -hhmm means -(hh * 60 + mm) minutes." A timestamp of `-0000` means "the time was generated on a system that may be in a local time zone other than Universal Time and that the date-time contains no information about the local time zone." To compute a delay, convert every timestamp to UTC by subtracting its offset (`09:00:02 -0400` is `13:00:02 UTC`), then subtract adjacent values. If you compare the wall-clock times without converting, a hop can appear to take hours, or even to happen before the hop below it. ### Clock skew Each timestamp comes from the clock of the host that wrote it, and nothing in RFC 5321 requires those clocks to agree. RFC 5321 does say "comparability of Received header fields is important for detecting problems, especially slow relays", which is why the offsets matter. The following is practical reasoning from how the timestamps are produced, not an RFC requirement: - A **negative** delay, where a later hop's timestamp is earlier than the hop below it, means the two clocks disagree. It can't mean the message went back in time. Report the hop as "clock disagreement" rather than as a delay. - A **small** delay between hosts run by different operators can be within the clocks' margin of error. Give more weight to a small delay between two hosts on the same infrastructure. ### What a long delay can indicate A long gap between two hops means the message waited somewhere between those two receipts. Known causes consistent with such a gap: - **A temporary failure and a retry.** After a `4xx` reply the sending host keeps the message and tries again later. RFC 5321 §4.5.4.1: "In general, the retry interval SHOULD be at least 30 minutes; however, more sophisticated and variable strategies will be beneficial when the SMTP client can determine the reason for non-delivery." That's a recommendation, not a floor. A deferral retried in line with it leaves a gap of about 30 minutes or more, but a sender using another strategy can retry sooner. See [MTA delivery tuning](https://emailmarketing.net/learn/operations/mta-delivery-tuning). - **Greylisting.** RFC 6647 describes it as "degradation of service for an unknown or suspect source, over a period of time (typically measured in minutes or a small number of hours)", and notes that "Some popular MTAs do not retry failed delivery attempts for an hour or more." See [greylisting](https://emailmarketing.net/learn/rfc/rfc6647-greylisting). - **The lower host holding the message** in its queue before its first attempt. The header does not record why. See [MTA delivery tuning](https://emailmarketing.net/learn/operations/mta-delivery-tuning) for how sending queues schedule work. ### What a long delay does not prove - **It doesn't tell you the cause.** RFC 6647 §3 puts it plainly: "A client does not know, nor is it entitled to know, the reason for the temporary failure status code being returned; greylisting could be in effect, or it could be caused by a local resource issue at the server." The header shows *where* time passed. The *why* is in the reply codes and text logged by the host that held the message: check its logs using the `id` from the line it wrote. See [delivery troubleshooting playbooks](https://emailmarketing.net/learn/operations/delivery-troubleshooting-playbooks). - **It doesn't prove anything below the first trusted hop.** A delay between two lines you can't trust may be invented. - **It says nothing about what happened after the top line.** Time between the last `Received:` stamp and the moment a person saw the message isn't recorded here. - **It says nothing about folder placement or filtering.** `Received:` lines record acceptance and timing only. ## How Received relates to Authentication-Results The receiver that checked SPF, DKIM, and DMARC records its verdict in an `Authentication-Results:` field (RFC 8601). Both kinds of field face the same forgery problem, and they share the same solution: rely only on fields added inside your own trust boundary. RFC 8601 §5 allows one exception: a border MTA "MAY elect not to delete" results from an upstream host it explicitly trusts, "even though they exist in completely disjoint administrative boundaries." - **Authentication-Results behaves like a trace field.** RFC 8601 §4.1: it "MUST be treated as though it were a trace header field as defined in Section 3.6.7 of [MAIL] and hence MUST NOT be reordered and MUST be prepended to the message, so that there is generally some indication upon delivery of where in the chain of handling MTAs the message authentication was done." - **Forged copies are stripped at the border.** RFC 8601 §5: an MTA "MUST delete any discovered instance of this header field that claims, by virtue of its authentication service identifier, to have been added within its trust boundary but that did not come directly from another trusted MTA." Section 1.6 explains the reason: "valid use of the header field requires removing any occurrences of it that claim to be associated with the ADMD when the message enters the ADMD." - **Position can serve as a validity test.** RFC 8601 §7.1 lists this among several proposed approaches, none of which it standardizes. The test assumes "internal MTAs are fully compliant" and use their own hostnames or the ADMD's domain as the `authserv-id`. Under that assumption, "this header field should always appear above a Received header added by a trusted MTA. This can be used as a test for header field validity." - **Trust is an explicit list, not a default.** RFC 8601 §7.1: "It is acceptable to have an MUA aware of this specification but have an explicit list of hostnames whose Authentication-Results header fields are trustworthy; however, this list should initially be empty." The **trust anchor** is therefore the receiver that added both your first trusted `Received:` line and an `Authentication-Results:` field whose `authserv-id` it owns. Read that pair together: - The `Received:` line gives the connecting IP it observed. - The `Authentication-Results:` line gives the verdicts it computed for that connection. An `Authentication-Results:` field below the first trusted hop, or carrying someone else's `authserv-id`, is another party's claim. For how authentication results can survive a forwarder, see [ARC](https://emailmarketing.net/learn/authentication/arc). Even a trusted `pass` is limited in what it tells you. RFC 8601 §7.2: "the existence of this header field indicating a "pass" does not render the message trustworthy." ## Worked example The message below was sent by a customer of `example.net`'s sending platform to a recipient at `example.com`. Names, IDs and addresses are fictitious; the IPs are from the documentation ranges. The header section is shown top to bottom as it appears in the delivered message, and non-trace fields are omitted: ``` Return-Path: Received: from mx1.example.com (mx1.example.com [192.0.2.25]) by store.example.com with LMTP id 9KcQ2 for ; Thu, 10 Sep 2026 13:31:11 +0000 Authentication-Results: mx1.example.com; spf=pass smtp.mailfrom=bounce.example.net; dkim=pass header.d=example.net; dmarc=pass header.from=example.net Received: from out1.example.net (out1.example.net [198.51.100.20]) by mx1.example.com with ESMTPS id 4Q8kx2 for ; Thu, 10 Sep 2026 15:31:10 +0200 Received: from submit.example.net (submit.example.net [198.51.100.5]) by out1.example.net with ESMTP id A71F3; Thu, 10 Sep 2026 13:00:03 +0000 Received: from workstation.example.net (workstation.example.net [203.0.113.10]) by submit.example.net with ESMTPSA id 0e2c9; Thu, 10 Sep 2026 09:00:02 -0400 ``` **Step 1: read bottom to top and check continuity.** The route is `workstation` → `submit.example.net` → `out1.example.net` → `mx1.example.com` → `store.example.com`. Each line's `by` host is the next line's `from` host, so the chain is continuous. **Step 2: find the first trusted hop.** The receiving infrastructure is `example.com`. The lowest line written `by` an `example.com` host is the `mx1.example.com` line. That is the first trusted hop, and the connecting IP it observed was `198.51.100.20`. The two lines below it were written by `example.net` hosts. They are the sending platform's own records: useful to its operators and checkable against their logs, but unverified claims from the receiver's point of view. **Step 3: tie in Authentication-Results.** The `Authentication-Results:` field carries `authserv-id` `mx1.example.com` and sits directly above the `Received:` line `mx1` wrote. That matches the position test in RFC 8601 §7.1. Its SPF, DKIM, and DMARC verdicts are `mx1`'s judgement of the message that arrived from `198.51.100.20`. **Step 4: normalize timestamps and compute delays.** | Hop (written by) | Timestamp as written | UTC | Delay from the previous hop | |---|---|---|---| | `submit.example.net` | 09:00:02 -0400 | 13:00:02 | — (first hop) | | `out1.example.net` | 13:00:03 +0000 | 13:00:03 | 1 s | | `mx1.example.com` (first trusted) | 15:31:10 +0200 | 13:31:10 | **31 min 7 s** | | `store.example.com` | 13:31:11 +0000 | 13:31:11 | 1 s | Read as local times, the `mx1` hop looks 2.5 hours later than `out1`. The actual gap is 31 minutes, and the message spent them between `out1.example.net` receiving it and `mx1.example.com` accepting it. **Step 5: interpret carefully.** A 31-minute gap fits a single temporary failure followed by a retry in line with RFC 5321's recommended interval of at least 30 minutes. It also fits greylisting, or queueing on `out1`. The header alone can't tell these apart. The sending platform's delivery log for queue ID `A71F3` on `out1` records whether an attempt was deferred and what the reply text said. And since `out1`'s timestamp comes from the sending side, clock disagreement between the two operators is part of the margin. ## Checklist - Unfold every `Received:` line, then read from the bottom up. - Compare each `by` host with the `from` host of the line above it. A mismatch is a reason to look closer, not proof of a missing or false hop. - Find the lowest line written `by` your receiving infrastructure. Trust that line and the lines above it; treat everything below it as a claim. - In the first trusted hop, rely on the IP in the `from` parentheses, not the `EHLO` name. - Convert every timestamp to UTC before subtracting. Treat negative delays as clock disagreement. - Use a long delay to locate the host that held the message, then find the cause in that host's logs using the line's `id`. - Read the `Authentication-Results:` field whose `authserv-id` belongs to the receiver and that sits above that receiver's own `Received:` line. ## Related articles - [RFC 5321 — SMTP](https://emailmarketing.net/learn/rfc/rfc5321-smtp) · [RFC 5322 — Message Format](https://emailmarketing.net/learn/rfc/rfc5322-message-format) · [RFC 5598 — Email Architecture](https://emailmarketing.net/learn/rfc/rfc5598-email-architecture) - [The Authentication-Results header](https://emailmarketing.net/learn/authentication/authentication-results-header) · [ARC](https://emailmarketing.net/learn/authentication/arc) · [SPF](https://emailmarketing.net/learn/authentication/spf) · [DKIM](https://emailmarketing.net/learn/authentication/dkim) - [Greylisting (RFC 6647)](https://emailmarketing.net/learn/rfc/rfc6647-greylisting) · [MTA delivery tuning](https://emailmarketing.net/learn/operations/mta-delivery-tuning) · [SMTP TLS practice](https://emailmarketing.net/learn/transport-security/smtp-tls-practice) - [Delivery troubleshooting playbooks](https://emailmarketing.net/learn/operations/delivery-troubleshooting-playbooks) # Reputation Incident Recovery > The recovery runbook after a compromise or reputation collapse — securing the account, purging queues, rebuilding suppressions, re-warming vs cold warm-up, reading deferrals during recovery, automated warmup schedules as vendors implement them, and when to replace vs rehabilitate an IP or domain. Source: emailmarketing.net — https://emailmarketing.net/learn/operations/reputation-incident-recovery When a compromised account or API key has pumped spam through your infrastructure, or a list accident or another event has collapsed the reputation of your IP addresses or domains, recovery takes days or weeks of deliberate work. The runbook below covers the recovery sequence, how re-warming differs from a cold warm-up, and how to read push-back from receivers while you rebuild. For detection, diagnosis and blocklist delisting, see [Reputation Monitoring and Remediation](https://emailmarketing.net/learn/operations/reputation-monitoring). For building reputation from scratch, see [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up). ## Post-compromise restoration sequence The sequence below combines SendGrid's documented guidance on restoring reputation after a compromise with standard incident practice at email service providers (ESPs). Order matters, because every step assumes that the previous one is complete. Re-warming on top of an unsecured account or a dirty queue only burns again the reputation you are trying to rebuild. ### 1. Stop the bleeding - **Pause all sending for several days.** SendGrid's guidance is explicit: stop sending, to prevent further reputation damage, before you attempt anything else. Mail sent while receivers are actively penalizing you makes the damage deeper. - **Secure the account.** Rotate every credential and API key, revoke unknown API keys and teammate or subuser access, enable and enforce two-factor authentication (2FA), and check for domains, senders, webhooks or templates the attacker added. Close the route of the compromise before any recovery mail goes out. Otherwise the attacker resumes the moment you do. - **Purge the queues.** Drain or delete everything that is still queued or deferred from the period of the incident. Deferred spam that keeps retrying for hours or days after "recovery" goes on generating complaints, trap hits and blocks under your name. ### 2. Rebuild the data layer - **Rebuild suppression lists.** Attackers commonly delete or export suppression lists (bounces, complaints, unsubscribes), and the mail sent during the compromise generated new bounces and complaints that you must honor. Restore suppressions from backup, merge in every bounce and feedback loop (FBL) complaint from the period of the incident, and permanently suppress any address the attacker mailed that was not on your opt-in list. - **Cut the send list down to recently engaged recipients** ("remove unengaged recipients from your contact list", in SendGrid's words). Recovery sending uses only your best data, the recipients who recently opened or clicked, exactly as at the start of a [warm-up](https://emailmarketing.net/learn/ip-management/ip-warm-up), but with even less margin for error. ### 3. Re-verify infrastructure - **Confirm authentication end to end:** SPF, DKIM and an enforced [DMARC](https://emailmarketing.net/learn/authentication/dmarc) record on all sending domains. SendGrid lists setting up DMARC on all sending domains as a core restoration step. It blocks continued spoofing of your domain, and it signals to receivers that you are in control. - **Check again that you meet the providers' requirements for bulk senders** ([Gmail](https://emailmarketing.net/learn/providers/gmail-sender-requirements), [Yahoo](https://emailmarketing.net/learn/providers/yahoo-sender-requirements), [Microsoft](https://emailmarketing.net/learn/providers/microsoft-sender-requirements)). An incident is often the moment when enforcement that was previously dormant becomes active. - **Enroll in every monitoring channel before you resume:** [Google Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools), [Microsoft SNDS and JMRP](https://emailmarketing.net/learn/postmaster-tools/microsoft-snds-jmrp), and [Yahoo's complaint feedback loop](https://emailmarketing.net/learn/providers/yahoo-complaint-feedback-loop). They give you each provider's verdict, which decides whether you can take each step up in volume. ### 4. Delist and notify - Request blocklist delisting by following the [delisting workflow](https://emailmarketing.net/learn/operations/reputation-monitoring#blocklist-delisting-workflow), after you have fixed the root cause. A compromise is one of the few causes of listing where operators routinely delist quickly, once you can show that the account is secured. - If blocks persist at a specific provider after recovery, contact that provider's postmaster or support channel directly, with a description of the incident and of the remediation. SendGrid explicitly recommends asking the support teams of the major providers for help tailored to your case. ### 5. Gradual re-ramp - Resume with a **manual warm-up process**: small volumes to engaged recipients, increased gradually (see the schedules below). On platforms with automated warmup, you may need to re-arm the automation or put the IP back into warmup. An IP that kept its "graduated" warmup status inside the platform has still lost its reputation with receivers outside it. - **Set expectations** using SendGrid's stated timeline. Internal reputation measures (the platform's own engagement scores) recover relatively quickly. External reputation with recipient servers can take **up to a month** or longer of patient, consistent sending. Full inbox recovery after severe damage, as documented by the community, takes **8–12 weeks** (see [Recovering inbox placement](https://emailmarketing.net/learn/operations/reputation-monitoring#recovering-inbox-placement)). - Track the quality of engagement continuously during the ramp. SendGrid points to **engagement recency** and **unique open rate** as the scores to watch. On any platform, the equivalents are the trends in opens, clicks and complaint rate at each provider. ## Re-warming after an incident vs cold warm-up Re-warming uses the same mechanics as a [cold warm-up](https://emailmarketing.net/learn/ip-management/ip-warm-up), but the situation differs in ways that change the plan: | Dimension | Cold warm-up (new IP or domain) | Re-warm (after an incident) | |---|---|---| | Starting reputation | Slightly negative: unknown, and treated with suspicion | Actively negative: receivers have a concrete bad history tied to the asset | | Prerequisite | Nothing beyond setting up DNS and authentication | Root cause fixed, queues purged, suppressions rebuilt, delistings requested. Ramping before this triggers the penalties again | | Pacing | A standard schedule (for example, +50% per week, or a vendor's stage plan) | The same shape, but expect to hold or step back at individual providers. Receivers that blocked you throttle again, harder and for longer | | Audience | Recently engaged recipients | Even stricter: only recently engaged recipients, with high-risk flows (win-back, re-engagement, third-party) suspended for the whole recovery | | Signals that gate each increase | Deferral and failure rates, inbox placement | The same, plus a blocklist check before each increase. A new listing during a re-warm is treated more harshly than the first listing | | Timeline | Weeks to full volume | External trust: from up to a month (SendGrid) to 8–12 weeks for full inbox recovery | Two further rules documented by vendors bear on re-warming: - **Dormancy resets warm-up.** SendGrid says that if an IP has not sent mail in **over 30 days**, warm-up should be resumed before returning to volume. A recovery pause of several weeks therefore creates a re-warm requirement by itself, independently of the incident. - **Prevention is cheaper.** In SendGrid's own words, "establishing a positive reputation as a sender takes less effort than repairing an existing reputation." Budget recovery time accordingly. ## Deferral handling during recovery Deferrals (4xx temporary failures) are the main real-time feedback during a re-ramp. Receivers rarely explain a reputation penalty, but they always throttle. The concepts below come from SendGrid's documentation on deferrals, and the mechanics apply to any mail transfer agent (MTA). **What a deferral is:** the recipient server cannot accept the message at the moment. It is a temporary condition, not a rejection, and retries may succeed. All senders receive some deferrals. The signal is in their rate and their pattern, not in their existence. **Retry behavior (SendGrid's implementation, typical of ESPs):** deferred messages are retried with exponential backoff for **up to 72 hours**. A message that is still undelivered after that is finalized as blocked or expired. During automated warmup, a warming IP that reaches its hourly cap stops sending, and the account's other IP addresses carry the traffic. With no backup IP addresses, messages are retried roughly every **15 minutes for 72 hours** before they expire. **Types of deferral.** Work out who is doing the throttling: | Type | Example reasons | Meaning during recovery | |---|---|---| | External (initiated by the receiver) | "IPs were throttled by recipient server" | The provider is limiting you because of your reputation. This is the core recovery signal | | External (based on limits) | "IPs reached ISP-suggested hourly limits" | You exceeded the warmup or ramp threshold for that provider. This is a pacing problem, not necessarily a reputation problem | | Internal (initiated by the platform) | "reached ISP-suggested max connection limits", "max port limit", "max connection limit" | Your own platform is deliberately slowing delivery to protect reputation. Do not fight it | **Operational rules during a re-ramp:** - **When the deferral rate rises at one provider, hold or reduce volume at that provider.** Deferrals are throttling, the step before blocking (see [warning signs](https://emailmarketing.net/learn/operations/reputation-monitoring#warning-signs-and-thresholds)). Do not advance the ramp while a provider is deferring at elevated rates. - **Do not force your way through deferrals.** Opening more connections, or injecting deferred mail again as new messages, turns throttling into blocks. - **For deferrals caused by limits**, reduce the delivery rate, or spread delivery across more warmed IP addresses. For deferrals where the receiver is throttling you, let the retry system pace delivery. SendGrid's documented remediation table says "no action required; delivery auto-slowed." - **Measure the impact through end-to-end delivery time**, the gap between your platform accepting the message and its final delivery. Deferrals with short end-to-end times mean the throttle is absorbing your ramp without harming campaigns. Growing end-to-end times mean you are ramping faster than the receiver will accept. - **Pause entirely** when deferrals at a provider turn into hard blocks, or into 72-hour expirations, at meaningful rates. That provider is telling you the reputation is not ready. Drop volume there to near zero, and rebuild with only your most engaged recipients. ## Automated warmup schedules as implemented Vendor automation is useful reference data when you build your own ramp logic. The mechanics are described conceptually, and each number is attributed to its vendor. ### SendGrid automated warmup (41-day hourly-cap schedule) SendGrid throttles a warming dedicated IP with an hourly sending cap that grows by about 40% per day over 42 days (day 0–41). When the cap is reached, the warming IP stops for the rest of the hour, and the account's other IP addresses carry the overflow, including other warming IP addresses that still have room. With no backup IP addresses, mail is retried about every 15 min for up to 72 h. After day 41 the IP leaves warmup. The schedule, as published by the vendor: | Day | Hourly cap | Day | Hourly cap | Day | Hourly cap | |-----|-----------|-----|-----------|-----|-----------| | 0 | 20 | 14 | 2,222 | 28 | 246,953 | | 1 | 28 | 15 | 3,111 | 29 | 345,735 | | 2 | 39 | 16 | 4,356 | 30 | 484,029 | | 3 | 55 | 17 | 6,098 | 31 | 677,640 | | 4 | 77 | 18 | 8,583 | 32 | 948,696 | | 5 | 108 | 19 | 11,953 | 33 | 1,328,175 | | 6 | 151 | 20 | 16,734 | 34 | 1,859,444 | | 7 | 211 | 21 | 23,427 | 35 | 2,603,222 | | 8 | 295 | 22 | 32,798 | 36 | 3,644,511 | | 9 | 413 | 23 | 45,917 | 37 | 5,102,316 | | 10 | 579 | 24 | 64,284 | 38 | 7,143,242 | | 11 | 810 | 25 | 89,998 | 39 | 10,000,539 | | 12 | 1,000 | 26 | 125,997 | 40 | 14,000,754 | | 13 | 1,587 | 27 | 176,395 | 41 | 19,601,056 | SendGrid adds two caveats. Transactional streams should not be forced onto a strict schedule, because you cannot control how often they are triggered. And no schedule replaces good sending practices: a gradual ramp alone does not guarantee reputation. ### Mailgun warmup (volume-stage model and API) Mailgun's automatic warmup uses **stages based on volume** rather than calendar days. Each stage has a daily cap, and the IP moves to the next stage once it has sent that stage's volume. Stage progression and the 24-hour window are independent: sending the full volume of a stage moves you on however many hours have passed, and the 24-hour window starts with the first message. The stage caps Mailgun publishes are **1,000 per day for Stage 1 and 2,500 per day for Stage 2**. Later caps are not published, and according to the schedule model in the API, a plan can run to 15 stages. Reaching a daily cap early stops all sending from that IP until the 24-hour window resets. **Overflow traffic is rerouted, not dropped**: volume beyond the warming IP's cap moves to the account's shared IP addresses or to other dedicated IP addresses, so the mail is still sent, just not from the warming IP. A full warmup typically takes **4–8 weeks**. You can drive the warmup through the API (Mailgun API reference, specific to this vendor): | Operation | Endpoint | Purpose | |---|---|---| | GET | `/v3/ip-warmups` | List the status of IP warmups in progress | | GET | `/v3/ip-warmups/{addr}` | Status of one warmup in progress (current stage, stage and hourly limits, total number of stages) | | POST | `/v3/ip-warmups/{addr}` | Create a warmup plan for an IP | | DELETE | `/v3/ip-warmups/{addr}` | Cancel the warmup plan | Mailgun's guidance for manual warmup (an archived help-center article, 2023 snapshot) makes three recommendations: - Use dedicated IP addresses from **100,000 emails per month**. This is Mailgun's own rule. To compare it with other vendors' minimums and with the general statistical floor for each IP, see the canonical [table of volume floors for dedicated IP addresses](https://emailmarketing.net/learn/operations/sending-infrastructure-practices#dedicated-ip-volume-floors-canonical). - Start at **100 emails on day one** and increase by about **20% per day**, sending every day. Sending three times a week or less works, but builds trust more slowly. - Do not use domains **less than 30 days old** at all. Receivers associate newly purchased domains with spammers who cycle through burned domains. **Design implications for your own ramp automation.** The two implementations agree on four points. Cap the warming asset instead of queueing and forcing mail, and send the overflow down a path that is already warm. Grow caps geometrically (about 20–50% per day). Make progression depend on volume actually sent, not only on elapsed time. And treat push-back from receivers (deferrals) as a stop condition that the automation must respect. ## Replace or rehabilitate? Decision points After a severe incident, the tempting shortcut is a fresh IP address or domain. The default answer is to **rehabilitate**, because replacement rarely escapes the problem: - **New assets start negative, not neutral.** Receivers presume that a new IP belongs to a blocked spammer who has moved (see [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up)), and they treat domains younger than about 30 days as a sign of spammers cycling domains (Mailgun). Swapping assets is exactly the pattern filters are built to catch. - **Reputation follows the mail, not only the asset.** Domain reputation, content fingerprints and list quality move with you to the new IP. If the root cause is not fixed, the new asset burns out faster than the old one recovered. - **Listings caused by a compromise clear quickly.** Blocklist operators and providers routinely reverse listings caused by a compromise that is documented and remediated, so rehabilitation is a real option in this scenario (see the [delisting workflow](https://emailmarketing.net/learn/operations/reputation-monitoring#blocklist-delisting-workflow)). Replacement, with a full warm-up from zero, is the right choice only when rehabilitation is not possible or costs more than starting over: | Factor | Favors rehabilitation | Favors replacement | |---|---|---| | Listing status | Can be delisted; the operator responds to evidence of remediation | Permanent or repeated listing after badly handled requests; the asset is on lists with no practical way to be removed | | History depth | A short incident on an otherwise good asset | A long history of abuse that predates you (for example, an IP or domain you inherited that was abused before) | | Provider response after remediation | Deferrals easing, and reputation dashboards recovering within weeks | Sustained hard blocks at major providers despite a clean re-warm over several weeks | | Asset role | The primary brand domain (organic, inherent reputation, Brand Indicators for Message Identification (BIMI), customer recognition: effectively irreplaceable) | A dedicated sending IP or a sending subdomain, cheap to rotate and warm up again | | Time economics | Recovery expected to take roughly no longer than a warm-up (a re-warm on a rehabilitated asset can be faster than the 4–8+ weeks a cold warm-up takes) | Recovery has stalled beyond the timeline of a cold warm-up | For domains, there is a practical middle path. Never replace the organizational domain. Rehabilitate it, and move mail streams to a fresh, properly delegated subdomain warmed up from zero. This isolates the damage without the penalty for a new domain. For the mechanics of isolating streams, see [M3AAWG Sending Domains BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-sending-domains) and [Advanced IP Segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation). Whatever you replace, retire the burned asset cleanly, keeping it authenticated and its protective DNS records in place (see [Brand Protection: Domain Management](https://emailmarketing.net/learn/reference/brand-protection-domain-management)). ## Related articles - [Reputation Monitoring and Remediation](https://emailmarketing.net/learn/operations/reputation-monitoring), including the recovery playbook based on engaged segments - [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up) - [Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices), on subdomain strategy and domain warm-up - [Blocklists and Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus) - [Mandated and Regulatory Email](https://emailmarketing.net/learn/operations/mandated-and-regulatory-email), for sends that cannot wait for a recovery window # Reputation Monitoring and Remediation > How senders monitor IP and domain reputation in practice — blocklist monitoring, seed/inbox-placement testing, provider dashboards, feedback loops, warning signs, and the delisting/recovery workflow. Source: emailmarketing.net — https://emailmarketing.net/learn/operations/reputation-monitoring Your sender reputation can slip at any time, and when it does, the consequences escalate from placement in the spam folder to blocklisting to outright rejection. Below is how to watch reputation continuously, and what to do when it drops. Sender reputation works like a credit score. With no sending history, you have neither a bad reputation nor a good one: a history of performance must exist before mailbox providers extend "credit", in the form of tolerance for your volume and placement in the inbox. Reputation is not fixed. For what reputation is built from, see [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability). For building it on new IP addresses, see [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up). ## Delivery vs. deliverability: why you need to monitor - **Delivery**: the receiving server accepted the message (visible in your logs as a 250 OK). - **Deliverability**: where the message landed after it was accepted. That may be the inbox, a tab such as Promotions or Updates, the spam folder, or nowhere, because it was silently dropped ("missing"). Confirming delivery from SMTP responses is straightforward. Knowing placement is much harder, because each mailbox provider applies its own private routing and filtering algorithms after it accepts a message. A message that reaches the inbox at Yahoo may go to the spam folder at Gmail or Microsoft. Without placement data, deliverability problems are hard to detect and diagnose: engagement metrics quietly decline while the delivery rate stays high. How much mail actually goes missing: Litmus's 2026 benchmark found that **87.25%** of legitimate marketing email reached the inbox (so about **1 in 7 never does**), with wide differences between providers: | Provider | Market share | Inbox rate | Spam rate | Missing | |---|---|---|---|---| | Gmail | 42.9% | 89.8% | 6.4% | 3.8% | | Yahoo | 15.7% | 87.3% | 6.4% | 6.3% | | Microsoft | 14.4% | 77.4% | 15.1% | 7.5% | | Apple | 3.6% | 82.0% | 10.8% | 7.2% | For a wider set of dated benchmarks, attributed to their vendors, to judge your own numbers against, see [Deliverability Benchmarks](https://emailmarketing.net/learn/reference/deliverability-benchmarks). It covers Validity's seed-measured placement by provider, country, region and industry, and engagement rates for each industry. ## The monitoring stack A working program for monitoring reputation combines five independent sources of data. No single one is enough. ### 1. Your own engagement and delivery metrics The earliest warning signs are in data you already have. Track these metrics for each mailbox provider, not only in aggregate: - Open rate, click rate and conversion rate. A significant drop at one provider while the others hold steady is the classic sign of placement in that provider's spam folder. - Bounce rate, broken down by category (invalid address, policy block, reputation block, temporary). - Unsubscribe rate and spam complaint rate. - Messages deleted without being read, replies and forwards, where available. Look at **trends from week to week**, not at daily noise. Mailbox providers base their decisions on patterns over time, and daily metrics are too volatile to act on. Spam filters increasingly use machine learning that adjusts in real time, so the goal is to spot a trend before it becomes a problem. ### 2. Blocklist (DNSBL and RBL) monitoring A blocklist, either a DNSBL (DNS-based Block List) or an RBL (Realtime Block List), is a list you can query of IP addresses (and sometimes domains, URLs or usernames) suspected of sending spam. Two facts shape how you should use them: - **Blocklists do not block anything themselves.** Mailbox providers use blocklist data **together with their own internal metrics** to decide what to block. A listing is an input, not a verdict. - **Not all lists carry the same weight.** There are hundreds of DNSBLs, and most have negligible impact. Different providers give weight to different lists, and Gmail largely ignores third-party blocklists in favor of its own systems. These are the lists worth monitoring, roughly in order of impact: | Blocklist | Notes | |---|---| | Spamhaus | The most impactful; used by the majority of ISPs and email service providers | | SpamCop | Based on reports from SpamCop users; moderate impact | | Barracuda Reputation Block List | Widely consulted | | Invaluement | Subscription-based IP and domain anti-spam list | | SORBS | Lower impact; still monitored by some receivers | In practice, reputation blocks show up as **failed or bounced events in your delivery logs**. Read the full SMTP rejection text, which typically names the blocklist. Automated, regular DNSBL lookups on all your sending IP addresses and domains catch listings before recipients' servers do. ### 3. Mailbox-provider dashboards (postmaster tools) The major providers show you directly how the receiving side sees your reputation: - **Google Postmaster Tools**: ratings of domain and IP reputation, spam complaint rate, pass rates for SPF, DKIM and DMARC, and delivery errors for mail to Gmail. - **Microsoft SNDS (Smart Network Data Services)**: data for each IP address on mail to Microsoft's consumer domains, including volume, the filter verdict (green, yellow or red), complaint rate and spam-trap hits. These tools are free. Set them up before problems occur, because they provide history you cannot reconstruct later. ### 4. Seed / inbox-placement testing Seed testing sends a campaign to a panel of test mailboxes at different providers, and reports where each copy landed: the inbox, spam, a specific Gmail tab (Primary, Promotions, Updates, Social or Forums), or missing. Commercial tools (for example, Litmus Spam Testing, Mailgun Inbox Placement, and Validity's Everest) report: - **Inbox Placement Rate (IPR)**: the percentage of successfully delivered emails that reach the inbox rather than spam, broken down by provider. - Scans before sending against major commercial spam filters, plus blocklist and authentication checks (validation of SPF, DKIM and DMARC). - A prediction of the Gmail tab for a given message. Seed tests have limits. Seed panels cannot measure the engagement of real recipients, and seed mailboxes have no engagement history with you, so results lean conservative. Use them to isolate problems with content, templates or infrastructure. Test one variable at a time, since content testing is most useful when it is limited to specific messages. Combine the results with your live engagement data for the full picture. ### 5. Feedback loops (FBLs) Most major mailbox providers offer feedback loops that report which recipients marked your mail as spam. Signing up matters for your overall deliverability. FBL data lets you suppress people who complain immediately (see [suppression handling](#suppression-lists-as-a-reputation-defense)), and it measures negative feedback for each provider. Check whether your sending platform enrolls you automatically or whether you must register yourself. **If you ignore FBL feedback, your reputation drops sharply and your sending is throttled or blocked entirely.** ## Warning signs and thresholds The table below gives the operating thresholds that Klaviyo publishes, which apply whatever platform you use. These are **Klaviyo's house numbers**, deliberately stricter than the consensus across sources. For the range of values with attribution, and the enforcement lines that other providers publish, see the [canonical threshold table](https://emailmarketing.net/learn/operations/metrics-and-benchmarks#canonical-threshold-table): | Metric | Klaviyo target | Signal when breached | |---|---|---| | Open rate | ≥ 33% (raw, including machine opens) | Unengaged list, or placement in the spam folder | | Click rate | ≥ 1% | Weak content or call to action, or a placement problem if opens also fell | | Bounce rate | < 1.0% | List not cleaned; providers read this as poor practice | | Unsubscribe rate | < 0.3% | Expectations not met, or frequency too high | | Spam complaint rate | < 0.01% | The single most damaging signal | On complaints specifically, Klaviyo's **< 0.01%** is a conservative house number. The broader industry consensus target is **< 0.1%** (AWS SES, Postmark, SendGrid), and the **0.3%** ceiling set by Gmail and Yahoo is a hard limit you must never reach. The [canonical threshold table](https://emailmarketing.net/learn/operations/metrics-and-benchmarks#canonical-threshold-table) reconciles all of these. Klaviyo's open-rate target is a **raw** number, which includes machine opens and is inflated by Apple Mail Privacy Protection (MPP). Do not compare it with a rate that filters out bots. Other red flags come before a loss of reputation: - **Volume spikes.** Tripling your usual sending volume can trigger providers' detection of compromised accounts, and sudden increases invite filtering whatever the quality of the content. Keep sending consistent, and ramp up gradually for planned large increases (see [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up)). - **Rising rates of soft bounces or deferrals at one provider.** This is often throttling, the step before blocking. - **Spam-trap hits** (visible in SNDS). They are evidence of poor list acquisition or hygiene, and ISPs flag senders whose traffic hits a higher than normal percentage of traps. - **A decline in the baseline quality of your list.** Marketing databases degrade by about **22% per year** (addresses change, people change jobs, mailboxes are abandoned), so a list that is not actively maintained is always drifting toward trouble. ## Suppression lists as a reputation defense Automatic suppression turns negative signals into protection. These are the standard mechanics, as major sending platforms implement them; replicate them on any infrastructure: - **Hard bounces** (permanent, such as an invalid address): suppress immediately and permanently. - **Soft bounces** (temporary, such as a full mailbox or a server that is down): suppress after repeated consecutive failures (for example, 7 consecutive soft bounces). - **Spam complaints** (from FBLs): suppress immediately, and never mail that person again. A rejection such as "not delivering to a user who marked your messages as spam" is the suppression system working as intended, so do not bypass it. - **Unsubscribes**: suppress from marketing mail immediately. Transactional mail (confirmations of orders, shipping or account changes) is not tied to subscription status and may still be sent to suppressed recipients. Welcome series, abandoned-cart messages and back-in-stock messages, however, are marketing, not transactional. These mechanics fit the removal rule in the Messaging, Malware and Mobile Anti-Abuse Working Group (M3AAWG) *Sender Best Common Practices* (Version 4.0, August 2026, section 2.2). M3AAWG considers it a best practice to remove an address that bounces at least twice in a row, across a span of two weeks or more, whatever the failure code or text, and leaves the exact count and time span to each sender. The soft-bounce example above is Klaviyo's platform setting. It is a higher count than M3AAWG's minimum of two, so it follows the rule while waiting longer before removing an address. Count one bounce per campaign rather than one per retry, since M3AAWG's rule is about consecutive campaigns. Two cautions keep the rule from removing good subscribers: - **"Hard bounce" above means a failure about the address**, such as an unknown user. M3AAWG also asks senders to read the bounce text, because the code alone does not say whether to remove the address, and the text can reveal a blocklisting of the sender. A permanent refusal for policy or reputation reasons (a `5.7.x` code) is usually about your sending, not about the recipient. Investigate it instead of suppressing the address. - **Do not count bounces from a period when you were blocked** toward any address's removal count. They say nothing about the addresses. [SMTP Enhanced Status Codes](https://emailmarketing.net/learn/bounce-handling/smtp-enhanced-status-codes#status-codes-and-the-m3aawg-removal-rule) sets out how to apply the M3AAWG rule to each class of code. ## Remediation when reputation drops ### Systematic diagnosis (in order) 1. **Verify infrastructure and authentication.** SPF, DKIM and DMARC should pass and be aligned (see [DMARC](https://emailmarketing.net/learn/authentication/dmarc)). A mismatch between the From domain and the actual sending domain (even `mail.example.com` against `example.com`) is enough for some receivers to send mail to spam or reject it. 2. **Check blocklists** for every sending IP address and domain, and read the rejection texts in your logs. 3. **Check provider dashboards.** Did domain or IP reputation degrade, and when? Match the date against changes to campaigns or lists. 4. **Review changes to segmentation and lists.** A new acquisition source, an imported list, or a campaign to contacts who have lapsed is the most common trigger. 5. **Evaluate content and timing.** Run the failing message through a seed or spam test to separate content problems from reputation problems. 6. **Track complaint trends from week to week** to confirm whether your changes are working. ### Blocklist delisting workflow 1. **Identify the list and the listed asset** (an IP address or a domain) from rejection messages or DNSBL lookups. 2. **Find and fix the root cause first.** Requesting delisting is delicate. If you ask for removal without changing the behavior that caused the listing, your future requests lose credibility, and repeated requests handled badly can lead to a **permanent** listing. Typical causes are a bad acquisition source, spam-trap hits, a compromised account or form, and a spike in complaints. 3. **Follow that list's own removal process.** Each DNSBL handles removal differently, with different timelines. Some let listings expire automatically; others require a request with evidence of remediation. 4. **If you send through a shared provider**, its abuse or compliance team has often already started delisting. Coordinate with it rather than filing duplicate requests. Established relationships with blocklist operators speed up resolution considerably. 5. **After delisting, keep monitoring.** A listing that comes back soon after a delisting is treated more harshly. ### Recovering inbox placement Recovery is slow, and providers do not explain it. They require a **sustained pattern of better signals** before they change placement, and when the damage runs deep, whole subdomains and IP addresses can become effectively unusable. The proven approach is to shrink your sending to your most engaged recipients and rebuild: - Stop sending to anyone outside recently engaged segments. This is a new warm-up, following the same logic as a [warm-up](https://emailmarketing.net/learn/ip-management/ip-warm-up). - Suspend high-risk flows during recovery: sends for third parties or affiliates, and win-back, sunset and re-engagement flows. - Fix the root cause you diagnosed (the list source, the content or the authentication). - Expect **8–12 weeks** to fully return to the inbox. This is the recovery timeline Litmus documented for itself after it focused on engaged subscribers. - As a stopgap for critical mail, ask recipients to add your **sending domain** to their safe senders. Asking them to safelist an IP address makes sense only for dedicated IP addresses, because assignments of shared IP addresses are effectively dynamic. ## Related articles - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability), on the signals reputation is computed from - [Two Worlds of Email Deliverability](https://emailmarketing.net/learn/strategy/two-worlds-of-email-deliverability), on why recovery based on engagement works and gaming the system does not - [Content and Design for Deliverability](https://emailmarketing.net/learn/operations/content-and-design-for-deliverability), on the content factors that seed tests reveal - [Advanced IP Segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation), on containing damage to reputation by isolating mail streams # Reverse DNS in IPv6 (RFC 8501) and Email > Why per-address PTR provisioning breaks at IPv6 scale, the five approaches RFC 8501 enumerates (with trade-offs), and what mail receivers expect from IPv6 reverse DNS. Source: emailmarketing.net — https://emailmarketing.net/learn/operations/ipv6-reverse-dns If you send mail over IPv6, each sending address needs reverse DNS that matches its forward DNS, yet the IPv4 habit of creating a PTR record for every address in advance becomes mathematically impossible. RFC 8501, *Reverse DNS in IPv6 for Internet Service Providers* (November 2018, Informational), analyzes how operators can populate `ip6.arpa` instead. Mail is its headline use case, because SMTP is where missing or mismatched reverse DNS actually blocks traffic. ## Why per-address PTR breaks at IPv6 scale - In IPv4, an Internet service provider (ISP) with a /24 writes 256 PTR records, often generated automatically, and moves on. Forward and reverse DNS match, which satisfies the expectation in RFC 1912 that "every Internet-reachable host should have a name" whose forward and reverse entries agree. - A single IPv6 **/64** (one LAN) contains 2^64 addresses, and a customer **/48** contains 2^80. RFC 8501 does the arithmetic: at 1,000 zone-file entries written per second, populating one /48 "would still not be complete after 38 trillion years." - Hosts also assign their own addresses, through stateless address autoconfiguration (SLAAC) and privacy addresses that rotate. The operator often does not know which addresses are in use, so even selective pre-population cannot keep up with reality. An IPv6 operator must therefore choose a strategy other than static PTR records for every address. For an email service provider (ESP), this is also a question of sending infrastructure. Every IPv6 address you send mail from needs correct, matching reverse DNS (see what receivers expect, below), and the rest of your address space needs a deliberate policy. ## The RFC 8501 option catalog | # | Approach | How | Trade-offs | |---|---|---|---| | 1 | **Negative response (NXDOMAIN)** | Answer authoritatively that no PTR exists | Honest when no name is known, but violates the matching expectation of RFC 1912. SSH and web services may stall while they wait for lookups. **Mail servers may reject the connection outright**, and the RFC notes that this rejection "can help fight spam" | | 2 | **Wildcard match** | A wildcard PTR for each customer prefix (/48, /56, /64) | It scales, but the forward lookup of the wildcard answer cannot return the same name, so forward-confirmed reverse DNS (FCrDNS) fails. Inadequate for mail sources | | 3 | **Dynamic DNS (DDNS)** | Hosts (or the customer gateway, or the ISP using DHCPv6 or RADIUS data) update the PTR and AAAA records as addresses are configured | Produces genuine matching records. But it is not the default on most hosts, there is no standard way to discover the update server, it needs authentication and rate limiting (it is exposed to denial of service), and recovery from an outage causes storms of updates | | 4 | **On-the-fly (synthetic) generation** | Generate the PTR with an algorithm at query time (and synthesize the matching AAAA for the generated name) | Guarantees that forward and reverse match, with no provisioning. The algorithm must be identical on all servers for the zone. It leaves less room for hostnames chosen by users. Signing synthetic answers live with DNSSEC has a performance cost | | 5 | **Delegation to the customer** | Delegate the reverse zone (for example, per /48) to authoritative servers that the customer runs | Correct for enterprises with DNS skills. Impractical for residential users. Conflicts with the security defaults for customer premises equipment (CPE) in RFC 6092 | RFC 8501's conclusion: "When address assignment and name are under the same authority, or when a host has a static address and name, AAAA and PTR records should exist and match." For everything else, such as residential pools, the realistic choices are wildcards, negative responses (where nothing needs a PTR), or on-the-fly generation. ## What mail receivers expect (FCrDNS) - The RFC states it plainly: "most email providers will not accept incoming connections on port 25 unless forward and reverse DNS entries match". This is **forward-confirmed reverse DNS (FCrDNS)**: the PTR for the connecting address returns a name, and the AAAA (or A) record of that name includes the connecting address. - Only options 3 (DDNS), 4 (on-the-fly) and 5 (delegation) can produce matching pairs. Wildcards and NXDOMAIN cannot. A mail source behind a wildcard or an empty reverse zone will be rejected or heavily penalized. - Gmail is the model of enforcement on IPv6. Sending hosts must have a PTR whose forward lookup confirms the IP, and must also pass authentication, or mail is rejected with IPv6-specific `550 5.7.1` errors (listed in [Gmail SMTP Troubleshooting](https://emailmarketing.net/learn/providers/gmail-troubleshooting), with the requirements in [Gmail Sender Requirements](https://emailmarketing.net/learn/providers/gmail-sender-requirements)). Receivers generally apply stricter rules on IPv6 than on IPv4, because reputation per IP is diluted across the huge address space. See [IPv6 Sending](https://emailmarketing.net/learn/operations/ipv6-sending) for sending policy as a whole. - PTR names that look generic or synthetic (for example, `2-2-2-2.pool6.example.net`) signal "not a deliberate mail server," so receivers also use the naming of PTR records as a spam heuristic. Guidance from the Messaging, Malware and Mobile Anti-Abuse Working Group (M3AAWG), cited by NIST SP 800-177 ([summary](https://emailmarketing.net/learn/transport-security/nist-sp-800-177)), says that reverse trees should identify the authoritative mail servers for a domain. ## Security and privacy considerations (RFC 8501 §5) - **Matching records do not mean trust.** An attacker who controls their own reverse zone can easily make forward and reverse DNS agree, and without DNSSEC the answers can be spoofed in transit. Treat FCrDNS as a minimum standard of hygiene, not as authentication. [SPF](https://emailmarketing.net/learn/authentication/spf), [DKIM](https://emailmarketing.net/learn/authentication/dkim) and [DMARC](https://emailmarketing.net/learn/authentication/dmarc) provide authentication. - **DNSSEC interactions:** records that are added dynamically or synthesized complicate signing (the cost of live signing, and key exposure on online signers). Unsigned reverse zones are increasingly read as a signal of reduced trust. - **Privacy:** hostnames that encode a location or a subscriber's identity leak information (RFC 8117). Hostnames supplied by users risk offensive or abusive content. - **Denial-of-service surface:** DDNS update channels need authentication and rate limits, and on-the-fly generators must limit their state and cache size. ## Operational checklist for an ESP running IPv6 mail infrastructure 1. **Every IPv6 address that sends SMTP gets a static, descriptive PTR that passes FCrDNS** (`mtaN.esp.example`, with a matching AAAA record), provisioned like a production asset. Use the "static records" option, never wildcards. 2. Decide the policy for the rest of your allocations, the part that sends no mail. NXDOMAIN is clean and honest. Never let a wildcard cover address space that could originate SMTP. 3. Before the first send, confirm that your upstream provider or local Internet registry (LIR) delegates `ip6.arpa` for your prefix to your name servers (typically on nibble boundaries: /32, /36, ... /48, /56, /64). 4. Sign the reverse zone with DNSSEC if you can. This is consistent with the authentication posture in [NIST SP 800-177](https://emailmarketing.net/learn/transport-security/nist-sp-800-177), and receivers that care about security expect it. 5. Keep PTR names consistent with the forward branding you use in HELO and EHLO. Receivers compare the HELO, PTR and certificate names when they score a connection (see [Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices)). 6. When you troubleshoot a sudden rejection such as `550 5.7.1` that cites an IPv6 address, check FCrDNS for that specific address first. The classic cause is an app server that started sending mail over IPv6 from rotating privacy addresses. Then check authentication alignment. The broader dual-stack strategy is covered in [IPv6 Sending](https://emailmarketing.net/learn/operations/ipv6-sending). # Sending Email over IPv6 > Why receivers impose stricter rules on IPv6 mail — M3AAWG's 2014 inbound-policy paper (/64 aggregation, reject-without-PTR, reject-without-authentication) and what that means for senders and ESPs today. Source: emailmarketing.net — https://emailmarketing.net/learn/operations/ipv6-sending If you plan to send mail over IPv6, expect receivers to apply stricter rules than on IPv4: a PTR record and passing authentication are effectively mandatory. The basis for those rules is a paper from the Messaging, Malware and Mobile Anti-Abuse Working Group (M3AAWG), *M3AAWG Policy Issues for Receiving Email in a World with IPv6 Hosts* (M3AAWG084, **September 2014**). **Note its age.** It is a position and requirements paper from 2014, written as "an initial list of requirements for future services", not an operational guide. Its core predictions have held: major receivers, notably Gmail, do require a valid PTR and passing authentication on IPv6 connections. Treat its specific references to institutions as historical, for example the IETF WEIRDS working group, whose work has since been completed as RDAP. ## The core problem: IP reputation does not scale to IPv6 - IPv4 anti-abuse relies on reputation for each address (/32): rate limiting, blocklisting and reputation assessment. It is less stable and reliable than one would like, but it works, and "most anti-spam systems will be unable to function if the effectiveness of these mechanisms are degraded." - The /128 addresses of IPv6 break this. Tracking every /128 is impractical at scale, and **a sender that can send each individual email from a unique /128 makes mechanisms based on single addresses ineffective**. - IPv6 therefore makes **domain-based reputation** essential (with or without an associated IP), together with better mechanisms for aggregating addresses. M3AAWG set three goals for IPv6 mail: aggregate the address space into assignments that can be tracked; require operators to identify the hosts meant to act as outbound mail transfer agents (MTAs); and require a valid **identifier based on domain authentication** for reputation assessment. ## Recommendation 1: track and act on aggregate assignments, not /128s - IP-based mechanisms (connection rate limiting, blocklisting) must treat a large enough IPv6 range as a single entity to remain effective. A range that is too large causes false positives, because it lumps together the MTAs of unrelated actors. - Ideally, Internet service providers (ISPs) would publish their aggregation sizes through a standard open service that anti-spam mechanisms could query. Without one, conventions on common aggregation boundaries are enough. - **Initial heuristic: use /64 as the minimum default assignment size.** Under RFC 4291, the first 64 bits identify the routing prefix and subnet and the second 64 bits identify the interface, and a single interface is unlikely to contain the MTAs of several actors with significant volume. Operators may act on larger or smaller ranges where appropriate, and anti-spam vendors are expected to collect data on assignment sizes as part of their services. **What this means for senders:** the whole /64 (or larger block) shares the same fate. Reputation damage from one host, or from one customer of an email service provider (ESP), can get the entire aggregate blocklisted. Segment IPv6 sending by allocating a separate /64 to each stream or class of customer, as in [IP allocation practice](https://emailmarketing.net/learn/ip-management/basic-ip-allocation). ## Recommendation 2: reject mail from hosts not identified as outbound MTAs - Botnets send abuse from compromised hosts whose owners never meant them to be MTAs, so accepting mail only from explicitly authorized sources greatly reduces the value of compromised hosts. Managing outbound port 25 (the MAAWG Port 25 recommendation) helps, but it is not implemented everywhere, and the Internet of Things (IoT) will greatly increase the number of vulnerable devices. - No standard existed for operators to declare which hosts are intended outbound MTAs. SPF identifies a domain's authorized outbound MTAs, but "also permits malicious domain owners to identify large ranges of IP space that they do not actually own." M3AAWG called for a standardized method, keyed on IP address, that could be queried automatically. Nothing has been broadly adopted since. - The interim mechanism is **reverse DNS**. Many operators already reject IPv4 connections without PTR records, or treat them as highly suspicious. Under IPv6 this is an even more effective high-pass filter, because operators will not publish PTR records for the vast majority of their IPv6 space (the benefit is small, and it is cumbersome at that scale), while PTR records can feasibly be maintained for the small set of dedicated relay hosts. - **"In the absence of a more appropriate mechanism … M3AAWG recommends rejecting email from host IPv6 addresses without reverse DNS records"**, until a better standard exists (none has replaced it). **What this means for senders:** every IPv6 sending address must have a PTR record and, as receivers generally expect, a matching forward confirmation. A missing PTR on IPv6 is grounds for outright rejection, not only for suspicion. ## Recommendation 3: reject mail without valid domain authentication - The need for stable, accurate reputation identifiers is even greater under IPv6 than under IPv4, and domain names are considerably more stable than IP addresses, even in IPv4. - DKIM and SPF provide the authenticated domain for accountability: the **`d=`** value of DKIM, and the envelope **MAIL FROM** domain of SPF (or the **EHLO or HELO** domain for bounces). Large providers had already deployed domain reputation alongside IP reputation. - **"M3AAWG therefore recommends moving toward rejecting email that does not contain a valid DKIM signature or that does not pass SPF checks"**, which enables consistent, reliable reputation based on the authenticated domain for delivery decisions. **What this means for senders:** on IPv6, unauthenticated mail is not only penalized; the industry position is that it should be rejected. This is exactly what Gmail and other major providers adopted for IPv6 connections (see [Gmail Sender Requirements](https://emailmarketing.net/learn/providers/gmail-sender-requirements): delivery over IPv6 requires a PTR record and a pass on SPF or DKIM). Never send over IPv6 from a stream whose SPF and DKIM are not fully in order. When you enable IPv6 on an MTA, verify authentication first, or expect hard bounces that the same stream would not get on IPv4. ## Accountable domains Accurate WHOIS information is "a critical component of a domain's reputation". Complete WHOIS records should be mandatory for domains that act as SMTP clients, with working abuse contacts. (The paper points to the WHOIS replacement from the IETF WEIRDS working group, which was delivered as RDAP.) ## Practical summary for an ESP (the 2014 paper and current practice) | 2014 recommendation | Current operational reality | |---|---| | Aggregate reputation at /64 minimum | Receivers and DNS-based blocklists (DNSBLs) list IPv6 at /64 granularity; plan allocations accordingly | | Reject IPv6 mail without PTR | Enforced by major receivers; a PTR record with forward confirmation is mandatory | | Reject IPv6 mail failing SPF and lacking valid DKIM | Enforced by Gmail on IPv6 since the mid-2010s; assume it applies everywhere | | Domain reputation over IP reputation | The general direction of all modern filtering | IPv6 leaves almost no tolerance for authentication mistakes, and dual-stack delivery makes failures intermittent (mail is sometimes routed over IPv6 and sometimes over IPv4). For these reasons, many ESPs still deliberately prefer IPv4 for outbound marketing mail, or enable IPv6 only on streams whose authentication is proven clean. ## Related articles - [Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices) - [SPF](https://emailmarketing.net/learn/authentication/spf) - [DKIM](https://emailmarketing.net/learn/authentication/dkim) # Sending Infrastructure Practices > Dedicated vs. shared IPs, subdomain strategy, domain warm-up, From-address hygiene, feedback-loop wiring, reputation monitoring tools, and a troubleshooting framework. Source: emailmarketing.net — https://emailmarketing.net/learn/operations/sending-infrastructure-practices Before you size a fleet of IP addresses, you have to decide whether you need a dedicated IP at all, how to build the reputation of your domains, and how to monitor both. ESP guides from Postmark, AWS SES and Twilio SendGrid agree on most of the answers, collected below. For sizing and segmenting IP fleets, see [Basic IP Allocation](https://emailmarketing.net/learn/ip-management/basic-ip-allocation). ## Dedicated vs. shared IPs [Basic IP Allocation](https://emailmarketing.net/learn/ip-management/basic-ip-allocation) explains how to size dedicated-IP fleets. The question that comes first is whether to use a dedicated IP at all. | Aspect | Dedicated IP | Shared IP | |---|---|---| | Impact of other senders | None: the reputation is entirely yours | Other senders in the pool can raise or damage your standing | | Volume requirement | High, sustained volume is mandatory | Any volume | | Warm-up | Required, over weeks to months | None; send immediately | | Cost | Premium | Lower | | Reputation management | Yours to manage | Managed by the provider | | Tolerance for errors | Low: every mistake lands on your reputation | Higher: the volume of the pool absorbs errors | ### Dedicated-IP volume floors "How much volume justifies a dedicated IP?" has no single answer, because the published numbers measure **different things**. The floors and vendor minimums below span roughly 5–10x, but they do not contradict each other: they answer different questions. The two floors below are the reference figures; other guidance on dedicated IP addresses refers to them. | Floor | Number | What it measures | |---|---|---| | Floor for isolating transactional mail | ~**1,000 messages/day** | The low-end volume at which isolating transactional mail on its own dedicated IP stays readable to receivers (GreenArrow, [Advanced IP Segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation)). Transactional mail is isolated because it is highly relevant, even below the general statistical floor. | | General statistical floor for each IP | **40,000 messages/week** (~5,700/day) | The minimum sustained volume that any IP needs for mailbox providers to gather statistically significant data on engagement and complaints (GreenArrow, [Basic IP Allocation](https://emailmarketing.net/learn/ip-management/basic-ip-allocation)). Below this, an IP does not send enough for its reputation to stabilize. | **Vendor thresholds for dedicated IP addresses (house rules).** ESPs publish their own minimums. These reflect each vendor's product tiers and support costs as much as receiver statistics. Depending on the vendor's model, they sit above or below the two floors, and they do not contradict each other: | Vendor | Threshold | Framing | |---|---|---| | AWS SES | "a few hundred per day" to allocate the first dedicated IP; below that, customers are steered to shared IPs | The lowest bar. SES automatically moves low-volume dedicated IPs back to the shared pool (see [Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture)) | | Twilio SendGrid | ~**50,000/month** (~1,650/day) recommended | Below this, a well-managed shared pool is advised | | Mailgun | ≥ **100,000/month** (~3,300/day) recommended | See [Reputation Incident Recovery](https://emailmarketing.net/learn/operations/reputation-incident-recovery) | | Postmark | ~**300,000/month** (~10,000/day) to properly maintain a dedicated IP | The highest bar | In short, a dedicated IP for transactional mail can be justified at ~1,000/day. Any IP that carries a general or bulk stream needs ~40,000/week before receivers can read its reputation statistically. The vendor minimums are commercial house rules on top of both. Postmark adds caveats. A dedicated IP is **not a silver bullet**: for senders below the volume bar it can hurt deliverability, and "a dedicated IP is a way for ESPs to lower their support overhead" as much as it is a delivery feature. Dedicated IPs also demand **consistent, predictable volume**, and sudden spikes are flagged as suspicious. Modern filtering gives **domain reputation** more and more weight compared with IP reputation. ## Domain reputation and subdomain strategy **Domain reputation** is the opinion that receivers (mailbox providers and anti-spam services) hold of your domain. Unlike IP reputation, it is **portable**. It follows the domain across sending systems and providers, so a domain with a history of spam carries that history to any new infrastructure. Poor domain reputation can drag down even transactional mail (Postmark). IP reputation and domain reputation are evaluated separately, but they interact: a poor IP reputation can harm a domain that sends through that IP, even when the domain's own record is good. ### Subdomain separation Both AWS SES and Postmark recommend separating mail streams by **subdomain**. This is the domain-level counterpart of separating IP addresses by reputation, as described in [Advanced IP Segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation): - Send marketing from a subdomain such as `marketing.example.com` and transactional mail from `orders.example.com`, rather than everything from `example.com` (AWS SES). - Subdomains develop **independent reputations** (for example, `notify.example.com` and `newsletter.example.com`), so a marketing incident, such as a spam-trap hit or a content filter trigger, does not take down transactional delivery. They affect each other only indirectly (Postmark). - Monitor **cousin domains** (for example, `company.com` and `company-mail.com`). Their reputations and any abuse of them can affect how mail from your brand is judged (SendGrid). ### The four domains in every message (Postmark) 1. **DKIM signing domain (`d=`)**: sign with your own domain, not a vendor default, so the reputation builds up for you. 2. **Return-Path domain**: use a custom Return-Path (CNAME) that matches or aligns with your From domain. It is required for SPF alignment under [DMARC](https://emailmarketing.net/learn/authentication/dmarc). 3. **Domain of the From and Reply addresses**: it should clearly identify the brand. Publish a DMARC policy on it. 4. **Domains in the URLs in the content**: third-party links harm delivery only when the linked domains are observed doing something deceptive or malicious. Still, link only to trusted sites you control (SendGrid). ## From-address hygiene (AWS SES) - Some ISPs attach reputation to the **From address** itself, and it is also the recipient's first impression. - Never send bulk mail from an address at a mailbox provider (for example, `sender@hotmail.com`). Large volumes from a consumer mailbox address are treated with suspicion. Send from a domain you own. - **Avoid `no-reply@` addresses** as the From or Reply-To address. They signal that you do not want feedback from recipients, and replies are a positive engagement signal. - Keep the domain's WHOIS record accurate. An honest, current record signals legitimacy. ## Domain warm-up New domains and subdomains need warm-up just as new IP addresses do (see [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up)), and the domain keeps its history for longer. Postmark's schedule gives volumes **for each receiving provider**, for example for each of Gmail, Yahoo and Microsoft: | Period | Daily volume per provider | |---|---| | Days 1–2 | 50–100 | | Days 3–4 | 200 (if metrics healthy) | | Days 5–7 | 400 | | Days 8–10 | 600–800 | | Days 11–14 | 1,000–1,500 | | Days 15–17 | 2,000–3,000 | | Days 18–21 | 4,000–5,000 | | Days 22–25 | 7,500–10,000 | | Days 26–30 | Full intended volume | Pace the growth by roughly doubling volume each day at the start. At substantial volumes, slow to daily increases of 20–50% (30–50% a day in weeks 2–3, then 20–30% a day). Expect an established reputation and dependable delivery at full volume in **3–6 weeks**. No single schedule fits the thresholds of every provider. The Messaging, Malware and Mobile Anti-Abuse Working Group (M3AAWG) gives a different figure. Its *Sender Best Common Practices* (Version 4.0, August 2026, section 2.5) suggests treating **6 weeks** as an average domain warm-up, which sits at the top of the range above. The two figures answer slightly different questions: the range above is when Postmark expects dependable delivery at full volume, and M3AAWG's figure is a typical length for the whole warm-up. M3AAWG adds these points: - Warm a **new subdomain** too, to be safe, even when the organizational domain already has an established reputation. A domain with no sending history is treated with the same caution as a domain with a bad one. - Spread each day's messages over the day instead of sending the batch at once, and send campaigns on a regular schedule until the domain is warm. - Watch SMTP logs for deferrals and bounces, and slow down if deferrals spike. Watch for spikes in unsubscribes and complaints. A large spike in opens or clicks may mean security appliances are scanning your mail, and a drop may mean it is going to the junk folder. - M3AAWG does not recommend artificial warming, and warns that it may be against the law. During warm-up, start with your best-engaged recipients and widen the audience in tiers (compare the rule of sending to the best-engaged first in [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up)): | Days | Audience | |---|---| | 1–4 | Most engaged (previously opened **and** clicked) | | 5–7 | Opened within last 60 days | | 8–10 | Opened within last 90 days | | 11–14 | Engaged within 120 days | | 15+ | Progressively less recent engagement; re-engagement campaigns last | The most important rule: never increase volume before you review the engagement and bounce metrics of the previous send for each provider. If metrics degrade, cut volume by 25–30% until they return to normal. [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks) lists the specific triggers for corrective action. It is better to take an extra week or two than to rush and damage long-term deliverability. ## Feedback loops and notification wiring A **feedback loop (FBL)** is a channel through which a mailbox provider reports recipients' spam complaints back to the sender. It has these operational requirements: - Register for the FBLs of the providers you send to (only some offer them). Word to the Wise maintains a reference list of where to sign up for each ISP's FBL (Postmark). ESP platforms typically set these up in advance and forward complaints automatically, as AWS SES does. - Complaint notifications redact the address of the person who complained. Embed traceable X-headers or identifiers in the body so you can map each complaint to an address and a campaign (AWS SES). - The mailbox that receives bounce and complaint notifications must reliably accept mail and must not filter the notifications as spam (AWS SES). See [List Hygiene](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies) for what to do with the data. - **Gmail** provides complaint data through Postmaster Tools rather than through an FBL that reports each message. Tag campaigns with unique **Feedback Loop identifiers** to see complaint rates broken down by campaign or sender, and to isolate problem content quickly (SendGrid). ## Reputation monitoring tools | Tool | What it gives a sender | |---|---| | Google Postmaster Tools | Domain and IP reputation at Gmail, rated **Bad / Low / Medium(Fair) / High** (Bad means mail is almost always rejected or sent to spam; High means it is rarely filtered); a spam rate dashboard (monitor it daily); FBL identifier data | | Microsoft (Outlook.com) postmaster tools and SNDS | Reputation and complaint data for Microsoft properties | | Yahoo postmaster | Delivery and complaint data at Yahoo | | Senderscore.org | Proprietary 0–100 score of overall IP performance | | Cisco Talos Intelligence | Reputation of IP addresses and domains, rated Good / Neutral / Poor, with volume history | | MXToolbox | Blocklist status checks for IP addresses and domains, plus health checks for DNS and domains; SendGrid calls it "the best free lookup option" | Also verify that **reverse DNS (PTR)** records exist and match for every sending IP, which is a bulk-sender requirement at Google and Yahoo (SendGrid). Validate authentication (SPF, DKIM and DMARC) with public checkers. ### Blocklists (denylists) - Providers and anti-spam services list IP addresses and domains that show many spam-trap hits, high complaint volumes, or both (SendGrid). - The impact varies widely. Some lists strongly influence major providers; many are noise. - If you are listed on a major blocklist, **stop sending immediately**, complete the delisting procedure, then resume at significantly reduced volume (Postmark). - Beware of pay-to-play lists that charge for delisting rather than assessing sender behavior (SendGrid). ## Troubleshooting framework (Postmark) When placement or delivery drops, diagnose these five areas in order: 1. **Authentication**: verify SPF, DKIM, alignment of the custom Return-Path, and [DMARC](https://emailmarketing.net/learn/authentication/dmarc) with public validators. 2. **Content**: score the message with a checker based on SpamAssassin, and run seed tests. If a template change preceded the drop, revert the changes one at a time (see the content rules in [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks)). 3. **Engagement**: audit bounce, complaint and open rates against the thresholds; suppress hard bounces; avoid `noreply@`. 4. **Reputation**: check domain and IP reputation in the postmaster tools and blocklist lookups above. 5. **Infrastructure**: confirm rDNS (PTR) records, FBL registrations and the health of the IP pool, and check that the sending software signs with DKIM correctly. There is no silver bullet. Deliverability means ongoing monitoring across all five areas, built on clean lists and strong engagement. ## Related articles - [Basic IP Allocation](https://emailmarketing.net/learn/ip-management/basic-ip-allocation) and [Advanced IP Segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation) - [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up), the IP-level counterpart of domain warm-up - [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks) - [List Hygiene and Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies), on acting on feedback loop and bounce data # Tracking and Measurement Distortion > How open and click tracking work mechanically, and how Apple MPP, Microsoft Safe Links, gateway scanners, and image proxies distort the resulting metrics — with guidance on which signals remain trustworthy. Source: emailmarketing.net — https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion If your sunset policy, your warm-up segments of "recent openers" or your open-rate benchmarks depend on engagement data, they depend on two tracking mechanisms that privacy features and security scanners now distort systematically. Below is how open and click tracking work, what distorts each one, and which metrics you can still trust. > A note on sources: the three Litmus help center articles cited have moved to a Validity knowledge base (knowledge.validity.com) that only loads with JavaScript and cannot be retrieved as static pages. The content here comes from Wayback Machine snapshots of the original help.litmus.com pages (captured 2024-09-16, 2024-12-11, and 2025-02-13; the pages show "last updated" dates from Aug 2023 – Nov 2024). ## How tracking works ### Open tracking: the 1×1 pixel Open tracking inserts a transparent **1×1 image** (the "tracking pixel") into the HTML body. Its URL is unique to each recipient and points to the tracking domain of the sender or the ESP. When the mail client displays the message and fetches remote images, the request for the pixel reaches the tracking server, which logs an "open" together with the requesting IP address, the user agent and a timestamp. Litmus describes its own analytics in the same way: "Email Analytics uses a 1x1 tracking pixel, similar to how most ESPs provide open rate metrics. Every time this pixel is loaded, we detect an open." Some consequences follow from the design itself, before any privacy feature comes into play: - **If no image loads, no open is recorded.** Clients with images turned off, plain-text display or text-only clients produce false negatives. An "open rate" is really a *pixel-load rate*. - **Every image load records an open.** That includes the sender previewing the campaign in the ESP or in a browser, the message being posted on a website or on social media, and a tracking code reused across templates (all failure modes that Litmus documents). - **Total and unique opens:** raw pixel hits are *total* opens. ESPs remove duplicates to count *unique* opens for each recipient, because they know which subscriber each request belongs to. - ESPs already filter out obvious loads by machines. Litmus notes that some providers "discard any [pixel loads] that appear to be multiples, for example if more than 4 hits are recorded in less than one second… to counteract proxy opens that some inbox providers use to speed email loading." ### Click tracking: wrapped redirect links Click tracking rewrites every `href` in the message so that it points to the redirect (tracking) domain of the sender or the ESP, with an encoded identifier. The redirect server logs the hit and sends an HTTP redirect to the original destination. In Litmus's words, recipients "are redirected to a special web server hosted by your ESP that makes a note of the 'hit' and then sends them on their way." Only the sending platform can do this, because the links must be rewritten when the message is sent. That is why tools that only provide analytics, such as Litmus, do not offer click tracking. The tracking domain has a reputation of its own. URL blocklists and content filters evaluate the redirect domain found in the body, so a shared tracking domain spreads reputation across every sender that uses it (see [Content & Design](https://emailmarketing.net/learn/operations/content-and-design-for-deliverability)). ## Distortion source 1: Apple Mail Privacy Protection (MPP) MPP was introduced with iOS 15 and macOS Monterey (2021). It is available in Apple Mail on iOS, iPadOS, visionOS and macOS, and on iCloud.com. It applies to **any mailbox read in Apple Mail**, not only to @icloud.com addresses. ### What Apple's own documentation says it does From Apple's legal and privacy page: - Remote content is downloaded "**in the background by default — regardless of whether you engage with the email**." The pixel is fetched in advance when the message arrives, not when a person views it. - Downloads pass through **two separate relays**: "The first knows your IP address, but not any third-party Mail content you receive. The second knows the remote Mail content you receive, but not your IP address." The sender therefore sees the IP address of an Apple proxy, not the recipient's. - Its stated purpose is to prevent senders from learning "when and how many times you opened their email, whether you forwarded the email, your Internet Protocol (IP) address, and other data." From the macOS Mail support guide (Mail > Settings > Privacy): - With **Protect Mail Activity** turned on, "your IP address is hidden from senders and remote content is privately downloaded in the background **when you receive a message (instead of when you view it)**." - With it turned off, two independent options appear: **Hide IP Address** (the IP address is hidden, but content is not fetched in advance) and **Block All Remote Content** (nothing remote loads at all; the user sees a banner and can load the content manually). - According to the legal page, Hide IP Address "will still mask your IP address" even when MPP itself is turned off. The feature is offered when Mail is first opened and stays on unless the user turns it off. In practice, almost all Apple Mail users have it on. The settings are in Settings > Apps > Mail > Privacy Protection on iOS, iPadOS and visionOS, in Mail > Settings > Privacy on the Mac, and in Settings > Privacy & Security on iCloud.com. ### What this does to sender data | Signal | Effect under MPP | |---|---| | Open event | Recorded for ~every message delivered to an Apple Mail user, whether engaged or not: **false positives at scale** | | Open timestamp | Reflects Apple's schedule for fetching content in advance, not when the message was read. Useless for optimizing send times for these recipients | | Open count and repeat opens | Suppressed. Several views by a person cannot be told apart | | Recipient IP address | Replaced by the outgoing IP address of an Apple relay. Geolocation points to Apple's infrastructure, at best roughly to a region | | Device and client fingerprint | Hidden. The proxy's request does not reveal the real client | | Live content (countdown timers, images targeted by location) | Rendered at the time and place of the advance fetch, not when the message is viewed | Operators should know one caveat: the advance fetch is not guaranteed for every message, because devices must be on power or connected to a network for background activity. MPP opens are therefore close to, but not exactly, 100% of the volume delivered to these recipients. You can identify MPP opens in event data by the **Apple proxy user agent and Apple's IP address ranges** on the pixel requests. MPP does **not** affect clicks. A click still comes from a real action by the user. The IP address of the following visit to the landing page may be hidden by iCloud Private Relay for Safari users, but the click event itself is genuine. ## Distortion source 2: Microsoft Safe Links (clicks) Safe Links is the URL protection in Microsoft Defender for Office 365. It matters to senders because it both **rewrites their links** and **fetches them without any person clicking**. How it works, according to Microsoft's documentation of Safe Links policies: - **Coverage is on by default.** There is no default Safe Links policy object, but the **Built-in protection** preset security policy "provides Safe Links protection to all recipients by default" in any organization licensed for Defender for Office 365 (Plan 1/2, included in Microsoft 365 E5 and various business plans). The Standard and Strict presets and custom policies apply on top of it. Policy changes take up to 6 hours to apply. - **URL rewriting:** the default email setting is "Safe Links checks a list of known, malicious links when users click links in email. **URLs are rewritten by default**". Links in the delivered message point to `*.safelinks.protection.outlook.com`, with the original URL encoded as a parameter, which allows **verification at the time of the click**. Every click passes through Microsoft before it reaches the sender's tracking redirect. - **Real-time scanning and detonation:** the option "Apply real-time URL scanning for suspicious links and links that point to files" (`ScanUrls`) scans the linked content, and "Wait for URL scanning to complete before delivering the message" (`DeliverMessageAfterScan`, recommended On) holds delivery until the scans finish. These scans **fetch the sender's URLs from Microsoft's infrastructure**. Each fetch of a wrapped tracking link registers at the ESP as a "click" that no person made, typically seconds after delivery. - **API-only mode:** "Do not rewrite URLs, do checks via SafeLinks API only" leaves the URLs in the body unchanged, and supported Outlook clients call Safe Links when the user clicks. In this mode the sender's links do not look rewritten, but checks at the time of the click still happen. - **Lists of URLs not to rewrite:** administrators can exempt URLs (`DoNotRewriteUrls`) from being wrapped as mail flows through. Microsoft notes that exempted URLs "might still be blocked at time of click" unless they are also allowed in the Tenant Allow/Block List. - **Click telemetry:** "Track user clicks" (`TrackUserClicks`) is on by default. Warning pages for blocked URLs can prevent the user from continuing to the link at all (`AllowClickThrough $false`). A genuine click on a tracking domain that was flagged by mistake then never reaches the sender. This path produces **false negatives** for clicks, alongside the false positives from detonation. Senders see these effects most on B2B lists (Microsoft 365 tenants). Corporate recipients under the Strict preset policy produce the most aggressive fetching of links before delivery. ## Distortion source 3: other gateway and security scanners Other products follow the Safe Links pattern. Secure email gateways (Proofpoint, Mimecast, Barracuda, Cisco IronPort, advanced protection in Google Workspace, and many antivirus products) commonly: - **Fetch every link** in a message at delivery or shortly after, to check the destinations ("link detonation" or sandboxing). That includes the unsubscribe link. This is why one-click unsubscribe under RFC 8058 uses POST rather than GET (see [List-Unsubscribe](https://emailmarketing.net/learn/list-management/list-unsubscribe)): scanners send GET requests, so an unsubscribe that acts on a GET gets triggered by robots. - **Rewrite links** through their own redirectors (e.g., `urldefense.com`, Mimecast link protection), which adds a second redirect in front of the ESP's tracking redirect. - **Fetch the tracking pixel** while scanning content, which produces "opens" by scanners from data center IP addresses. Patterns of behavior that tell scanner clicks from human clicks: | Heuristic | Pattern of a scanner or bot | Pattern of a person | |---|---|---| | Time after delivery | Seconds to ~2 minutes after the SMTP server accepted the message, often before any open | Minutes to days later, usually after an open | | Coverage | Every link in the message, or nearly every one, is clicked, including unsubscribe and footer links | One content link, or a few | | Order | Links are hit in the order they appear in the HTML, almost at the same moment | Irregular, and usually a single click | | Source IP address | A data center or the network (ASN) of a security vendor (Microsoft, Proofpoint or Barracuda ranges), often one IP address clicking for many recipients | The recipient's residential or mobile ISP, or the outgoing address of their company | | User agent | Headless or generic agents, or agents that do not match the client that opened the message | Consistent browser and device agents | | Behavior after the click | No session on the landing page, and no further page views | A normal web session | To filter out bot clicks in practice, score each event against several of these heuristics rather than any single one. Some scanners click only a random selection of links, and some corporate outgoing IP addresses serve both scanners and people. Never trigger an action that cannot be undone, such as an unsubscribe, a change of preferences or a one-click purchase, on a bare GET request. ## Distortion source 4: image proxies at Gmail (and at Yahoo and AOL) Gmail rewrites all image URLs through its **image proxy** (`googleusercontent.com`). The recipient's client fetches images from Google's cache, and Google's proxy fetches them from the sender's server. The effects, confirmed by Litmus's page on the limitations of its analytics: - **The IP address and geolocation are hidden.** Pixel requests come from the IP addresses of Google's proxy, and device details are reduced to the proxy's user-agent string. - **Caching suppresses repeat opens.** Once an image is cached, later views may be served without fetching it again from the sender, so repeat opens are undercounted. Litmus reports these as "image cache opens" and **excludes them from its reports of engagement (reading time)**, because "engagement is also masked by the providers' processes." - Yahoo and AOL run an equivalent proxy and cache. Litmus notes that since **August 2018** "both Yahoo! Mail and AOL are processed by the same backend servers", and that the two cannot be told apart ("Yahoo/AOL Mail via Yahoo/AOL's Image Cache"). - Unlike Apple MPP, the Gmail proxy has historically fetched images **when the message is viewed**, so an open through the Gmail proxy still indicates that a person opened the message. It distorts who opened it, where and on what device, but not whether it was opened. (Gmail has at times fetched images in advance for some messages, so treat Gmail opens as mostly human but not guaranteed.) ## What analytics vendors themselves admit (Litmus) Litmus documents the limits of its own Email Analytics. That documentation is a useful, honest baseline for what analytics based on pixels can and cannot claim: - It cannot track recipients with **images turned off** or text-only clients. Its analytics are "a way to break down your open rate", in other words a view of the recipients who opened, and only of them. - **No reliable data on forwarding or printing** remains for any inbox provider (Litmus dropped it for reasons of privacy and accuracy). - **Apple MPP** and provider image caches get their own caveats. The opens they affect are separated out or excluded from engagement reports. - Webmail (Gmail, Outlook.com, Yahoo, AOL) loads content asynchronously and keeps fetching after the reader has moved on, so **tracking of reading time and engagement is excluded** for all webmail. Clients that cannot be tracked export a reading time of **-1**. - Identification of the client is coarse. All modern Windows versions of Outlook (2016+) "return the same identifiers". Outlook for Mac renders with WebKit and is reported as Apple Mail. Lotus Notes cannot be tracked. - Pixel hits from ESP previews, from campaign pages that have been shared or posted, and from reused tracking codes all count as opens unless they are removed before sending. If a specialist analytics vendor documents this much noise, an ESP's raw open metric carries at least as much, plus the inflation from MPP's advance fetching. ## Operational consequences ### Which metrics you can still trust | Metric | Trust level | Notes | |---|---|---| | Delivery and bounce rates | High | Measured at the SMTP level, and unaffected by distortions in tracking | | Spam complaint rate | High | Based on feedback loops (FBLs), and a genuine negative signal from people | | Unsubscribe (one-click, by POST) | High | A POST under RFC 8058 resists GET requests from scanners | | Conversions and activity on your site | High | They require a real session. This is the strongest positive signal | | Clicks (bots filtered out) | Medium-high | Genuine once scanner patterns (above) are filtered out | | Clicks (raw) | Medium | Inflated by detonation in Safe Links and gateways, especially on B2B lists | | Opens, overall trend | Medium-low | Still usable to compare campaigns within a stable mix of audiences (MPP inflation is roughly constant from one campaign to the next) | | Opens, for an individual recipient | Low | An "open" from an Apple Mail user proves delivery, not attention | | Open timestamps, location, device | Low | Proxied or fetched in advance for recipients at Apple, Gmail, Yahoo and AOL | The overall open rate keeps one legitimate use: a sudden drop still signals a delivery problem. Even opens from advance fetching require the message to reach the mailbox, so for recipients at Apple, MPP opens act in effect as a measure of inbox placement. ### Adjusting sunset policies for opens inflated by MPP The classic rule, "suppress after N months without an open", now fails in both directions. MPP users look engaged forever, so they are never sunset and the list decays. Users with images turned off look dormant forever, so engaged readers get removed. Redesign the policy as follows (this extends [List Hygiene & Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies)): 1. **Group recipients by how far their opens can be trusted**, using the user agent and IP address of pixel requests: opens through the MPP proxy, opens from provider caches, and direct opens. 2. For recipients affected by MPP, define inactivity by **clicks, conversions, site logins and purchases**, never by opens. Lengthen the lookback period to match, since clicks are rarer than opens. A 90-day rule based on opens might become a 180–365-day rule based on clicks and conversions. 3. For recipients whose direct opens can be trusted, opens may still count, with less weight than clicks. 4. Keep the check against activity outside email (visits to the website, purchases). It is now the main signal, not a fallback. 5. Do not let bot clicks trigger re-engagement, so that a detonation by Safe Links does not "rescue" a dead address. In the same way, never count a scanner's GET on the confirmation link of a win-back campaign as consent. The same correction applies to warm-up segments. The "most engaged" segments built for [IP warm-up](https://emailmarketing.net/learn/ip-management/ip-warm-up) should be ranked by how recently recipients clicked or converted, not by opens, or they will be filled with unengaged Apple users. ### Optimizing send times and content - Models that optimize send times and are trained on open timestamps are polluted by the schedules of advance fetching. Train them on click timestamps only. - Live or dynamic content (countdown timers, images personalized by location) is rendered when Apple fetches it in advance or when Google's proxy fetches it. Design the content so that the version rendered at the time of the advance fetch is still acceptable. - A/B tests judged on opens mostly measure noise for recipients at Apple. Judge subject-line tests on clicks and conversions, or limit the reading of opens to opens that did not pass through a proxy. ## Related articles - [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks), with the thresholds that these caveats qualify - [List Hygiene and Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies) - [List-Unsubscribe & One-Click](https://emailmarketing.net/learn/list-management/list-unsubscribe), including why one-click unsubscribe uses POST - [Content & Design for Deliverability](https://emailmarketing.net/learn/operations/content-and-design-for-deliverability), including the reputation of tracking domains - [Seven-Step Delivery Model](https://emailmarketing.net/learn/foundations/seven-step-delivery-model) # Google Postmaster Tools > What Google Postmaster Tools provides — enrollment, every dashboard (compliance, spam rate, reputation, feedback loop, authentication, encryption, delivery errors) and how to interpret each. Source: emailmarketing.net — https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools If you send to Gmail users, Google Postmaster Tools shows you how Gmail sees your mail. It is Google's free monitoring console for senders, at https://postmaster.google.com/ (you need to sign in with a Google account). Once you verify that you own a domain, you get dashboards on spam rate, IP and domain reputation, authentication success, encryption, delivery errors, feedback loop data, and compliance with the [Gmail sender requirements](https://emailmarketing.net/learn/providers/gmail-sender-requirements). **All data covers mail to personal Gmail accounts only** (`@gmail.com` and `@googlemail.com`), not recipients on Google Workspace. ## Enrollment Prerequisites: a Google or Google Workspace account. The domain you add must be the **DKIM `d=` domain or the SPF (Return-Path) domain** that authenticates your mail. 1. **Add the domain**: sign in at postmaster.google.com, click Add, and enter the authentication domain. 2. **Verify ownership**: copy the TXT record you are given into the domain's DNS, then click Verify. Verification is usually instant, and takes up to ~10 minutes. Dashboards show no data until the domain is verified. 3. **Grant access (optional)**: go to Manage Domains > More > Manage > Add a Google email address. You can share read access, but the person you grant it to is not notified automatically. Common issues: verification fails because of DNS propagation delay or a mistyped record (retry, or generate a new string); the person you grant access to must have a Google account; and missing dashboard data usually means your volume is too low to pass the privacy threshold. ## Data characteristics - The data is updated **daily**, typically within 24 hours. Compliance status can take up to **7 days** to reflect changes. - Timestamps are in **UTC**. - You can select ranges of **7, 30, 60, 90, or 120 days**. - Days with **low volume are left out** to protect user privacy, so a gap does not mean zero. - Google tries to **exclude forwarded messages** from the data, but some may still appear in the dashboards. - Unauthenticated mail is largely invisible: most dashboards cover only mail that passed SPF or DKIM for the verified domain. ## Dashboards ### Compliance status This dashboard checks each requirement of the Email Sender Guidelines and rates it **Compliant**, **Needs work**, or **No data found** (not enough volume). - For all senders, it checks SPF and DKIM authentication, DNS (PTR) records, message formatting, TLS encryption and the user-reported spam rate. - For bulk senders (~5,000+/day), it also checks DMARC, support for one-click unsubscribe, and whether unsubscribes are honored. Compliance is displayed for the **primary domain**, but traffic from both the primary domain and its subdomains feeds the calculation. Allow up to 7 days after a fix for the status to change. ### Spam rate This is the percentage of your delivered mail that Gmail users **mark as spam themselves**, for each day. Stay **below 0.10%**, and never reach **0.30%** ([threshold details](https://emailmarketing.net/learn/providers/gmail-sender-requirements)). One caveat is critical for reading this number: the denominator is mail delivered to the inbox. As Google puts it, "if Gmail automatically sends a significant number of your messages to spam, the rate shown in the dashboard might seem low." You can therefore have a low spam rate and poor inbox placement at the same time, so read this dashboard together with reputation. ### IP reputation and Domain reputation Both dashboards use the same scale of four tiers: | Tier | Meaning | |---|---| | **High** | Very low spam rate; complies with Gmail's sender guidelines; mail rarely filtered | | **Medium** | Known to send legitimate mail with occasional low-volume spam; fair deliverability | | **Low** | Significant history of sending spam; mail likely marked as spam | | **Bad** | High spam volume; mail nearly always marked as spam or rejected at SMTP time | Domain reputation covers only messages authenticated with the **exact DKIM or SPF domain you verified**. Recovering reputation takes time and sustained sending that follows the rules; there are no shortcuts. The two dashboards separate problems with infrastructure (IP) from problems with the brand or content (domain). See [advanced IP segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation) for how to use this separation deliberately. ### Feedback loop (FBL) Gmail's FBL is **aggregate, not per message**: it does not return individual complaint reports. Instead, senders add a `Feedback-ID:` header, and Postmaster Tools reports the **average spam rate for each identifier, each day**, plus the volume of unique identifiers flagged. Header format: ``` Feedback-ID: a:b:c:SenderId ``` - `SenderId` (the rightmost field) is **mandatory**, 5–15 characters, and unique and consistent for each sender. - `a`, `b` and `c` are up to three optional custom fields (for example, campaign, customer or mail stream). Data is aggregated for the first 4 fields separated by colons, counted from the right. - Do not reuse the same identifier value in different fields, because the aggregates would mix. Do not use values unique to each message, such as a Message-ID, because each identifier needs enough daily volume and enough distinct spam reports to produce data. To get FBL data, your traffic must be DKIM-signed by a domain you control, that domain must be verified in Postmaster Tools, and your sending IP addresses must be in the SPF record with valid PTR records. The dashboard can show data by `From:` header domain, or by all DKIM signing domains. FBL data covers @gmail.com recipients only. The main use is to pinpoint which campaign, customer or stream drives complaints. This matters especially for ESPs whose customers share domains. ### Authentication This dashboard shows, for each day, the percentage of attempted mail that passed **SPF**, **DKIM** and **DMARC**. Correctly configured senders typically reach **≥95%** success for DKIM and DMARC. SPF rates are naturally lower, because delivery through third parties and forwarding breaks SPF, which checks the path (see [DMARC](https://emailmarketing.net/learn/authentication/dmarc)). Domains that do not send mail show no results. To debug a low rate: - For DKIM, check the formatting of the TXT record, that the key is correct, and the DNS TTL and expiration. - For SPF, check the record syntax, and that every authorized sending IP address or service is listed. - For DMARC, make sure SPF or DKIM passes first, and consider relaxed alignment. ### Encryption This dashboard shows the percentage of traffic sent over **inbound TLS** (your mail arriving at Gmail over TLS) and **outbound TLS**. TLS is a hard requirement of the sender guidelines, so this should be at or near 100%. ### Delivery errors This dashboard shows the percentage of **authenticated** mail that was rejected or failed temporarily, compared with all authenticated mail, broken down by the reason for the error: | Error reason | Typical cause | Action | |---|---|---| | Rate limit exceeded | Suspiciously high sending rate | Pause, then resume slowly ([warm up](https://emailmarketing.net/learn/ip-management/ip-warm-up) again) | | Suspected spam | Message classified as likely spam | Usually low reputation; if it persists on compliant mail, escalate through the bulk sender form | | Email content is possibly spammy | Content flagged | Review the content; use the escalation form if needed | | Bad or unsupported attachment | Blocked file type | Send only attachment types that Gmail supports | | DMARC policy of the sender domain | Your own DMARC policy (`p=reject` or `quarantine`) is rejecting your mail | Check the DMARC aggregate reports; consider `p=none` while you fix alignment | | Low IP reputation, or low domain reputation | Poor reputation tier | Fix the root cause and rebuild reputation | | IP in one or more public RBLs, or domain in RBLs | Listing on a public blocklist | Request delisting from the blocklist operator | | PTR record missing | No reverse DNS | Add a PTR record (verify it with the Dig tool in Google Admin Toolbox) | Temporary failures are throttling. Google's advice is to "completely stop sending for a short period of time, then resume sending at a slower rate." [Gmail troubleshooting](https://emailmarketing.net/learn/providers/gmail-troubleshooting) lists the specific SMTP codes. ## Fit in a deliverability workflow 1. **Enroll every authentication domain** (the DKIM d= domains and the SPF Return-Path domains) before problems occur, because there is no data for the period before you enroll. 2. **Every day**: watch the spam rate against 0.10% and 0.30%, and both reputation tiers. 3. **For each campaign**: use `Feedback-ID` and the FBL to attribute complaints to streams, customers or campaigns. 4. **When delivery incidents happen**: match the reasons in Delivery Errors against your SMTP logs, and check the Authentication and Encryption dashboards for regressions. 5. **For compliance**: check every item in Compliance Status. Only compliant senders with a spam rate <0.3% over 7 consecutive days qualify for mitigation from Google. Google's recommendations on list hygiene that go with these tools: send only to recipients who opted in, confirm addresses at signup (confirmed opt-in), ask periodically whether people are still interested, stop mailing people who do not engage, and make unsubscribing very easy. Yahoo offers similar facilities. See [Yahoo complaint feedback loop](https://emailmarketing.net/learn/providers/yahoo-complaint-feedback-loop) and [Yahoo performance feeds](https://emailmarketing.net/learn/providers/yahoo-performance-feeds). # Microsoft SNDS & JMRP > Smart Network Data Services (per-IP reputation data for Outlook.com: filter results, complaint rates, trap hits) and the Junk Email Reporting Program feedback loop — data provided, thresholds, and enrollment. Source: emailmarketing.net — https://emailmarketing.net/learn/postmaster-tools/microsoft-snds-jmrp Microsoft's two free programs for senders to Outlook.com (outlook.com, hotmail.com, live.com, msn.com): - **SNDS (Smart Network Data Services)** — a dashboard of per-IP sending data: "Deliverability to Outlook.com is based on your reputation. The Outlook.com Smart Network Data Services (SNDS) gives you the data you need to understand and improve your reputation at Outlook.com." It also helps IP owners detect compromised servers, malware, viruses, and botnets on their networks. - **JMRP (Junk Email Reporting Program)** — Microsoft's feedback loop: reports on junk email issues reported by Outlook.com users, returning the full message of any email a recipient marked as junk or phishing. These are the Microsoft counterparts to Google Postmaster Tools and Yahoo's Complaint Feedback Loop. They report on mail to **consumer Outlook.com mailboxes**, not Microsoft 365/Exchange Online tenants. ## Portal migration (2026) SNDS moved from the legacy `sendersupport.olc.protection.outlook.com` domain to a new portal at `https://substrate.office.com/ip-domain-management-snds/` (short link `https://aka.ms/snds`). Automated-access consumers had to update URLs off the legacy domain before its **June 22, 2026** deprecation. As of **July 22, 2026**, **trap hit counts are no longer shown** in SNDS data, to protect the integrity of Microsoft's anti-abuse systems. ## SNDS: data provided Data is aggregated per IP, per day. Around **midnight PST** a process aggregates the previous day's data (it can take a couple of hours to complete). Data is retained and viewable for **90 days**. | Field | Meaning | |---|---| | Activity period | First and last hour of the PST day during which activity was seen from the IP | | RCPT commands | Count of `RCPT TO` commands issued. Benchmark: more than a third of IPs sending to Outlook.com keep the fraction of RCPT commands that don't result in message recipients **under 10%** — a high failure fraction indicates list-quality problems or namespace mining | | DATA commands | Count of actual message transmissions | | Message recipients | Final count of intended recipients. Well-behaved senders show only minor discrepancy vs. RCPT count | | Filter result | Color-coded spam-filter verdict for the IP's mail that day (see below) | | Complaint rate | Complaints ÷ message recipients. Benchmark: more than 30% of IPs sending to Outlook.com keep complaint rate **below 0.3%** | | Trap hits | Messages sent to nonexistent trap accounts maintained by Outlook.com. Legitimate senders hit them rarely; spammers cannot easily avoid them. **Removed from reports as of July 22, 2026** | | Sample HELO / MAIL FROM | Actual examples of the SMTP identity commands seen from the IP — useful for spotting traffic that isn't yours (compromise, spoofed infrastructure) | ### Filter-result thresholds | Color | Meaning | |---|---| | Green | Spam < 10% of the IP's mail | | Yellow | 10% ≤ spam ≤ 90% | | Red | Spam > 90% | ### How to read SNDS in a deliverability workflow - **Red/yellow filter results** with normal volume → content or reputation problem; check authentication and complaint drivers. - **Complaint rate ≥ 0.3%** → above the practical safe line (the same figure Yahoo and Gmail publish as a hard threshold); tighten list hygiene and consent. - **Unexpected volume, HELO values, or trap hits** → likely compromised host or unauthorized use of your IP space. - No data for an IP usually means it sent too little mail to Outlook.com that day to be reported. ## SNDS: enrollment and access 1. Sign in to SNDS with a **Microsoft Account**. 2. **Request access** to the IPs (or CIDR range / ASN) you are responsible for. 3. SNDS determines authorized contacts via **reverse DNS and WHOIS lookups** on the range and offers the associated email addresses; ranges up to a **/23** can be authorized via reverse DNS when the range has consistent domain patterns. 4. Click the link in the verification email sent to the chosen address to confirm authorization. **Automated access**: SNDS provides a simple data-access URL (keyed, no interactive login) intended for automated systems to pull the daily data — suitable for feeding monitoring/alerting. ## JMRP: the Outlook.com feedback loop - Free service providing "reports on junk email issues reported by Outlook.com users." - Returns the **full message with headers** of any email a recipient marked as **junk or phishing**. - Purpose: identify recipients who no longer want your mail (remove them immediately) and spot content/segments driving complaints. - Enrollment: through the SNDS portal at `https://substrate.office.com/ip-domain-management-snds/snds/jmrp` (requires the same Microsoft Account sign-in and IP authorization as SNDS). - Feedback typically starts arriving **within as little as 72 hours** of enrollment. - Enrolling in JMRP is Microsoft's documented remediation step for the `550 SC-004` block (IP blocked due to complaints) — see [Microsoft Sender Requirements](https://emailmarketing.net/learn/providers/microsoft-sender-requirements). Unlike ARF-based feedback loops at some providers, JMRP reports are keyed to **sending IP**, so the mail must come from IP space you have authorized in SNDS. Process every JMRP report as an unsubscribe: continuing to mail a complainer directly raises the SNDS complaint rate and the odds of an SC-004 block. ## Related - [Microsoft Sender Requirements](https://emailmarketing.net/learn/providers/microsoft-sender-requirements) — policies, the 2025 authentication mandate, and SMTP error codes - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability) — complaint and trap signals in reputation systems - [IP Warm-Up Recommendations](https://emailmarketing.net/learn/ip-management/ip-warm-up) — use SNDS to watch new IPs during warm-up # Brand Protection — Domain Management > Securing a domain portfolio against hijacking, lookalike/cousin-domain abuse, and spoofing — inventory, registrar/registry locks, defensive registration, monitoring, takedown paths, and the protective DNS records for non-sending and parked domains. Source: emailmarketing.net — https://emailmarketing.net/learn/reference/brand-protection-domain-management Your domains can be attacked even if nobody breaks into them. Attackers who cannot take control of a brand's real domains do the next best thing: they register a variant of them, or spoof mail from them. Protecting a brand's domains works in three layers: **minimum security requirements** that every organization should meet, **increased measures** as the brand matures, and **mitigations for specific attacks**. The authentication mechanics are covered in [SPF](https://emailmarketing.net/learn/authentication/spf), [DKIM](https://emailmarketing.net/learn/authentication/dkim) and [DMARC](https://emailmarketing.net/learn/authentication/dmarc). The practices below concern managing the domain portfolio around them. ## Minimum security requirements | Requirement | Practice | |---|---| | **Domain inventory** | Record every domain the company owns. A spreadsheet is enough, but a dedicated tool is better, because it can also manage certificates and nameservers. For each domain, write down its purpose and name the people responsible for its security and maintenance. Keep the inventory current as domains and staff are added, removed or changed. Track how each domain is hosted and configured in DNS, and make sure any outsourced provider works with your DNS infrastructure provider. | | **Protect registrant accounts** | Make protecting domain names a permanent part of security policy. Keep the credentials of registrant accounts private, and allow recovery only by the most senior domain administrators, in extreme circumstances. When staff change, change the credentials of the corresponding accounts, especially passwords. Never use a transfer contact's email address as the login for self-service domain administration pages: hijackers look up transfer contacts in WHOIS and routinely test whether that address is also the username. Use role addresses, not personal addresses, for contacts. **Multi-factor authentication (MFA) on every domain account.** | | **Current contact info** | Any change to the company name, legal address, phone number or email address must trigger an update with every registrar. Registrars are a key defense against hijacking attempts, and current details put them in the best position to protect you. | | **Official policies** | Write down decisions and processes, especially for retiring or reconfiguring domains, for change control, and for which departments have authority to make changes. | | **Document everything** | Policies, registers and regular communication with staff keep the business ready for incidents, and able to accept legitimate changes quickly. | ## Increased security measures ("quick wins") - **Role aliases for domain control and notifications**: send notifications from registrars and DNS providers to a role account (`domainregistrar@example.com`), not to one person's mailbox, so that they still arrive when staff leave, go on vacation or take leave. - **Choose the DNS authority deliberately.** Local open-source authoritative servers, an on-premises appliance and a cloud authoritative DNS service each have different strengths in their support for DNSSEC, email authentication and security. Audit the resulting configuration with free tools (e.g., Zonemaster, https://zonemaster.iis.se/en/). - **Choose the right registrar.** Registrars specialize: some serve budget buyers and hobbyists, some bulk speculators, some particular languages. Register production and core domains with a **corporate registrar** that specializes in protecting critical assets. A retail registrar may be fine for defensive registrations. The minimum features to require are redundant infrastructure, protection against accidental expiry, domain monitoring (is the domain up and responding?), two-factor authentication (2FA) on the management console, a **registrar lock** service (the combination of `clientTransferProhibited`, `clientUpdateProhibited` and `clientDeleteProhibited`, which prevents unauthorized deletion, transfer or modification), and DNSSEC support. - **Defensive registration.** Register other top-level domain (TLD) variants of the brand in advance (`brand.co.uk` when you are `brand.com`). Create a policy for high-risk domains that will never be used in production: look-alike names, typos, common abbreviations and short forms (e.g., "BofA" for "Bank of America"), combined with commonly abused words such as "login" or "account", and any variant you have already had to fight. You cannot register an unlimited number, so set priorities and a budget, review them in the light of experience, and coordinate with your monitoring and takedown programs. **Whatever your risk tolerance and budget do not let you buy, monitor.** - **Manage SSL and TLS certificates together with DNS.** The same team faces similar legal and technical challenges for both. Monitor certificate transparency logs for **look-alike certificate registrations**, not only for look-alike domains. Publish **CAA records** to prevent unauthorized certificates from being issued for your domains. - **EPP status codes and locks.** Set `clientTransferProhibited`, `clientDeleteProhibited` and `clientUpdateProhibited` on organizational domains. Beyond that, consider a **registry lock** (protection against unauthorized change or deletion, confirmed through a separate channel and arranged through the registrar), and above that, **registrar lock** services that require confirmation through a separate channel before any change. After locking, check WHOIS regularly to confirm that the domain is still locked, and that its nameservers, DNS configuration and contacts have not been changed without your knowledge. Consider a third-party service that alerts you to changes. - **Back up the DNS configuration.** Storing the DNS configuration securely means you can always restore it, for example after an account is compromised. Include urgent restoration of domains and DNS in business-continuity planning and tabletop exercises, check whether your insurance covers domain and DNS incidents, and include domain hijacking in incident response. - **Monitor for abusive third-party domains.** Commercial services do this reliably. Not doing it exposes the brand to significant abuse. ## Attack vectors and mitigation ### Squatters, lookalike domains (homographs), and encroachments Monitor newly registered domains for look-alike names. Many brands outsource this to a managed service. The data sources are: - **ICANN CZDS** (Centralized Zone Data Service): zone files for all generic top-level domains (gTLDs), but **not for country-code top-level domains (ccTLDs)**. Add ccTLD zone files according to the threats you face. - **SSL certificate registrations** (certificate transparency logs). - **Paid feeds of newly registered or newly observed domains.** Each look-alike domain you discover must be classified as benign or malicious. The kit defines a **malicious domain** as one used for malware distribution, botnet command and control, phishing, business email compromise or spam. A trademark registration made in bad faith, but not also used for those activities, offends the brand without being malicious. The distinction decides which remediation path works. | Class | Path | Notes | |---|---|---| | **Malicious** (proof of phishing, credential theft, malware, botnet C2, spam) | **Send a takedown request to the domain's registrar** (found through WHOIS). Provide detailed evidence: screenshots of the offending content, and a sample lure email with full headers. If the hosting company is a separate entity, contacting it may remove the content faster. If the registrar does not respond, escalate to ICANN, which accredits registrars. | Registrars accredited by ICANN normally treat a domain as malicious only if it was **registered and used** for phishing, malware or botnet C2. **Compromised domains (legitimate but hacked) are a different problem, and suspension is usually the wrong remedy.** After a takedown, monitor for renewed activity. Alternatively, buy the domain (some registrars will transfer it to the brand), which is useful for alerting victims and gathering statistics. | | **Brand-offensive** (trademark infringement, not malicious) | The same takedown path works only if phishing, malware or C2 is also involved (for gTLDs; processes for ccTLDs depend on the terms of service of each ccTLD). Otherwise, appeal informally to the owner (identified through the hosted content or WHOIS), unless the registrant appears malicious. Then use formal **UDRP** or **URS** proceedings, or civil litigation. UDRP and URS proceedings cost money and take a few months, but success can transfer control of the domain to the brand. | Pure trademark disputes are legal matters. Involve trademark counsel, and see [compliance](https://emailmarketing.net/learn/compliance) for legal information by jurisdiction. | | **Suspicious but unproven** (or failed takedowns) | Buy the domain, or monitor it for changes in hosted content and DNS records. | Best practice: buy a limited number of highly suspicious or potentially useful domains, and monitor the rest with technology plus human review. | ### Spoofing (for email) Spoofing is mail that appears to come from the legitimate domain (or a near miss such as `microsoftt.com`) but does not. An attacker does not need any control over a domain to send spoofed mail that claims to come from it. Mitigation: - Monitor for look-alike domains (with open-source tools or third-party vendors). When you find abuse, file a complaint with the registrar, following the takedown process above. - **Authenticate every domain you own, including domains that never send mail.** Apply SPF, DKIM and DMARC across the whole portfolio, as the [M3AAWG Email Authentication BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-email-authentication-bcp) recommends. - Consider **removing MX records** from domains on which you never receive or send mail. ### Protective DNS records for non-sending and parked domains The kit refers to the M3AAWG Protecting Parked Domains BCP for the form of these records (see also the [document index](https://emailmarketing.net/learn/industry-best-practices/m3aawg-document-index)). For a domain (or subdomain) that sends no mail, publish all four: | Record | Value | Effect | |---|---|---| | SPF | `example.com. TXT "v=spf1 -all"` | No host is authorized to send mail with this MAIL FROM, so receivers hard-fail forgeries. | | DKIM | `*._domainkey.example.com. TXT "v=DKIM1; p="` | A wildcard key record with an **empty public key**. It revokes all selectors, so no DKIM signature for the domain can verify. | | DMARC | `_dmarc.example.com. TXT "v=DMARC1; p=reject; rua=mailto:reports@yourbrand.example"` | Tells receivers to reject anything that uses the domain in the From: header. The `rua` address still shows you attempted abuse. Subdomains inherit `p=reject` by default (when `sp` is not set). See [DMARC deployment](https://emailmarketing.net/learn/authentication/dmarc-deployment). | | Null MX | `example.com. MX 0 .` | RFC 7505. It declares explicitly that the domain receives no mail, so senders fail immediately instead of retrying, and the lack of an MX record cannot fall back to the A record. | Apply these records to defensive registrations on the day you buy them. A cousin domain that was registered defensively but left unprotected is exactly what a phisher wants to spoof. When a parked domain is later brought into use for sending, remove these records as part of normal [authentication setup](https://emailmarketing.net/learn/industry-best-practices/m3aawg-email-authentication-bcp) and domain warm-up ([sending-infrastructure practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices)). ### Account takeover (ATO) of the registrar account A single credential that is guessed, phished or obtained by social engineering can give an attacker the **entire domain portfolio**, and make it harder for you to access it yourself. Specific points: - **Email is often the only channel registrars use to tell registrants about account activity.** An attacker who controls the account can change DNS so that those notifications never arrive, for example when the registrant's administrative and technical contact addresses are hosted in the compromised domain. **Register a contact address outside your own domain**, so that notifications of a takeover still reach you. - Phishers also impersonate registrars and DNS providers to collect registrants' credentials. The usual goal is to change your **nameserver IPs**. Control of name resolution gives access to your inbound mail, a real-time copy of your website, captured credentials, and use of the domain for spam or crime. - **Domain shadowing** is a stealthier variant. The attacker leaves your site and mail untouched, and quietly creates new subdomains under their own control (or entirely new domains, billed to your stored payment method), for example `login.yourcompany.com` or `email.yourcompany.com`, pointed at the attacker's infrastructure. It is very hard to detect, because few registrars offer monitoring for new domains or subdomains added to an account. Countermeasures: use that monitoring where the registrar offers it, schedule regular spot checks of the domain-management account for recent changes, and pull **passive DNS reports of new hostnames appearing on your domains**. Mitigation checklist: MFA on all accounts, monitoring for unusual behavior (such as unusual logins), monitoring for look-alike domains, a complaint to the registrar when you identify abuse (following the takedown process above), and documented mitigation processes shared with security teams. ### Software vulnerability Attackers scan registrar and administration portals for vulnerabilities in the web application (e.g., SQL injection). One successful exploit can reveal the credentials of many domain accounts at once. Keep software patched, and run a responsible vulnerability disclosure program. ## ESP relevance For an ESP, the portfolio is larger than the corporate brand. Sending domains, bounce and return-path domains, tracking domains, and subdomains delegated by each customer are all assets that attackers can shadow, squat or spoof. [Sending-infrastructure practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices) covers how the reputation of cousin domains spills over and how customer domain delegation is organized, and [blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus) covers domain strategy for ESP customers. [DMARC](https://emailmarketing.net/learn/authentication/dmarc) explicitly does not protect against look-alike domains. Monitoring and defensive registration are the only controls for that gap. ## Further reading named by the kit - ICANN SSAC-044, "A Registrant's Guide to Protecting Domain Name Registration Accounts", for more thorough security measures. - ICANN Centralized Zone Data Service: https://czds.icann.org/home (gTLD zone files only). - ICANN Trademark Clearinghouse: https://newgtlds.icann.org/en/about/trademark-clearinghouse (consult legal counsel). - M3AAWG Protecting Parked Domains BCP: https://www.m3aawg.org/sites/default/files/m3aawg_parked_domains_bp-2015-12.pdf # Deliverability Benchmarks (Quantitative Reference) > Dated, vendor-attributed benchmark tables — Validity seed-measured inbox/spam/missing rates by provider, country, region, and industry; Marigold and Freshworks per-industry engagement rates; and Sinch's sender-adoption and maturity figures. Source: emailmarketing.net — https://emailmarketing.net/learn/reference/deliverability-benchmarks If you want to know whether your inbox rate is normal, what open rate your industry sees, or how many senders have DMARC, the figures below give the published answers. They come from vendor reports, so they are **directional context, not ground truth**. Use them to judge whether your program is roughly within the normal range, never as a target to game or as a promise of what you will achieve. For what these metrics mean and the thresholds that call for action, see [Metrics & Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks). For how placement and engagement are measured, and why each method is biased, see [Placement Measurement Methodology](https://emailmarketing.net/learn/operations/placement-measurement-methodology) and [Tracking & Measurement Distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion). Measurement is not explained again here. ## How to read every number here (guardrails) 1. **Every figure is dated and attributed.** A benchmark with no year and no publisher is worthless, so read past it. Every number below has both. 2. **Never combine Validity's seed data with Sinch's survey data.** They measure different things with different methods: - **Validity** figures measure placement with seed addresses: test mailboxes report whether mail reached the inbox, went to spam or went missing. This shows where mail landed, but there is no engagement from real recipients ([Placement Measurement Methodology](https://emailmarketing.net/learn/operations/placement-measurement-methodology) lists the structural weaknesses of seed data). - **Marigold and Freshworks** figures are engagement rates (opens, clicks, unsubscribes) calculated from real sends. **Engagement is not placement.** A high open rate does not prove that mail reached the inbox, and both measures are inflated or distorted by the effects described in [Tracking & Measurement Distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion) (Apple Mail Privacy Protection, clicks by security scanners). Open-rate benchmarks from before and after MPP cannot be compared. - **Sinch** figures are answers to a survey in which senders describe their own practices. They are subject to selection bias (the respondents are ESP customers) and to reporting error. They describe what senders say they do, not measured outcomes. 3. **Directional, not authoritative.** Each vendor measures its own customer base with its own method. Absolute rates change from year to year and differ between reports that measure "the same" thing. The relationships between figures last longer than the exact percentages: Microsoft is harder than Gmail, Apple is worst on placement, Finance does worse than Real Estate, and engagement varies by ~2x across industries. 4. **No invented figures.** Only figures printed in the source reports appear here. Where a report gives a range or a caveat, it is reproduced. --- ## 1. Inbox-placement benchmarks: Validity (seed data, 2022) **Source:** Validity, *2023 Email Deliverability Benchmark*. **Method:** seed data. Customers of Validity Everest send campaigns to seed addresses at hundreds of mailbox providers (MBPs) and spam filters worldwide. Software records whether each message reached the inbox, went to spam or went missing, and the results are combined in the Everest Mailbox Provider Community. **Period:** the report is dated 2023, but the placement data covers **calendar year 2022** ("inbox placement rates were just below 85 percent in 2022"). Only senders who agreed to have their data combined are included, and the figures are a snapshot in time. Three metrics are used throughout: - **Inbox placement rate (IPR):** messages delivered to the inbox, divided by all messages sent. - **Spam placement rate:** messages delivered to the spam or junk folder, divided by all messages sent. - **Missing rate:** messages accepted and then deferred or blocked, which never arrived in the inbox or in spam. Compare this with the "delivered rate" that ESPs show. Validity puts the average combined bounce rate (hard+soft) for permission-based programs at **~1.5%**, so the "delivered" rate an ESP reports is ~98.5%. That figure only measures acceptance, not placement. ### Global | Metric | Rate | |---|---| | Inbox | **84.8%** | | Spam | 6.1% | | Missing | 9.1% | The headline: roughly **1 in 6** legitimate, permission-based marketing emails never reached the inbox (15.2% went to spam or went missing), and ~**1 in 10** was not accepted at all. ### By global mailbox provider (MAGY and Apple) "MAGY" stands for Microsoft, AOL, Gmail and Yahoo. The combined MAGY IPR was **86%**, above the global average. Gmail performed best of the global MBPs and Microsoft was the hardest, while Apple did substantially worse than all of them. | Provider | Inbox | Spam | Missing | |---|---|---|---| | **Gmail** | 88.1% | 3.8% | 8.1% | | **Yahoo** (incl. AOL) | 87.4% | 3.8% | 8.8% | | **Microsoft** (Outlook and Hotmail) | 82.5% | 6.6% | 10.9% | | **Apple** (iCloud and me.com) | 66.3% | 22.9% | 10.8% | Validity attributes Apple's low IPR, and its spam rate of ~3x the average, largely to how hard it has become to measure engagement since **Mail Privacy Protection (MPP)**: senders who rely on opens end up mailing lists that respond less. The Apple figure covers subscribers on Apple domains, but the effect reaches further, because many Gmail, Microsoft and Yahoo users read their mail in Apple Mail (see [Apple iCloud Mail](https://emailmarketing.net/learn/providers/apple-icloud-mail) and [Tracking & Measurement Distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion)). ### Mailbox provider market share (share of a typical list) | Provider | Relative market share | |---|---| | Gmail | 47% | | Yahoo | 17% | | Microsoft | 16% | | AOL | 6% | | Other | 14% | MAGY holds **87%** of relative market share ("seven of every eight emails"). At least ~75% of a typical list is with these four providers, which are effectively three, since Yahoo and AOL are one company. ### By country (9) | Country | Inbox | Spam | Missing | |---|---|---|---| | **Germany** | 97.8% | 0.3% | 1.9% | | **China** | 92.7% | 3.6% | 3.7% | | **Canada** | 90.0% | 3.9% | 6.1% | | **United Kingdom** | 89.8% | 2.2% | 8.0% | | **Australia** | 89.7% | 2.4% | 7.9% | | **France** | 88.7% | 2.0% | 9.3% | | **Brazil** | 86.9% | 6.6% | 6.5% | | **United States** | 84.6% | 6.3% | 9.1% | | **India** | 68.9% | 5.7% | 25.4% | Validity's interpretation: the best performers (Germany, Canada) have strict consent regimes (double opt-in is the norm in Germany, and Canada has CASL). The US lags because permission is still mostly opt-out. India's very high missing rate reflects widespread email scams and poorer data quality. The report's global map labels India 69.8%, while the country detail page gives the full breakdown of 68.9% / 5.7% / 25.4% used here. ### By region Each region has an overall figure (all MBPs, including MAGY) and a figure for **regional MBPs only** (excluding MAGY). Regional providers filter more on rules than on engagement, and their figure is consistently lower than the overall one. | Region | Overall Inbox | Overall Spam | Overall Missing | Regional-only Inbox | Regional-only Spam | Regional-only Missing | |---|---|---|---|---|---|---| | **Europe** | 91.0% | 2.0% | 7.0% | 80.2% | 9.9% | 9.9% | | **Latin America** | 87.4% | 6.4% | 6.2% | 81.1% | 3.8% | 15.1% | | **North America** | 84.6% | 6.3% | 9.1% | 87.9% | 3.0% | 9.1% | | **Asia Pacific** | 78.2% | 3.6% | 17.2% | see split below | | | Europe performed best of the regions (91%), and Asia Pacific worst (78%). Asia Pacific splits sharply: | Asia Pacific sub-group (regional MBPs, excl. MAGY) | Inbox | Spam | Missing | |---|---|---|---| | Australia & New Zealand MBPs | 90.6% | 1.1% | 8.3% | | Asian MBPs (excl. Oceania) | 58.0% | 8.5% | 33.5% | The main regional MBPs named for each region: **North America**: AT&T, Comcast, Charter, Bell, Shaw, Telmex. **Latin America**: BOL, Terra, UOL. **Europe**: Alice, BT Mail, GMX, Orange, Virgin Media, T-Online. **Asia Pacific**: Telstra/Bigpond, QQ (Tencent), 126 (Netease). ### By industry (15 verticals) Industry sectors were assigned using ZoomInfo, and a sector needed at least 10 customers to appear. | Industry | Inbox | Spam | Missing | |---|---|---|---| | Real Estate | 97.1% | 0.8% | 2.1% | | Media & Internet | 94.9% | 1.9% | 3.2% | | Travel & Hospitality | 94.5% | 2.6% | 2.9% | | Holding Companies | 91.6% | 3.5% | 4.9% | | Construction | 90.9% | 3.3% | 5.8% | | Healthcare | 89.8% | 6.9% | 3.3% | | Consumer Services | 89.7% | 4.3% | 6.0% | | Education | 89.5% | 4.6% | 5.9% | | Software | 89.1% | 2.7% | 8.2% | | Retail | 87.7% | 2.4% | 9.9% | | Manufacturing | 84.7% | 3.3% | 12.0% | | Nonprofit Organizations | 83.5% | 5.9% | 10.6% | | Business Services | 83.4% | 7.0% | 9.6% | | Telecoms | 80.8% | 8.4% | 10.8% | | Finance & Insurance | 80.0% | 8.4% | 11.6% | Business Services, Telecoms, and Finance & Insurance performed worst, with a combined spam and missing rate on average ~33% above the global benchmark. Real Estate led at 97.1%. ### B2B: hosting platform and filtering gateway B2B mail passes through a **hosting platform** and often also a separate **third-party filtering gateway**. That is two layers, and either one can send mail to spam or block it. B2B IPRs are lower than B2C, with substantially higher missing rates. Validity notes that B2B inbox placement **could be as low as 68%** once the hosting platform and the filtering application are considered together. **Global share of B2B hosting** (95% of B2B marketing mail goes to Google Workspace or Microsoft 365): | Hosting platform | Share | |---|---| | Microsoft Office 365 | 48% | | Google Workspace ("Google Apps") | 47% | | Other | 5% | **Global placement at hosting platforms:** Inbox **79.6%**, Spam 4.1%, Missing **16.3%**. **Global share of filtering gateways:** | Gateway | Share | |---|---| | Proofpoint | 46% | | Barracuda | 15% | | Mimecast | 15% | | Cisco Email Security | 13% | | Other | 11% | **Global placement at filtering gateways:** Inbox **84.9%**, Spam 4.6%, Missing 10.5% (close to the global averages). See [B2B Gateway Deliverability](https://emailmarketing.net/learn/providers/b2b-gateway-deliverability) for how these gateways filter, rewrite links and handle delisting. --- ## 2. Engagement benchmarks by industry **These figures measure engagement, not placement.** Opens, clicks and unsubscribes are calculated from real sends. They are distorted by Apple MPP (which inflates opens), by clicks from security scanners and bots, and by false negatives when images are turned off (see [Tracking & Measurement Distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion)). Treat them as rough context for comparing yourself with peers within a stable mix of audiences, not as indicators of placement. The two vendors below are kept in **separate, attributed tables** because they use different lists of industries and different methods. Do not merge or average them. ### Marigold (Campaign Monitor by Marigold), 18 verticals **Source:** Marigold, *The Essential Guide to Deliverability*: "Campaign Monitor by Marigold analyzed billions of emails." The metrics are open rate, click-through rate (CTR), click-to-open rate (CTOR) and unsubscribe rate. Marigold cites Litmus for the email return on investment (ROI) of **$36 per $1**, and gives an average CTR of "2.3% across regions." | Industry | Open | Click-Through | Click-to-Open | Unsubscribe | |---|---|---|---|---| | Advertising & Marketing | 20.5% | 1.8% | 9.0% | 0.2% | | Agriculture, Forestry, Fishing, Hunting | 27.3% | 3.4% | 12.5% | 0.3% | | Consumer Packaged Goods | 20.0% | 1.9% | 11.1% | 0.1% | | Education | 28.5% | 4.4% | 15.7% | 0.2% | | Financial Services | 27.1% | 2.4% | 10.1% | 0.2% | | Restaurant, Food & Beverage | 18.5% | 2.0% | 10.5% | 0.1% | | Government & Politics | 19.4% | 2.8% | 14.3% | 0.1% | | Healthcare Services | 23.7% | 3.0% | 13.4% | 0.3% | | IT/Tech/Software | 22.7% | 2.0% | 9.8% | 0.2% | | Logistics & Wholesale | 23.4% | 2.0% | 11.7% | 0.3% | | Media, Entertainment, Publishing | 23.9% | 2.9% | 12.4% | 0.1% | | Nonprofit | 26.6% | 2.7% | 10.2% | 0.2% | | Other | 19.9% | 2.6% | 13.2% | 0.3% | | Professional Services | 19.3% | 2.1% | 11.1% | 0.2% | | Real Estate, Design, Construction | 21.7% | 3.6% | 17.2% | 0.2% | | Retail | 17.1% | 0.7% | 5.8% | 0.1% | | Travel, Hospitality, Leisure | 20.2% | 1.4% | 8.7% | 0.2% | | Wellness & Fitness | 19.2% | 1.2% | 6.0% | 0.4% | | **Average totals** | **21.5%** | **2.3%** | **10.5%** | **0.1%** | ### Freshworks, 12 verticals **Source:** Freshworks, *Email Deliverability Best Practices*, "data compiled from multiple industry reports". No measurement period is given, so treat the figures as undated. The metrics are open rate, click-through rate, hard bounce, soft bounce and unsubscribe. Because of the bounce columns, this table is partly a benchmark of list quality, not only of engagement. | Industry | Open | Click-Through | Hard Bounce | Soft Bounce | Unsubscribe | |---|---|---|---|---|---| | Agriculture and Food Services | 23.1% | 3.1% | 0.40% | 0.61% | 0.23% | | Beauty and Personal Care | 16.5% | 1.8% | 0.25% | 0.32% | 0.30% | | Computers and Electronics | 21.4% | 2.1% | 0.45% | 0.80% | 0.27% | | E-Commerce | 16.2% | 2.01% | 0.21% | 0.25% | 0.27% | | Education and Training | 32.4% | 2.85% | 0.29% | 0.54% | 0.21% | | Financial Services | 28.57% | 1.26% | 0.55% | 0.34% | 0.29% | | Games and Sports | 29.44% | 3.44% | 0.37% | 0.44% | 0.20% | | Health and Fitness | 21.42% | 2.83% | 0.31% | 0.40% | 0.36% | | IT and Software | 23.1% | 2.12% | 0.40% | 0.43% | 0.27% | | Media, Marketing, and Advertising | 23.9% | 3.12% | 0.21% | 0.28% | 0.18% | | Real Estate, Design, and Construction | 18.97% | 1.68% | 0.41% | 0.59% | 0.28% | | Restaurant and Dining | 24.01% | 1.47% | 0.32% | 0.51% | 0.31% | The two tables disagree on levels for verticals with similar names (for example, an open rate of 17.1% for Marigold's Retail against 16.2% for Freshworks' E-Commerce, and 28.5% for Marigold's Education against 32.4% for Freshworks' Education). That shows directly why engagement figures from different vendors must not be pooled. --- ## 3. Sender adoption and maturity: Sinch (survey, July 2024) **Source:** combined from **Sinch Mailgun, *State of Email Deliverability 2025*** and **Sinch Mailjet, *Road to the Inbox 2025***. Both reports use the **same survey**, which Sinch ran in **July 2024** with **1,100+ email senders** in the US, UK, France, Germany and Spain. Respondents were users of Mailjet, Mailgun and Email on Acid, invited by email or in the app, with one prize as an incentive. The figures are **self-reported** by ESP customers. Read them as what senders say they do, not as measured outcomes, and do not compare them with the Validity placement data above. Where both reports cite the same statistic (e.g. DMARC 53.8%), it is one figure from one survey, and it is reported once below. The sample leans toward small senders, which matters if you generalize from it: **62.5%** send fewer than 50,000 emails a month, and **52.3%** have ≤10 employees. ### Authentication adoption | Metric | Value | Source detail | |---|---|---| | Using DMARC (2024) | **53.8%** | Up from **42.6%** in 2023 (a rise of 11.2 points, or ~26% in relative terms, attributed to the Google and Yahoo requirements of Feb 2024) | | Bulk or highest-volume senders using DMARC | ~56% (2023), rising to **~70%+** (2024) | Adoption rose fastest among high-volume senders | | Using both SPF and DKIM | 66.2% | ~9% use only one; >25% are unsure | | DMARC policy is `p=none` | ~31.8% | The most common policy | | DMARC policy is `p=quarantine` | ~19.3% | | | DMARC policy is `p=reject` | ~17.7% | | | Unsure of their DMARC policy | ~31.3% | Down from >40% in 2023 (awareness rose with adoption) | | Implemented BIMI | <6% | A further 11.4% are "working on it"; 24.5% are unsure | Most DMARC users stay at `p=none`, which enforces nothing. Sinch and the experts it cites point to this as the gap in maturity: adoption rose, but most senders have not moved to a policy that enforces. See [DMARC Deployment](https://emailmarketing.net/learn/authentication/dmarc-deployment) for how to roll out a policy, and [BIMI](https://emailmarketing.net/learn/authentication/bimi), which requires `p=quarantine` or `p=reject`. Google and Yahoo required only `p=none` at launch, and a stricter minimum is expected (see [Gmail Sender Requirements](https://emailmarketing.net/learn/providers/gmail-sender-requirements) and [Yahoo Sender Requirements](https://emailmarketing.net/learn/providers/yahoo-sender-requirements)). ### The misunderstanding about delivery rate Sinch's headline finding is that senders consistently misunderstand what "delivery rate" measures. When asked to define it: | Belief about "delivery rate" | Share | |---|---| | The % of emails that reach the **inbox** (wrong) | 50.9% | | Overall deliverability (wrong) | 22.8% | | "Don't know" | 11.6% | | The total number of emails sent (wrong) | 2.5% | | **Correct:** the % delivered to **any folder** (including spam) | **12.3%** | **~88% could not correctly say what delivery rate measures.** Delivery rate counts mail accepted into any folder, spam included, so a 98% delivery rate says nothing about reaching the inbox. [Metrics & Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks) and [Placement Measurement Methodology](https://emailmarketing.net/learn/operations/placement-measurement-methodology) warn about exactly this confusion between delivered and inboxed mail, and the survey puts a number on it. ### Monitoring and list hygiene | Practice | Value | |---|---| | Rate the importance of deliverability at 8/10 or higher | 78.5% | | Feel "very confident" in their deliverability knowledge | 27% | | Call "staying out of spam" a major challenge | 48% | | **Do not** monitor their reputation with major MBPs (e.g. Gmail Postmaster Tools) | 70% | | Started using Google Postmaster Tools after the 2024 requirements | 19.2% | | Actively monitor open and click rates | 57.4% | | Actively monitor delivery rate | 53.1% | | Actively monitor bounce rate | 46.5% | | Actively monitor unsubscribe rate | 39.5% | | Actively monitor spam complaint rate | 32% | | Monitor email blocklists | 32.7% (>50% do not; 14.5% are unsure) | | Rarely or never clean their lists | 39% | | Have a sunset policy for unengaged subscribers | ~24% (~59% have none; ~17% are unsure) | | Admit buying a list or scraping addresses | 9.4% | | Use double opt-in to confirm new subscribers | ~40% | | Separate transactional and promotional mail streams | ~37% (50.3% do not; 12.6% are unsure) | Actions senders reported taking after the requirements: 37% began closely monitoring their spam complaint rate, 35.8% increased list hygiene, 33.1% implemented one-click unsubscribe (RFC 8058), 19.2% adopted Google Postmaster Tools, 18.6% adjusted how often they send, and 12.5% changed their opt-in process. Fewer than a quarter (23%) reported any deliverability trouble caused by the changes at Google and Yahoo. Only **32%** monitor their spam complaint rate, even though Gmail and Yahoo enforce a threshold of **0.3%**. The metric most directly tied to the requirement is one of the least watched. See [Google Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools), [List-Unsubscribe & One-Click](https://emailmarketing.net/learn/list-management/list-unsubscribe), and [List Hygiene & Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies). ### Apple Branded Mail and BIMI (Marigold) **Source:** Marigold, *The Essential Guide to Deliverability*. This is a comparison of features, not survey data. There are two ways to show a brand logo in the inbox: | | BIMI | Apple Business Connect — Branded Mail | |---|---|---| | Where it displays | Several providers, including Gmail, Yahoo, Fastmail and Apple Mail | Apple Mail only (the Apple ecosystem) | | Requires DMARC at `p=quarantine` or `p=reject` | Yes | Yes | | Certificate cost | A Verified Mark Certificate (VMC), which must be purchased, is required to display in Gmail and Apple | Free | | Benefit | Brand recognition, trust, sender authenticity | Same | Both require a DMARC policy that enforces, which is why the majority at `p=none` above cannot use either yet. See [BIMI](https://emailmarketing.net/learn/authentication/bimi). --- ## Related articles - [Metrics & Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks), on what each metric means and the thresholds for action - [Placement Measurement Methodology](https://emailmarketing.net/learn/operations/placement-measurement-methodology), on the known bias of seed, panel, pixel and dashboard figures (context for Section 1) - [Tracking & Measurement Distortion](https://emailmarketing.net/learn/operations/tracking-and-measurement-distortion), on why the engagement rates in Section 2 are distorted - [B2B Gateway Deliverability](https://emailmarketing.net/learn/providers/b2b-gateway-deliverability), on the filtering gateways behind the B2B figures - [DMARC Deployment](https://emailmarketing.net/learn/authentication/dmarc-deployment), behind the adoption figures in Section 3 - [BIMI](https://emailmarketing.net/learn/authentication/bimi) - [Gmail Sender Requirements](https://emailmarketing.net/learn/providers/gmail-sender-requirements), on the 2024 bulk-sender rules that drove adoption - [Yahoo Sender Requirements](https://emailmarketing.net/learn/providers/yahoo-sender-requirements) # Deliverability Community and Expert Resources > Annotated guide to the key independent deliverability expert sites — Word to the Wise, Spam Resource, EmailKarma — and how to use them for current events. Source: emailmarketing.net — https://emailmarketing.net/learn/reference/deliverability-community-resources When you need to know whether something changed at a mailbox provider this week, or why a filter behaves the way it does, vendor documentation rarely has the answer. The deliverability field is small, and much of its authoritative, practitioner-level knowledge lives on a handful of independent expert blogs. Three of them are the standard references. Below is what each is known for, and how to use them when you research current events such as policy changes at mailbox providers, blocklist behavior and new authentication standards. ## Word to the Wise (wordtothewise.com) - **Who**: Laura Atkins (CEO) and Steve Atkins. Laura is a recognized anti-spam veteran with decades of experience tracing internet abuse. Steve covers the deep protocol and technical side. They run a consulting practice (strategy, deliverability, training, mentoring) alongside the blog. - **Coverage**: email authentication (SPF, DKIM, DMARC, and emerging work such as DKIM2 and BIMI), sender reputation, inbox placement, B2B deliverability, and explaining technical filtering behavior to non-technical stakeholders. It is strong on why filters behave the way they do, and on the fundamentals of permission and consent. - **Signature resources**: - The blog at `wordtothewise.com/blog/`. It has a long-running archive dating from the 2000s era and is frequently cited by the rest of the industry. - The *Email Best Practices* white paper, summarized in [WttW Email Best Practices](https://emailmarketing.net/learn/industry-best-practices/wttw-email-best-practices). - Explainers on spam traps ("A Brief Guide to Spamtraps", 2011; "What Spamtraps Tell Us", 2025), summarized in [Spam Traps](https://emailmarketing.net/learn/reference/spam-traps). - **Tools for Email People** (`tools.wordtothewise.com`): practical utilities for email professionals. - **AboutMy.Email** (`aboutmy.email`): send a test message and get a detailed technical report on its authentication and standards compliance. ## Spam Resource (spamresource.com) - **Who**: Al Iverson. The site has been running for 24+ years and posts almost daily, which makes it the best single feed for breaking deliverability news: provider shutdowns, filter changes, regulatory and FTC actions, and acquisitions. - **Coverage** (from the site map, `spamresource.com/p/site-map.html`): | Topic area | Notable resources | |---|---| | Deliverability guides for each mailbox provider | Gmail, Yahoo and AOL, Microsoft Outlook and Hotmail (OLC), Apple iCloud, GMX and Mail.com, Mail.de, indexed under the `ISP Deliverability Guides` label | | MAGY compliance | *2025 MAGY Sender Compliance Guide* (the bulk-sender standards of Microsoft, Apple, Gmail and Yahoo): `/2025/04/2025-magy-sender-compliance-guide.html` | | Domain and infrastructure data | MAGY domains list (`/2025/04/magy-domains-list-2025-update.html`), lists of mailbox provider domains, MX record data, tracking of dead or inactive domains | | Authentication | SPF, DKIM, DMARC, ARC, BIMI (including which providers support logos, and guides to creating a logo). See also [DMARC](https://emailmarketing.net/learn/authentication/dmarc) | | **DELIVTERMS** | A signature glossary series ("33 DELIVTERMS and counting") with one post per deliverability term, for example Deliverability, DKIM, Blocklists, Spamhaus, Google Postmaster Tools | | Tools | How-tos for Google Postmaster Tools, Wombatmail tools and domain rankings, SPF, DKIM and DMARC validators, SMTP field manuals, DNS tools | | Compliance and law | CAN-SPAM, CASL, GDPR and consent, policies on cold email | | Specific platforms | Tips for Salesforce Marketing Cloud and Pardot; analysis of ESPs | - **Key URLs of the provider guides**: Gmail `/2024/02/isp-deliverability-guide-gmail-updated.html`; Yahoo, AOL and Verizon `/2019/12/isp-deliverability-guide-yahooaolverizon.html`; Microsoft `/2023/04/isp-deliverability-guide-microsoft-olc.html`; Apple iCloud `/2020/05/isp-deliverability-guide-apples-icloud.html`. - The site also publishes a newsletter (signup at `ml.spamresource.com`). ## EmailKarma (emailkarma.net) - **Who**: Matt Vernhout (Pickering, Ontario, Canada), a long-standing figure in deliverability and email policy. He is particularly strong on **Canadian regulation (CASL)** and on the work of industry bodies. - **Coverage**: email marketing knowledge, industry news, authentication (SPF, DKIM and DMARC), sender reputation, inbox placement, and compliance with changing provider requirements. It publishes several posts a month and has 50+ pages of archives. - **Recurring content**: question-and-answer columns on common email marketing questions; the "Email Deliverability Fundamentals" educational series (for example, explainers on SPF); coverage of major announcements from inbox providers (Gmail, Yahoo, Outlook); guest contributions; and curated lists of other deliverability blogs and recommended books. - The site includes a disclosure about its use of AI ("I use AI to help improve my writing as an editor... all the thoughts and content are mine"). ## How to use these sources 1. **Breaking news, such as "did something change at Gmail this week?"**: search Spam Resource first, because it posts almost daily. Then read Word to the Wise for deeper analysis, then EmailKarma, especially for Canadian angles. 2. **Provider requirements**: Spam Resource's ISP Deliverability Guides and its MAGY compliance guide are maintained, dated summaries of the bulk-sender requirements of Gmail, Yahoo, Microsoft and Apple. Always check the post date, and prefer the most recent update. 3. **Terminology**: Spam Resource's DELIVTERMS series is a glossary you can cite for individual terms. 4. **Conceptual "why" questions** (why filters behave a certain way, how to reason about permission and consent, what spam traps mean): Word to the Wise is the strongest analytical source. 5. **Diagnostics**: point senders to AboutMy.Email (from Word to the Wise) for a technical and authentication report on a single message, and to Google Postmaster Tools (Spam Resource has how-tos) for Gmail reputation data at the domain level. 6. These are blogs, so each post is a dated snapshot. For anything that depends on current policy, check the provider's own current documentation before you advise anyone. # Deliverability Glossary > Alphabetical one-stop definitions of the deliverability terms of art used across this knowledge base, with links to the deep articles. Source: emailmarketing.net — https://emailmarketing.net/learn/reference/glossary When you meet a deliverability term you do not know, look it up here. Each entry gives a short working definition and a link to where the topic is covered in depth. The glossary covers deliverability terms only, not the vocabulary of email design or copywriting. ## A **Acceptance rate (delivery rate)**: the percentage of sent messages that receiving servers accept (SMTP 250). Acceptance is not inbox placement, because an accepted message may still go to the spam folder. See [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring). **Allowlist (safelist)**: a list kept on the recipient's side of senders (addresses, domains or IP addresses) whose mail bypasses some filtering. The opposite of a blocklist. Asking recipients to add your sending domain to their safelist is a stopgap for critical mail, not a deliverability strategy. Formal allowlisting programs run by ISPs are largely historical, although CSA certification still exists (see [GMX and WEB.DE](https://emailmarketing.net/learn/providers/gmx-web-de-postmaster)). **Apple Mail Privacy Protection (MPP)**: an Apple Mail feature that fetches images in advance through a proxy. It fires open-tracking pixels without anyone reading the message, and hides recipients' IP addresses. It is a main reason open rates are inflated and clicks should be given more weight. See [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks). **ARC (Authenticated Received Chain)**: the RFC 8617 protocol that lets intermediaries (forwarders, mailing lists) preserve earlier authentication results, so that mail that legitimately breaks SPF or DKIM in transit can still be evaluated. See [ARC](https://emailmarketing.net/learn/authentication/arc). **ARF (Abuse Reporting Format)**: the RFC 5965 message format that complaint feedback loops use to report a recipient's "this is spam" action back to the sender. See [Complaint Feedback Loops](https://emailmarketing.net/learn/list-management/complaint-feedback-loops). **Authentication-Results header**: the RFC 8601 header that the receiver adds to record its SPF, DKIM and DMARC verdicts (and related ones) for a message. It is where you can read how a receiver actually judged your authentication. See [Authentication-Results Header](https://emailmarketing.net/learn/authentication/authentication-results-header). ## B **Bayesian filter**: a spam filter that classifies messages statistically, from the frequency of tokens learned from known spam and legitimate mail (ham), rather than from fixed rules. It is one of many content-analysis layers modern providers run. See [Content and Design for Deliverability](https://emailmarketing.net/learn/operations/content-and-design-for-deliverability). **BIMI (Brand Indicators for Message Identification)**: a standard for displaying a brand logo next to authenticated messages. It requires DMARC at enforcement (`quarantine` or `reject`) and, at most providers, a Verified Mark Certificate. See [BIMI](https://emailmarketing.net/learn/authentication/bimi). **Blocklist (DNSBL or RBL)**: a list, queried through DNS, of IP addresses or domains suspected of sending spam. Receivers use blocklist data as one input alongside their internal metrics, and Spamhaus carries the most weight. See [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus). **Bounce**: a delivery failure returned to the sender. Hard bounces (5.X.X) are permanent, such as an invalid address or a policy rejection. Soft bounces (4.X.X) are temporary, such as a full mailbox or a deferral. See [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks) and [Enhanced Status Codes](https://emailmarketing.net/learn/bounce-handling/smtp-enhanced-status-codes). **Bounce rate**: bounced messages as a percentage of messages sent. Common operating targets: under 2% is healthy, investigate above 5%, and never exceed 10%. See the [threshold table](https://emailmarketing.net/learn/operations/metrics-and-benchmarks). **Bulk sender**: a sender that exceeds a provider's volume threshold (at Gmail, about 5,000 messages a day to Gmail), which triggers stricter requirements such as authentication, one-click unsubscribe and complaint-rate ceilings. See [Gmail Sender Requirements](https://emailmarketing.net/learn/providers/gmail-sender-requirements). ## C **CAN-SPAM**: the US law (2003) that governs commercial email. It requires truthful headers and subject lines, a physical address, and a working opt-out honored within 10 business days. It is based on opt-out, unlike CASL and GDPR. See [CAN-SPAM](https://emailmarketing.net/learn/compliance/can-spam). **CASL**: Canada's Anti-Spam Legislation. It requires express or implied consent before commercial electronic messages are sent, and sets requirements for identification and unsubscribing. See [CASL](https://emailmarketing.net/learn/compliance/casl). **Complaint (spam report)**: a recipient marking a message as spam. It is the most damaging single reputation signal, and some providers report it back to senders through feedback loops. See [Complaint Feedback Loops](https://emailmarketing.net/learn/list-management/complaint-feedback-loops). **Complaint rate**: complaints as a percentage of delivered mail. Aim for below 0.1%. Gmail and Yahoo enforce a ceiling of 0.3% that you must never reach. See [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks). **Consent (express vs. implied)**: express consent is an explicit opt-in that is recorded. Implied consent is inferred from an existing business relationship. Which one is enough, and for how long, depends on the jurisdiction (CASL puts time limits on implied consent). See [Compliance](https://emailmarketing.net/learn/compliance). **CSA (Certified Senders Alliance)**: a German sender certification program whose allowlist is honored by GMX and WEB.DE and other European receivers. See [GMX, WEB.DE and mail.com](https://emailmarketing.net/learn/providers/gmx-web-de-postmaster). ## D **DANE for SMTP**: a mechanism based on DNSSEC (TLSA records) for authenticating a receiving server's TLS certificate. It closes the downgrade gap in opportunistic STARTTLS. See [DANE](https://emailmarketing.net/learn/transport-security/dane-smtp). **Dedicated IP**: a sending IP address used by a single sender, which gives full control over its reputation and full responsibility for it. It is only worthwhile above a sustained minimum volume, because a sender with low volume keeps a dedicated IP too "cold" to build reputation. See [Basic IP Allocation](https://emailmarketing.net/learn/ip-management/basic-ip-allocation). **Deferral (greylisting or throttling response)**: a temporary 4XX refusal that tells the sender to retry later. Rising deferrals at one provider often mean throttling, the step before blocking. See [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring). **Delivery vs. deliverability**: delivery means the receiving server accepted the message. Deliverability is about where it landed afterward: the inbox, a tab, the spam folder, or dropped without notice. See [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring). **DKIM (DomainKeys Identified Mail)**: the RFC 6376 cryptographic signature over selected headers and the body, verified with a public key published in DNS. It proves that a domain takes responsibility for the message, and that the message was not altered in transit. See [DKIM](https://emailmarketing.net/learn/authentication/dkim). **DMARC**: Domain-based Message Authentication, Reporting and Conformance. A domain publishes a policy (`none`, `quarantine` or `reject`) for mail that fails aligned SPF or DKIM, and receives reports. See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) and [DMARC Deployment](https://emailmarketing.net/learn/authentication/dmarc-deployment). **DMARC alignment**: the requirement that the domain in the visible From header matches (exactly, or at the organizational level) the domain that SPF or DKIM validated. Authentication without alignment does not pass DMARC. See [DMARC](https://emailmarketing.net/learn/authentication/dmarc). **Double opt-in (confirmed opt-in)**: a signup flow in which the address is not mailed until the subscriber clicks a confirmation link. It eliminates bounces from typos, blocks malicious sign-ups, and proves consent. See [List Hygiene](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies). **DSN (Delivery Status Notification)**: the RFC 3464 machine-readable bounce message that reports delivery failure, delay or success, with status codes for each recipient. See [Delivery Status Notifications](https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications). ## E **Email harvesting (scraping)**: collecting addresses without consent, typically by crawling websites. Harvested lists are full of spam traps and invalid addresses, so never mail them. See [List Hygiene](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies). **Email validation**: checking before sending that an address is syntactically valid, has working MX records and (through verification services) an existing mailbox. Done at signup, it prevents hard bounces later. See [List Hygiene](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies). **Engagement**: the recipient interactions that providers use to score senders, such as opens, clicks, reading time, replies, deletion without reading, and moving messages out of spam. It is the statistical basis for judging whether mail is "wanted and expected". See [Foundations](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability). **Enhanced status codes**: the RFC 3463 three-part codes (for example, `5.1.1` means a bad destination mailbox) that let software parse SMTP replies to classify bounces. See [Enhanced Status Codes](https://emailmarketing.net/learn/bounce-handling/smtp-enhanced-status-codes). **Envelope sender (MAIL FROM, Return-Path, 5321.MailFrom)**: the address given in the SMTP `MAIL FROM` command, where bounces are sent. It is separate from the visible From header. SPF is evaluated against this domain. See [SPF](https://emailmarketing.net/learn/authentication/spf) and [SMTP](https://emailmarketing.net/learn/rfc/rfc5321-smtp). ## F **False positive**: a legitimate message wrongly classified as spam. Providers weigh this cost against the cost of missing spam, and it is why a good engagement history can rescue borderline mail. **Feedback loop (FBL)**: a provider mechanism that reports recipients' spam complaints back to the sender (usually in ARF format), so that the sender can suppress complainers immediately. See [Complaint Feedback Loops](https://emailmarketing.net/learn/list-management/complaint-feedback-loops). **FCrDNS (forward-confirmed reverse DNS)**: the PTR record of the sending IP address resolves to a hostname that resolves back to the same IP address. Most major providers treat it as a basic infrastructure requirement. See [Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices). **Feedback-ID header**: Gmail's FBL mechanism. The sender supplies a header, and Gmail aggregates its identifiers into spam-rate statistics for each campaign in Postmaster Tools (without revealing individual complainers). See [Google Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools). **From header (5322.From)**: the author address displayed to recipients, defined by RFC 5322. DMARC alignment is anchored on this domain. See [Message Format](https://emailmarketing.net/learn/rfc/rfc5322-message-format). ## G **GDPR**: the EU's General Data Protection Regulation. For email marketing, it requires a lawful basis (usually explicit consent), respect for the rights of data subjects, and an easy way to withdraw consent. It is broader than an anti-spam law. See [compliance overview](https://emailmarketing.net/learn/compliance). **Google Postmaster Tools**: Google's free dashboard for senders. It shows domain and IP reputation, spam rate, authentication pass rates, and delivery errors for mail to Gmail. See [Google Postmaster Tools](https://emailmarketing.net/learn/postmaster-tools/google-postmaster-tools). **Greylisting**: a receiver technique that temporarily rejects mail from unknown sources and accepts it when it is retried. It works because much spam software does not retry. Senders see it as deferrals. See [SMTP](https://emailmarketing.net/learn/rfc/rfc5321-smtp). ## H **Hard bounce**: a permanent delivery failure (5.X.X), such as an address or domain that does not exist, or a policy rejection. Remove the address immediately and never send to it again. See [List Hygiene](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies). **Honeypot**: a decoy. It is either a pristine spam-trap address planted to catch people who harvest addresses, or a hidden form field that only bots fill in, used to block signups by bots. See [Spam Traps](https://emailmarketing.net/learn/reference/spam-traps). ## I **Inbox placement rate (IPR)**: the percentage of delivered mail that reaches the inbox rather than the spam folder, usually measured for each provider through seed testing. See [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring). **IP warming (warm-up)**: gradually increasing volume on a new IP address (or domain) so that receivers can build a reputation history. Suddenly sending full volume from a cold IP address triggers filtering. See [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up). ## L **List churn**: the rate at which addresses leave a list through unsubscribes, bounces and abandonment. Marketing databases degrade by roughly 22% per year, so hygiene is continuous work, not a one-off task. See [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring). **List hygiene**: the ongoing practice of removing invalid, bouncing, complaining and unengaged addresses, to keep healthy the metrics that providers score. See [List Hygiene and Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies). **List-Unsubscribe header**: the RFC 2369 header that advertises unsubscribe endpoints (mailto or HTTPS), which mail clients show as a built-in unsubscribe control. See [List-Unsubscribe & One-Click](https://emailmarketing.net/learn/list-management/list-unsubscribe). ## M **Mailbox provider (MBP or ISP)**: the organization that runs recipients' mailboxes (Gmail, Yahoo, Microsoft, corporate servers). The terms "mailbox provider" and "ISP" are used interchangeably for the receiving side. **MTA, MSA, MDA, MUA**: the roles that handle mail. The Mail Transfer Agent relays mail between servers, the Mail Submission Agent accepts mail from clients, the Mail Delivery Agent files mail into the mailbox, and the Mail User Agent is the recipient's client. See [Email Architecture](https://emailmarketing.net/learn/rfc/rfc5598-email-architecture). **MTA-STS**: a policy mechanism, published over HTTPS, by which a receiving domain requires authenticated TLS for inbound SMTP. It defeats STARTTLS downgrade attacks without DNSSEC. See [MTA-STS](https://emailmarketing.net/learn/transport-security/mta-sts). **MX record**: the DNS record that names the servers receiving mail for a domain. It is checked during address validation, and a domain needs one (or an A record as fallback) to receive bounces. ## O **One-click unsubscribe**: defined by RFC 8058. A `List-Unsubscribe` HTTPS URI together with a `List-Unsubscribe-Post` header lets the recipient unsubscribe with a single POST request, without a landing page. It is mandatory for bulk senders under the 2024 requirements of Gmail and Yahoo. See [List-Unsubscribe & One-Click](https://emailmarketing.net/learn/list-management/list-unsubscribe). **Open rate**: the percentage of delivered messages whose tracking pixel fired. Apple MPP and image prefetching inflate it, so treat it as approximate and give more weight to clicks and conversions. See [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks). **Opt-in and opt-out**: opt-in means the recipient explicitly asked for the mail (the consent model of CASL and GDPR). Opt-out means mail may be sent until the recipient unsubscribes (the CAN-SPAM model). See [Compliance](https://emailmarketing.net/learn/compliance). ## P **PECR**: the UK Privacy and Electronic Communications Regulations, consent-based rules for electronic marketing in the UK that apply alongside the UK GDPR. See [UK PECR](https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing). **Postmaster**: the role responsible for a domain's mail system. `postmaster@` is a reserved address that must accept mail. Providers publish their sender requirements on "postmaster pages" (see, for example, [Gmail Sender Requirements](https://emailmarketing.net/learn/providers/gmail-sender-requirements)). **Preference center**: a page where subscribers can change frequency, topics and channels instead of unsubscribing completely. It turns people who might have complained into subscribers who stay, at a lower frequency. See [List Hygiene](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies). ## Q **Quarantine**: in DMARC, the policy that asks receivers to treat failing mail with suspicion (typically by putting it in the spam folder) rather than reject it. More generally, a filter holding suspect mail. See [DMARC](https://emailmarketing.net/learn/authentication/dmarc). ## R **Re-engagement (win-back) campaign**: a last-chance message to inactive subscribers, asking them to confirm they are still interested before a sunset policy removes them. See [List Hygiene](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies). **Reverse DNS (PTR record)**: the DNS mapping from an IP address back to a hostname. Sending IP addresses need a PTR record that is not generic and that forward-confirms (see FCrDNS). Many providers reject mail from IP addresses without one. See [Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices). ## S **Seed list**: a panel of monitored test mailboxes at different providers, used to measure where a given message lands (inbox, tab, spam folder, or missing). Seed results tend to look worse than reality, because seed mailboxes have no engagement history. See [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring). **Sender reputation**: the scores that receivers attach to your sending IP addresses and domains, computed from complaints, bounces, engagement, spam-trap hits, volume patterns and authentication. It decides whether mail reaches the inbox, is throttled or is blocked. See [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring). **Shared IP**: a sending IP address whose reputation is shared by many senders. It is appropriate below the volume at which a dedicated IP makes sense, and the trade-off is exposure to how the other senders behave. See [Basic IP Allocation](https://emailmarketing.net/learn/ip-management/basic-ip-allocation). **SMTP**: Simple Mail Transfer Protocol (RFC 5321), the transport for email between servers. Its reply codes are the raw material of bounce handling. See [SMTP](https://emailmarketing.net/learn/rfc/rfc5321-smtp). **SNDS (Smart Network Data Services)**: Microsoft's sender dashboard, by IP address, for mail to its consumer domains. It shows volume, filter verdicts, complaint rate and trap hits, and is paired with JMRP, Microsoft's complaint feedback loop. See [Microsoft SNDS & JMRP](https://emailmarketing.net/learn/postmaster-tools/microsoft-snds-jmrp). **Soft bounce**: a temporary delivery failure (4.X.X), such as a full mailbox, an unavailable server or throttling. It is retried automatically. Suppress addresses that keep soft-bouncing. See [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks). **Spam trap**: an address that damages your reputation when you mail it. Pristine traps never belonged to a person, and can only be reached through bought or scraped lists. Recycled traps are abandoned real addresses turned into traps. Typo traps catch careless handling of signups. See [Spam Traps](https://emailmarketing.net/learn/reference/spam-traps). **SpamAssassin**: a widely deployed open-source content filter that scores messages against sets of rules. Its scores appear in the headers of some receivers and in seed-test reports. See [Deliverability Testing Tools](https://emailmarketing.net/learn/reference/deliverability-testing-tools). **SPF (Sender Policy Framework)**: the RFC 7208 DNS record that lists the hosts authorized to send mail for a domain, evaluated against the envelope sender. It is limited to 10 DNS lookups, and forwarding breaks it. See [SPF](https://emailmarketing.net/learn/authentication/spf). **Spoofing**: forging a sender's identity (usually the From header) to impersonate a trusted party. SPF, DKIM and DMARC exist to counter it. See [DMARC](https://emailmarketing.net/learn/authentication/dmarc). **Sunset policy**: rules that first reduce how often you mail addresses that stop engaging, then suppress them, before they decay into hard bounces or recycled spam traps (after about 12 months of inactivity). See [List Hygiene and Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies). **Suppression list**: the do-not-mail list of addresses that unsubscribed, hard-bounced or complained. Suppression protects your reputation, so never bypass it. See [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring). ## T **Throttling**: a receiver limiting how much mail it accepts from a sender per unit of time, which shows up as deferrals. The term also covers rate limiting on the sender's side to stay under those limits. See [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks). **TLS-RPT**: a reporting channel (RFC 8460) through which receivers tell a domain about TLS negotiation failures for its inbound mail. It complements MTA-STS and DANE. See [TLS-RPT](https://emailmarketing.net/learn/transport-security/tls-rpt). **Tracking pixel**: an invisible remote image whose download registers an "open." It is the mechanism behind open metrics, and proxies that fetch images make it unreliable. See [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks). **Transactional email**: mail triggered by a recipient's own action (a receipt, a password reset, a notification). It is generally exempt from marketing consent rules and from marketing suppression, but not from deliverability concerns, so keep it separate from marketing streams. See [Advanced IP Segmentation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation). ## U **Unsolicited commercial email (UCE)**: commercial mail sent without the recipient's permission. It is spam in the operational sense, and often in the legal sense. **Unsubscribe rate**: unsubscribes as a percentage of delivered mail (healthy: under about 0.3%). An unsubscribe is a much less costly negative signal than a complaint, so make unsubscribing easy. See [Metrics and Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks). ## V **VMC (Verified Mark Certificate)**: a certificate that attests ownership of a logo (usually a trademarked one). Gmail and others require it to display a BIMI logo. See [BIMI](https://emailmarketing.net/learn/authentication/bimi). ## Related articles - [Deliverability Testing Tools](https://emailmarketing.net/learn/reference/deliverability-testing-tools), tools that put many of these concepts into practice - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability) # Deliverability Testing and Diagnostic Tools > A practical catalog of free diagnostic tools — aboutmy.email, mail-tester, learndmarc, internet.nl, Google CheckMX, MXToolbox Email Health, check.spamhaus.org — what each tests, inputs, and where it fits in a workflow. Source: emailmarketing.net — https://emailmarketing.net/learn/reference/deliverability-testing-tools When you set up a new sending configuration, or a delivery problem appears, free interactive tools can verify the setup and help diagnose the problem. They fall into two families: - **Message-based tools**: you send a real email to a generated address, and the tool analyzes what actually arrived. Examples are aboutmy.email, mail-tester.com and learndmarc.com. These test the whole live path: the IP address that actually connected, the DKIM signature actually applied, and the headers your platform actually produces. - **Domain and DNS-based tools**: you type a domain or an IP address, and the tool inspects published records and server behavior from the outside. Examples are internet.nl, Google CheckMX, MXToolbox Email Health and check.spamhaus.org. These test configuration, not a specific message. Use both. DNS-based tools confirm that the records are right. Message-based tools confirm that the mail your infrastructure actually sends authenticates and aligns. ## Quick reference | Tool | Input | Primary question it answers | |---|---|---| | [aboutmy.email](https://aboutmy.email/) | Send an email to a generated address | Does this message authenticate, align, and comply with the bulk-sender requirements of Gmail and Yahoo? (30+ checks) | | [mail-tester.com](https://www.mail-tester.com/) | Send an email to a generated address | How does a standard SpamAssassin install, with authentication and blocklist checks, score this message? (0–10) | | [learndmarc.com](https://www.learndmarc.com/) | Send an email to a generated address, or paste headers | Step by step: why do SPF, DKIM and DMARC pass or fail for this message? | | [internet.nl/test-mail](https://internet.nl/test-mail/) | Domain name | Does this mail domain meet modern open standards (IPv6, DNSSEC, SPF, DKIM, DMARC, STARTTLS, DANE, RPKI)? | | [Google CheckMX](https://toolbox.googleapps.com/apps/checkmx/) | Domain, with an optional DKIM selector | Are the MX, SPF, DKIM and DMARC records sound, as Google's own resolvers see them? | | [MXToolbox Email Health](https://mxtoolbox.com/emailhealth/) | Domain or email address | A broad health check: 100+ blocklists, tests of MX, SMTP and DNS, and results grouped as problems, warnings and passes | | [check.spamhaus.org](https://check.spamhaus.org/) | IP address, domain, or hash | Is this listed on a Spamhaus blocklist, why, and how do I get it delisted? | ## Message-based tools ### aboutmy.email (Word to the Wise) Built by Steve Atkins of Word to the Wise. Keep the page open (do not navigate away or refresh) and send an email to the one-time address it displays. Ideally, send a real campaign message from the real sending platform. You get a detailed report analyzing "authentication, size, structure and how well it complies with best practices." The tool is free. What it checks (30+ checks): - **Authentication, in depth**: not only whether SPF passed or failed, but the actual DNS lookup performed, the records found, the IP address checked, and the result. The same for DKIM, with the selector, public key and signature verification, and for DMARC, with alignment. BIMI is checked if configured. - **Compliance**: a dedicated section that checks the message against the bulk-sender requirements of Gmail and Yahoo (one-click unsubscribe with List-Unsubscribe, authentication, alignment, etc.). - **Headers and content**: analysis of the MIME structure, and warnings about headers. - **Images**: every image in the message, listed by host, with its file size, its native and rendered dimensions, and warnings when large images are scaled down in the mail client. Read a report in this order: **Authentication** first (fix anything red there before anything else), then **Compliance** (the requirements of Gmail and Yahoo are not suggestions), then the warnings about headers and content, then the "Good Practice" checklist. **When to use it**: this is the best single check before launch and after a change to a sending platform. Use it for a new IP address, domain or ESP, after changing DKIM keys or the From domain, or to confirm compliance with the sender requirements of [Gmail](https://emailmarketing.net/learn/providers/gmail-sender-requirements) and [Yahoo](https://emailmarketing.net/learn/providers/yahoo-sender-requirements). ### mail-tester.com Made by people associated with Mailpoet and AcyMailing, this is the classic tester that gives a "score out of 10". The page generates a random address (`xyz…@srv1.mail-tester.com`-style). Send your message to it and click "Then check your score." What it checks: - **SpamAssassin**: an unmodified SpamAssassin install scores the message. mail-tester reverses the sign so that a higher score is better, with 10/10 as the target. - **Authentication**: SPF, DKIM and DMARC evaluation of the received message. - **Blocklists**: the sending IP address and domain, checked against major DNSBLs. - **Content quality**: broken links, the ratio of images to text, HTML weight and validity issues, and whether an unsubscribe mechanism is present. It is free through the web interface, with a daily limit on free checks. Paid and API plans lift the limit. Results pages stay available at their URL for a period, so you can share them with a hosting provider or ESP. **Caveats**: the score is only an approximation. A standard SpamAssassin install is far simpler than the filtering at Gmail or Outlook, and a 10/10 does not guarantee inbox placement, because reputation and engagement dominate (see [Foundations](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability)). Anything it flags is worth fixing, but do not chase the score as a goal. **When to use it**: a quick check of a combination of template and infrastructure, and a convenient first step when a customer reports mail going to spam. ### learndmarc.com (URIports) A visual tool for learning and diagnosis, sponsored by URIports. Send an email to the generated address at its server (`neo.learndmarc.com`), and it replays the validation process on screen, step by step, in real time: 1. **Connection**: the source IP address, the hostname from reverse DNS, and the envelope sender. 2. **SPF**: the lookup against the `MAIL FROM` domain, whether it passed, and whether SPF aligns with the From: domain. 3. **DKIM**: each signature found, with its selector, algorithm and verification result, and whether DKIM aligns. 4. **DMARC**: how the SPF and DKIM results and their alignment combine into the final DMARC verdict under the domain's published policy. It also offers a header analyzer (paste the raw message source instead of sending), a 10-question quiz with explanations, and results you can share, anonymize or print. It works best on a desktop. **When to use it**: this is the clearest tool for understanding and explaining an authentication failure. It is ideal when SPF passes but DMARC fails (an alignment problem), when debugging failures caused by forwarding, or when teaching a customer what [DMARC](https://emailmarketing.net/learn/authentication/dmarc) alignment means. It tests authentication only, with no checks of content, blocklists or placement. ## Domain and DNS-based tools ### internet.nl mail test Run by the Dutch Internet Standards Platform, "an initiative of the Internet community and the Dutch government." You enter the domain name of an email service. It tests adoption of modern open standards. Several of them matter even for domains with **no** mail service, for example publishing a null MX record, SPF and DMARC on domains that do not send: - **IPv6** reachability of name servers and mail servers - **DNSSEC** signing and validation of the domain and of the MX domains - **Authentication**: whether DMARC, DKIM and SPF records exist, their syntax, and how strict the policy is (it flags lax policies such as `p=none` or `~all`) - **Transport security**: the quality of the STARTTLS configuration, and **DANE** (TLSA records bound to the MX certificates) - **RPKI** route origin authorization for the IP addresses of the mail servers The output is an overall percentage score, with results for each section and subtest, a permalink you can share (useful for sending to a hosting provider), and a widget you can embed. **Caveats**: it measures adoption of standards, not deliverability as such. DNSSEC, DANE and RPKI are excellent hygiene and increasingly expected in Europe (and by some governments), but placement at Gmail or Outlook does not require them. A modest score can go with perfect inbox placement, so read the detail for each section, not the headline number. **When to use it**: infrastructure audits, security and compliance reviews, and checking STARTTLS and DANE after a change of MX or certificate. ### Google Admin Toolbox CheckMX Google's free DNS checker, at `toolbox.googleapps.com/apps/checkmx/`. You enter a domain name, and optionally a **DKIM selector**. It is aimed at Google Workspace administrators but works for any domain. It fetches and checks the MX records, SPF, DKIM (for the given selector) and DMARC as Google's resolvers see them, and flags common DNS problems: missing or duplicate records, too many SPF DNS lookups, syntax errors, and misconfigured priorities. **When to use it**: a fast second opinion on DNS records. It is particularly valuable because it shows how Google sees your records, and Google is the receiver that matters most for many senders. It is a good first check when Gmail in particular is rejecting mail or putting it in spam. ### MXToolbox Email Health An aggregated health report at `mxtoolbox.com/emailhealth/`. You enter a domain or an email address. It runs "hundreds of domain/email/network performance tests," grouped into five sections (blacklist, mail server, web server, DNS, and a summary of problems). Each section shows **Errors, Warnings and Passed**: - **Blocklists**: the domain and the IP addresses of its mail servers, checked against **100+ DNSBLs** (both IP and domain lists) - **Mail servers**: each MX record probed for SMTP connectivity, banner and greeting checks, an open-relay test, a reverse DNS (PTR) match, TLS support, and transaction time - **DNS**: 15+ tests against the authoritative name servers (SOA sanity, NS reachability, etc.), plus checks of the SPF and DMARC records Free users get **one Email Health Check every 24 hours**. Paid tiers add unlimited checks, and a monitor that runs 30+ tests again every few minutes, with alerts. Individual MXToolbox lookups (a single blocklist check, `spf:`, `dmarc:`, `smtp:` etc.) remain free and unlimited for occasional use. **Caveats**: with 100+ blocklists checked, expect noise, because many of the listed blocklists have almost no effect in practice. Weigh a listing by the reach of the list (Spamhaus matters far more than obscure lists), as explained in [Blocklists and Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus). **When to use it**: a broad first check in incidents where "our mail suddenly bounces everywhere", and periodic health checks of sending domains and MX hosts. ### check.spamhaus.org (IP & Domain Reputation Checker) Spamhaus's official free checker, and the only authoritative way to check and resolve Spamhaus listings, because lookups of Spamhaus zones through third parties can be out of date or blocked. You enter an IP address, a domain or a hash. It also detects your own client IP address when the page loads, and warns you immediately if that address is listed. You do not need an account to check. The delisting workflow involves verification steps. For a listed resource, it shows which dataset lists it (SBL, CSS, XBL, PBL, DBL…), **why** it was listed, what to fix so that the listing does not recur, and a guided removal request. CSS listings have a dedicated troubleshooting step that requires sending practices compliant with RFC 5321 and 5322 before removal. Removal is always free, and paid "delisting services" are scams. **When to use it**: immediately after any bounce that mentions Spamhaus (for example `554 … found in the Spamhaus blocklist. See https://check.spamhaus.org/`), and proactively when you bring new IP addresses into service (to find listings from previous users, and the PBL status of the range). For full detail on zones and return codes, see [Blocklists and Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus). ## Where each tool fits in a deliverability workflow | Stage | Tools | |---|---| | **Bringing new IP addresses or domains into service** | First check.spamhaus.org (inherited listings, PBL status), then Google CheckMX and internet.nl (records and standards correct), then aboutmy.email (a live message authenticates and aligns). Do all of this before [warm-up](https://emailmarketing.net/learn/ip-management/ip-warm-up) begins | | **Before launching a campaign or template** | mail-tester.com (content, and the score from a standard filter), aboutmy.email (compliance and the weight of the rendered message) | | **Authentication change (new DKIM key, SPF edit, DMARC policy move)** | learndmarc.com and aboutmy.email, to confirm both the pass and the alignment. Google CheckMX for record syntax | | **Sudden bounces or a block incident** | Read the SMTP response first. Then check.spamhaus.org if Spamhaus is mentioned, MXToolbox Email Health for a broad check, and learndmarc.com if the rejection mentions authentication | | **Periodic audit** | MXToolbox Email Health (within the free limit of 1 check per 24h) and internet.nl. Run aboutmy.email again after any platform change | None of these tools measures whether mail actually reaches the inbox or the spam folder at real mailbox providers, or your reputation there. For that, use data from the receivers, such as Google Postmaster Tools, Microsoft SNDS and feedback loops, together with your own engagement metrics (see [Foundations](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability)). # DNS Blocklists and the Spamhaus Zones > How DNSBLs work, the Spamhaus blocklists (SBL/CSS/XBL/PBL/DBL/ZRD/AuthBL/HBL, combined as ZEN), why senders get listed, how delisting works, and Spamhaus's operational deliverability guidance. Source: emailmarketing.net — https://emailmarketing.net/learn/reference/blocklists-and-spamhaus When a widely used blocklist lists your IP address or domain, receivers across the internet can refuse your mail at the same moment. Spamhaus is the most widely consumed reputation provider in email. Mailbox providers such as Comcast, RoadRunner and Sky use commercial spam filters and reputation data from providers like Cloudmark and Spamhaus. The largest freemail providers (Gmail, Hotmail and Outlook.com, and Verizon Media, the former Yahoo and AOL) rely mostly on filtering they built themselves on their own user data, and may or may not combine it with commercial data. A listing by a widely adopted reputation provider can therefore block delivery at thousands of receiving networks at once. There are hundreds of blocklists in the industry, but only a few have broad impact. Any comprehensive tool for checking blocklists (see [Deliverability Testing Tools](https://emailmarketing.net/learn/reference/deliverability-testing-tools)) will show your IP or domain listed somewhere, so how seriously to take a listing depends on who issued it. A Spamhaus SBL listing has enormous reach, while a listing on a defunct or obscure list can be ignored. ## How a DNSBL works A DNS-based blocklist (DNSBL) publishes its listing data as a DNS zone. The receiving mail server checks a connecting IP address (or a domain seen during the transaction) with an ordinary DNS `A` record query: - **IP lists**: reverse the octets of the IP address and append the zone. To check `192.0.2.99` against ZEN, query `99.2.0.192.zen.spamhaus.org`. - **Domain lists**: append the domain to the zone, for example `example.com.dbl.spamhaus.org`. If the IP address or domain is **not** listed, the query returns NXDOMAIN. If it **is** listed, the query returns one or more addresses in `127.0.0.0/8`, and the specific return code identifies which dataset listed it and why. A single ZEN query can return several answers in one response packet, one for each dataset the IP appears in. This is why querying ZEN is equivalent to querying SBL, CSS, XBL and PBL separately, and cheaper. Receivers use the answer at different stages: | SMTP stage | What is checked | Lists used | |---|---|---| | Initial connection | The connecting IP; the reverse DNS (rDNS) domain of the connecting IP | ZEN (SBL, CSS, XBL and PBL), DBL | | SMTP transaction | HELO string, `MAIL FROM` domain | DBL, ZRD | | Content inspection (after DATA) | Domains and URLs in headers and body, file hashes | DBL, ZRD, HBL | ## The Spamhaus zones | Zone | Type | Contents | |---|---|---| | `sbl.spamhaus.org` | IP | SBL: verified spam sources, spam operations, and infrastructure that supports spam (includes CSS) | | `xbl.spamhaus.org` | IP | XBL: exploited or compromised systems (hosts infected with malware, open proxies, botnet nodes) | | `pbl.spamhaus.org` | IP | PBL: a policy list of IP space that should not send mail directly to MX servers (dynamic or residential ranges, IoT devices) | | `zen.spamhaus.org` | IP | ZEN: SBL, CSS, XBL and PBL in a single query. The recommended IP list | | `dbl.spamhaus.org` | Domain | DBL: domains with a poor reputation (spam, phishing, malware, botnet command and control (C&C), abused legitimate domains) | | `zrd.spamhaus.org` | Domain | ZRD: Zero Reputation Domains, which are domains observed to have been registered within the last 24 hours | | `authbl` (DQS) | IP | AuthBL: IP addresses taking part in credential-stuffing or brute-force authentication attacks | | `hbl` (DQS) | Hash | HBL: SHA-256 and SHA-1 hashes of malware files, cryptowallets, and email addresses and URLs seen in spam | ### Return codes A query for a listed item returns one or more of these codes: | Return code | Zones | Meaning | |---|---|---| | `127.0.0.2` | sbl, zen | SBL listing (a spam source or operation investigated manually) | | `127.0.0.3` | sbl, zen | CSS listing (automated detection of Combined Spam Sources) | | `127.0.0.4` | xbl, zen | XBL listing (compromised host) | | `127.0.0.9` | sbl, zen | SBL DROP data (netblocks hijacked or leased to spammers; never route them) | | `127.0.0.10` | pbl, zen | PBL: a range designated by the ISP itself | | `127.0.0.11` | pbl, zen | PBL: a range designated by Spamhaus | | `127.0.0.20` | authbl | AuthBL listing | | `127.0.0.30` | sbl, zen | BCL (Botnet Controller List) | | `127.0.1.2` | dbl | Spam domain | | `127.0.1.4` | dbl | Phishing domain | | `127.0.1.5` | dbl | Malware domain | | `127.0.1.6` | dbl | Botnet C&C domain | | `127.0.1.102` | dbl | Abused legitimate site: a compromised legitimate site used for spam | | `127.0.1.103` | dbl | Abused legitimate site: a spammed redirector | | `127.0.1.104` | dbl | Abused legitimate site: phishing on a hacked site | | `127.0.1.105` | dbl | Abused legitimate site: malware on a hacked site | | `127.0.1.106` | dbl | Abused legitimate site: botnet C&C on a hacked site | | `127.0.1.255` | dbl | Error: an IP address was queried against the DBL (IP queries always return "listed", to flag misuse) | | `127.0.2.2` – `127.0.2.24` | zrd | Domain age in hours since first observation (2–24 h) | | `127.0.3.2` | hbl | Email address seen in spam | | `127.0.3.10` | hbl | Malware file hash | | `127.0.3.15` | hbl | Suspicious file hash | | `127.0.3.20` | hbl | Cryptowallet seen in spam | | `127.0.3.30` | hbl | URL seen in spam | | `127.255.255.250` | any | Error: DQS key disabled | | `127.255.255.251` | any | Error: DQS key illegally used | | `127.255.255.252` | any | Error: typing error in DNSBL name | Any answer in `127.255.255.0/24` is an **error signal, not a listing**. Treat it as "do not block." ### Usage terms Use of the public Spamhaus DNSBL mirrors is free for **low-volume, non-commercial** users under the DNSBL Fair Use Policy. Commercial and high-volume users must use the subscription Data Query Service (DQS). ZEN covers IP addresses only. It provides no protection against malicious domains, which is what DBL and ZRD are for. ## Why senders get listed For a legitimate sender, as opposed to a compromised host, listings almost always trace back to problems with data, not with content: - **Spamtrap hits**: the strongest signal of poor address acquisition or list hygiene (see the spamtrap taxonomy below). - **High complaint volumes** at receivers and through feedback loops. - **Sending to purchased, rented, harvested, appended or co-registration lists.** Spamhaus's position is aligned with that of the Messaging, Malware and Mobile Anti-Abuse Working Group (M3AAWG): "The practice of selling, buying or sending to lists of purchased email addresses – whether B2B, B2C or other categories, is in direct violation of M3AAWG core values." Consent is not transferable, so a purchased list can never carry consent. - **High unknown-user rates** (hard bounces): the signature of a stale or fabricated list. - **Bursty, erratic volume** that looks like an infected host. - **Compromised infrastructure**: a hacked form, an open relay, stolen SMTP credentials (leading to XBL, CSS or AuthBL listings). - **Sending directly to MX servers from dynamic or residential IP space** (leading to a PBL listing, which is not an accusation of spamming, only a policy statement about that IP range). - **Brand-new domains** that send immediately after registration (listed in ZRD for the first 24 hours, which is a reason to register domains well before you first use them). ## Delisting All checking and delisting goes through the **IP & Domain Reputation Checker at [check.spamhaus.org](https://check.spamhaus.org/)**. It is free, checking needs no account, and the tool automatically detects and evaluates your client IP when the page loads. It shows which dataset lists you and why, and walks you through troubleshooting and removal. Details for each list: - **PBL**: self-service removal for end users who legitimately run a mail server on the IP. Alternatively, route mail through your provider's smarthost. Ranges designated by the ISP (`127.0.0.10`) are policy statements by the network owner. - **XBL**: self-service, after you remediate the compromised device or malware. A new listing follows quickly if the infection persists. - **CSS** (`127.0.0.3`): automated listings that largely resolve themselves. Before you request removal, you must meet the sending best practices of RFC 5321 and RFC 5322 (valid rDNS, matching HELO, and so on). The checker includes a dedicated troubleshooting step for CSS. - **SBL** (`127.0.0.2`): investigated manually. Removal requires convincing a Spamhaus researcher that the issue is resolved. Investigations frequently demand **proof of consent** (see data collection below), and ISPs and reputation providers may also require you to ask your whole list for permission again. - **DBL**: listings expire automatically once the domain stops meeting the listing criteria. Manual removal goes through the checker ("using the form does not guarantee removal"). Approved removals propagate within minutes, or within up to 24 hours for some mirrors. **Delisting is always free.** Spamhaus: "Any offer from anyone to remove any Spamhaus listing for a fee is a scam." Blocks at receivers that reference Spamhaus (for example `554 The IP address of your mail server (…) was found in the Spamhaus blocklist. See https://check.spamhaus.org/`) clear on the receiver's own schedule after the listing is removed, typically 24–72 hours after the issue that triggered them stops. ## Spamhaus's deliverability guidance (Deliverability 101) Spamhaus's "Deliverability 101" eBook is written from the reputation provider's side of the fence. Its core claim matches the [foundations of email deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability): there is no shortcut, so consistently send correctly authenticated, carefully targeted emails to an engaged audience. The sections below cover what it adds. ### What feeds reputation (in Spamhaus's model) Reputation is made up of an unknown number of variables that ISPs and reputation providers do not reveal. The known components are: | Component | Notes | |---|---| | Spamtrap hits | They expose both illegitimate senders and legitimate senders with poor data hygiene | | Complaint volumes | Receivers weight complaint counts per IP. Thresholds are secret and vary between ISPs, and a good reputation buys slightly more forgiveness | | Engagement metrics | Clicks, opens, purchases. Opens and clicks are weaker evidence since Apple Mail Privacy Protection. Spamhaus itself, like many anti-spam appliances, opens spam and follows links that are not subscription links, so an open or a click is **not** proof of consent | | Management of bounces and invalid addresses | The unknown-user rate is a primary signature of spammers | | Consistent volumes in each mail stream | ISPs care more about botnet spam than about marketing mail, and sudden changes in volume look like infected hosts. "Bursty" streams degrade even a well-established reputation at the major freemail ISPs | There is a key asymmetry, by design and with no override: **it is much easier to drive reputation down than to repair it.** IP reputation has also become less central than domain and content reputation. With the 340 undecillion addresses of IPv6, criminals burn IP addresses freely, so filters rely on domains. Inbox placement is recalculated exceptionally quickly in response to how end users react, and treatment can change from one moment to the next. Allowlisting (formerly "whitelisting") by ISPs no longer exists. ### Looking legitimate: setup checklist Intentions matter far less than behavior. Spam filters cannot tell a well-meaning sender from a spammer if the behavioral basics are missing: - Authenticate everything, with SPF and DKIM at a minimum. Keep the SPF record **as narrow as possible**, because designating the whole internet as a permitted sender invites abuse. See [DMARC](https://emailmarketing.net/learn/authentication/dmarc) for alignment rules. - **Domain strategy for the customers of an email service provider (ESP)**, from best to worst: (1) delegate a subdomain of the brand's primary domain, for example `email.customerbrand.com`; (2) `customerbrand.espdomain.com`; (3) as a last resort, a cousin domain such as `customerbrand-email.com`. If a cousin domain cannot be avoided, it must clearly relate to the brand, because phishing has made users wary of look-alike domains. - Do not use anonymized WHOIS records on sending domains. Legitimate businesses have no reason to hide their identity, and registrars that switched to privacy by default after GDPR will usually unmask a record on request. - Limit the number of distinct sending domains, because the more unique domains send the same mail, the more flags it raises. Use the primary business domain or its subdomains. - Every domain that sends email should have working `abuse@` and `postmaster@` addresses and a working website. Link and tracking domains should redirect to the primary business site. - Where possible, use contiguous IP addresses on the same network, and do not use more IP addresses than you need. Hundreds of IP addresses scattered across networks is the definition of snowshoeing (see [Basic IP Allocation](https://emailmarketing.net/learn/ip-management/basic-ip-allocation)). - ESPs should publish an acceptable use policy (AUP) and terms of service (ToS) that are easy to find and enforced, and should watch SMTP logs for unexpected bounces, temporary failures (tempfails) and anomalies in mail streams. - Reputation is established during warm-up, so plan it. Choose highly engaged recipients for the first mailings, and grow volume based on the results of each previous send (see [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up)). ### Address acquisition and consent records For every contact, record the following, and keep the record up to date: - The date and time of signup, **in UTC** - The channel through which the address was obtained - The IP address that submitted it If an IP or domain is blocklisted and manual intervention is needed, ISPs and reputation providers often **demand this proof of consent**. Without it, resolution takes longer or fails. The records also protect you against complaints under GDPR and similar laws. Rules for forms: opt-in checkboxes must be selected voluntarily (pre-checked boxes are dishonest, and illegal in some countries). Protect forms with CAPTCHA or reCAPTCHA. Since roughly August 2016, bot abuse of unsecured signup forms has been escalating. It poisons databases (including with malicious spamtrap submissions) and amounts to a denial-of-service (DoS) attack. Acquisition methods, ranked: | Method | Verdict | |---|---| | Confirmed opt-in (COI, or double opt-in) | The gold standard. A confirmation email carries a click-to-confirm link, and without a click no marketing mail is sent. It provides provable consent, a near-zero risk of spamtraps and higher engagement | | Single opt-in | Workable but risky: uncertain intent, submissions with typos, from bots or of throwaway addresses, spamtrap poisoning, higher complaint rates, and possible blocklisting | | Opt-out | Avoid at all costs. It guarantees high bounces, complaints, spamtrap hits, ISP blocks and blocklistings. Permission cannot be acquired after the fact | | Purchased or rented lists, harvesting, appending (e-pending), co-registration or affiliate lists | Never. Consent is not transferable, and the damage is severe and long-lasting | ### Frequency, engagement, and sunset policy Set the expected frequency in the confirmation or welcome message, and keep to it. Unexpected or erratic mail drives spam reports. Spamhaus gives this example of a sunset ladder: 1. The recipient has not opened in **more than 1 week**: move them from weekly to monthly mail. 2. They have not opened in **more than 1 month**: send a "do you wish to continue your subscription?" message with a confirmation link. 3. No response: add them to the suppression list and stop. Review engagement continuously, and segment out recipients who do not engage. The usual starting cutoff is one year of inactivity, tightened to six months and then three, depending on results. Sending in bulk to addresses that never consented is spam, and so is continually sending to addresses that have never been successfully delivered. The idea that ISPs and reputation vendors "tighten the rules" in the holiday season is a myth: nothing changes on the receiver side. Senders who reach deep into old or unengaged segments (or buy lists) for holiday revenue cause their own decline in reputation, with tempfails, deferrals, blocks and sometimes Spamhaus listings. ### Bounce handling **Hard bounce**: a permanent failure (5xx) that is not retried. If you get one, never send to that contact again: delete or suppress it. Codes that senders see frequently: | Code | Meaning | |---|---| | 550 | Non-existent email address (the vast majority of 550s mean "user unknown") | | 512 | DNS error: the recipient's domain does not exist in DNS | | 551 | User not local, or invalid address: relay denied | | 552 | Storage allocation exceeded (mailbox full, which some servers treat as permanent) | | 553 | Invalid mailbox name (malformed recipient address) | Most hard bounces in marketing are the direct result of poor data hygiene. Note that non-existent domains can later become spamtraps. **Soft bounce**: a temporary failure (4xx) that is retried. The sending system retries until the message is accepted or times out. The timeout is set on the sending side and varies by network: | Code | Meaning | |---|---| | 421 | Service unavailable or connection problem: too many simultaneous connections, a shortage of resources at the receiver, or a dip in reputation | | 450 | Mailbox unavailable: a corrupted or offline mailbox, or a refusal because of reputation or blocklisting | | 451 | Local error in processing | | 452 | Too many emails or recipients, or the server's storage limit was exceeded | Some ISPs respond to a dip in reputation with **tempfails** ("421 4.7.0 [TS01] Messages from x.x.x.x temporarily deferred due to user complaints"). Mail is deferred until either the flow stops or the reputation recovers. Do not automatically remove addresses hit by a tempfail from the list. Fix the problem with list quality instead. **ISP hard block**: a policy rejection of the whole stream, usually `554`, often with a URL to consult (for example, a Spamhaus reference). The causes are blocks on URLs or body content, missing authentication, a poor IP or domain reputation, or presence on a blocklist the receiver uses. Blocks typically clear after an arbitrary 24–72 hours once the trigger stops. Otherwise, resolve the root cause first, then open a ticket with the blocking network. **Some ISPs, notably Gmail, have no remediation channel at all.** Receivers generally escalate in this order: placement in the spam folder, then tempfails and throttling, then bounces, then hard blocks. ### Complaints and feedback loops Some causes of complaints are within your control: no real signup, expectations about frequency or content that were never set, too much mail or a sudden change in frequency, purchased lists, irrelevant content, and mailing after an unsubscribe. Remove an address immediately when it unsubscribes, whatever grace period the applicable law allows. Other causes are harder to control: recipients who simply do not remember signing up (mail them promptly after signup, because a first email weeks later is forgotten), typos in addresses collected at the point of sale, and frustrated users who report their whole inbox as spam. Reduce complaints by keeping the promise made at opt-in, offering a preference center with frequency options, never pre-checking boxes, never buying lists, and making unsubscribing trivial. Never require a login to unsubscribe, which is illegal in some places, and put the link where it is found faster than the spam button, for example at the top. The monitoring data sources are Outlook and Hotmail SNDS (mail volume, deferrals, complaint rates and trap hits per IP), Google Postmaster Tools (complaint volumes and domain reputation), and every available **feedback loop (FBL)**. Through an FBL, ISPs report user spam complaints back to the originating network in the Abuse Reporting Format (ARF), with personally identifiable information (PII) redacted. Process reports promptly and suppress complainants immediately. ### Spamtrap taxonomy Spamtraps prove a problem in data collection or hygiene, so fix the process, not the trap. Trap owners never reveal their traps. Traps are part of the secret of filtering, and bad actors who identify traps just suppress them without fixing anything. The types are: | Type | What it is | What hitting it proves | |---|---|---| | Classic or pristine | An address never given to any live user (often on wildcard domains, `*@example.com`) that starts receiving mail | A fabricated or generated list | | Seeded | Addresses deliberately scattered in places people would not look (for example, in web page source) | Scraping or harvesting, or buying from a scraper. It also catches failure to honor unsubscribes | | Typo domain | Traps at domains such as `yaaho.com`, `ynail.com`, `homail.com` | Typos at the point of entry. These domains receive real mail too, and are weighted accordingly. COI at collection prevents these hits | | Dead address | Once-valid addresses that an ISP turned off, hard-bounced for a period (often 12+ months), then silently reactivated as traps | Ignoring hard bounces, or stale lists | | Live | Addresses of real users whose unsolicited mail is used for blocking decisions | Sending unsolicited mail. Dangerous when the owner has connections | | Domain registration or role addresses (a subset of live traps) | `postmaster@`, `abuse@`, `admin@` and addresses published in WHOIS | Harvesting. These should almost never be on a marketing list | ### Legal context (consult counsel; there are email and data-protection laws in at least 77 countries) - **CAN-SPAM (US)**: federal. The Federal Trade Commission (FTC) has successfully sued violators. - **CASL (Canada)**: applies if mail goes to a Canadian domain or a Canadian user, or passes through Canada. - **GDPR (EU, in force 2018-05-25)**: covers residents of the EU and the EEA, and transfers of data out of them. Fines are severe, and consent records materially reduce exposure. - **CCPA (California, effective 2020-01-01)**: rights to know, to delete, to opt out of sale, and to non-discrimination. People under 16 need to give opt-in consent, and those under 13 need parental consent. # Email Abuse Taxonomy > The classification layer for the abuse cluster — one entry per abuse type with definition, victim, the detection signals an ESP sees, the typical actor (intentional customer vs compromised customer vs external), and which KB article owns the response. Source: emailmarketing.net — https://emailmarketing.net/learn/reference/email-abuse-taxonomy When an abuse report reaches your desk, the first job is to classify it: **what kind of abuse is this, who is the victim, and who is the actor?** Those three answers decide which playbook you follow. Each entry below defines one abuse type, names its victim, lists the detection signals you can see from the ESP's side (not the receiver's), identifies the typical actor, and links to the guidance for the response. For triage priorities and the remediation loop itself, see [Abuse Desk Operations](https://emailmarketing.net/learn/esp-operations/abuse-desk). ## The actor axis The same outbound symptom, spam pouring out of your IP addresses, has four very different causes, and each needs a different response. Getting the actor wrong is the most expensive mistake in triage: | Actor class | Description | Response posture | |---|---|---| | **Intentional customer** | The account holder is the abuser: they signed up to abuse, or drifted into it | Enforce: suspend or terminate. Fraudulent accounts get **no data retrieval and no tip-off** ([Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk)) | | **Compromised customer** | A legitimate account under an attacker's control (through credentials, an API key or a hacked content management system) | Recover: contain the abuse, return the account to its owner, and secure it against a new compromise ([Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts)) | | **Negligent customer (conduit)** | The customer is not sending abuse, but an unprotected asset of theirs (a form, a script, careless list buying) makes them a channel for it | Educate the customer and require controls. Escalate to enforcement if they refuse to fix the problem | | **External** | The attacker never touches a customer account. They abuse your brand, your signatures or third-party forms from outside | Monitor, report and take down. The ESP's own infrastructure may be the victim, not the source | What separates the first two is a **pattern of earlier valid use**, the test for telling compromised accounts from malicious ones in [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts#compromised-vs-malicious-accounts). Analyse the metrics carefully before you assume a mechanism: what looks like a compromise is often abuse of trial signups, and the reverse is also true. ## Master table | Abuse type | Primary victim | Key signals on the ESP's side | Typical actor | Guidance for the response | |---|---|---|---|---| | [Spam / UBE](#spam--ube) | Recipients, and the ESP's shared reputation | Spikes in complaints and feedback loop (FBL) reports, trap hits, blocklistings, bounce spikes | Intentional or negligent customer | [Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk) · [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting) | | [Phishing (incl. spear/BEC)](#phishing-including-spear-phishing-and-bec) | The impersonated brand and the defrauded recipients | Hostile URLs in content, takedown notices from trusted reporters or brands, hits on the phishing lists of DBL and SURBL | Intentional customer (fraudulent signup) or compromised customer | [Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk) (P2) · [URL & Content Filtering](https://emailmarketing.net/learn/reference/url-and-content-filtering) | | [Brand spoofing / lookalike domains](#brand-spoofing-and-lookalike-domains) | The brand and its customers | DMARC reports showing unauthorized sources, and signup attempts with lookalike domains during vetting | External (or a fraudulent signup that uses the lookalike) | [Brand Protection](https://emailmarketing.net/learn/reference/brand-protection-domain-management) · [DMARC](https://emailmarketing.net/learn/authentication/dmarc) | | [Snowshoeing](#snowshoeing-ip-and-domain) | Filters and receivers, and the ESP's IP space | A customer requesting many IP addresses or domains, rotating identities, CSS listings | Intentional customer | [Spamhaus Deep Dive](https://emailmarketing.net/learn/reference/spamhaus-listings-deep-dive) · [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting) | | [List bombing](#list-bombing--subscription-bombing) | One targeted mailbox | Signup bursts to one address or domain across the whole platform, floods of confirmation mail | External, through negligent customers' forms | [Subscription Bombing](https://emailmarketing.net/learn/esp-operations/subscription-bombing) | | [Malware / ransomware distribution](#malware--ransomware-distribution) | Recipients' machines | Hits from attachment scanning, SURBL malware listings, urgent notices from trusted reporters | Compromised customer or fraudulent signup | [Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk) (P2) · [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts) | | [419 / advance-fee and fraud content](#419--advance-fee-and-other-fraud-content) | Recipients (financially) | Content heuristics, low volume with webmail-style sending, complaint text | Intentional customer (fraudulent signup) or compromised account ("stranded traveler") | [Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk) · [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts) | | [Backscatter](#backscatter-generation) | The holders of forged addresses, and the ESP that bounces the mail | Outbound bounces to addresses you never sent to, listings of the Backscatterer type | Nobody: it is a misconfiguration, and an external spammer supplies the forged addresses | [Abuse Desk: backscatter](https://emailmarketing.net/learn/esp-operations/abuse-desk#backscatter) | | [DKIM replay](#dkim-replay) | The signing domain (the customer's or the ESP's) | Complaints or blocks for mail you have no record of sending, and one message ID seen at huge scale by receivers | External (needs only one signed message) | [DKIM Replay Attacks](https://emailmarketing.net/learn/authentication/dkim-replay) | | [Account takeover / compromised sending](#account-takeover--compromised-sending) | The customer, then everyone who shares the infrastructure | A break from the account's usual behavior: new location or user agent, sudden volume, new content or recipients | Compromised customer | [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts) | | [API-key abuse](#api-key-abuse) | The customer, and shared pools | Unusual sending through the API with no dashboard logins, intelligence about leaked keys, a new API integration just before a spike in trap hits or complaints | Compromised customer (leaked credential) | [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts) · [Spam-Trap Incident Response](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response) | | [Affiliate spam](#affiliate-spam) | Recipients, the advertiser's brand, and the ESP's reputation | Vetting answers (programs managed by third parties), content full of redirectors, complaint rates far above the customer's own streams | Intentional or negligent customer (through affiliates) | [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting) · [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods) | | [Cold email / consent-less outreach](#cold-email--consent-less-outreach) | Recipients, and the ESP's reputation | Bulk mail in small "personalized" batches, purchased B2B lists, volume split on purpose across accounts or domains | Intentional customer (often one who describes itself as legitimate) | [M3AAWG Position on Cold Email](https://emailmarketing.net/learn/reference/cold-email-position) | | [Harvesting / scraping](#harvesting--scraping) | Address owners, then whoever mails the list | Visible before the ESP sends: uploaded lists full of role accounts, traps and invalid addresses | External harvester, with an intentional or negligent customer as the buyer | [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods) · [Spam Traps](https://emailmarketing.net/learn/reference/spam-traps) | | [Open relay / proxy abuse](#open-relay--proxy-abuse) | The whole receiving ecosystem, and the relay operator | Traffic from third parties passing through customer infrastructure, SBL or XBL listings of customer hosts | External abuser exploiting a negligent customer's misconfiguration | [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts) · [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus) | | [SMS / messaging ridealong](#sms--messaging-ridealong) | Message recipients on the other channel | Scripted abuse of features that send web messages to SMS or notifications, unusual volume for a single feature | External, through scripting, or a compromised account | [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts) (material from the Web Messaging BCP) | ## Spam / UBE **Definition** (Spamhaus): **Unsolicited Bulk Email.** *Unsolicited* means the recipient has not granted verifiable permission. *Bulk* means the message is part of a larger collection of substantively identical messages. Both conditions must hold: "spam is an issue about consent, not content." Spam is the parent category. Most other types listed here are spam with an aggravating characteristic, such as deception, malware or fraud. - **Victim**: the recipients. Because ESPs are judged on their overall traffic, every other customer on shared IP addresses or domains is also a victim ([Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture)). - **ESP signals**: spikes in the FBL complaint rate, [spam-trap hits](https://emailmarketing.net/learn/reference/spam-traps), rising rejections and deferrals at major receivers, [blocklistings](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus), and unusual bounce profiles when a list is imported. For thresholds and corrective actions, see [Metrics & Benchmarks](https://emailmarketing.net/learn/operations/metrics-and-benchmarks). - **Actor**: an intentional customer (bought lists, no consent) or a negligent customer (list hygiene that has decayed). Tell it apart from a compromise by comparing with the account's usual behavior. - **Response**: the remediation loop in [Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk): validate the report, notify the customer citing the terms of service, remediate, suspend, terminate. Prevent it through [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting). For incidents driven by spam traps, see [Spam-Trap Incident Response](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response). ## Phishing (including spear phishing and BEC) **Definition**: mail that impersonates a trusted party to steal credentials, payment data or money. **Spear phishing** targets specific individuals with researched pretexts. **Business email compromise (BEC)**, as the FBI's Internet Crime Complaint Center (IC3) describes it, is the sophisticated end: the attacker impersonates an employee, a vendor or an executive (through spoofing, lookalike domains or a mailbox that has actually been compromised) to trigger fraudulent transfers of funds. The Anti-Phishing Working Group (APWG) describes it as impersonating a trusted party to trick an employee into sending money or privileged assets. BEC often involves no malicious URL or attachment at all. It is pure social engineering, which content filters cannot catch. - **Victim**: two victims, the impersonated brand (damage to its reputation, and DMARC problems) and the defrauded recipient. - **ESP signals**: hostile or deceptive URLs in customer content (hits on the phishing list of SURBL, or on Spamhaus DBL and HBL; see [URL & Content Filtering](https://emailmarketing.net/learn/reference/url-and-content-filtering)), and takedown notices from brand-protection firms and trusted reporters. On the hosting side, look for phishing kits on customer sites: the Hosting Abuse BCP notes that phishing is almost always run through compromised end-user accounts with outdated scripts. Pure BEC rarely passes through an ESP in volume, because it is low-volume and targeted. Credential-phishing campaigns against your own customers, run to set up account takeovers, certainly do. - **Actor**: a fraudulent signup (intentional) or a compromised customer account or site. The actor is external when only your brand is imitated (see the next entry). - **Response**: P2 in the [abuse desk priority tiers](https://emailmarketing.net/learn/esp-operations/abuse-desk#complaint-priority-tiers-hosting-abuse-bcp), because malicious activity ranks above spam. Suspend the sending mechanism immediately, then decide whether the account is compromised or fraudulent. Phishing aimed at your customers to collect their ESP credentials feeds into [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts). ## Brand spoofing and lookalike domains **Definition**: an external attacker sends mail as a brand without touching the brand's infrastructure. The attacker either spoofs the exact domain (a forged From address, which an enforced [DMARC](https://emailmarketing.net/learn/authentication/dmarc) policy defeats) or uses **cousin or lookalike domains** (typos, added terms such as "-login", other top-level domains). A lookalike domain authenticates perfectly as itself, and so passes DMARC without trouble. - **Victim**: the brand and its recipients. The ESP is also a victim when its own brand, or its customers' domains, are imitated to phish credentials. - **ESP signals**: DMARC aggregate reports from customers that show unauthorized sources ([DMARC Aggregate Reports](https://emailmarketing.net/learn/authentication/dmarc-aggregate-reports)), signups during vetting that use lookalikes of known brands (a classic sign of a fraudulent signup; see [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting)), and hits from certificate transparency and domain registration monitoring. - **Actor**: external. In the variant an ESP sees, a fraudulent customer registers the lookalike domain and asks you to authenticate it. This is why [customer domain authentication](https://emailmarketing.net/learn/esp-operations/customer-domain-authentication) checks belong in onboarding. - **Response**: [Brand Protection and Domain Management](https://emailmarketing.net/learn/reference/brand-protection-domain-management) covers the domain inventory, defensive registration, monitoring and the takedown paths. DMARC enforcement handles spoofing of the exact domain. ## Snowshoeing (IP and domain) **Definition** (Spamhaus): spreading spam thinly across **many IP addresses and domains** to dilute the reputation of each identity and stay under filter thresholds. It uses "ranges and domains with poor or frequently changing identification," and the spammer uses the IP addresses legitimately (they are not botnets). The domain variant rotates newly registered domains in the same way. - **Victim**: filters and receivers, which the spammer evades. The ESP is also a victim, because its IP space and its tools for delegating domains are consumed, and so are its other customers when CSS listings hit shared ranges. - **ESP signals**: during vetting, prospects who request an unusually large number of IP addresses or sending domains for their volume, anonymized WHOIS records, many previous ESPs, and any hint of changing infrastructure to evade a listing (an explicit warning sign in the [Vetting BCP](https://emailmarketing.net/learn/esp-operations/customer-vetting)). In operation, frequent domain changes, sending that stops and starts to spread metrics across platforms, and [Spamhaus CSS](https://emailmarketing.net/learn/reference/spamhaus-listings-deep-dive#css--combined-spam-sources-127003) listings ("many frequently-changing domains is itself the signal"). - **Actor**: an intentional customer, by definition. Snowshoeing is a deliberate setup and never an accident. - **Response**: see the [Spamhaus Listings Deep Dive](https://emailmarketing.net/learn/reference/spamhaus-listings-deep-dive) for how the listing works and how to get delisted. Terminate rather than remediate, because a snowshoe operation has no legitimate configuration to restore. Prevent it through vetting and a model of tiered rights, in which new accounts do not get large sets of IP addresses or domains. ## List bombing / subscription bombing **Definition**: a denial-of-service (DoS) attack against one mailbox. A script submits the victim's address to thousands of unprotected signup forms, and the flood of legitimate confirmation and welcome mail buries the inbox, often to hide notifications of fraud. - **Victim**: the owner of the targeted mailbox. Secondary victims are the form owners (their lists are poisoned and receive trap submissions) and the ESP (Spamhaus listed ESP sending IP addresses during the 2016 wave). - **ESP signals**: unusual signup rates to a single address or domain across many customers' forms on the platform, floods of confirmation messages to one address, and a sudden start with no gradual ramp. - **Actor**: an external attacker. Customers with unprotected forms are negligent conduits. - **Response**: [Subscription Bombing & Signup-Form Abuse](https://emailmarketing.net/learn/esp-operations/subscription-bombing) gives the full playbook: detection signatures, requirements for CAPTCHA and confirmed opt-in (COI), suppression of each targeted address during an attack, and coordination across the industry. ## Malware / ransomware distribution **Definition**: mail that delivers malicious payloads, either as attachments (droppers, documents with macros) or as links to sites that host exploits or downloads. This includes the delivery of ransomware and recruitment into botnets. - **Victim**: the recipients' machines and organizations. The ESP's reputation collapses quickly, because distributing malware triggers the harshest responses from receivers and blocklists. - **ESP signals**: hits from scanning outbound attachments for malware (the Web Messaging BCP says to restrict the types of files that can be uploaded and to scan them for malware), SURBL malware or Spamhaus HBL hits on linked domains, and urgent notices from trusted reporters and computer emergency response teams (CERTs). On the hosting side, look for malware placed on customer sites (P2 in the hosting tiers). - **Actor**: rarely a deliberate ESP customer, since mainstream ESP tools are a poor channel for malware (attachments are limited and content is inspected). Usually the actor is a compromised customer site or account, or a fraudulent signup abusing free-tier sending. - **Response**: P2 in [Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk). Stop sending immediately, with no remediation window for the traffic itself. Then decide whether the account is compromised or fraudulent, as described in [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts). For detection in content, see [URL & Content Filtering](https://emailmarketing.net/learn/reference/url-and-content-filtering). ## 419 / advance-fee and other fraud content **Definition**: fraud in which the content itself is the crime. Examples are advance-fee fraud (called "419", after the section of the Nigerian Criminal Code on fraud), which promises a large payoff for an upfront fee; lottery and inheritance scams; fake jobs and overpayment fraud; romance scams that develop over time; and the "stranded traveler" plea, sent from a hijacked account to its own contacts. - **Victim**: the recipients, financially. The volume is usually low compared with UBE. What makes this type serious is the harm each message can do. - **ESP signals**: content heuristics and long-lived filter signatures (these scams are decades old and their wording barely changes), complaint text that describes the scam, and low-volume accounts sending mail styled as personal messages to scattered recipients. For the stranded-traveler variant, look for an established account that suddenly mails its whole contact list. - **Actor**: an intentional fraudulent signup, or a compromised account for the customized variants. The [Compromised User ID BCP](https://emailmarketing.net/learn/esp-operations/compromised-accounts#containment-and-remediation-compromised-user-id-bcp) classes stranded-traveler scams as "permanent credential, customized exploit," which always need human intervention. - **Response**: triage in [Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk). Fraud reports can also arrive through law enforcement, and those outrank spam in the queue. Fraudulent accounts are terminated without the courtesy steps. ## Backscatter generation **Definition**: misdirected bounces. A server accepts a message with a forged return address and then bounces it to that innocent address, instead of rejecting the message during the SMTP session. In volume, the bounces are themselves UBE, and the operator that sends them gets blocklisted. - **Victim**: the holders of the forged addresses (often the real users of a spoofed brand), then the ESP that generates the bounces, through blocklists focused on backscatter and through reputation damage. - **ESP signals**: outbound delivery status notifications (DSNs) or auto-replies to addresses you never delivered mail to, complaints about "bounces for mail I never sent", and listings on DNSBLs that target backscatter. - **Actor**: none in the usual sense. Backscatter is a **misconfiguration**: accepting mail and bouncing it later, autoresponders without safeguards, or challenge-response systems. The external spammer who forges your customers' addresses supplies the trigger but never touches your systems. - **Response**: [Abuse Desk: backscatter](https://emailmarketing.net/learn/esp-operations/abuse-desk#backscatter) describes the mitigations: reject during the SMTP session, Bounce Address Tag Validation (BATV), suppress bounces based on SPF, and clean the queue. For how bounces work, see [DSNs](https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications). ## DKIM replay **Definition**: an attacker obtains one message with a legitimate DKIM signature (for example, through a free trial or a signup confirmation sent to a mailbox the attacker controls) and sends it again, unchanged, to millions of recipients. Every copy carries a valid signature, so the reputation of the `d=` domain is spent on mail that the domain never sent to those recipients. - **Victim**: the signing domain. That is the ESP itself when customers sign with domains the ESP shares among them, or otherwise the customer's own domain. The recipients are secondary victims of the spam. - **ESP signals**: the defining anomaly is **reputation damage with no matching sending records**. You receive complaints and blocks for messages, recipients or volumes that do not appear in your logs, see a single Message-ID at huge scale in receiver feedback, or see domain reputation collapse on a stream whose own metrics look clean. - **Actor**: external. The attacker only needs to receive one signed message, and a free-tier signup is enough. This is why replay is specifically an attack on ESPs with self-service trials. - **Response**: [DKIM Replay Attacks](https://emailmarketing.net/learn/authentication/dkim-replay) covers the mitigations and their tradeoffs: a short `x=`, separate selectors and keys for each stream, oversigning, and controls on trial accounts. Key hygiene is covered in [DKIM Key Rotation](https://emailmarketing.net/learn/authentication/dkim-key-rotation). Vetting trial signups limits the attacker's access to freshly signed mail ([Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting)). ## Account takeover / compromised sending **Definition**: a legitimate customer account that is fully or partly under unauthorized control (a "compromised user account" in the words of the Compromised User ID BCP). The attacker uses it to send spam, phishing or fraud through the reputation the customer has earned and through the ESP's infrastructure. - **Victim**: first the customer (its reputation, data and contacts), then every tenant that shares its IP addresses or domains, then the recipients. - **ESP signals**: a **break from the account's own usual behavior**. Examples are logins from new locations or from places too far apart to travel between, unfamiliar user agents, sudden changes in volume or in the set of recipients, new kinds of content, deleted sent mail, and changed forwarding or reply-to settings. Other signals are a surge of FBL complaints on an account with a clean history, and intelligence from credential dumps that names customer email addresses. - **Actor**: a compromised customer, by definition. The test for a pattern of earlier valid use separates this from abuse at registration. - **Response**: [Compromised Accounts & Outbound Abuse](https://emailmarketing.net/learn/esp-operations/compromised-accounts) covers the whole lifecycle: detection feeds, the mitigations for the four types of compromise, forcing users to authenticate again, and handling repeat compromises. Reports often arrive through the [abuse desk](https://emailmarketing.net/learn/esp-operations/abuse-desk). For how FBLs work, see [Complaint Feedback Loops](https://emailmarketing.net/learn/list-management/complaint-feedback-loops). ## API-key abuse **Definition**: abusive sending through stolen or leaked API credentials rather than through an interactive login. The keys may have been committed to public repositories, taken from compromised customer servers, or phished. API-key abuse is a subtype of account takeover (ATO) with its own detection profile. It is listed separately because API traffic bypasses the login anomalies that most ATO detection relies on. This split reflects the practice of sending platforms (vendor security guidance on revoking leaked keys, and secret scanning of the kind GitHub offers), not a category formally defined by M3AAWG. - **Victim**: the customer that owns the key, and the shared infrastructure. - **ESP signals**: sending through the API with no matching activity in the dashboard, new source IP addresses or ASNs on the API path, notifications from secret scanning (keys leaked in public repositories), and a new or changed API integration just before a spike in trap hits or complaints. [Spam-Trap Incident Response](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response#4-re-vetting-the-customer) lists that last signal explicitly as a reason to vet the customer again. Volume patterns unlike the integration's history are another signal. - **Actor**: a compromised customer (leaked credential). Distinguish this from an intentional customer who scripts abuse through their own key, which is ordinary spam sent over an API. - **Response**: [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts). This applies the "temporary or permanent credential" model to machine credentials. Revoke the key immediately (a password reset is not enough, because the key survives password changes), issue replacement keys with limited scope, and audit what the key touched. To prevent it across the platform, give new accounts tiered rights, with API access restricted until tenure and reputation justify more ([Customer Vetting, fraud-prevention practices](https://emailmarketing.net/learn/esp-operations/customer-vetting#fraud-prevention-practices-hosting-abuse-bcp)), and enforce limits for each tenant to contain the damage ([Multi-Tenant Architecture](https://emailmarketing.net/learn/esp-operations/multi-tenant-architecture)). ## Affiliate spam **Definition**: spam sent by third-party affiliates who promote a customer's or an advertiser's offer for a commission. The advertiser may be entirely legitimate. The abuse comes from affiliates whose lists and methods nobody vetted. The Vetting BCP identifies this category as a historical source of abuse, and notes that programs a company runs itself are riskier than those run by reputable third-party networks. - **Victim**: the recipients (who never consented to the actual sender), the advertiser's brand, and the ESP if either the affiliate mail or the traffic to the promoted landing pages touches its infrastructure. "Spamvertising on network" has its own line in the hosting abuse tiers. - **ESP signals**: vetting answers that admit to affiliate programs, content full of redirectors and tracking chains that lead to third-party offers ([URL & Content Filtering](https://emailmarketing.net/learn/reference/url-and-content-filtering) covers redirectors), complaint and trap rates far above those of the same customer's streams to its own list, and Spamhaus DBL listings of the promoted domains even when your sending IP addresses stay clean. - **Actor**: an intentional customer (who knowingly buys traffic driven by spam) or a negligent customer (who runs a program without policing its affiliates). The affiliates themselves are outside the relationship with the ESP, and that gap in accountability is exactly what makes the category dangerous. - **Response**: [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting) (extra scrutiny at onboarding, and questions about how the program is managed). [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods) explains why affiliate lists produce complaint profiles close to those of purchased lists. Enforce through the standard abuse desk loop, and hold the customer answerable for its affiliates. ## Cold email / consent-less outreach **Definition** (M3AAWG, Nov 2025): unsolicited email from senders who are *otherwise legitimate and identifiable*, seeking a business relationship with recipients who have **no prior relationship, connection or consent**. It is sent with deceptive tactics to imitate one-to-one mail: small randomized batches, lookalike or throwaway domains, and technically valid authentication used as camouflage. M3AAWG's position is that cold email delivered deceptively **is spam**. M3AAWG's *Sender Best Common Practices* (Version 4.0, August 2026, section 4.5) summarizes the position more broadly: it describes cold email as abusive without the qualifier about deceptive delivery, and refers readers to the position paper for the full details. - **Victim**: the recipients, and the ESP. Cold email operations deliberately spread volume across accounts, subdomains and providers to avoid detection. They use up shared reputation and, at the account level, look much like snowshoeing. - **ESP signals**: many small "personalized" sends built on the same template, purchased or scraped B2B lists (role accounts, no evidence of opt-in), rapid creation of domains or subaccounts, integrations with sending tools marketed for "outbound sequences", and complaint rates that are modest in absolute terms but extreme for the volume. - **Actor**: an intentional customer, usually one who sincerely argues that the mail is legitimate. That is why the [M3AAWG position](https://emailmarketing.net/learn/reference/cold-email-position) exists: it gives abuse desks an industry consensus answer to "but it's not spam, it's sales outreach." - **Response**: [M3AAWG Position on Cold Email](https://emailmarketing.net/learn/reference/cold-email-position) sets out the argument about the definition and the detection indicators. Enforcement is driven by policy (a prohibition in the acceptable use policy, and screening during vetting) through [Customer Vetting](https://emailmarketing.net/learn/esp-operations/customer-vetting) and the [Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk). For why consent cannot be transferred, see [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods). ## Harvesting / scraping **Definition**: collecting email addresses without consent, by crawling websites, scraping platforms and breach dumps, or generating addresses from dictionaries, to build or sell lists. The abuse an ESP encounters comes later: a customer mailing a harvested list. - **Victim**: the address owners, then the customer who mails the list and the ESP. Harvested lists are full of [pristine spam traps](https://emailmarketing.net/learn/reference/spam-traps) (planted precisely to catch harvesters), invalid addresses and role accounts. - **ESP signals**: at list import, a high share of role accounts, implausible spreads of domains, and no opt-in metadata. At the first send, high hard-bounce rates together with pristine trap hits. That combination is the signature, since pristine traps point almost uniquely to harvested or purchased data. Another signal is a customer who cannot produce evidence of opt-in for addresses you spot-check (the [audit technique used in trap incidents](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response#investigating-opt-in-claims)). - **Actor**: the harvester is external. The actor the ESP has to deal with is the intentional or negligent customer who bought or scraped the list. - **Response**: [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods) places harvesting at the bottom of the range of acquisition methods, and every acceptable use policy prohibits it. [Spam Traps](https://emailmarketing.net/learn/reference/spam-traps) and [Spam-Trap Incident Response](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response) cover the incident that reveals it. CAN-SPAM increases the penalties for sending to harvested lists ([CAN-SPAM](https://emailmarketing.net/learn/compliance/can-spam)). ## Open relay / proxy abuse **Definition**: third parties route mail through infrastructure that should not relay it for them. The classic case is an SMTP server that accepts mail from anyone to anyone (an **open relay**). Modern equivalents are open proxies, hacked webmail or PHP mailer scripts, and misconfigured cloud instances that relay without authentication. - **Victim**: the whole receiving ecosystem, because the relay hides where the abuse came from, and the relay operator, whose IP addresses get listed. Spamhaus lists them on the SBL or XBL, and the PBL exists precisely because end-user IP space should not send mail directly to mail exchangers ([Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus)). - **ESP signals**: this is mostly a category for hosting providers. Look for customer virtual or dedicated servers sending mail that never passed through the ESP's submission path, anomalies in traffic analysis during network self-scans, blocklistings of customer host IP addresses, and complaints that attribute mail to customer infrastructure the customer does not recognize. - **Actor**: an external abuser exploiting a negligent customer's misconfiguration or unpatched software. This is the core scenario of the Hosting Abuse BCP, where outdated content management systems and scripts are the main route to compromise. - **Response**: the baseline for preventing abuse at hosting providers in [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts) (contractual requirements to patch, web application firewalls (WAFs), and a separate IPv6 address range for each customer so that blocks can be precise), the remediation loop in [Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk), and how delisting works in the [Spamhaus Listings Deep Dive](https://emailmarketing.net/learn/reference/spamhaus-listings-deep-dive). ## SMS / messaging ridealong **Definition**: abuse of messaging features other than email on platforms close to email, such as gateways from the web to SMS, e-card and invitation senders, "share this article" features, in-app notification and comment systems, and REST messaging APIs. The M3AAWG Web Messaging BCP treats these and webmail as one attack surface. Any feature that relays content supplied by a user to a recipient the user chooses will be scripted for spam once filtering on the email path makes it the cheaper channel. - **Victim**: the recipients on the other channel. SMS spam costs more and intrudes more per message than email, and carriers penalize the platform severely. The platform's relationships with carriers and aggregators play the role that blocklists play in email. - **ESP signals**: unusual volume for a single feature (messages sent, invitations issued) compared with the audited resource baselines that the Web Messaging BCP prescribes, patterns of registration abuse feeding the feature, identical payloads across many accounts, and short messages full of URLs. - **Actor**: external, through scripted signups, or compromised accounts. The actors are the same as for email abuse: the channel differs, but the playbook does not. - **Response**: [Compromised Accounts](https://emailmarketing.net/learn/esp-operations/compromised-accounts). The three layers of defense in the Web Messaging BCP (access to the user interface, content filtering and distribution controls) were written for exactly this surface. Apply rate limits to "almost all web services accepting or relaying user-generated content." Compliance regimes on the carrier side (for example, 10DLC registration in the US) are outside the email scope of this reference. The entry is here because the abuse arrives through the same accounts and forms that the email side polices. ## Using the taxonomy For a report that has not been classified yet, follow this sequence: 1. Identify the abuse type from the signals above. 2. Place it in the [abuse desk priority tiers](https://emailmarketing.net/learn/esp-operations/abuse-desk#complaint-priority-tiers-hosting-abuse-bcp). Child sexual abuse material (CSAM) and threats outrank everything, and malicious activity (phishing, malware) outranks spam. 3. Identify the actor class before you choose between recovery and enforcement. The courtesy steps you owe a compromised customer are exactly the steps you must deny a fraudulent one. 4. Hand the case to the guidance for that type. Several types often occur together: account takeover leading to phishing, harvesting leading to spam and then a trap incident, or a fraudulent signup leading to snowshoeing. Classify the case by the mechanism you must shut off, not by the content you observed. # M3AAWG Position on Cold Email (Nov 2025) > The industry-consensus stance — deceptive delivery of unsolicited "cold email" is an abusive practice; full definition, deceptive-tactic list, detection indicators, and the non-transferability of consent. Source: emailmarketing.net — https://emailmarketing.net/learn/reference/cold-email-position If a customer argues that its cold outreach is sales, not spam, the industry's answer is clear: sending unsolicited email with deceptive delivery methods is abuse. The Messaging, Malware and Mobile Anti-Abuse Working Group (M3AAWG), whose members include the major mailbox providers, set out that position in a one-page statement. The statement is *M3AAWG Position on Cold Email*, November 2025, Version 1.0 (M3AAWG-154; reference URL m3aawg.org/M3AAWGPositionOnColdEmail). It is the industry's explicit position on "cold outreach", and it focuses on **deceptive practices used to deploy cold-email communications that mimic or appear to be one-to-one communications, but in reality are considered spam.** ## Definition > In email marketing terms, a "Cold Email" is an unsolicited email from otherwise legitimate, identifiable senders that tries to create a business relationship, a sale, a business opportunity, or other professional benefit from a **recipient who has no prior relationship, connection, or consent with the sender or business**. Note that the senders are described as "otherwise legitimate, identifiable". The position is not about criminal spam operations. What defines cold email is the absence of any prior relationship, connection or consent. ## Deceptive tactics the position targets To look personally related to the recipient and appear to be one-to-one messages, cold emails sent in bulk often use: - Authentication (SPF, DKIM and DMARC, technically compliant but used as camouflage) - Opt-out links - Personalization (first name, job title, company name, and so on) - Other content generated by AI Misleading delivery methods, used to avoid detection by spam filters: - Sending at random intervals - **Lookalike domains**, which resemble legitimate domains but are actually unrelated (M3AAWG's example: `paypal-security.com` for `paypal.com`) - Multiple sending accounts > **The practice of using or facilitating deceptive delivery methods to mask Cold Emailing is in direct violation of core M3AAWG values.** ## Detection indicators The reputation metrics that indicate a sender is sending cold email include, but are not limited to: | Indicator | Where to read more | |---|---| | Detection in spam traps | [Spam Traps](https://emailmarketing.net/learn/reference/spam-traps) · [Trap Incident Response](https://emailmarketing.net/learn/esp-operations/spam-trap-incident-response) | | Blocklisting | [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus) | | High numbers of hard bounces for unknown users | [DSNs](https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications) | | High complaint rates | [Complaint Feedback Loops](https://emailmarketing.net/learn/list-management/complaint-feedback-loops) | ## Particularly egregious practices Any attempt to do the following "are particularly egregious and are not acceptable in any manner": - Get around limits on mail volume - Avoid spam filters - Hide sending domains - **Simulate subscriber engagement artificially** (for example, with tools that fake warm-up or engagement) - Use other tools or services that exploit loopholes at mailbox providers or cloud platforms ## Consent cannot be transferred between channels M3AAWG's position is that **the specific form of consent received to market to an individual is not transferable between marketing channels**. Its example: consent to be contacted or marketed to by telephone does not give the business consent to contact that person by cold email. ## The position > **M3AAWG's position is that using deceptive and misleading delivery methods to send unsolicited email (including Cold Email) is an abusive practice.** M3AAWG's *Sender Best Common Practices* (Version 4.0, August 2026, section 4.5) summarizes this position in one paragraph, and its wording is broader than the position paper. The summary says M3AAWG views cold email itself as abusive, without the qualifier about deceptive or misleading delivery methods. It then refers readers to the Position on Cold Email for the full details. If you read both, the position paper is the document the summary points to. ## What this means for an ESP - Cold email may be legal in some jurisdictions (for example, under the opt-out regime of CAN-SPAM; see [CAN-SPAM](https://emailmarketing.net/learn/compliance/can-spam)). But the industry body that includes the major mailbox providers classifies cold email delivered deceptively as **abuse**, not marketing. Being legal does not make mail deliverable or acceptable. - The list of detection indicators also works as a checklist for vetting and monitoring. Trap hits, blocklistings, bounces for unknown users and complaints, together on one customer's stream, are the fingerprint of cold email. - Customers who rotate domains, use lookalike domains, run farms of mailbox accounts, randomize their sending schedule or use services that simulate engagement ("warm-up" services) fall under the "particularly egregious" clause. - The position is **in addition to and inclusive of** all other M3AAWG best practice guidance. It builds explicitly on the *M3AAWG Position on Selling Email Address Lists* (m3aawg.org/SellingEmailLists) and the *M3AAWG Position on Email Appending* (m3aawg.org/AppendingPosition). Selling lists and appending email addresses were already condemned, and this position applies the same stance to the way cold outreach is delivered. ## Related articles - [Consent Methods](https://emailmarketing.net/learn/list-management/consent-methods) - [Two Worlds of Email Deliverability](https://emailmarketing.net/learn/strategy/two-worlds-of-email-deliverability) - [M3AAWG Senders BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp) # OECD Anti-Spam Toolkit (2006) > The OECD's cross-border anti-spam policy framework: eight elements, the Council Recommendation on enforcement co-operation, and the BIAC/MAAWG ISP and email-marketing best practices. Source: emailmarketing.net — https://emailmarketing.net/learn/reference/oecd-anti-spam-toolkit If you need to compare national anti-spam laws, or to understand how enforcement authorities in different countries work together, the Organisation for Economic Co-operation and Development (OECD) Anti-Spam Toolkit is the closest thing to an internationally agreed reference design for national anti-spam policy. The **Anti-Spam Toolkit of Recommended Policies and Measures** was produced by the **OECD Task Force on Spam**, which the OECD Council approved in 2004 and whose mandate ended in June 2006. The ICCP and CCP committees declassified the Toolkit on 29 March 2006. The OECD Council adopted the accompanying **Council Recommendation on Cross-Border Co-operation in the Enforcement of Laws Against Spam** on **13 April 2006**. The OECD then had 30 member countries, and the Recommendation also invites non-member economies to take account of it. The Toolkit is a **policy and enforcement framework**. It does not itself impose obligations on senders. It includes two industry best-practice documents as Annexes: one from BIAC and MAAWG for ISPs, and one from BIAC for email marketers. ## What still holds and what is dated The Toolkit predates mature SPF, DKIM and DMARC, the 2024 bulk-sender requirements from Gmail and Yahoo, mobile-first messaging, and modern reputation systems. Its **technical** sections (Element IV) refer to SPF, "DKIM/META", Sender-ID, greylisting, BATV and SES, and PTR checks. These are of historical interest, and current practice is covered in dedicated articles on each topic. What remains **directly useful today** is the framework for policy and cross-border enforcement: the checklist for designing legislation, the types of consent, the reasoning about who is liable, the model for enforcement co-operation, and the best-practice lists for ISPs and senders, which the M3AAWG documents later expanded. Use the Toolkit for the framework, and the linked references for current technical practice. ## The eight elements The Toolkit is organised around eight related elements of a comprehensive public-policy framework: | # | Element | Core proposition | |---|---|---| | I | **Regulatory approaches** | Clear, simple anti-spam legislation that sets out what is and is not allowed | | II | **Enforcement** | Empowered authorities, fast sanctions, cross-border co-operation | | III | **Industry-driven initiatives** | Self-regulation, codes of conduct, and acceptable use policies that work together with the law | | IV | **Technical measures** | Layered anti-spam tools. No single method is enough on its own | | V | **Education and awareness** | Educate both recipients and senders. Target users, groups and small and medium-sized enterprises (SMEs) | | VI | **Co-operative partnerships** | Public-private collaboration in design and enforcement | | VII | **Spam metrics** | Measure the effectiveness of policy and technical measures (the MAAWG Email Metrics Program is noted) | | VIII | **Global co-operation (Outreach)** | Extend the framework to non-OECD economies, with bilateral and multilateral aid | ## Element I: Regulatory design Legislation should aim to **preserve the benefits of electronic communication**, to **prohibit and sanction spamming as defined by national law**, and to **reduce the amount of spam** by targeting different stages of sending. The value of legislation depends on the certainty that sanctions will be applied. Four general legislative principles: - **Policy direction**: set out the main objectives early. They should underlie the whole strategy. - **Regulatory simplicity**: the legislation should be short and simple. - **Enforcement effectiveness**: pair the law with an effective system of sanctions, appropriate standards of proof, and authorities with resources. Poor enforcement makes good legislation useless. - **International linkages**: spam crosses borders, so plan for co-operation and information exchange with foreign authorities. ### Legislative best-practice checklist The Toolkit's table for the regulatory element is a useful design checklist for any jurisdiction that is drafting or comparing anti-spam law: | Issue | Recommended approach | |---|---| | **Services concerned (scope)** | Choose a technology-specific law (aimed at the media that cause problems today) or a technology-neutral one (flexible and future-proof). Real-time voice could be regulated separately. | | **Commercial purpose** | Decide whether the law covers only commercial and transactional messages, or also non-commercial ones (political, religious). Specific categories may be expressly excluded (for example, academic institutions writing to their alumni). | | **Consent** | Three approaches, often combined: **expressed** (active permission, which is opt-in); **inferred or implicit** (from conduct or an existing business relationship); **assumed** (presumed until withdrawn, which is opt-out). | | **Unsubscribe address** | Messages should carry a working opt-out. This implies a **valid return address**, and a **postal address** may also be required. Leaving these out, or failing to stop sending within the legal period, should be sanctionable. | | **Information about message origins** | Prohibit falsified or concealed headers and sender identification. Require the marketer behind the sender to be clearly identified. | | **Not bulk** | Email may be classified as spam only above a volume threshold, **typically 50–100 messages over 24 hours**, so that legitimate bulk mail such as newsletters is not caught. | | **Labelling** | The law may require a specific label for advertising or pornographic content. | | **Person authorising or benefiting** | Sanction not only the person who physically sends, but also whoever commissioned or authorised the sending or profited financially from it. That person is easier to identify, which helps enforcement. | | **Harvesting and dictionary attacks** | Add sanctions where address-harvesting software, harvested lists, or automatic address generation are used. | | **Illegal access** | Forbid the unauthorised use of protected computer resources (compromised machines used to send). | | **Misleading or fraudulent content** | Scams and phishing may be ordinary computer-related crimes. Anti-spam law may add bans on deceptive subject headings and work together with anti-fraud and consumer law. | | **Security threats (malware)** | Often made a crime by statute or through the **Council of Europe Convention on Cybercrime**. | | **Cross-border jurisdiction** | Cover messages sent to or from the jurisdiction, and messages commissioned from within it or benefiting someone within it. Give authorities the power to co-operate across borders. | The checklist maps onto the national regimes: [CAN-SPAM (US)](https://emailmarketing.net/learn/compliance/can-spam) follows the opt-out, assumed-consent model; [CASL (Canada)](https://emailmarketing.net/learn/compliance/casl) and [UK PECR](https://emailmarketing.net/learn/compliance/uk-pecr-email-marketing) follow the expressed, opt-in model. See also [EU ePrivacy & GDPR](https://emailmarketing.net/learn/compliance/eu-eprivacy-and-gdpr-email-marketing) and [Australia's Spam Act](https://emailmarketing.net/learn/compliance/australia-spam-act). ## Element II: Enforcement and the Council Recommendation The **Recommendation on Cross-Border Co-operation in the Enforcement of Laws Against Spam** (Annex I) is the core of the Toolkit, binding in spirit. It covers **serious violations only**: conduct that (a) causes or may cause injury, financial or otherwise, to a significant number of recipients, (b) affects particularly large numbers of recipients, or (c) causes substantial harm. The decision to assist always rests with the **Spam Enforcement Authority** that receives the request. Governments should improve their legislation to: 1. Establish a **domestic framework** of laws, enforcement authorities and practices. 2. Improve the authorities' **ability to co-operate** with foreign counterparts (share information, provide investigative assistance). 3. Improve **procedures** for co-operation, by prioritising requests and using common resources and networks. 4. Develop **co-operative models** between enforcement authorities and private-sector entities. The Recommendation has four operative parts: | Part | Obligation on member countries | |---|---| | **(a) Domestic framework** | Maintain effective laws and Spam Enforcement Authorities. Give those authorities the power to obtain evidence, investigate and act in a timely manner against violations committed from their territory or affecting it. Enable action against both **senders** and **those who profit** from the sending. Review frameworks periodically. Consider **redress for financial injury**. | | **(b) Ability to co-operate** | Provide ways to share information with foreign authorities on request, subject to safeguards. Enable investigative assistance (obtaining information, documents and records, and locating persons and things). **Designate a contact point** and register it with the OECD Secretariat, which keeps and publishes the list. | | **(c) Procedures** | Before requesting assistance, do preliminary investigation to confirm that a request is warranted. Prioritise requests. Use common resources (the OECD spam website, informal channels, existing enforcement networks). | | **(d) Private-sector co-operation** | Authorities, businesses, industry groups and consumer groups should co-operate on user education, referral of complaint data, and sharing of investigation tools, analysis and trend information. Encourage co-operation to locate and identify spammers, reduce inaccurate domain-registration data, and make the Internet more secure. | The OECD instructed its ICCP and CCP committees to monitor progress within three years. This model of designated contact points, prioritised mutual assistance and private-sector data sharing is the ancestor of today's practical escalation and referral channels, described in [Cross-Provider Escalation & Mitigation Channels](https://emailmarketing.net/learn/providers/escalation-and-mitigation-channels), and of abuse-report intake, described in [Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk). ## Element III: Industry-driven initiatives Anti-spam law should work together with private-sector self-regulation. The Task Force welcomed the best-practice work of BIAC and MAAWG. It noted that in some jurisdictions such codes could be **formally registered with the national enforcement agency**, so that the authority can compel compliance where the industry association cannot. The actors and their duties: - **Providers of online services or goods**: respect customer privacy. Adopt clear company email policies and apply them consistently (for example, never ask for personal information, or ideally never put a clickable link in an email). Authenticate mail or use digital signatures. Prevent phishing with clear domain names and **defensive domain registration**, monitoring of look-alike sites, and control of "bounced" messages. Tell customers what mail the company will and will not send. - **Direct marketers**: adopt and implement a code of conduct for electronic marketing. Build closer relationships with ISPs to reduce false positives. Align codes with anti-spam law nationally and internationally. - **ISPs and network operators**: implement self-regulation. **Adopt and enforce Acceptable Use Policies (AUPs)** as contract terms whose breach allows suspension or termination. Inform subscribers about anti-spam and anti-virus filtering. ### BIAC and MAAWG best practices for ISPs and network operators (Annex II) Here "ISPs and network operators" means **any entity operating an SMTP server connected to the Internet**. Each practice applies only where national law does not contradict it: | # | Practice | |---|---| | 1 | Address **compromised end-user equipment**, with timely processes to manage it or stop it as a source of spam | | 2 | Use **industry-standard authentication** for email, for sources, or for both | | 3 | **Block potentially infecting attachments**. Where content is filtered, obtain the customer's prior agreement as the law requires | | 4 | **Actively monitor inbound and outbound volume** to detect unusual activity and its source, and respond | | 5 | Establish **inter-company processes** for reacting to other operators' incident reports, and **accept end-user complaints** | | 6 | **Communicate security policies and procedures** to subscribers | | 7 | Send **non-delivery notices (NDNs) only for messages originated by their own account holders**, which avoids [backscatter](https://emailmarketing.net/learn/bounce-handling/backscatter-and-batv) | | 8 | Ensure that **only their account holders use their mail submission servers** (submission authentication) | | 9 | Maintain **accurate WHOIS, DNS and IP registration records** (WHOIS, SWIP, RWHOIS), with role contacts (postal, phone, email) for resolving abuse | | 10 | Ensure that all public IP addresses have correct **forward and reverse DNS** and WHOIS or SWIP entries, and that private address space complies with **RFC 1918** | These practices are the direct precursors of the [M3AAWG Senders BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp) and of the operational controls in [Sending Infrastructure Practices](https://emailmarketing.net/learn/operations/sending-infrastructure-practices). [Abuse Desk](https://emailmarketing.net/learn/esp-operations/abuse-desk) expands on role accounts and WHOIS hygiene, and [IPv6 Reverse DNS](https://emailmarketing.net/learn/operations/ipv6-reverse-dns) on PTR expectations. ### BIAC best practices for email marketing (Annex III) This is a voluntary code for marketers. Where national law is stricter, the law governs. It contains nine recommendations and a set of technical tips: | # | Recommendation | |---|---| | 1 | Respect the **consent requirements of the country from which the marketer operates**, unless the marketer knowingly or intentionally targets consumers in another country | | 2 | **Keep records of opt-in and opt-out requests** so that lists can be cleaned before broadcasts. Record proof of consent, including the date and time, the originating IP address, and the collection URL or medium, and provide it on request | | 3 | In all marketing mail (not transactional mail), provide an **obvious, clear and efficient opt-out by email or on the web**. Do not bury it. Confirm the opt-out without requiring further action from the consumer | | 4 | Every message must **clearly identify the sender**. The subject line and body must accurately reflect the content, origin and purpose, and the sender's identity should appear **above the fold** where possible. Avoid subject lines about "free offers" or "winning prizes", which trigger spam filters. Include the sender's main **postal address**. | | 5 | Provide a **link to the sender's privacy policy** | | 6 | Marketers, list brokers and list owners must **ensure that list addresses were obtained legally**. Review the broker's privacy policy and collection procedures, and obtain a contractual warranty that collection was legal | | 7 | Use **great discretion when marketing to children and young people**. Adult content (sexually explicit material, gaming and gambling, tobacco, alcohol, firearms) needs age-appropriate handling and, where applicable, the tag **"SEXUALLY EXPLICIT"** at the start of the subject line. Seek parental permission where required | | 8 | Have a **fair, effective, confidential and easy-to-use system for handling complaints** | | 9 | Disclose the addresses of existing consumers to third-party affiliates or within a family of companies **only if** they are used consistently with the purpose of collection, an easy opt-out exists, or consent was given. Be transparent about brand relationships | **Technical tips for electronic marketers** (Annex III): - All servers (inbound, outbound, websites) should have **reverse DNS (PTR)** entries. Forward and reverse lookups should match, and sending machines should **identify themselves with that name in HELO or EHLO**. - Publish **SPF records, domain-key records (the predecessor of DKIM), or both** for senders and for third-party sites associated with a mailing, and keep them current. - Give outbound mail servers **IP addresses distinct from the site's other servers**. - Keep **WHOIS records accurate and complete**. - Keep **role accounts (postmaster@, abuse@)** working and actively monitored for all sender domains, including sites referenced in the content. **Bounce handling** (Annex III): | Bounce type | Rule | |---|---| | **Hard (5xx)**: no such user, or mailbox unavailable | Promptly **suppress** the address across all lists once refusals reach **3 or more in 14 days**. If a 5xx indicates *spam blocking* rather than a bad address, the address may be reactivated once the block is removed. | | **Soft (4xx)**: transient failure | **Remove** the address when refusals exceed **5 in consecutive campaigns from a single list, or 5 in aggregate across several lists within 10 days**. | For modern, provider-specific handling, compare [Enhanced Status Codes](https://emailmarketing.net/learn/bounce-handling/smtp-enhanced-status-codes), [List Hygiene & Sunset Policies](https://emailmarketing.net/learn/operations/list-hygiene-and-sunset-policies) and [Suppression-List Architecture](https://emailmarketing.net/learn/esp-operations/suppression-list-architecture). ## Elements IV–VIII (brief) - **IV Technical measures**: no single tool is enough. Layering at origination, on the backbone, at the gateway and at the recipient greatly reduces spam. Current practice is covered under [authentication](https://emailmarketing.net/learn/authentication/spf), [transport security](https://emailmarketing.net/learn/transport-security/mta-sts) and filtering. - **V Education and awareness**: governments run public campaigns. ISPs use their customer channels (website, portal, SMS, newsletters) to explain how to avoid spam, which filters exist, how to report abuse, and the **abuse-desk contact**. "The education of recipients is as important as the education of senders." - **VI Co-operative partnerships**: anti-spam strategy should be developed in partnership between the public and private sectors. ISPs and enforcement authorities should stay in contact to report spam cases and share network data. - **VII Spam metrics**: measure in order to evaluate national strategies. The Task Force welcomed and encouraged **MAAWG's Email Metrics Program**. - **VIII Global co-operation (Outreach)**: make the Toolkit and best practices available to non-OECD economies, and promote anti-spam activity abroad through bilateral and multilateral arrangements. A companion site (historically `www.oecd-antispam.org`) hosted updated information on national spam laws and the list of national enforcement contact points. ## Why this still matters for running an ESP Turn to the Toolkit when a question is about jurisdiction or crosses borders rather than being technical: which legislative model a target country follows, how enforcement authorities co-operate across borders, what an ISP's acceptable use policy and abuse obligations look like in policy terms, and how best practices for senders and marketers were written down before M3AAWG formalised them. For day-to-day deliverability, the specific provider requirements and authentication standards govern. The OECD framework governs the legal and inter-agency layer around them. # Routing Security and IP Hijacking > BGP/IP hijacking and the IPv4 transfer/leasing market as email-abuse vectors — how spammers acquire fresh "clean" IP space, the research quantifying transferred/leased-prefix abuse, Spamhaus's network-hijacking observations, and RPKI/ROA as the mitigation. Source: emailmarketing.net — https://emailmarketing.net/learn/reference/routing-security-and-ip-hijacking If you acquire or vet IP address space for an email service provider (ESP), the history of that space matters as much as its current reputation. Email reputation is usually discussed at the level of IP addresses and domains. The layer beneath it, which decides who may announce an IP range into the global routing table, is also used for abuse. Spammers, bulletproof hosting providers and botnet operators need a constant supply of IPv4 space that has **not yet been "burned"** (listed on blocklists), because their sending burns reputation fast. With IPv4 addresses exhausted, three ways of getting fresh space have become channels for abuse: - **BGP or IP hijacking**: announcing address space you do not own; - the **IPv4 transfer market**: buying blocks, including blocks with a hidden history of abuse; - the **IPv4 leasing market**: renting blocks month by month, which hides the real user from WHOIS. The mitigation is **RPKI and Route Origin Authorizations (ROAs)**, which let a legitimate sender prove, and a receiver verify, that the routing of a range is authorized. For the checklist of what to inspect before you assign a leased or purchased block to customers, see [IP-Acquisition Diligence](https://emailmarketing.net/learn/esp-operations/ip-acquisition-diligence). For how the resulting listings appear and are removed, see [Blocklists and Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus) and [Spamhaus Listings Deep Dive](https://emailmarketing.net/learn/reference/spamhaus-listings-deep-dive). ## Why hijacking is an email problem Spammers rotate IP addresses the way they rotate domains. An IP address that sends spam soon earns a poor reputation and gets listed, so the operator needs **fresh, clean IP addresses all the time**. Announcing IP space that legitimately belongs to someone else, or that has been abandoned, meets that need without any registry paperwork that links the abuse back to the operator. The stolen space is used for a burst of spam or for hosting malware, then released before or while it gets listed, and the cycle starts again. This is the network-level equivalent of [snowshoe spamming](https://emailmarketing.net/learn/ip-management/basic-ip-allocation), which spreads the load thinly across many IP addresses to stay under the thresholds applied to each one. The difference is that the IP addresses themselves are taken without permission. Spamhaus's DROP, EDROP and ASN-DROP datasets, and the SBL DROP return code (`127.0.0.9`, "hijacked/leased-to-spammers netblocks; never route"), exist specifically to flag this (see [Blocklists and Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus)). ## How criminals acquire IP ranges Spamhaus lists four ways to acquire ranges. Two are legitimate on paper and two are abusive: | Path | How it works | Where the abuse comes in | |---|---|---| | Direct assignment from a Regional Internet Registry (RIR) | Become a member of an RIR and receive an allocation | Legitimate, but slow, and space is increasingly scarce | | Assignment from an ISP | An upstream provider allocates space to a downstream customer | Legitimate, but bulletproof hosting providers take advantage of careless upstream providers | | **Hijacking abandoned ranges** | Impersonate the original owner of dormant space | Route space that nobody is watching | | **Temporarily stealing allocated ranges** | Announce part of someone's live space, then release it | "Route rotation": send spam, then vanish | ### Legacy space is the favourite target Ranges issued **before ARIN was created in 1997** ("legacy" allocations) are prime targets for hijacking. They make up roughly **35.9% of the entire IPv4 address space**. They were issued before modern registration practices, they often have no owner who pays for them or pays attention to them, and they **cannot be revoked for non-payment**. A block can therefore lie dormant and forgotten for years, until an attacker brings it back into use. ### The Chemstress case (147.50.0.0/16): how a hijack works Spamhaus documents a typical takeover of a dormant /16. It shows that a hijack is a **social engineering operation against the registry**, not only a technical trick with BGP: | Date | Step | |---|---| | 2011-08-19 | Register a look-alike domain using the name of the original ARIN contact | | 2011-12-12 | Persuade ARIN, through social engineering, to change the block's contact information to the attacker | | 2011-12-16 | Begin unauthorized BGP route announcements for the /16 | | 2012-06-10 | Change the company address to a mail-forwarding service | Once the registry record is falsified, the fraudulent route announcement looks authorized to any network that checks only WHOIS. ## Fighting abuse at the edge Spamhaus argues for blocking malicious traffic at the **routing layer, on edge routers** (through BGP), rather than waiting for detection at the application layer (SMTP or HTTP). It names these patterns of abuse: - **Rogue autonomous systems.** Bad actors run their own autonomous system (AS) and announce routes through BGP. Chains of compromised autonomous systems are common, and criminals exploit **"customer-of-a-customer"** relationships so that no single upstream provider feels accountable. - **Accepting routes without checking.** Upstream providers often pass on rogue routes for **months**, because of weak vetting and "automated processes set up to accept, almost blindly, whatever customers announce." - **Direct peering to stay invisible.** Criminal groups peer directly with a target provider and keep their networks off the global routing table, so that route monitors do not detect them. **Mitigations Spamhaus recommends for network operators:** - Deploy the **DROP, EDROP and ASN-DROP** lists on edge routers to deny connectivity to networks known to be criminal. - **Verify the routes your BGP customers announce.** Look into a customer's history of abuse and routing before you accept their routes, and watch for **route rotation**: announce, send spam, withdraw. - Adopt **BGP Flowspec (RFC 5575 / RFC 7674)** to push dynamic access control lists (ACLs) to edge devices in real time. For example, feed data from the **BCL** (Botnet Controller List) through Flowspec to blackhole botnet command and control servers, one IP address at a time. - Get the networking and anti-abuse teams to work together, since they usually sit in separate silos. For scale, Spamhaus reports that its DNSBLs protect ~**2.7 billion mailboxes**, that it was founded in 1998, and that it has ~**30 investigators across 9 countries**. The BCL list stays small but is growing. ## The IPv4 transfer market as an abuse channel When you buy a block on the secondary market, you may be buying a hidden history of abuse, or the seller may be a repeat abuser getting rid of burned space. Giotsas, Livadariu & Gigis (**PAM 2020**, "A first look at the misuse and abuse of the IPv4 Transfer Market") measured this across a decade of transfers (2009-10-12 to 2019-08-24). They combined IP blocklists, honeypot data, detection of prefix hijacking, and lists of AS reputation: | Finding | Value | |---|---| | Transferred routed prefixes with ≥1 blocklist report | **~40%** | | Routed prefixes not transferred with ≥1 blocklist report | **6%** | | Likelihood of blocklisting, transferred /24 sub-prefixes compared with those not transferred | **6× more likely** | | Transferred space overall, depending on the type of abuse | **4× to 25× more likely** to be blocklisted | | Transfers whose reported date or recipient organization **disagreed** with WHOIS and BGP routing | **>65%** | | Transferred prefixes covered by a ROA with an **inconsistent origin ASN** | **6%** | | Rate of blocklisted space for autonomous systems acting as **both buyer and seller**, compared with those in a single role | **2× higher** | The timing shows **deliberate evasion of filters**. Blocklist reports **peak within one year after** the transfer date, for every type of malicious activity (spam, phishing, malware, botnet command and control, prefix hijacking, unsolicited scans, illegal content). The abuse appears after the transfer even when the address space was in use and visible to scans **at least a month before** it. The imbalance remains after removing legitimate space belonging to cloud providers and very large networks (AWS, Google Cloud), whose infrastructure services are abused for short-lived malware virtual machines. **Repeat BGP hijackers and bulletproof hosting providers are over-represented** among market participants. The authors describe the numbers as a **lower bound**, because transactions that are not reported never appear in RIR databases. ## The IPv4 leasing market: a newer channel that WHOIS cannot see Leasing means renting a block for as little as one month, while the prefix stays registered to the lessor. It is less transparent than buying. Because the RIR processes no transfer, **the lessee's identity is never recorded in WHOIS**. The real user of the address block is hidden, and abuse complaints and vulnerability notifications do not reach them. Malicious actors use this to **rotate "clean" blocks quickly and discard used ones**, getting around IP blocklisting. Degen et al. (**TMA 2025**, University of Twente / CAIDA, "From Scarcity to Opportunity: Examining Abuse of the IPv4 Leasing Market") compared leased and non-leased prefixes over 82 days (Dec 2024 – Mar 2025) using FireHOL blocklists: | Finding | Value | |---|---| | Leased prefixes blocklisted (FireHOL Level 1) compared with non-leased prefixes, Feb 2025 snapshot | **2.89× more likely** (0.518% compared with a mean of 0.179%) | | The same comparison on the broader, full aggregated set of 253 blocklists | **1.84× more likely** (32.0% compared with 17.4%) | | Prevalence of anonymizers (VPNs and proxies) in leased space compared with non-leased space | **2.59× more prevalent** | | Increase in blocklisting in the `abuse` category **30 days** after the lease starts | **+60.2%** | | Increase in blocklisting in the `abuse` category **150 days** after the lease starts | up to **+269%** | | Increase in blocklisting in the `malware` category **150 days** after the lease starts | **+37.9%** | Listings of leased prefixes were **stable before the lease started, and then rose steadily** through the measurement period. That is the pattern of a block that stays clean until a lessee starts abusing it. The Level 1 figure (2.89×) is a conservative minimum, and the figure from the broad set of lists is an upper limit. **The size of the market (TMA 2025).** More than >**6,184 transfers** covering **30.2M addresses** took place in 2024. One broker alone reported **757 transfers worth US$60.7M**. IPv4 addresses are now used as collateral for loans: one company issued **US$206M** in notes secured by its IPv4 assets. Waiting times at the RIRs as of Feb 2025 were **498 days at RIPE NCC, 615 days at ARIN and 1,417 days at LACNIC**. This scarcity is what pushes operators to the secondary and leasing markets in the first place. Notably, **some brokers now offer RPKI management, prefix "parking" (announcing a prefix from the broker's own AS), IP reputation services and delisting as a service** as extras. These are legitimate uses of the same tools that abusers exploit. **What this means for operators.** A leased or transferred block is statistically more likely to be dirty than routed space chosen at random, and its history is harder to see. Checking reputation before you acquire a block is not optional: look at its blocklist history, its earlier SWIP and WHOIS records, and SenderScore and Talos (see [IP-Acquisition Diligence](https://emailmarketing.net/learn/esp-operations/ip-acquisition-diligence)). ## RPKI and ROAs: the mitigation **RPKI (Resource Public Key Infrastructure)** uses cryptography to bind IP prefixes to the AS numbers authorized to originate them, so networks can reject false route announcements. Origin validation is currently the **only** RPKI function in operational use. ### Route Origin Authorization (ROA) A ROA is a signed object, published by the legitimate holder of the resource, that contains three fields (RFC 6482): | Field | Meaning | |---|---| | **Prefix** | The IP address block being authorized | | **Origin AS number** | The single AS allowed to originate that prefix in BGP | | **maxLength** | The most specific prefix length the AS may announce | For example, a ROA for `192.0.1.0/24` with a **maxLength of /25** authorizes announcing that `/24` or its two adjacent `/25`s, but **nothing more specific**. Limiting maxLength blocks the classic hijack, in which the attacker announces a more specific sub-prefix (which BGP always prefers) to divert traffic. ### Route Origin Validation (ROV) states A router compares each BGP announcement with the set of **Validated ROA Payloads (VRPs)** and gives it one of three states: | State | Condition | Typical action | |---|---|---| | **Valid** | The prefix and origin AS are covered by ≥1 VRP, within maxLength | Accept | | **Invalid** | Wrong origin AS, or more specific than maxLength allows | Reject, or give the route lower preference | | **NotFound** (Unknown) | No VRP covers the prefix (no ROA is published) | Accept (fail open) | Space without a ROA ends up **NotFound**, not Invalid, so RPKI protects only the prefixes whose legitimate holder has published a ROA. That is the direct action for a sender who wants clean space: **publish ROAs for your sending ranges**. A hijacker's announcement of your space that is more specific or has the wrong origin is then marked **Invalid** and dropped by networks that enforce ROV, and a receiver's routing infrastructure treats your own announcements as authorized. It also protects you as a buyer. The PAM 2020 finding that **6% of transferred prefixes covered by a ROA had an inconsistent origin ASN** is exactly the kind of mismatch ROV brings to light. The RPKI documentation notes that the **vast majority of route hijacks are unintentional**, caused by typing mistakes in the origin or by route leaks. Broad ROA coverage makes both accidental and malicious wrong origins **easy to identify and reject**. ### Beyond origin validation - **BGPsec (RFC 8205)** validates the whole AS path, not just the origin, but its real-world deployment "may prove limited." - **ASPA (Autonomous System Provider Authorization)** is draft work on path validation, an emerging middle ground between ROV, which checks only the origin, and full BGPsec. ## Bottom line for an ESP 1. Fresh IP space is a commodity for spammers. Hijacking, buying and leasing are all ways to get it, and all three leave measurable traces on blocklists. 2. **Leased blocks are 1.84–2.89× and transferred blocks 4–25× more likely to be dirty** than routed space chosen at random, and leasing deliberately hides the operator from WHOIS. Vet a block before you assign it (see [IP-Acquisition Diligence](https://emailmarketing.net/learn/esp-operations/ip-acquisition-diligence)). 3. **Publish ROAs** for your sending prefixes. A hijack of your space then becomes Invalid at networks that enforce ROV, and it shows that the operation is well run. Before you acquire a block, check that its ROA and origin are consistent. 4. Spamhaus DROP, EDROP and ASN-DROP, and the BCL (optionally through BGP Flowspec), let you refuse traffic from networks known to be criminal at your own edge. # Sender Certification Programs: Validity Certification and the CSA > The two surviving commercial allowlist programs — Validity Sender Certification and the Certified Senders Alliance — with exact admission criteria, performance thresholds, costs structure, which receivers honor each, and an honest assessment of when certification pays off. Source: emailmarketing.net — https://emailmarketing.net/learn/reference/sender-certification-programs If you are considering paying for sender certification, whether it helps depends on which mailbox providers you need to reach and on whether you send as a brand or as a platform. Formal third-party allowlisting is [largely historical](https://emailmarketing.net/learn/reference/glossary), but two commercial programs survive with real support from receivers. **Validity Sender Certification** is the former Return Path Certification. It is an allowlist of IP addresses, honored mainly by Microsoft, Yahoo and AOL, Comcast, and networks filtered by Cloudmark. The **Certified Senders Alliance (CSA)** is a German program of eco and DDV, and its allowlist is used by GMX and WEB.DE and most of the German-speaking mailbox market. The two programs target different senders. Validity certifies **brands on dedicated IP addresses and explicitly excludes ESPs**. The CSA certifies **sending platforms, including ESPs, at the infrastructure level**. **Neither program influences Gmail.** Gmail runs its own reputation systems and [largely ignores third-party signals](https://emailmarketing.net/learn/operations/reputation-monitoring). No certification, paid or otherwise, improves placement at Gmail. --- ## Validity Sender Certification Source: "Sender Certification Requirements" (Validity, © 2024, published for 2025; fetched July 2026). Certified IP addresses are placed on Validity's allowlist, mailbox provider partners are notified, and Validity starts monitoring the IP addresses 24×7. Validity claims relationships with "75+ global mailbox and security providers". The partners for which it states thresholds are Microsoft, Yahoo and AOL, Comcast, and Cloudmark. ### Application and pre-approval process 1. You subscribe, and Validity starts a comprehensive audit of the email program. 2. You complete the **Sender Certification Questionnaire** (typically within the first day). This unlocks the certification data feeds (complaint rates, spam trap hits, and sending volume for each IP address, from Validity's provider and filter partners) and starts the audit. 3. If the program meets the Business Model, Measurability and Infrastructure requirements, the account may get **preliminary activation** of Certified status **before the audit is complete**. This is the "pre-approved" state marketed at validity.com/sender-certification/get-pre-approved. The preliminary benefits last **up to 60 days** while the audit runs. 4. If the remediation the audit requires is not complete after the 60-day preliminary period, or if requirements are breached at any point during the subscription, the IP addresses are **suspended from the allowlist** (access to the data feeds continues). They are activated again once the corrections are made. Ongoing obligations: respond to any program notice within **3 days**, and start the required actions within **10 days**. Notify Validity in writing within **2 business days** if an IP address or domain is compromised, and enable it again only after Validity has reviewed the mitigation. ### Eligibility (business model) - The business can be verified through a public third-party source (a country registry, Dun & Bradstreet), has a physical address on record, has been **legally registered and operating for at least 1 year**, and does not use a registered agent that hides its ownership. - Every approved brand has a valid HTTPS website or landing pages, and has had them **for at least the past 6 months**. - **Dedicated IP addresses only.** Shared IP addresses are not eligible, and the applicant must have been the only entity on the IP addresses for **at least 60 days**. - Certified IP addresses may carry only **transactional and commercial email built from templates**. Corporate or 1:1 mail is not allowed, and neither is free-form content in messages (for example, text entered in a web form). **Excluded business categories** (cannot be certified): Email Service Providers (senders mailing on behalf of brands they do not own, such as ESPs, brand licensing, publishers and white-label services), agencies, third-party and affiliate mailers, lead generation, list rental providers, penny-bid auctions, illegal activities, and human trafficking. For an ESP, this means you cannot certify your own platform or your shared pools. Only customers on dedicated IP addresses who fully own their brand can enroll, each one individually. ### Volume minimums and IP limits - Each IP address must deliver **at least 100 messages to each of Microsoft and Yahoo in every rolling 30 days** (as measured in Validity's data). IP addresses without measurable, consistent volume are not reviewed. Once certified, such IP addresses are **suspended after 30 days and removed from the program after 90 days**. - An IP address may not target a single mailbox provider (with occasional exceptions, only with Validity's prior written approval). - The maximum number of certified IP addresses depends on the contracted annual volume: | Annual sending volume | Max IPs | | Annual sending volume | Max IPs | |---|---|---|---|---| | 1,200,000 | 2 | | 120,000,000 | 8 | | 3,000,000 | 2 | | 180,000,000 | 9 | | 7,500,000 | 3 | | 240,000,000 | 10 | | 12,000,000 | 4 | | 420,000,000 | 13 | | 36,000,000 | 5 | | 600,000,000 | 16 | | 60,000,000 | 6 | | 1,200,000,000 | 18 | | 90,000,000 | 7 | | More than 1,200,000,000 | 22 | ### Technical and program requirements (summary) - **Infrastructure**: no open relays. [Forward-confirmed reverse DNS (FCrDNS)](https://emailmarketing.net/learn/ip-management/basic-ip-allocation). [SPF](https://emailmarketing.net/learn/authentication/spf) on all Return-Path domains, with no `+all` or `?all` and no `ptr` mechanism. All mail [DKIM](https://emailmarketing.net/learn/authentication/dkim)-signed, with keys of at least 1024 bits (2048 recommended) and **no `l=` tag** (use `x=` instead). [DMARC](https://emailmarketing.net/learn/authentication/dmarc) of at least `p=none` on the From domain, aligned, with a working `rua`. ARC recommended for forwarding. The role accounts `abuse@` and `postmaster@` on all sending and Return-Path domains. Proof of domain ownership through a Validity TXT token that must stay in DNS for as long as the membership lasts. Hard bounces removed from all future mailings. TLS recommended. - **Content**: clear branding. Accurate subject lines, without "RE:" or "FWD:". A physical mailing address in commercial and transactional mail. **No URL shorteners** (Bitly, TinyURL and similar). **No attachments of any kind.** No hidden content. A valid Message-ID. Headers that comply with RFC 5322. - **Unsubscribe**: [List-Unsubscribe (RFC 2369) covered by the DKIM signature, RFC 8058 one-click](https://emailmarketing.net/learn/list-management/list-unsubscribe), and a link in the body. Requests processed within **2 days**. Links that keep working for **at least 60 days** after sending. Requests made in other ways (by post, by phone, to abuse@) are also honored. - **Consent**: [double opt-in, or single opt-in with notification](https://emailmarketing.net/learn/list-management/consent-methods). Another legal basis, such as documented legitimate interest, needs written evidence. Prohibited: pre-selected opt-in, plain single opt-in without notification, harvesting, renting, buying or appending lists, and email prospecting. Co-registration requires separate unchecked sign-ups for each brand and consent that can be proven. Forward-to-a-friend requires a CAPTCHA on the form, one email and at most one follow-up, no external links, a personal comment of no more than 140 characters, and no more than 100 messages per user in 24 h. - **FBLs**: sign up for every available [feedback loop](https://emailmarketing.net/learn/list-management/complaint-feedback-loops). The mandatory minimum is Microsoft JMRP, the Comcast IP & Domain FBL, and the Yahoo FBL. ### Performance thresholds (exceeding any leads to partial or full suspension) **Microsoft SRD (Sender Reputation Data junk votes), cumulative over 30 days:** | Individual IP SRD volume | 0–4 | 5–10 | 11+ | |---|---|---|---| | Allowed SRD rate | not enforced | 5 junk votes | 45% | | Group SRD volume (all certified IPs) | 0–9 | 10–30 | 31–50 | 51+ | |---|---|---|---|---| | Allowed SRD rate | not enforced | 75% | 65% | 55% | Group enforcement applies when at least 2 IP addresses are certified. If the group threshold is exceeded, every IP address with at least 1 junk vote is suspended. **Complaint rates, averaged over 30 days across all sending volume** (enforced only above a minimum number of complaints): | Source | Threshold | Enforced above | |---|---|---| | Microsoft complaint rate | 0.2% | 200 complaints | | Yahoo and AOL inbox complaint rate | 0.2% | 200 complaints | | Comcast complaint rate | 0.3% | 100 complaints | | Cloudmark complaint rate | 1.0% | 100 complaints | **Spam traps, cumulative over 30 days:** | Trap class | Allowed hits | |---|---| | Critical spam traps | 3 | | Significant spam traps | 5 | | RP Trap Network | 100 | | Cloudmark traps | 100 | **Blocklists (current listings):** 1 listing on a critical blocklist, or 2 on significant blocklists, breaches the threshold. Repeated or excessive listings can lead to suspension or termination. --- ## Certified Senders Alliance (CSA) The CSA was founded in 2004 and is run by **eco** (Association of the Internet Industry) together with the **DDV** (German Dialogue Marketing Association). It **certifies IP platforms** (IPv4 only). The certified party is the company that operates and controls the sending platform, which describes an ESP exactly, the opposite of Validity's model. The CSA maintains a list of certified IP addresses that it distributes to participating mailbox and security providers, which build it into their filters. Those partners send back live compliance data, which certified companies see in the **Certification Monitor**. The contract documents (Criteria, Conditions of Participation, Rules of Procedure, Price List) are published at certified-senders.org/resources. German law applies, and the place of jurisdiction is Cologne. > About the documents: the older 2017 PDF URLs cited above now serve the **June 2026** editions of the Criteria and the Conditions of Participation (the older documents expired on 19 July 2026). The figures below are therefore current as of the June 2026 versions, fetched July 2026. ### Who can participate - The company **operates the technical platform** that controls the sending of bulk email, and is responsible for it. It generally needs **at least 3 months of sending history** on the infrastructure. - Certification covers **all IP addresses used for commercial bulk email**. Every IPv4 address and its FQDN must be uploaded to the Certification Monitor, and the declared IP addresses may be used only for commercial bulk email (not for internal corporate mail). - For ESPs and other platform providers, only IP addresses under the company's **sole control** can be certified, and certified outbound servers must be clearly separable from servers that are not certified. - Brands that run their own platform must fully control and monitor delivery on it. Otherwise they cannot be certified. - **Hosting providers are excluded** for servers that customers rent and use on their own. - The business model must not conflict with the ethical principles of eco and DDV (a separate ground for rejection). ### Certification process, fees, and contract 1. Return the signed individual offer and pay the **assessment fee** (set by the CSA Price List, and **not refunded** if certification fails). 2. Assessment: a reputation check of the declared IP addresses using the participating partners' data, and a review of documents (sample newsletters, the IP list). Errors that are repeatedly left uncorrected can lead to a deadline. If the deadline is missed, the CSA may charge a new assessment fee. 3. The decision is made by the **Complaints and Certification Committee (CCC)**, which has four members, two elected from eco and two from DDV. Certification requires a majority. After a rejection (because of doubts about compliance or an ethical conflict), the company **may apply again after 6 months**. 4. Monthly contributions (invoiced quarterly, pro-rated) start on approval. The price category depends on the **total annual revenue** of the company or of its parent company (from an annual revenue survey; a company that does not respond is placed in the highest category). The contract lasts 1 year, renews automatically, and has a **3-month notice period**. 5. Payment arrears of **more than 30 days** lead to temporary delisting of the IP addresses (reinstatement about 5 working days after payment). Arrears of **more than 60 days** lead to termination for good cause. After the contract ends, all references to the CSA must be removed within 4 weeks (6 months for print), with a **contractual penalty of €500 per week** after that. IP statuses on the certified list: **Active** (full benefits, plus monitoring and reporting), **Failed** (technical requirements not met; no benefits), **Delisted** (a sanction; no benefits, but monitoring continues), **Monitored** (during certification) and **Parked** (set by the company for unused IP addresses; listed, but sending is prohibited, which lets you prepare DNS in advance). For the duration of certification, the company must prove control of each IP address, either with a DNS TXT record on the server's FQDN in the form `CSA-certified-host=`, or with a WHOIS registrant organisation that matches the contracted company name. Outgoing servers need full FCrDNS (the PTR record gives the FQDN, and the FQDN's A record gives back the same IP address), the FQDN announced in HELO or EHLO, and hostnames that do not look like coded dial-up identifiers (`server-80-12-54125.example.org` fails). Missing verification or broken lookups result in the status "failed". ### Mandatory criteria (June 2026) **Trust & transparency:** a postal address and a digital contact that are easy to find on the website, accessible privacy information, and messages and SMTP dialogue that comply with the RFCs (currently RFC 6532, 2142, 2369, 5321, 5322, 7208, 6376, 8058). **Abuse prevention:** - A role account for abuse (preferably `abuse@org-domain.tld`) registered in the Certification Monitor. Respond to the **eco Complaints Office within 24 hours on business days**. - Platform providers must be able to enforce compliance for each customer (blocking, rate limiting, volume caps, caps on sending domains) and must protect customer accounts (for example, with 2FA). - Redirect and click-tracking links must be able to be deactivated **within 24 hours** of a notification of phishing or misuse. - The **`X-CSA-Complaints: csa-complaints@eco.de`** header, inserted and DKIM-signed on certified servers only, within 4 weeks of certification, and confirmed by a test mailing. - No open relay, no public proxy and no backscatter. Continuous monitoring. Delivery over **TLS** that reflects the current state of the art. **Authentication:** - SPF for the MAIL FROM domain, ending in **`-all` or `~all`**. - A valid DKIM signature on every email (RFC 6376). For ESPs, `d=` must be attributable to the customer's sending domain (an additional signature with the ESP's domain is allowed). The signature must cover at least **From, X-CSA-Complaints, Date, To**, and the **`l=` length parameter is prohibited**. - **Relaxed DKIM alignment** is required: the organizational domain of `d=` must match the domain in the header From (with an exception for ESPs only when the customer has no domain of its own). **List hygiene:** - The platform must be able to insert **List-Unsubscribe** (the RFC 2369 URL method with POST over HTTPS, which can be combined with **List-Unsubscribe-Post**, RFC 8058 one-click) and **List-Help** (a mailto: or HTTPS link; HTTP is not permitted) in every email. - Every advertising email must carry a working unsubscribe that requires **no login**. ESPs must give customers an easy unsubscribe feature using a link in the body (preference and selection pages are allowed). - Bounce handling as specified in RFC 5321, with an **MX record (or an A record as fallback) on the envelope-from domain**. Further delivery to mailboxes known not to exist must be prevented. **Performance thresholds (7-day windows):** | Indicator | Threshold | Basis | |---|---|---| | Spam complaint rate | At most **0.3%** per IP or per company | Complaints divided by emails reaching the inbox | | DKIM missing rate | At most **3.0%**, company average | Unsigned emails divided by total emails sent (data validated by partners) | | Hard bounce rate | At most **1.0%** per IP or per company | | | General reputation | No significant IP or DKIM reputation problems with participating providers (trap hits, content scanners, spam rates) | | **Recommended (not mandatory):** register for public FBLs and implement the **CFBL header (RFC 9477)**. Send multipart HTML and text. Publish DMARC with a `rua` that can be processed, and `p=reject` is recommended. Use **DANE (RFC 7671, with DNSSEC), with MTA-STS (RFC 8461) as the fallback** where DNSSEC is not feasible. Use DKIM with 2048-bit keys and SHA-256. Use double opt-in (the confirmation email must contain **no advertising**). State the mailing frequency at sign-up. Provide a working reply-to address. Use **separate IP addresses for newsletters and for transactional mail**. Avoid URL shorteners. Extend DKIM alignment to the MAIL FROM domain, and keep the domains in the List, Reply-To and Sender headers consistent. The CSA publishes a self-assessment **checklist** (certified-senders.org/csa-checklist) that turns these criteria into yes-or-no readiness questions. It is useful to go through it before paying the assessment fee. ### The CSA Email Directive: German legal baseline encoded as certification content The CSA's certification criteria refer to its "Email Marketing Directive", which summarizes German and EU law. This is what makes CSA certification legally meaningful in Germany. It matters even to senders who are not certified but mail German users (compare the double opt-in (DOI) expectation noted in [GMX and WEB.DE requirements](https://emailmarketing.net/learn/providers/gmx-web-de-postmaster)). **Permission (directive ch. 2)**, based on the General Data Protection Regulation (GDPR) and the ePrivacy Directive 2002/58/EC as implemented in the Act against Unfair Competition (UWG), the TMG and TTDSG (telemedia laws) and the Federal Data Protection Act (BDSG): - "Advertising" is interpreted broadly (newsletters, birthday greetings, market research, brand promotion, requests for donations). Transactional mail needs no consent, until any advertising element is added. From that point, the full consent rules apply. - Consent must be **transparent** (which company, which products, which channels, with no blanket consent; the Federal Court of Justice (BGH) found that consent naming about 8 companies can be valid, while the Higher Regional Court (OLG) of Frankfurt found 59 sponsors to be too many), **active** (no pre-checked boxes or opt-out constructions), **freely given**, and **documented** (the consent text, the place, and the timestamp and IP address of the sign-up and of the DOI confirmation click). - **Double opt-in is the de facto standard of evidence** (recognized by the BGH as proof that the request came from the address). The DOI confirmation email must contain **no advertising** (courts have objected even to logos in the footer). Sign-ups that are not confirmed should be deleted within **about 2 weeks**. - Consent has no legal expiry date, but the Regional Court (LG) of Munich I has treated consent **unused for about 1.5 years** as lapsed. - Withdrawing consent must be easier than giving it. Consent records are kept for **3 years after withdrawal** (the limitation period in §195 BGB) to defend against claims. - **The existing-customer exception in §7(3) UWG** (email advertising without consent) requires all four conditions: the address was obtained in connection with a completed sale, the advertising is only for the sender's own similar goods or services, a clear notice of the right to object is given when the address is collected and in every email, and the customer has not objected. - **B2B is not exempt.** German law requires opt-in for business-to-business (B2B) email advertising as well. The relaxed rule of presumed consent for B2B exists only for telephone marketing. **Legal notice, or Impressum (directive ch. 3)**, based on the E-Commerce Directive 2000/31/EC and the Telemedia Act: every commercial email needs a **complete legal notice, in full text, in the email itself** (not behind links). It includes the company name with its legal form, the full street address, the authorized representatives, the register court and number, an email address (a phone number is recommended), and the VAT ID where applicable. The sender's identity and the commercial nature of the message must be evident. Violations can be fined up to **€50,000**. ### Which receivers honor the CSA The participating mailbox providers (listed at certified-senders.org/participants, fetched July 2026) include the entire German-speaking consumer market (**GMX, WEB.DE, mail.com, 1&1, freenet, mail.de, T-Online, Arcor, Kabel Deutschland (Vodafone), unitymedia, Swisscom**) and international names: **Microsoft (Outlook.com, Office 365), Yahoo, AOL, Comcast, Orange, Seznam.cz, Fastmail** and various hosting companies. Security and filtering participants include **Cloudmark, Cisco Talos, abusix, Hornetsecurity, Open-Xchange, Halon, and Excello (virusfree)**. The weight given to certification varies. German providers treat it as a first-class signal: GMX and WEB.DE actively send bulk senders to the CSA and route complaint feedback through it, and they run no public FBL of their own. For the large international participants, it is one input among many, not a way around the filters. --- ## Is certification worth it? For an ESP operator, the costs and benefits look like this: - **Gmail: no.** Gmail takes part in neither program, and it ignores third-party certification and blocklists in favor of its own systems. If your problem is placement at Gmail, certification buys nothing. Fix the [fundamentals of engagement and spam rate](https://emailmarketing.net/learn/providers/gmail-sender-requirements) instead. - **Certification is a floor, not a boost.** The admission criteria of both programs are essentially the [M3AAWG senders BCP](https://emailmarketing.net/learn/industry-best-practices/m3aawg-senders-bcp) plus monitoring, and a sender who genuinely meets them usually already delivers well. The extra value is (a) the data feeds (Validity's feeds on traps, complaints and SRD, and the CSA Certification Monitor with partner data, which matters because complaint feedback from GMX and WEB.DE is not available any other way), (b) the benefit of the doubt during incidents and [warm-up](https://emailmarketing.net/learn/ip-management/ip-warm-up), and (c) a documented record of compliance. - **The CSA is worth evaluating for any ESP with meaningful volume in Germany, Austria and Switzerland (DACH).** It is the only program designed to certify platforms and ESPs. It is the de facto FBL and escalation channel for GMX and WEB.DE, and its criteria encode the German legal requirements (DOI, Impressum) that you must meet anyway to mail Germany safely. Costs grow with company revenue (the assessment fee plus monthly contributions). Take the compliance obligations seriously (a 24 h response to abuse reports, 24 h to deactivate links, thresholds over 7-day windows), because losing certification after taking part publicly is itself a reputation signal. - **Validity is a decision for each brand, not for the ESP.** ESPs are an excluded category. Only customers on dedicated IP addresses qualify, and they must own their brand, have at least 1 year of corporate history, have been alone on their IP addresses for at least 60 days, and send sustained volume to Microsoft and Yahoo. It suits high-volume B2C brands whose problems are at Microsoft (SRD and JMRP), Yahoo and AOL, Comcast, or regional ISPs filtered by Cloudmark. Its thresholds (0.2% complaints at Microsoft and Yahoo, 3 critical trap hits in 30 days, 1 critical blocklisting) are stricter than typical operating targets. Treat them as a service level you must keep, or expect suspension in the middle of the contract. - **Neither program replaces good consent.** Both prohibit purchased, rented and appended lists outright. Certification cannot clean up a bad acquisition practice, and both programs revoke certification faster than mailbox providers forgive. # Spam Traps: Types and What They Signal > Trap types (pristine, recycled, typo), how each gets onto a list, what hitting them signals about data quality, and how to respond. Source: emailmarketing.net — https://emailmarketing.net/learn/reference/spam-traps Based on Word to the Wise's "What Spamtraps Tell Us" (Laura Atkins, March 2025), which updates her earlier "A Brief Guide to Spamtraps" (2011). Spam traps (spamtraps) are email addresses operated by blocklists, anti-spam organizations, and mailbox providers to detect poor sending practices. ISPs and reputation systems cite trap hits as justification for blocking senders. ## Trap types | Type | What it is | How it gets on a list | What a hit signals | |---|---|---|---| | **Pristine** | A fabricated address that has never existed, often at a domain that has never been used for email | Senders making up addresses, or buying them from a list seller | Non-permission-based sending practices (see [worst practices](https://emailmarketing.net/learn/industry-best-practices/wttw-email-best-practices#buying-lists)) | | **Recycled** | An address or domain that received legitimate mail at one point, was decommissioned, allowed to bounce for a minimum of **12 months**, then reopened as a trap | Poor bounce handling, or reactivation of an outdated contact database; frequent in purchased lists | Inadequate list hygiene / bounce processing | | **Typo** | A real misspelling of an address, typically on the **domain** portion; security/anti-spam organizations have bought common typo domains and turned them into monitoring addresses | A person mistypes their own address on a signup form | Sender is trying to be opt-in but is not verifying that captured data is correct | ## The key insight: traps are a signal, not the problem > Spamtraps are NOT the problem; they're a signal. Traps indicate underlying data-collection and data-maintenance issues. The critical corollary: **if your list processes allow spamtraps onto the list, it's likely you're also sending mail to actual people who don't want it** — which is the real reputation damage (see [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability)). ## How to respond Do not try to hunt down and remove individual trap addresses — fix the root causes: - **Don't purchase lists.** - **Never reactivate old database addresses** (recycled-trap source). - **Implement address verification** on website signup forms (typo-trap source). - Maintain proper bounce handling so decommissioned addresses leave the list long before the 12-month recycling window ends. # Spamhaus Listings Deep Dive — SBL, CSS, PBL, DBL Policy and Delisting > Per-list detail on Spamhaus listing criteria, escalation policy, self-service vs investigated delisting, return/error codes, and how receivers should query the zones — beyond the zone overview in Blocklists & Spamhaus. Source: emailmarketing.net — https://emailmarketing.net/learn/reference/spamhaus-listings-deep-dive When a shared IP address or a customer domain on your platform is listed by Spamhaus, you need to know that list's actual policy, how the listing can escalate, and the exact steps to get it removed. The sections below cover each list in turn. [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus) covers how DNS blocklists (DNSBLs) work, the full tables of zones and return codes, and Spamhaus's guidance for senders. ## SBL — Spamhaus Blocklist (`127.0.0.2`) A research team working from open-source intelligence (OSINT) maintains the SBL by hand, and the database averages **30,000–40,000 listings**. The zone is **rebuilt and reloaded every 5 minutes, 24/7**, so both new listings and removals take effect quickly. ### What gets listed The SBL lists IP addresses "under the control of, used by, or made available for use by spammers and abusers in unsolicited bulk email or other types of Internet-based abuse": - **Snowshoe spam ranges**: "ranges and domains with poor or frequently changing identification." - **Spam hosting**: IP addresses that host websites advertised in spam, or resources used by spam and malware operations. The IP address does not need to send mail to be listed. - **Spam services**: bulletproof hosting ("explicit or tacit actions not to disconnect customers who spam"), spamware ("software whose main purpose is to aid in the sending of high volume unsolicited bulk email"), and address scrapers. - **Security threats**: command-and-control (C&C) servers for botnets, sites infected with malware, phishing pages, and ransomware infrastructure. **Informational listings** exist alongside blocking listings. Spamhaus describes them as "an early warning signal to indicate that the listed IP is displaying poor behavior. Informational listings are indicative, and do not result in IPs being blocked." Treat one as the last warning before a blocking SBL listing. ### Escalation policy When a network ignores its listings, Spamhaus extends the listing beyond the abusive IP addresses, to "that network's own infrastructure IP addresses, to extended ranges of that network, or even to that entire network." The triggers are: - ignoring SBL listings for long periods; - claiming to remove spammers who keep coming back (moving customers from one IP address to another); - providing bulletproof hosting; - persistent spam or security problems. For an ESP, this is the risk that threatens the whole business. Tolerating one bad customer can turn a listing of a single IP address into a listing of the company's own MX servers, its website, or its entire allocation. ### SBL delisting Only the **ISP or network responsible for the listed IP address** can ask for removal. End users and ESP customers cannot, and must go through their provider. The workflow: 1. Read the SBL listing page (linked from the checker) to understand the specific spam problem. 2. Fix it **permanently**. For a spammer customer, Spamhaus typically expects the provider to terminate or disconnect the server, clear the DNS entries served by the ISP's main DNS servers, clear PTR records, stop MX servers from accepting mail for the customer, and remove the SWIP and rWhois entries. In other words, fully deprovision the customer rather than only suspending its sending. 3. The ISP's abuse or security desk sends a removal request to the SBL Removals Team **that describes how the problem was solved**. An explanation is required, not just "please delist." No service level is published beyond "once the abuse issue has been terminated". Investigations may require proof of consent and re-permissioning of the list at fault (see [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus)). Delisting is always free: "Any offer from anyone to remove any Spamhaus listing for a fee is a scam." ## CSS — Combined Spam Sources (`127.0.0.3`) CSS is the **automated** part of the SBL zone. It targets "IP addresses that are involved in sending low-reputation email", and it watches only SMTP traffic on port 25. It holds **2–4 million listings** at any time, with **300,000–400,000 new listings every 24 hours**. This is the list that a legitimate but careless ESP customer is most likely to hit. ### Detection and granularity Listings result from "multiple events and heuristics", which Spamhaus does not disclose. The triggers it names are: - **snowshoe operations**: static sources of spam spread thinly across IP addresses and domains, which other lists do not catch; - **compromised hosts**: insecure installations, misconfigured servers, breached accounts, and exploited content management systems (CMS); - **poor list hygiene**: unsolicited mail from senders who manage their subscribers badly. Granularity: **IPv4 /32; IPv6 /64** (following the assignment practice in RFC 4291). Listings of larger IPv6 blocks are aggregated if many /64s in a network misbehave, which is why ESPs that send over IPv6 must separate customers by /64 at a minimum. ### Common causes for ESP infrastructure - a HELO or EHLO name that is not a FQDN (`localhost.localdomain`, a bare `mail`); - missing rDNS, or rDNS that does not match forward DNS (the PTR record must give a hostname that resolves back to the same IP address); - no IP warm-up, so that cold IP addresses sending volume look like snowshoe senders (see [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up)); - customer lists built with single opt-in or kept without hygiene, which hit traps ("use double opt-in to avoid spam traps"); - default settings of control panels (Plesk, cPanel, DirectAdmin) and load balancers that present generic identities, and wildcard DNS. ### CSS expiry and delisting **A listing normally expires automatically three days (72 h) after spam was last detected.** "In some cases of chronic abuse, the listings can last longer." Because expiry is automatic, the first decision is whether to wait for it or to remove the listing yourself. Self-removal is done through [check.spamhaus.org](https://check.spamhaus.org/): "Whatever caused the problem MUST be identified and corrected before removing an IP from CSS." The number of self-removals is **limited**, and the IP address is listed again immediately if the cause persists. Using up removals without fixing the root cause turns a 72-hour nuisance into a chronic listing. The checker's CSS flow checks the basics from RFC 5321 and 5322 (rDNS, HELO) before it allows removal. ## PBL — Policy Blocklist (`127.0.0.10` / `127.0.0.11`) The PBL is about **policy, not abuse**. It lists "end-user IP address ranges which should not be attempting to directly deliver unauthenticated SMTP email to any Internet mail server." A PBL listing does not accuse anyone of spamming. It contains **over 1.4 billion IPv4 addresses, roughly 40% of routable IPv4 space**, mostly ISP ranges for broadband and dial-up, plus some IPv6 CIDR blocks. The zone is rebuilt **every 15 minutes**. The data comes from two sources, told apart by the return code: | Code | Who listed the range | |---|---| | `127.0.0.10` | The ISP itself, through a PBL account (an authoritative statement about its own address space) | | `127.0.0.11` | Spamhaus research: end-user space with high concentrations of botnet zombies | ### Self-service removal The operator of a mail server on an IP address listed on the PBL can remove **a single IP address** through the Reputation Checker, if all of these are true: - the IP address is **static** (dynamic IP addresses should relay through the ISP's smarthost instead); - an outbound mail server actually runs on it; - forward (A) and reverse (PTR) DNS are configured correctly; - the IP address is assigned to the person or company asking for removal. Requests from freemail addresses (Gmail, Hotmail, Yahoo) are refused, and the request must come from an address on a domain that matches the mail server. Removal takes effect in **about 15 minutes**. Exclusions **expire after one year**, and they are **reversed immediately if spam is detected**. Removing many IP addresses one at a time gets the exclusions reversed and access revoked, so removals of several ranges must be done by the ISP that owns the space. This matters when an ESP acquires a range that sits inside a PBL block of an access network: ask the upstream provider to exclude the range in its PBL account, instead of removing IP addresses one by one. For end users behind the PBL, the right fix is not removal at all, but **authenticated submission on port 587 or 465** to their provider's smarthost. The PBL affects only delivery made directly to MX servers on port 25. ### ISP PBL accounts Networks manage their own address space with a PBL account. To be eligible, a network needs at least one IPv4 /24 or IPv6 /48 allocation, a primary domain that can be verified in IP-Whois, rWhois or rDNS, a working `abuse@` address, and a work email address on the primary domain (or a related one). An account contains **Master Ranges** (the full allocation), which in turn contain **PBL zone listings** (the parts actually listed). Changes take effect within 15 minutes. An ESP that runs its own allocation should hold a PBL account, if only to make sure its transactional and sending ranges are excluded, and to list any customer access space it operates. ## DBL — Domain Blocklist (`127.0.1.x`) The DBL lists domains only: "No IP addresses are listed in the DBL." It has more than about 80 mirrors worldwide. Listings are mostly automated, with manual intervention when needed, and **expire automatically once the domain no longer meets the listing criteria**. The full table of return codes is in [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus). The key distinction is between codes `127.0.1.2–.6`, where the domain itself is bad (spam, phishing, malware, botnet C&C), and codes `127.0.1.102–.106`, for **abused-legit** domains, which are legitimate domains that were compromised and abused. ### Listing causes Spamhaus deliberately does not disclose its criteria ("We do not discuss the specific criteria we use"), but it states these principles of reputation: - **An unknown reputation counts as a poor one.** "Reputations are built over time, and building a good reputation takes longer than building a bad one." New sending domains start at a disadvantage (and see ZRD for the first 24 h). - **Anonymity harms reputation** (anonymized WHOIS records, hidden operators). - **Domain and IP reputations affect each other.** Clean hosting with correct rDNS matters to the domain. - **Snowshoe rotation of domains**: many domains that change often are in themselves the signal. "Legitimate mailers invest in durable, long-term infrastructure." - **SPF, DKIM and DMARC do not protect against listing.** Spammers authenticate too, and authentication records alone never justify delisting. - Spamhaus **does not scan websites**. Listings come from observed traffic: "when we see those signs it means for certain that the website or server is insecure, infected or compromised." ### Abused-legit (`127.0.1.102–.106`) These are compromised legitimate sites: an outdated CMS or plugins, weak credentials, or poor server security. Where possible, listings target **hostnames rather than the whole domain**, to avoid blocking the legitimate site. The removal steps Spamhaus prescribes are: take the site offline while you fix it, remove infected files, update the CMS and all plugins and extensions, audit server security, and change all passwords and turn on two-factor authentication (2FA). For an ESP, this is the family of codes to check when the domain of a customer's own website (used in links) is listed but the customer's mail practices look clean. ### Query mechanics receivers must respect - **Never query IP addresses against the DBL.** An IP query always returns a listing (`127.0.1.255`), by design, so that a misconfigured filter that rejects mail with links to IP literals fails visibly. - **Wildcarding**: the DBL lists domains at the registered-domain level, and every hostname or subdomain under a listed domain returns a listing (`www.bank.phish.example.tld` matches a listing of `example.tld`). Lookalike variations of the domain do not match. - Check at three stages: the rDNS domain of the connecting IP address at connection; the HELO and `MAIL FROM` domains before DATA; and URLs, header domains and contact addresses when the content is inspected. - Test points: `test.dbl.spamhaus.org` returns `127.0.1.2` (the operational test from RFC 5782), `dbltest.com.dbl.spamhaus.org` returns `127.0.1.2`, and anything not listed returns NXDOMAIN. - **Validate the range of the response**: only answers within `127.0.1.0/24` are DBL listings. This matters in China, where traffic manipulation by the Golden Shield can alter DNS answers. Any other value means the domain is not listed. (Spamhaus's mirrors in China serve the DBL for IP queries only, so users in China get domain answers from outside the country.) - The DBL works in RPZ ("DNS firewall") deployments and for filtering spam in blog comments. Microsoft Exchange has no built-in support for domain DNSBLs (third-party products are required). ### DBL delisting - **Automatic**: most listings expire on their own after the activity that triggered them stops. For a short-lived listing, fixing the cause and waiting is often the whole workflow. - **Manual**: use the form in the Reputation Checker. "Using the form does not guarantee removal," and people who ask for removal too often get blocked. Approved removals are processed immediately, within minutes at Spamhaus, but receivers' local copies may lag by **up to 24 hours** (contact Spamhaus if the domain is still listed 24 h after approval). - **Listing again is automatic** if the problem is detected again, so a delisting without a fix to the root cause does not last. - Delisting is always free. ### DBL guidance for URL shorteners / redirectors (ESP click-tracking domains behave identically) Spamhaus advises these services to check every destination domain against the DBL **before** creating a short link, and to check again later (after about 1 day and about 1 week). Reject destinations whose A records are on the SBL (and optionally the XBL). Never allow the destination URL to change after the link is created, and do not chain links through other shorteners. Suspend abusive links with a 404 or 410 response (not an interstitial page). Require a CAPTCHA or other bot prevention to create links, consider ZRD to filter out domains that were just registered, and run `abuse@` and `postmaster@` addresses and feedback loops for the service. An ESP whose shared click-tracking domain is listed on the DBL has usually ignored several of these at once. ## Querying the zones correctly (DNSBL usage FAQ) A receiver, including an ESP that filters its own inbound mail or mail on its platform, must follow these rules: - **Query only ZEN** for IP checks: "The subzones of Zen (SBL, XBL, PBL) should not be queried separately," and never combine ZEN queries with queries to the SBL, XBL or PBL. One ZEN answer already carries every code that applies. - **Do not apply DNSBLs to outbound mail**, "particularly PBL", because your own smarthost customers legitimately sit in PBL space. Policing outbound mail needs different tools (see [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring)). - **Never query through public resolvers** (8.8.8.8, Cloudflare, Quad9, resolvers shared by ISP customers) unless the resolver supports EDNS Client Subnet (ECS). The originating network must be identifiable. Queries through anonymous resolvers get the answer `127.255.255.254`. Queries from large shared-hosting environments are refused. - **Treat error codes as "do not block"**: `127.255.255.254` (a query through an anonymous or public resolver), `127.255.255.255` (query volume exceeded) and `127.255.255.252` (a typo in the zone name). A filter that treats these as listings rejects all mail. - **Test** from the mail server's own network: `dig 2.0.0.127.zen.spamhaus.org +short` must return `127.0.0.x`, and `dig 1.0.0.127.zen.spamhaus.org +short` must return NXDOMAIN. The Blocklist Tester at `blt.spamhaus.com` checks the whole chain by sending test emails. - **Access tiers**: the free public mirrors are for small and medium non-commercial organizations within fair use. The DNSBL fair-use policy publishes no hard number, and commercial spam-filter services and ISPs must subscribe whatever their volume. The free **DQS** tier is limited to "not consistently exceed **100,000 queries per day**," for non-commercial use. Above that, use paid DQS or the rsync **Data Feed** (a local zone transfer, which requires running your own resolver). DQS also carries some datasets available only through it, such as ZRD, HBL and AuthBL. - **Do not automate lookups against check.spamhaus.org.** The web checker is for manual use, and automated use gets the querying IP address firewalled. ## Delisting workflow summary | List | Code | Who can delist | Mechanism | Timing | |---|---|---|---|---| | SBL | 127.0.0.2 | Only the responsible ISP or network | Fix the problem permanently, then the abuse desk writes to the SBL Removals Team to explain the fix. Proof of consent may be required | The zone reloads every 5 min once removal is approved. Investigation time varies | | CSS | 127.0.0.3 | Self-service (limited number of uses) | Fix the cause (rDNS, HELO, hygiene), then use the checker, or wait | Expires automatically about 72 h after the last detection. Listed again at once if not fixed | | XBL | 127.0.0.4 | Self-service | Remove the malware or fix the compromise, then use the checker | Listed again quickly if the infection persists | | PBL | 127.0.0.10/.11 | The holder of the IP address (single IP) or the ISP that owns the space (ranges) | The checker (static IP, a mail server, matching DNS, and a requester not using freemail). ISPs use their PBL account | About 15 min. The exclusion expires after 1 year and is reversed if spam is detected | | DBL | 127.0.1.x | Domain owner | Automatic expiry, or the checker form (no guarantee) | Immediate on approval. Receivers can lag by up to 24 h | All checks and requests start at the **[IP & Domain Reputation Checker](https://check.spamhaus.org/)**. It is free, needs no account for checking, and automatically evaluates the IP address you visit it from. The live tool is a JavaScript application behind bot protection, and nothing beyond its landing text could be captured ("Do you have problems sending email? … Relax, you're in the right place", from a Wayback snapshot dated 2026-07-09). Its behavior as described above comes from Spamhaus's official blocklist and FAQ pages. Removal from a Spamhaus zone does not immediately unblock delivery. Receivers refresh their copies on their own schedule (within minutes for users of DQS or ZEN, and up to 24 h for the slowest), and the damage to your reputation at each receiver fades separately. # URL Reputation and Content Fingerprinting > How modern content filters judge message bodies — URL/domain reputation lists (SURBL zones, query mechanics, redirector handling) and fuzzy hashing (rspamd shingles, near-duplicate campaign detection) — and what that means for senders' link domains and templates. Source: emailmarketing.net — https://emailmarketing.net/learn/reference/url-and-content-filtering A message can be fully authenticated and sent from a clean IP address and still be filtered because of what it contains. The reputation of IP addresses and sending domains ([blocklists](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus)) judges who is sending. Content filters add two more checks that judge what is being sent: the reputation of every domain linked in the message body, and a fuzzy fingerprint of the message that is matched against spam campaigns seen before. Both checks work independently of the sender's own authentication and IP reputation. A message that links to a blocklisted domain, or whose fingerprint matches a known campaign, is filtered anyway. ## Part 1: URL and domain reputation (SURBL) SURBL is the model example of a **URI DNSBL**. Instead of listing sending IP addresses, it lists domains (and some IP addresses) that appear in the bodies of unsolicited or malicious mail. URIBL.com and the Spamhaus DBL and HBL (see [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus)) work the same way. Spam filters extract every URL from a message, reduce each one to a domain, and query that domain against these zones. A match typically adds a heavy score or blocks the message outright. ### List zones and return values The public data is served as one combined zone with bitmasked values, **`multi.surbl.org`**, which brings together these datasets: | List | Meaning | Bit value (last octet) | |------|---------|------------------------| | DM | Disposable email domains | 4 | | PH | Phishing sites | 8 | | MW | Malware sites | 16 | | CT | Click-tracker domains | 32 | | ABUSE | General abuse or spam sites | 64 | | CR | Cracked (compromised legitimate) sites | 128 | - Responses are A records in the form **127.0.0.X**. A domain on several lists returns the sum of their bits. For example, **127.0.0.80 means MW plus ABUSE (16 plus 64)**. - **NXDOMAIN** means the domain is not listed, and an A record means it is listed. SURBL states that the A record is "the strongly preferred response for automated use." - The default **TTL is 60 seconds** on the live multi zone, and the data itself is updated roughly **every 30–40 seconds**. - A response of **127.0.0.1** is not a listing. It signals that the querier's access is blocked because of excessive volume on the public mirrors, and that the querier must sign up for SURBL's Sponsored Data Service. - Beyond its domain lists, SURBL also runs **HASHBL**, reputation queries based on hashes, in these categories: abuse, cracked, malware, phish, email, crypto, phone. - For filter operators, data is delivered as DNS (Private Query Service), rsync (recommended for high-volume mail filtering), RPZ (web filtering), a REST API, CSV, and RTF (real-time feeds in JSON). The very existence of the **CT (click tracker)** list matters: tracking and redirect domains are a listing category in their own right, not an edge case. ### How filters extract and query URLs (SURBL implementation guidelines) SURBL's published guidance to filter developers describes what production content filters actually do: 1. **Extract every URI** from the message, **fully resolving redirections to the final target domain**. In other words, filters are told to follow redirectors and shorteners to the destination and check that domain, not only the visible link. 2. Reduce URIs to domains or subdomains. With the wildcarded multi zone, subdomains of a listed domain match automatically, so filters do not need to normalize to the level of the registered domain. 3. **Do not resolve the extracted domains in DNS.** The domain string itself is the lookup key. 4. Query by prepending the domain to the zone (`domainundertest.com.multi.surbl.org`) and doing an A-record lookup. 5. **URLs with numeric IP addresses** (`http://10.20.30.40/`) are checked with the octets reversed, as DNSBLs do: `40.30.20.10.multi.surbl.org` (octets in base 10). 6. Keep a **local allowlist** of well-known, high-traffic domains (yahoo.com, w3.org, google.com) to avoid pointless queries. 7. **Check that answers fall within 127/8.** An answer outside 127.0.0.0/8 indicates a DNS resolver that uses wildcards or redirects and corrupts the results; run a local caching nameserver. SURBL explicitly prohibits two practices, because both cause false positives with shared hosting: do **not** use URI data from message bodies to check sender IP addresses, and do **not** resolve listed domains to IP addresses and blocklist those IP addresses. ### What this mechanism implies - Listing one domain affects **every message that links to it**, from every sender and on every IP address. For an ESP, a URI DNSBL listing of a shared domain is an incident that affects many customers. - Because filters resolve redirects, hiding a bad destination behind a shortener or your own redirect domain does not evade the check. Instead, it exposes **your redirect domain** to listing when the destinations behind it are abused. This is exactly what SURBL's CT list captures. - Because subdomains of a listed domain match under the wildcarded zone, a listing at the level of the registered domain takes down every customer subdomain beneath it. ## Part 2: content fingerprinting with fuzzy hashing (rspamd) Fuzzy hashing detects that a message is a **near-duplicate of spam reported before**, even after the spammer changes it. rspamd's `fuzzy_check` module and `fuzzy_storage` worker are a fully documented open implementation. Commercial fingerprinting systems, and shared hash networks such as Razor, Pyzor and DCC, follow the same principles. rspamd also provides a public shared fuzzy feed that many installations query by default, so a fingerprint learned anywhere can add to scores everywhere. ### How the fingerprint is built: shingles - The message text is split into words, then into **overlapping sequences of three words (trigrams)**, called "shingles." - Each shingle is hashed with **multiple hash functions (32 hashes per shingle)**, and the fingerprint of the message is the set of these hashes. (rspamd cites Broder's research on resemblance and shingling as its basis.) - Comparison is **probabilistic**. Similarity is computed from the number and positions of shingle hashes that match between the candidate message and the stored hashes, which gives a percentage match rather than exact equality. - Hash algorithms for text: `mumhash` (the current default, and recommended), `xxhash`, `fasthash`, `siphash` (legacy). Changing the algorithm invalidates all stored data. - **Images and attachments are matched exactly**, not fuzzily, using blake2b digests of their content. A single changed byte breaks the match. This is why image spam campaigns render their images again for each send, and why filters combine exact hashes with perceptual image hashing elsewhere. Key defaults in `fuzzy_check`: `min_bytes = 1k` (the minimum size of an attachment or image considered), `min_height/min_width = 32` px for images, `min_length = 0` (all text parts are checked), `text_multiplier = 4.0`, `timeout = 2s`, `retransmits = 1`. `mime_types` selects which attachment types (for example `application/*`) are hashed, and `short_text_direct_hash` hashes texts too short for shingling exactly. ### HTML-structure fuzzy hashing (rspamd v3.14+) Since v3.14.0, rspamd can also fingerprint the **structure of the DOM**, independently of the text. It uses tokens of the form `tagname[.class][@domain]` (for example `a.button@example.com`). Only the first CSS class is used, known tracking classes are filtered out, and link domains are normalized to eTLD+1. The combined hash is weighted as follows: structure shingles 50%, **call-to-action (CTA) domains 30%**, all link domains 15%, and counts of features (tags and links) 5%. To avoid matching generic templates, it requires at least `min_html_tags` (default 10; example configurations use 15), at least 2 links, and a DOM depth of at least 3. The weight on CTA domains targets phishing. A phishing message that perfectly clones a brand's template gets a structure similarity of ~0.9, but with different CTA domains the combined similarity collapses (the documented example: 0.9 structure similarity with mismatched CTA domains gives a combined 0.45). Conversely, a spam campaign that keeps its CTA domain while shuffling its copy still matches. ### Why mutations and token stuffing don't evade it The fingerprint is a large set of overlapping word-trigram hashes, compared probabilistically. As a result: - **Small edits** (swapped words, inserted names, reordered paragraphs) change only the shingles that overlap the edit. Most shingles still match, and similarity stays above the threshold. - **Token stuffing** (appending random words, hidden text, or strings meant to break hashes) adds shingles but does not remove the ones that match. It only dilutes the similarity ratio slightly, while the absolute number of known-bad shingles still matches. Defeating shingle matching requires rewriting essentially the whole body, and even then HTML-structure hashing (v3.14+) still matches the unchanged template and CTA domain. - Merge fields for each recipient, unsubscribe URLs and tracking tokens also leave most of the shared shingles intact. This is exactly why a campaign reported by its early recipients is recognized in the rest of the send. ### Weights, thresholds, and gradual scoring Stored hashes carry a **weight** that grows as sources (user reports, trap hits, honeypots) report the same fingerprint again. Scoring is deliberately gradual, not all or nothing: - Each flag or rule has a `max_score` (a threshold on hash weight). Below the threshold, the symbol scores 0. The score then rises from the threshold to **2× the threshold**, along a hyperbolic tangent curve: ≈50% of the metric weight at the threshold, and the full score at 2×. For example, with a report weight of 1 and a threshold of 20, a fingerprint needs ≥ 20 independent complaints before it scores at all. - Hashes are organized by numeric **flags** that map categories to symbols. The conventional layout: flag 1 is confirmed spam (`FUZZY_DENIED`, max_score 20), flag 2 is probable spam (`FUZZY_PROB`, max_score 10), and flag 3 is legitimate, allowlisted content (`FUZZY_WHITE`, max_score 2). Flag numbers must be unique across writable rules, and `skip_hashes` allowlists specific fingerprints. - Learning: `rspamc -f -w fuzzy_add ` (or `-S FUZZY_DENIED`) adds a hash, and `fuzzy_del` removes one. `read_only = true` makes a rule query-only, and an optional learning condition written in Lua can block learning or change its flag. On the operational side, the fuzzy_storage worker: - has a single-writer architecture, with an update queue synced to disk every `sync = 1min`; - stores data in SQLite (the default) or Redis; - lets hashes **expire** through `expire` (90d is the recommended initial value, so old fingerprints age out as campaigns die); - needs roughly 400k hashes per 100 MB of RAM (1.5M ≈ 500 MB); - accepts learning only from `allow_update` IP addresses; - supports optional Curve25519 transport encryption (`encrypted_only = true`), and master and slave replication (TCP 11335) with flag translation for each slave. ## Sender implications Together, the two mechanisms lead to concrete rules for anyone running an ESP or a sending program: - **Every domain in the body carries reputation**: link domains, image-hosting domains, redirect and click-tracking domains, and even domains that appear in plain text. Their reputation is evaluated separately from the From domain and the sending IP address. - **Customers who share a tracking domain share its fate.** A click-tracking or link-wrapping domain used across an ESP combines the reputation of every customer's destinations. One abusive customer can get it listed on a URI DNSBL (SURBL's CT category exists for exactly this), which filters every customer's mail at once. The mitigations are tracking subdomains for each customer on domains the customer owns (through a CNAME), proactive URI DNSBL monitoring of tracking domains, and screening destination URLs against SURBL, URIBL and the DBL at send time. - **Public shorteners do more harm than good.** Filters resolve them to the destination anyway, and the shortener's domain carries the accumulated reputation of everyone who has abused it. See [Content & Design for Deliverability](https://emailmarketing.net/learn/operations/content-and-design-for-deliverability). - **Keeping link domains clean is an ongoing monitoring task**, not a one-time check. Query your tracking, image and landing domains against multi.surbl.org (and the Spamhaus DBL) as often as you check IP blocklists, and check the URLs of every outbound campaign before you send it. - **Fingerprinting makes complaints count against the rest of the send.** The first few thousand recipients who report a campaign create its fuzzy hash and add weight to it, and the rest of the same send then matches it. Sending in segments with pauses (to the most engaged recipients first, watching early complaint signals, then continuing) takes direct advantage of the scoring window between the threshold and 2× the threshold. - **Changing a template does not reset its content reputation.** Minor changes to the copy, rotating subject lines, or personalizing merge fields leave the shingle fingerprint (and the fingerprint of the HTML structure and CTA domains) intact. The only real reset is genuinely different content sent to an audience that wants it. Content reputation is a symptom of list quality, not a problem to solve by engineering the content. - **Consistent CTA domains cut both ways.** Keeping your links on your own stable domains with good reputation helps structure hashing tell you apart from phishing clones of your template. Scattering links across throwaway domains looks like evasion. ## Related articles - [Blocklists & Spamhaus](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus), on how DNSBLs for IP addresses and domains work, including the Spamhaus DBL and HBL, the other major datasets of domain reputation - [Content & Design for Deliverability](https://emailmarketing.net/learn/operations/content-and-design-for-deliverability), with the practical content rules (shorteners, images, links) that these mechanisms explain - [Reputation Monitoring](https://emailmarketing.net/learn/operations/reputation-monitoring), on where URI DNSBL checks of tracking and link domains belong in a monitoring program # ESMTP Extensions for Senders — SIZE, PIPELINING, CHUNKING, DSN > What RFC 1870 SIZE, RFC 2920 PIPELINING, RFC 3030 CHUNKING/BINARYMIME, and RFC 3461 DSN (NOTIFY/RET/ENVID/ORCPT) do, and when each matters on an ESP's outbound path. Source: emailmarketing.net — https://emailmarketing.net/learn/rfc/esmtp-extensions If you run a sending MTA, four SMTP service extensions have a direct effect on your outbound throughput and on the quality of your bounce data: SIZE, PIPELINING, CHUNKING and DSN. Below is what each one does and when it matters. ESMTP extensions are negotiated for each session. The server lists keywords in its `EHLO` response, and the client may then use the matching commands and parameters. A sending MTA should parse the EHLO extension list on every connection and adapt to it. Other extensions are covered elsewhere: 8BITMIME (RFC 6152) and SMTPUTF8 in [MIME & Encoding](https://emailmarketing.net/learn/rfc/mime-and-encoding) and [SMTPUTF8 and EAI](https://emailmarketing.net/learn/rfc/smtputf8-eai), and STARTTLS in [transport security](https://emailmarketing.net/learn/transport-security/mta-sts). ## RFC 1870 — SIZE (message size declaration) - **EHLO keyword:** `SIZE`, with an optional numeric parameter giving the fixed maximum message size, in octets, that the server will accept. `SIZE 0` means there is no fixed maximum. `SIZE` with no number gives no information about a limit. - **MAIL parameter:** `MAIL FROM:<...> SIZE=nnn` (1–20 digits). The declared size is the number of octets the client will send after the `354`, **including CRLF pairs but excluding the terminating dot and the extra dots added by dot-stuffing**. In other words, it is the headers and body as sent. An estimate is fine, and estimates should err on the high side. - **Server replies:** `552` is permanent (the declared size exceeds the fixed maximum, so do not retry at that server). `452` is temporary (the server lacks resources right now, so retry later). The server may check the size at MAIL time or after DATA. It may accept a message larger than declared, and should not send a `552` after DATA unless the actual size exceeded the declared size. **When it matters:** declaring SIZE turns an oversized send into a cheap rejection before DATA, instead of transferring megabytes and receiving `552` after the final dot. At scale, that saves real bandwidth and queue time. Reading the advertised limit lets the MTA fail oversized messages locally with a clear bounce ("exceeds example.com's 26214400-octet limit"), and lets a platform enforce composition limits for each destination. Remember that the advertised limit applies to the **encoded** message, and base64 adds ~37% (see [MIME & Encoding](https://emailmarketing.net/learn/rfc/mime-and-encoding)). Distinguish the `552` from SIZE (the message is too big, a content problem) from the `552` "exceeded storage allocation" in RFC 5321 (the mailbox is full, a recipient problem). The enhanced status code tells them apart (`5.3.4` for the first, `5.2.2` for the second). ## RFC 2920 — PIPELINING (command batching) - **EHLO keyword:** `PIPELINING`, with no parameters. Never pipeline commands to a server that did not advertise it. - **What may be pipelined:** `RSET`, `MAIL FROM` and `RCPT TO` (and the obsolete SEND, SOML and SAML) may appear anywhere in a group. **`EHLO`, `DATA`, `VRFY`, `EXPN`, `TURN`, `QUIT` and `NOOP` may only be the last command in a group**, because their success or failure changes the session state. NOOP can be used as a synchronization point. - **Client obligations:** check **every** status in the group, matching replies to commands by counting them. You MUST NOT assume that DATA failed just because all the RCPT commands failed: read its reply. Without nonblocking I/O, the client must keep each group within the TCP window to avoid a deadlock. - **Server obligations:** reply in the order the commands were received. Buffer replies to commands that can be pipelined, but never to the commands that end a group. Send a positive `DATA` reply only if ≥1 valid RCPT was accepted. If the server replied 354 with no valid recipients, it must accept the message and discard it. Never flush the TCP input buffer. **When it matters:** without pipelining, a transaction costs one round trip per command (`MAIL`, each `RCPT`, then `DATA`, for a total of N+2 round-trip times, or RTTs). With pipelining, `MAIL FROM`, all the `RCPT TO` commands and `DATA` go out in one write, about 1 RTT before the content. Over a 100 ms transatlantic path, that is the difference between ~3–4 messages per second per connection and ~10+. Pipelining is the cheapest way for an outbound MTA to multiply its throughput before it adds connections, which [provider connection caps](https://emailmarketing.net/learn/providers/microsoft-sender-requirements) limit anyway. Almost all major receivers advertise it. One caution: some anti-spam layers treat "early talkers" (clients that send before the greeting banner, or pipeline without the extension being advertised) as bots. Negotiate strictly. ## RFC 3030 — CHUNKING (BDAT) and BINARYMIME - **EHLO keywords:** `CHUNKING` (which enables `BDAT`) and `BINARYMIME` (binary content with no transfer encoding, usable **only** together with CHUNKING). - **BDAT syntax:** `BDAT chunk-size [LAST]`. The exact number of octets follows immediately after the command's CRLF. There is no dot-stuffing and no scanning for a `.` terminator. The final chunk carries `LAST`, and it may be empty. The server MUST reply `250` to each successful chunk. - **Errors:** if a failure occurs during the transaction, the server MUST still read and discard the announced chunk octets before it replies `4xx` or `5xx`. After any `4xx` or `5xx` reply to a BDAT command, the client MUST NOT send further BDAT segments, and should send `RSET` to clear the transaction. - **Mixing rules:** `DATA` and `BDAT` MUST NOT be mixed in one transaction (`503`), although both may appear in different transactions of the same session. `BODY=BINARYMIME` on the MAIL command commits the transaction to BDAT, so `DATA` after it gets `503`. A receiver that accepts BINARYMIME must preserve every bit of every octet from then on. `text/*` content must still use CRLF line endings. **When it matters:** for typical marketing mail, rarely. The messages are small and already safe as 7-bit, and several large receivers do not advertise CHUNKING, so the DATA path must exist anyway. CHUNKING matters for very large messages (no scanning for the terminator, and exact accounting), for truly binary payloads that would otherwise grow by base64's ~37%, and in some modern submission paths where BDAT is the native framing. A note on interoperability: bugs in how filters and gateways handle BDAT have caused parsing discrepancies in the past (BDAT was a vector for SMTP smuggling at receivers), so some operators deliberately leave it off. Treat it as an optimization to enable for each destination, never as a requirement. ## RFC 3461 — DSN extension (NOTIFY / RET / ENVID / ORCPT) This extension is the SMTP side of delivery status notifications. It controls **when** DSNs are generated and carries correlation data through to them. [RFC 3464](https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications) defines the format of the bounce itself. - **EHLO keyword:** `DSN`, with no parameters. **Parameters for each recipient (`RCPT TO`):** | Parameter | Values and syntax | Meaning | |---|---|---| | `NOTIFY` | `NEVER` \| a comma-separated list of `SUCCESS`,`FAILURE`,`DELAY` | `NEVER` must appear alone, and means no DSN under any conditions. `SUCCESS`: a DSN on delivery. `FAILURE`: a DSN on failure. `DELAY`: the sender is willing to receive DSNs about delays. If the parameter is absent, the receiver's default applies, which in effect is `FAILURE` or `FAILURE,DELAY` | | `ORCPT` | `addr-type;xtext-address` (e.g. `rfc822;user+2Btag@example.com`), ≤500 characters | The original recipient as the sender specified it. It is passed on unchanged through forwarding, so the DSN's `Original-Recipient` field survives address rewrites. At submission it must match the RCPT TO address | **Parameters for each message (`MAIL FROM`):** | Parameter | Values and syntax | Meaning | |---|---|---| | `RET` | `FULL` \| `HDRS` | Whether failure DSNs return the whole message or only its headers (success DSNs return the headers at most). If absent, the receiver chooses | | `ENVID` | xtext, ≤100 characters (user agents are advised to use ≤38) | An opaque transaction ID from the sender, returned unchanged in the DSN's `Original-Envelope-Id` field. It links a bounce directly to its send, without parsing message headers | - **xtext encoding:** printable ASCII characters 33–126, except `+` and `=`, pass through unchanged. Every other character becomes `+HH` (uppercase hexadecimal). Values must be US-ASCII before encoding. - **Effect on command lines:** a conforming MTA must handle command lines of at least 1036 characters (512 for the base command, plus 530 for the ORCPT and NOTIFY parameters on RCPT). - **Server neutrality:** a server MUST NOT refuse a MAIL or RCPT command only because it carries valid DSN parameters. Malformed or duplicate parameters get `501`. - **Relay rules:** when the next hop supports DSN, ENVID, RET, NOTIFY and ORCPT MUST be passed on exactly (ORCPT with its case preserved, and a relay may add ORCPT if it is absent). When the next hop does **not** support DSN, the parameters MUST NOT be sent, and the relaying client makes up for it instead. With `NOTIFY=SUCCESS` and the message accepted, it MUST generate a "relayed" DSN. On failure (5xx), it generates a "failed" DSN unless `NOTIFY=NEVER` was set. With `NOTIFY=NEVER`, no DSN is ever sent. - **Mailing lists:** when a list redistributes a message, it MUST NOT carry the DSN parameters of the original submission. The list sets its own, with its own return path. Tracking of successful delivery therefore stops at the list: a submission with `NOTIFY=SUCCESS` gets its success DSN from the MTA that delivered it to the list. **When it matters for an ESP:** - **`NOTIFY=NEVER` is the most useful setting in practice.** RFC 3834 recommends it for auto-replies. It is equally useful for any traffic whose bounces you plan to detect another way, or do not want at all (for example, probe traffic). Where the receiver honors it, it stops non-delivery reports (NDRs) from being generated at the source. Do **not** use it on normal campaign mail, because you need failure DSNs for [bounce processing](https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications). - **`ENVID`** links each bounce to its message even when the returned content has been stripped. It complements VERP: VERP still works with bounces that do not follow RFC-3464, and ENVID still works through forwarders that break VERP. It costs little, so set it. - **`RET=HDRS`** keeps failure DSNs small, which is polite and saves bandwidth when your messages are large. - **`NOTIFY=SUCCESS` is not a tool for tracking delivery** at scale. Most large mailbox providers ignore it or do not send success DSNs, and requesting a success notification for every recipient of millions of messages would create a traffic problem of its own. Rely on SMTP acceptance and engagement signals instead. ## Reading an EHLO response: a checklist for senders | Keyword seen | Sender action | |---|---| | `SIZE n` | Reject or bounce locally any message whose encoded size is > n, and declare `SIZE=` on MAIL | | `PIPELINING` | Send MAIL, the RCPT commands and DATA in one write, and check every reply by count | | `8BITMIME` | You may send `BODY=8BITMIME`. Otherwise, make sure the content uses quoted-printable (QP) or base64 encoding (never "just send 8-bit") | | `CHUNKING` | You may use BDAT, but keep DATA as a fallback | | `DSN` | Add ENVID and RET (and NOTIFY where appropriate), and expect bounces in the RFC 3464 format | | `SMTPUTF8` | Recipients with internationalized addresses (EAI) can be delivered on this hop. See [SMTPUTF8 and EAI](https://emailmarketing.net/learn/rfc/smtputf8-eai) | | `STARTTLS` | Negotiate TLS before sending mail (required by [MTA-STS](https://emailmarketing.net/learn/transport-security/mta-sts) policies) | ## Related articles - [RFC 5321 — SMTP](https://emailmarketing.net/learn/rfc/rfc5321-smtp), the base protocol and its reply codes - [Delivery Status Notifications (RFC 3464)](https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications), the DSN format these parameters control - [RFC 3834 — Auto-Replies](https://emailmarketing.net/learn/rfc/rfc3834-auto-replies), where `NOTIFY=NEVER` is recommended - [MIME & Encoding](https://emailmarketing.net/learn/rfc/mime-and-encoding), on the encoding choices that SIZE, 8BITMIME and BINARYMIME interact with # MIME & Transfer Encodings (RFC 2045/2046) > Deliverability-focused MIME digest: structure and headers, multipart/alternative ordering, quoted-printable and base64 rules and pitfalls, size inflation, and the malformed-MIME defects that trigger filtering. Source: emailmarketing.net — https://emailmarketing.net/learn/rfc/mime-and-encoding Every HTML campaign you send is a MIME message, and defects in its encoding or structure are a recurring cause of broken rendering and filter penalties. MIME extends the [RFC 5322 message format](https://emailmarketing.net/learn/rfc/rfc5322-message-format), which allows only ASCII text in lines, so that a message can carry several parts, non-ASCII text and binary data over transports that only guarantee 7-bit lines. RFC 2045 defines the framework and the encodings, and RFC 2046 defines the media types. ## The five MIME header fields (RFC 2045) | Field | Requirement | Notes | |---|---|---| | `MIME-Version: 1.0` | MUST be present, exactly as written, on every MIME message | Without it, receivers may treat the message as plain text from before MIME | | `Content-Type: type/subtype; parameter=value` | The subtype is mandatory. The names of the type, the subtype and the parameters are case-insensitive, and parameter values are case-sensitive unless defined otherwise | Default when absent: `text/plain; charset=us-ascii` | | `Content-Transfer-Encoding: mechanism` | One of `7bit` (the default), `8bit`, `binary`, `quoted-printable`, `base64`, or an extension | See below | | `Content-ID: ` | Optional; MUST be unique worldwide | Used to reference inline images (`cid:`) from HTML parts | | `Content-Description` | Optional, in US-ASCII (RFC 2047 for non-ASCII) | Rarely matters in practice | ## Content-Transfer-Encoding mechanisms | Mechanism | Constraint on the data | Actually transforms? | |---|---|---| | `7bit` | Lines of at most 998 octets between CRLFs; no octets above 127; no NULs | No. It declares that the data already conforms | | `8bit` | Lines of at most 998 octets; octets above 127 allowed; no NULs; CR and LF only as CRLF pairs | No. It requires the 8BITMIME SMTP extension from end to end | | `binary` | Any sequence of octets, with no limit on line length | No. It requires BINARYMIME and [CHUNKING](https://emailmarketing.net/learn/rfc/esmtp-extensions), and is essentially unused in Internet mail | | `quoted-printable` | The output is 7-bit, with lines of at most 76 characters | Yes | | `base64` | The output is 7-bit, with lines of at most 76 characters | Yes | **Restriction on composite types:** it is "EXPRESSLY FORBIDDEN" to use any encoding other than `7bit`, `8bit` or `binary` on `multipart/*` or `message/*` entities. Encoding applies only to leaf parts, never to a container, which prevents nested passes of encoding and decoding. RFC 6532 later relaxed this for `message/global` only (see [SMTPUTF8 and EAI](https://emailmarketing.net/learn/rfc/smtputf8-eai)). ### Quoted-printable rules (RFC 2045 §6.7) Quoted-printable (QP) is designed for data that is mostly ASCII text, so the encoded output stays largely readable by people. 1. Any octet may be represented as `=XX` with **uppercase** hexadecimal digits. Lowercase is not permitted when generating, although robust decoders accept it. 2. Octets 33–60 and 62–126 (printable ASCII except `=`) may appear literally. 3. TAB (9) and SPACE (32) may appear literally, but **MUST NOT be literal at the end of an encoded line**. Trailing whitespace must be written as `=09` or `=20`, because the transport may strip trailing spaces silently. 4. A hard line break in text is represented as a real CRLF. 5. Encoded lines MUST be at most **76 characters** long (not counting the trailing CRLF). Longer lines of content use a **soft line break**: an `=` as the last character, which the decoder deletes along with the CRLF that follows it. 6. When binary data is encoded in QP, CR and LF must be encoded as `=0D` and `=0A` (a binary CRLF becomes `=0D=0A`). QP for binary data is legal, but base64 is the right tool. In practice, QP inflates typical HTML in English or Western European languages only slightly (3 bytes for each encoded octet). For scripts where nearly every character is multi-byte UTF-8, such as Chinese, Japanese and Korean (CJK) or Cyrillic, QP approaches 3× inflation, and base64 (about 1.37×) is smaller. ### Base64 rules (RFC 2045 §6.8) - The alphabet has 65 characters: `A–Z` (0–25), `a–z` (26–51), `0–9` (52–61), `+` (62), `/` (63), and `=` for padding. - 3 input octets become 4 output characters. A final partial group is padded: 1 octet becomes 2 characters plus `==`, and 2 octets become 3 characters plus `=`. Any `=` marks the end of the data. - Encoded output MUST be in lines of at most **76 characters**. - Line breaks in text must be converted to CRLF **before** encoding (the canonical form), so a decoded text part uses CRLF line endings whatever platform composed it. - **Size inflation: 4/3 (about 33%), plus a CRLF every 76 characters, comes to about 37% in total.** Provider limits on message size (for example, Gmail's 25 MB) apply to the encoded message, so a "20 MB attachment" is about 27 MB on the wire. The size declared with the SIZE extension also includes this inflation (see [ESMTP Extensions](https://emailmarketing.net/learn/rfc/esmtp-extensions)). ### Choosing an encoding (sender guidance) - For HTML and plain-text parts in UTF-8, `quoted-printable` is the safe universal default. It survives 7-bit hops, keeps diffs and DKIM canonicalization predictable, and avoids depending on 8BITMIME negotiation. `8bit` is fine when your MTA verifies 8BITMIME support on every hop. Support is essentially universal today, but a hop that accepts only 7-bit data must then re-encode the message, which **breaks DKIM signatures**. Sign after the final encoding, or use QP so that no hop ever re-encodes. - For attachments and images, always use `base64`. - Never emit lines longer than 998 octets in any part. Long unwrapped HTML lines are a classic generator bug, and the soft wrapping of QP at 76 characters fixes this at no cost. ## Media types (RFC 2046) The discrete types are `text`, `image`, `audio`, `video` and `application`. The composite types are `multipart` and `message`. Unrecognized subtypes fall back as follows: text with a known charset is treated as `text/plain`, other discrete types as `application/octet-stream`, and an unknown `multipart/*` as `multipart/mixed`. ### Multipart syntax - The `boundary` parameter is **mandatory**. It is 1–70 characters long and must not end in a space. The allowed characters are digits, letters, `'()+_,-./:=?` and the space (but not as the last character). Because `/`, `=`, `?`, `:` and space can appear, the boundary value usually needs quotes in the Content-Type header. - The delimiter is a line that starts with `--boundary`, and the closing delimiter is `--boundary--`. The boundary **must not appear in any encapsulated part**. Generators should use boundaries with high entropy rather than checking the content. - Each body part consists of optional headers, a blank line and the body. Parts with no Content-Type default to `text/plain; charset=US-ASCII`, except inside `multipart/digest`, where the default is `message/rfc822`. - MIME readers ignore the preamble (before the first boundary) and the epilogue (after the closing delimiter). The preamble is occasionally used for a "this is a MIME message" note to legacy clients. ### Multipart subtypes that matter for senders | Subtype | Semantics | Deliverability notes | |---|---|---| | `multipart/mixed` | Independent parts, in order | A message with attachments | | `multipart/alternative` | The same information in alternative renditions. **Parts MUST be in increasing order of preference and faithfulness, with the best and richest version LAST.** Clients display "the last part of a type supported by the recipient system's local environment." | The classic structure is `text/plain` first and `text/html` last. In the reverse order, many clients show the plain-text part. A well-formed pair, where the plain part actually matches the HTML content, has long been a positive signal for spam filters, while an empty or boilerplate plain part is a mild negative | | `multipart/related` (RFC 2387, included for completeness) | HTML with inline `cid:` images | The standard structure for embedded images | | `multipart/digest` | Parts default to `message/rfc822` | Rare in the traffic of email service providers (ESPs) | | `multipart/parallel` | Order is not significant | Effectively unused | | `multipart/report` (RFC 6522) | Machine-readable reports | The container for [delivery status notifications (DSNs)](https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications) and for feedback loop (FBL) reports in the Abuse Reporting Format (ARF) | The canonical nesting for a campaign is `multipart/mixed( multipart/related( multipart/alternative( text/plain, text/html ), inline images ), attachments )`. Collapse the levels you do not need. ### `message/*` subtypes - `message/rfc822`: a full encapsulated message, used for forwards, FBL reports and the original messages returned in bounces. Its encoding is restricted to 7bit, 8bit or binary. - `message/partial`: fragmented delivery with reassembly (the parameters `id`, `number` starting at 1, and `total` on the last piece; 7bit only). It is obsolete in practice, and filters treat fragmentation as an evasion technique. Never use it. - `message/external-body`: a body by reference (access types FTP, ANON-FTP, TFTP, LOCAL-FILE and MAIL-SERVER). It is also effectively dead, and filters treat it as suspicious. ### text/plain and charsets The default charset is `US-ASCII`, which means ANSI X3.4-1986 specifically. Always declare `charset=` explicitly, and label content with the lowest common denominator that actually covers it. In modern practice, use `charset=utf-8` everywhere and the question is settled. ## Malformed-MIME defects that trigger filtering Spam filters score MIME conformance because sloppy generators correlate with spamware. SpamAssassin's `MIME_*` family of rules, and the equivalent rules in commercial filters, test exactly these defects. They are worth linting for in an ESP's message builder: | Defect | RFC rule violated | |---|---| | Missing `MIME-Version: 1.0` on a message with MIME structure | 2045 §4 MUST | | Missing or unmatched final `--boundary--` closing delimiter | 2046 §5.1.1 | | Boundary string that occurs inside the body of a part | 2046 §5.1.1 "must not appear inside any of the encapsulated parts" | | Raw 8-bit bytes in a part declared `7bit` or `quoted-printable`, or in headers | 2045 §2.7 and §6.7 | | Lines over 998 octets (unwrapped HTML) | 2045 §2.7; [5321 limit](https://emailmarketing.net/learn/rfc/rfc5321-smtp#size-limits-section-4531--minimums-implementations-must-handle) | | QP lines over 76 characters, lowercase `=xx` hex, literal trailing whitespace | 2045 §6.7 rules 3 and 5 | | Base64 with invalid characters or broken padding | 2045 §6.8 | | Content-Transfer-Encoding other than 7bit, 8bit or binary on a multipart | 2045 §6.4 | | Charset declared but content not valid in it (for example, a `us-ascii` label on an 8-bit body) | 2045 §5.2; 2046 §4.1 | | `multipart/alternative` with HTML before plain text, or HTML alone inside an alternative | 2046 §5.1.4 ordering | | Bare CR or LF (not in CRLF pairs) in transmitted data | 2045 §2.8; 5321 | | `message/partial` fragmentation | Filter evasion heuristic | None of these defects alone typically blocks delivery at the major providers, but their effect adds to reputation. Several of them (boundary bugs, encoding mismatches) also visibly corrupt rendering, which drives "report spam" clicks. ## Related articles - [RFC 5322 (Message Format)](https://emailmarketing.net/learn/rfc/rfc5322-message-format), the header framework MIME extends - [SMTPUTF8 and EAI](https://emailmarketing.net/learn/rfc/smtputf8-eai), on raw UTF-8 in headers and `message/global` - [ESMTP Extensions](https://emailmarketing.net/learn/rfc/esmtp-extensions), including CHUNKING and BINARYMIME - [Content and Design for Deliverability](https://emailmarketing.net/learn/operations/content-and-design-for-deliverability), on content signals beyond structure # RFC 3834 — Automatic Email Responses > The auto-responder rulebook: when not to respond, the Auto-Submitted header, null return-path and loop prevention, and how senders should emit and handle OOO/vacation replies. Source: emailmarketing.net — https://emailmarketing.net/learn/rfc/rfc3834-auto-replies Every campaign you send triggers automatic replies such as out-of-office (OOO) notices, and every feature that answers mail automatically can start a mail loop. RFC 3834 is the rulebook for anything that answers mail automatically: vacation and OOO notices, bots that acknowledge tickets, and responders on file servers and mail servers. Two of its contributions matter every day to an email service provider (ESP). The first is the **`Auto-Submitted:` header**, the standard machine-readable marker that says "this was not written by a human". The second is the **discipline of loop prevention**, which stops auto-responders, [bounces](https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications) and bulk mail from feeding back into each other. An ESP sits on both sides. Its campaigns trigger thousands of OOO replies, and its own transactional and notification traffic must not take part in loops. ## Responder taxonomy | Type | Acts for | Example | |---|---|---| | Service Responder | An address whose whole purpose is to respond; senders expect the response | File retrieval, calendar booking | | Personal Responder | One recipient, following that user's configuration | UNIX `vacation`, OOO | | Group Responder | Many recipients, under uniform criteria | A server-wide notifier for viruses or quarantined mail | ## When a responder must NOT respond Responders "MUST NOT blindly send a response for every message received": - A responder **MUST NOT** respond when the response would go to a null address, that is, when the `MAIL FROM` or `Return-Path` of the subject message is `<>` (bounces and other notifications). This mirrors [RFC 5321's rule](https://emailmarketing.net/learn/rfc/rfc5321-smtp#null-reverse-path-mail-from) that notifications are sent with the null sender. - It **SHOULD NOT** respond to any message that carries `Auto-Submitted:` with a value other than `no`. Auto-replies never answer auto-replies. - It **MAY** refuse to respond to return paths with patterns typical of responders and mailing lists: local parts that match `owner-*`, `*-request`, `MAILER-DAEMON` and similar. - Personal and Group responders **SHOULD NOT** respond unless the recipient's address appears explicitly in a `To:`, `Cc:`, `Bcc:` or `Resent-*` field. This prevents responses to bulk mail sent as Bcc, and to much spam. - A responder **SHOULD NOT** respond to messages with the `Precedence:` values `list`, `junk` or `bulk`. This is a de facto rule that the RFC endorses; `Precedence` is not formally standardized. - **Rate limit:** send the same response to the same sender at most once within a period of several days, with **7 days RECOMMENDED as the default**. Send at most one response per incoming message. - Service responders SHOULD NOT answer badly malformed requests, and SHOULD NOT return large responses (more than a few kilobytes) without verifying that the requester authorized them. This defends against backscatter and amplification. ## Where the response goes - **To the `Return-Path`** after delivery, or to the SMTP `MAIL FROM` reverse path before delivery. It is "really the only [address] that can be expected, as a matter of protocol, to be suitable for automatic responses that were not anticipated by the sender." - Personal and Group responders **SHOULD NOT** use `Reply-To:`. `From:` has the same problems, and `Sender:` SHOULD NOT be used either. A Service Responder MAY use `From:`, or an address in the payload, if the specification of its service says so. - If `Return-Path` is missing, the delivery agent has a bug. Do not guess with heuristics. **What this means for an ESP:** OOO replies to your campaigns arrive at your **bounce address or Variable Envelope Return Path (VERP) address**, not at your `From:` or `Reply-To:` address. Your return-path processor must classify them (see below). The VERP encoding tells you which recipient is away, even when the body of the reply is useless. ## How a compliant response is built - **Envelope:** choose a `MAIL FROM` that makes loops unlikely. **`<>` MAY be used**, or a dedicated response address that never responds. `NOTIFY=NEVER` on RCPT is RECOMMENDED where the server supports the [Delivery Status Notification (DSN) extension](https://emailmarketing.net/learn/rfc/esmtp-extensions), because an auto-responder does not want bounces of its own responses. - **Header:** - `Auto-Submitted: auto-replied`. - `From:` reaches the human owner or maintainer. For personal responders, that is the recipient's name and a recognizable address. - `To:` is the single recipient of the response. - `Subject:` is a brief indication that this is an automatic response, followed by the original subject. The prefix `Auto: ` MAY be used (followed by an ASCII space, 0x20). - `In-Reply-To:` and `References:` SHOULD be set from the `Message-ID` of the subject message, as described in RFC 2822 §3.6.4. - `Date:` is the time the response was generated. - `Reply-To:` appears only if a reply is actually wanted, and points to where the reply is expected. - **Body:** brief, in `text/plain`. It SHOULD NOT include significant content, non-text parts or attachments from the subject message. This stops responders from rebroadcasting confidential or malicious content. ## The `Auto-Submitted:` header field The syntax is `Auto-Submitted: value [; parameters]`. The registered values are: | Value | Meaning | Rules | |---|---|---| | `no` | The message originated with a human | Optional; its absence roughly indicates human origin | | `auto-generated` | Sent by an automatic process **not** in direct response to another message (cron alerts, notifications, welcome mail) | MUST NOT be used on direct responses. MUST NOT label DSNs or message disposition notifications (MDNs), which are identified by their own MIME types | | `auto-replied` | Sent by an automatic process in direct response to another message | SHOULD be used on all auto-replies; MAY also appear on DSNs and MDNs | Extension keywords require IETF consensus. The field is the standard key for suppression: mail that carries `auto-generated` or `auto-replied` must never receive an automatic answer. ## Loop prevention, summarized Loops are prevented by defense in depth, and each layer is sufficient on its own: 1. Responses go to the Return-Path, and messages with a null return path never get responses. A responder that sends with `MAIL FROM:<>`, or from a response address that stays silent, can therefore never be answered by a compliant peer. 2. `Auto-Submitted: auto-replied` marks the response, so other responders stay silent. 3. Remembering each sender, and responding at most once per sender per 7 days, caps volume even against a peer that does not comply. 4. One response per incoming message, never more (the defense against "sorcerer's apprentice mode"). ## Guidance for senders (ESP operations) - **Sending automated mail:** every message your platform generates that is not a direct reply (welcome mail, alerts, digests and, arguably, bulk campaigns) can carry `Auto-Submitted: auto-generated`. Anything that answers a user's message carries `auto-replied`. This costs nothing, stops storms of OOO replies coming back at you, and labels your streams honestly for filters. Never put an `Auto-Submitted` value other than `no` on genuine human one-to-one (1:1) mail. - **Never auto-respond to `<>` or to `Auto-Submitted` mail** in any product feature (autoresponders, "thanks for your reply" flows, ticket bots). Doing so generates backscatter, and backscatter gets IP addresses [blocklisted](https://emailmarketing.net/learn/reference/blocklists-and-spamhaus). - **Classifying inbound replies at the bounce address:** an OOO reply is not a bounce. Detect it by `Auto-Submitted: auto-replied`, by subject prefixes such as `Auto: ` or a localized "out of office", and by the absence of a `multipart/report` structure. Then **do not suppress the recipient**. An OOO reply proves that the mailbox exists and received the message, so treating it as a failure removes live subscribers. Microsoft Exchange marks OOO replies with `X-Auto-Response-Suppress` and `auto-replied`. Plenty of responders in the real world do not comply, so keep heuristics alongside the header check. - **Reply tracking features:** exclude messages with `Auto-Submitted != no` from "reply" engagement metrics, and do not let them trigger follow-up sequences. Counting OOO replies as engagement corrupts both analytics and sending logic. - **Expect spikes in OOO volume** after large business-to-business (B2B) sends, especially around holidays. They are normal and harmless. An auto-response loop between your system and a responder is not harmless, and the limits on your side (once per 7 days, once per message) are the guard against it. - **Precedence: bulk** on marketing mail is still a courtesy signal that some responders honor by staying silent. It is non-standard but harmless, and it reduces OOO noise. ## Related articles - [RFC 5321 (SMTP)](https://emailmarketing.net/learn/rfc/rfc5321-smtp), the null reverse-path contract this builds on - [Delivery Status Notifications](https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications), the other kind of automatic mail, identified by format rather than by Auto-Submitted - [ESMTP Extensions](https://emailmarketing.net/learn/rfc/esmtp-extensions), including `NOTIFY=NEVER` - [Complaint Feedback Loops](https://emailmarketing.net/learn/list-management/complaint-feedback-loops) # RFC 5321 — SMTP: The Transport Protocol > Deliverability-focused digest of SMTP: session model, envelope vs. content, reply-code semantics, null sender, retry rules, size limits, and timeouts. Source: emailmarketing.net — https://emailmarketing.net/learn/rfc/rfc5321-smtp Every time a receiving server accepts, defers or rejects your mail, it answers in the terms of one protocol. RFC 5321 defines how mail moves between hosts, and every bounce code, retry policy and envelope identity used in deliverability work comes from it. For the vocabulary around it (MTA, MSA, ADMD and so on), see [RFC 5598: Internet Mail Architecture](https://emailmarketing.net/learn/rfc/rfc5598-email-architecture). For the message inside the envelope, see [RFC 5322: Message Format](https://emailmarketing.net/learn/rfc/rfc5322-message-format). ## Session model An SMTP session is a lock-step dialog, one command at a time. Extensions such as PIPELINING relax this when both sides agree. | Step | Client sends | Server success reply | |---|---|---| | Connect | (TCP connection) | `220` greeting | | Identify | `EHLO client-hostname` (fallback `HELO`) | `250` and the list of extensions | | Envelope sender | `MAIL FROM:` | `250` | | Envelope recipient(s) | `RCPT TO:` (one per recipient, repeatable) | `250` (or `251` forwarded) | | Content | `DATA` | `354`, then the message, ended by `.`, then `250` | | End | `QUIT` | `221` | Other commands: `RSET` (abort the current transaction), `VRFY` and `EXPN` (address verification, widely disabled or answered with `252` to prevent address harvesting), `NOOP` and `HELP`. - A rejection at `MAIL FROM` or `RCPT TO` costs the receiver nothing for each message. A rejection after `DATA` means the receiver has already accepted the bytes. Many providers leave their final judgment (content filtering) to the reply after `DATA`, so a `5xx` after the final dot is a rejection for content or reputation, not an address problem. - The `EHLO` hostname is an identity signal. Receivers commonly check that it is a fully qualified domain name (FQDN) that resolves, and that it is consistent with the reverse DNS (rDNS) of the connecting IP address. RFC 5321 requires it to be the client's primary host name (or an address literal when there is none). ## Envelope vs. content The **envelope** is the addressing at the protocol level: one reverse-path (`MAIL FROM`) and one or more forward-paths (`RCPT TO`). The **content** is everything sent inside `DATA`: the header section and the body (governed by [RFC 5322](https://emailmarketing.net/learn/rfc/rfc5322-message-format)). These consequences come up constantly in deliverability: - The address people see (the `From:` header) and the address bounces go to (`MAIL FROM`, recorded at delivery as `Return-Path:`) are independent. SPF authenticates the envelope `MAIL FROM`, and DMARC then tests whether it aligns with the header `From:` (see [DMARC](https://emailmarketing.net/learn/authentication/dmarc)). - Recipients in `RCPT TO` do not need to appear in `To:` or `Cc:`. This is how Bcc and list expansion work. - Relays MUST NOT modify the envelope addresses or the meaning of the message. They only add trace fields at the top (`Received:`, and the final delivery agent adds `Return-Path:`). ## Reply codes A reply code has three digits. The text after the code is for people, and the number is the contract. | First digit | Class | Sender behavior | |---|---|---| | `2yz` | Positive completion | The action succeeded; proceed | | `3yz` | Positive intermediate | Send more (only `354` in base SMTP) | | `4yz` | Transient negative | The failure may clear; **retry later, unchanged** | | `5yz` | Permanent negative | **Do not retry the same request**; bounce and suppress | The second digit gives the category: `x0z` syntax, `x2z` connections, `x5z` mail system status. Modern servers add RFC 3463 enhanced status codes (such as `5.7.1`) after the three-digit code for a finer diagnosis. Key codes: | Code | Meaning | |---|---| | `220` | Service ready (greeting) | | `221` | Closing channel (after QUIT) | | `250` | Requested action OK or completed | | `251` | User not local; will forward to `` | | `252` | Cannot VRFY user, but will accept and attempt delivery | | `354` | Start mail input; end with `.` | | `421` | Service not available, closing channel (also used for rate limiting and for deferrals like greylisting) | | `450` | Mailbox unavailable (temporary, for example busy or greylisted) | | `451` | Local error in processing; retry later | | `452` | Insufficient system storage, or too many recipients; retry | | `455` | Server unable to accommodate MAIL parameters now | | `500`–`504` | Syntax error, command not implemented, or bad parameters | | `550` | Mailbox unavailable (permanent: unknown user, or rejection for policy) | | `551` | User not local; try `` | | `552` | Exceeded storage allocation (message too big for the mailbox) | | `553` | Mailbox name not allowed (bad address syntax) | | `554` | Transaction failed (no valid recipients, or rejection for content or policy) | | `555` | MAIL FROM or RCPT TO parameters not recognized | In practice, receivers are free to use any code with any text. `4xx` deferrals ("try again later", "unusual rate of mail") are the standard soft signal that a provider is throttling you for reputation, and the text of a `550 5.7.x` reply carries the provider's actual reason. Always log the full reply text, not only the code. ## Null reverse-path (`MAIL FROM:<>`) - Delivery status notifications (bounces) and other notifications that the mail system generates MUST be sent with a **null reverse-path**, `MAIL FROM:<>`, so that a failed bounce can never generate another bounce (loop prevention). - Servers MUST accept `MAIL FROM:<>`. Rejecting the null sender breaks bounce handling and does not comply with the standard (although some spam filters score it). - A message received with a null reverse-path must never itself be answered with a DSN to that path. - In practice, any address you use in `MAIL FROM` must be able to receive mail, for bounce processing. The null sender is only for notifications, never for regular sending. ## Retry expectations (Section 4.5.4) - After a `4xx` or a connection failure, the sender queues the message and retries. The retry interval SHOULD be at least **30 minutes** for each destination (a strategy that shortens this when the first attempt failed in the middle of the connection is permitted). - The time before giving up generally needs to be **at least 4–5 days**. After that, a permanent failure notification goes to the reverse-path. - Retries MUST be tracked for each destination host or address, and exponential backoff is encouraged. Repeatedly hitting a host that is deferring you is itself a reputation signal. - On a `5xx`, the sender MUST NOT retry the same message to the same address, and generates a non-delivery notification instead. For list hygiene, suppress hard bounces immediately, and suppress soft bounces after repeated failures across the retry window. - If several MX hosts exist, the client tries them in order of preference (lowest MX value first) before deferring. ## Size limits (Section 4.5.3.1 — minimums implementations MUST handle) | Object | Minimum capacity | |---|---| | local-part | 64 octets | | domain | 255 octets | | path (`<...>` including punctuation) | 256 octets | | command line (including CRLF) | 512 octets | | reply line (including the code and CRLF) | 512 octets | | text line (including CRLF) | 1000 octets | | message content | at least 64K octets; no fixed ceiling, and the limit is advertised through the `SIZE` extension (RFC 1870) | Exceeding a receiver's declared limits draws a `552` (for the message) or a `500` (for a line or command). In modern practice, check the `SIZE=` value in the EHLO response before sending large messages. ## Timeouts (Section 4.5.3.2: minimum client-side waits) | Waiting for | Minimum timeout | |---|---| | Initial `220` greeting | 5 minutes | | `MAIL` reply | 5 minutes | | `RCPT` reply | 5 minutes | | `DATA` reply (`354`) | 2 minutes | | Each data block accepted | 3 minutes | | Reply to final `.` | **10 minutes** | | (Server side) inactivity | 5 minutes | The 10-minute wait at the end of data matters. Providers deliberately delay their verdict after DATA while they filter, and clients that hang up early cause duplicate deliveries: the server delivers the message, and the client retries it. ## Related articles - [RFC 5322: Message Format](https://emailmarketing.net/learn/rfc/rfc5322-message-format), on what goes inside `DATA` - [RFC 5598: Internet Mail Architecture](https://emailmarketing.net/learn/rfc/rfc5598-email-architecture), on who runs each hop - [DMARC](https://emailmarketing.net/learn/authentication/dmarc), on how envelope and header identities are authenticated and aligned # RFC 5322 — Internet Message Format > Deliverability-focused digest of the message format: required vs. optional headers, From/Date/Message-ID/Reply-To rules, line limits, and malformations that trigger filtering. Source: emailmarketing.net — https://emailmarketing.net/learn/rfc/rfc5322-message-format Every message you send has to follow a strict format, and filters at the major providers reject or heavily penalize messages that break it. Getting the format right is therefore a baseline deliverability requirement. RFC 5322 defines that format: the content that travels inside the SMTP `DATA` command. The envelope around it is covered in [RFC 5321 (SMTP)](https://emailmarketing.net/learn/rfc/rfc5321-smtp). A message is a **header section**, made of fields of the form `Name: body CRLF`, followed by an optional **body**. One empty line separates the two. ## Line and length rules - Lines end with `CRLF`. A bare `CR` or a bare `LF` MUST NOT appear. This is a classic malformation introduced by naive scripts. - Each line MUST be at most **998** characters long (not counting the CRLF), and SHOULD be at most **78**. - A header field may be **folded** across lines: a `CRLF` followed by whitespace (a space or a tab) continues the same logical field. Unfolding reverses this. Non-ASCII bytes are not permitted in headers. Encoded words (RFC 2047) are used instead. ## Header field occurrence table (Section 3.6) | Field | Min | Max | Notes | |---|---|---|---| | `Date:` (orig-date) | 1 | 1 | **Required** | | `From:` | 1 | 1 | **Required**; a mailbox list | | `Sender:` | 0 | 1 | **MUST** appear if `From:` has more than 1 mailbox; a single mailbox | | `Reply-To:` | 0 | 1 | An address list | | `To:`, `Cc:`, `Bcc:` | 0 | 1 each | | | `Message-ID:` | 0 | 1 | **SHOULD** be present | | `In-Reply-To:`, `References:` | 0 | 1 each | SHOULD appear in replies | | `Subject:` | 0 | 1 | | | `Comments:`, `Keywords:` | 0 | unlimited | | | Trace (`Received:`, `Return-Path:`) | 0 | unlimited blocks | Added at the top in transit; never added by the author | | `Resent-*` | 0 | unlimited blocks | See below | | Optional and extension fields (`X-*`, `List-*`, …) | 0 | unlimited | Names must be unique unless specified otherwise | Only `Date:` and `From:` are mandatory. A duplicate of any field with a maximum of 1 (two `From:` headers, or two `Subject:` headers) makes the message malformed. A duplicate `From:` is also a known phishing evasion pattern, and filters punish it hard. ## The fields that matter most for deliverability ### `From:` This field names the **author or authors** of the message. It is the identity DMARC evaluates and the one users see. Its syntax is a `mailbox-list`, and the display name is optional: `"Ann Example" `. If more than one mailbox is listed, `Sender:` becomes mandatory. That field holds a single mailbox: the agent responsible for actually transmitting the message. When `Sender:` is absent, the `From:` address is implicitly the sender. Alignment between this domain and the domains authenticated by SPF and DKIM is the core of [DMARC](https://emailmarketing.net/learn/authentication/dmarc). ### `Date:` This field records when the author "pushed send", in `date-time` syntax: `day-of-week, DD Mon YYYY HH:MM:SS ±ZZZZ`. The year has 4 digits and the zone is a numeric offset; names such as `GMT` and `EST` are obsolete syntax. Dates that are far in the past or the future are a spam signal at several providers. ### `Message-ID:` The syntax is `` in angle brackets. Both sides are `dot-atom-text`, with no folding whitespace inside. The generator MUST guarantee **global uniqueness**, conventionally with a unique value followed by @ and your domain. Message-IDs that are missing, repeated across messages, or syntactically broken (no `@`, no angle brackets, not unique) are strong heuristics for bulk mail and spam. Always generate one at submission, with a domain you control. ### `Reply-To:` This field says where the author wants replies to go, in place of `From:`. Legitimate uses include role addresses and the handling of campaign replies. A `Reply-To:` domain that is very different from the `From:` domain is a common scam pattern and is scored accordingly. Keep the two consistent, or make the difference easy to explain. ### `In-Reply-To:` and `References:` These fields contain the `Message-ID` of the parent message, or several of them, and they build threads. When a sequence claims to be a reply (a "re:" in the subject with no real threading headers), the mismatch is detectable. ## Resent and trace fields - **`Resent-From:`, `Resent-Date:`, `Resent-To:` and the other resent fields** are added as a block at the top of the message, most recent first, when a user sends an existing message into the transport again (manual forwarding as a new message). Within a block, `Resent-From:` and `Resent-Date:` are mandatory. The original fields are never altered. - **`Received:`**: each MTA hop adds one at the top. Reading them from the bottom up reconstructs the delivery path. A forged or inconsistent chain of Received fields is a filtering signal. - **`Return-Path:`** is added at final delivery and records the envelope `MAIL FROM` (see [RFC 5321](https://emailmarketing.net/learn/rfc/rfc5321-smtp)). Authors MUST NOT set trace fields themselves. ## Common malformations that trigger filtering | Malformation | Why it hurts | |---|---| | Missing `Date:` or `From:` | Violates the only two MUSTs; an instant heuristic hit | | Missing `Message-ID:` | Legitimate mail submission agents (MSAs) add one, so its absence correlates with spamware | | Duplicate `From:`, `Subject:` or `Date:` | Malformed, and a phishing evasion pattern | | Several mailboxes in `From:` without `Sender:` | Violates the specification | | Bare `LF` line endings, lines over 998 characters | Parsers disagree; some MTAs reject outright | | Raw 8-bit or UTF-8 bytes in headers without RFC 2047 encoding (or SMTPUTF8) | Rendering is undefined, and filters penalize it | | Malformed `Date:` (2-digit year, alphabetic zones, impossible values) | Obsolete syntax, and a fingerprint of bulk mailers | | Unmatched angle brackets or comments in address fields | Spoofers exploit the ways parsers disagree, so filters distrust it | | Missing or wrong separator between header and body | Body text is read as headers, or the reverse | | Empty or whitespace-only `Subject:` (allowed, but scored) | A bulk-mail heuristic | The safe rule is to generate messages with a real MIME library, never by concatenating strings, and to validate them with a linter before you increase volume. ## What RFC 5322 does not cover MIME (multipart bodies, attachments, HTML parts, content transfer encoding) is defined in RFC 2045–2049. Internationalized addresses and headers are RFC 6531 and RFC 6532 (SMTPUTF8). `List-Unsubscribe` and the other list headers are RFC 2369, RFC 2919 and RFC 8058. RFC 5322 is only the basic grammar of headers and body that those standards build on. ## Related articles - [RFC 5321 (SMTP)](https://emailmarketing.net/learn/rfc/rfc5321-smtp), the envelope that carries this content - [RFC 5598 (Internet Mail Architecture)](https://emailmarketing.net/learn/rfc/rfc5598-email-architecture), on which actor sets which header - [DMARC](https://emailmarketing.net/learn/authentication/dmarc), which authenticates the `From:` domain # RFC 5598 — Internet Mail Architecture > The vocabulary of email: MUA/MSA/MTA/MDA, ADMDs, actor roles, mediators vs. relays, and which actor sets which identity field. Source: emailmarketing.net — https://emailmarketing.net/learn/rfc/rfc5598-email-architecture To diagnose a delivery problem, or to follow a discussion about one, you need exact names for the parts of the mail system. Statements such as "the MSA should add that header" or "forwarding breaks SPF because the mediator is a new originator" only make sense with these terms. RFC 5598 is the specification that defines them. It names the components, actors and administrative boundaries that the transport specification ([RFC 5321](https://emailmarketing.net/learn/rfc/rfc5321-smtp)) and the format specification ([RFC 5322](https://emailmarketing.net/learn/rfc/rfc5322-message-format)) assume. ## Two worlds - **MUA world (users)**: where messages are created and read. - **MHS (Message Handling Service)**: the store-and-forward network that accepts a message from an Author and delivers it to Recipients. The architecture has three store-and-forward layers: User **Mediators** at the top, **MHS Relays** in the middle, and packet switches at the bottom. ## Actor roles (who is responsible) | Role | Responsibility | |---|---| | **Author** | Creates the content and the recipient list | | **Originator** | Checks the message against standards and local policy, then submits it, and handles the duties that follow submission. It has "dual allegiance": it works for the Author but enforces the rules of its ADMD | | **Relay** | Routes, stores and forwards within the MHS, and adds trace information. It MUST NOT change envelope addresses or the meaning of the message | | **Gateway** | A hybrid of User and Relay that connects different kinds of mail service. It may translate content but must preserve the dialogue between Author and Recipient | | **Receiver** | Performs final delivery (or redirects the message). It may enforce policy immediately before or after delivery, which is where decisions to deliver to the inbox, file as spam or reject are made | | **Recipient** | Reads the message, and may reply or send message disposition notifications (MDNs) | | **Return Handler** (Bounce Handler) | A special recipient of the notifications the MHS generates (DSNs), reached through the return address the Originator supplied | ## Functional components | Component | Full name | Function | Key facts | |---|---|---|---| | **MUA** | Message User Agent | The mail client of the Author (aMUA) or of the Recipient (rMUA) | The aMUA creates and submits. The rMUA displays, replies and files | | **MSA** | Message Submission Agent | Accepts submission from the aMUA, and enforces ADMD policy and conformance to standards | Port **587** (SUBMISSION, RFC 4409 and 6409), authenticated, compared with port 25 for relay. Split into the aMSA (acts for the Author, and may add `Date:` and `Message-ID:` or fix headers) and the hMSA (acts for the MHS and takes responsibility) | | **MTA** | Message Transfer Agent | Relays the message one application-level hop over SMTP | Adds `Received:`. Does not change envelope addresses or editorial content (it may re-encode the MIME Content-Transfer-Encoding, CTE). Variants: Boundary (or Border) MTA, which crosses ADMDs, and Outbound, Inbound and Final MTAs | | **MDA** | Message Delivery Agent | Transfers responsibility from the MHS to the Recipient's environment | Split into the hMDA (facing SMTP) and the rMDA (applies actions at delivery time, for example filtering into folders). Writes `Return-Path:` | | **MS** | Message Store | Where messages rest | aMS (drafts, queue and sent mail) and rMS (received mail, accessed over IMAP or POP) | The standard flow runs **from the aMUA to the MSA, through one or more MTAs, to the MDA, the rMS and finally the rMUA.** ## ADMD: Administrative Management Domain An **ADMD** is a boundary of independent administrative authority. Inside it, one operator's policies apply for authentication, filtering, accountability and content handling. Everything that matters in deliverability happens **at the boundaries between ADMDs**, because that is where parties with no shared control must establish trust. This is what SPF, DKIM and [DMARC](https://emailmarketing.net/learn/authentication/dmarc) authenticate: the sending ADMD to the receiving ADMD. There are three types. **Edge** ADMDs are organizations at the periphery that run their own mail. **Consumer** ADMDs are mailbox providers that serve end users, typically through web or IMAP access. **Transit** ADMDs are mail service providers and ESPs that relay mail and add value between Edge ADMDs. Edge ADMDs may exchange mail directly with each other. Transit ADMDs aggregate and filter mail, and take on responsibility for the reputation of their customers' mail. ## Mediators vs. relays: why forwarding is special A **Relay** moves the same message along. Responsibility and the envelope do not change. A **Mediator** receives a delivered message and **posts it again**. That creates a new transit through the MHS and a new responsibility, and the content may change, while the original Author's `From:` is preserved. Mediators sit between full relaying and full authorship, and they cause most of the edge cases in authentication. SPF breaks because the mediator's IP address is not in the SPF record of the Author's domain, and DKIM may break if the content changes. | Mediator type | What it does | Identity effects | |---|---|---| | **Alias** | Sends the message on to one or more new addresses. The message continues through the transfer service | Keeps the original `MailFrom` (return path), so bounces go to the original Originator. Only `RcptTo` changes. This is classic forwarding in the style of ".forward" | | **ReSender** (ReDirector) | Inserts a new Recipient into the original exchange | Keeps `From:`, adds `Resent-From:` (the mediator as author) and `Resent-Sender:`, and typically uses a new `MailFrom` | | **Mailing List** | Collects postings and redistributes them to members | A new `MailFrom` (the list's bounce address). Adds `List-Id:` (RFC 2919) and other list headers. Often modifies the subject or adds a footer, which breaks DKIM | | **Gateway** | Translates between different kinds of mail service | May rewrite content and addressing as needed, but must keep replies working | | **Boundary Filter** | A filter for abuse or policy at the edge of an ADMD, which may modify or quarantine messages | Acts as both a receiver and a re-injector | What this means for deliverability: a forwarder of the Alias type that preserves `MailFrom` breaks SPF at the next hop, unless it rewrites the sender (for example with SRS). A Mailing List that takes ownership of `MailFrom` passes SPF for its own domain, but it must not break alignment for the Author's domain. That need is the practical reason for ARC and for practices that preserve DKIM signatures. ## Identity fields: who sets what | Identity | Set by | Meaning | |---|---|---| | `RFC5321.HELO/EHLO` | SMTP client (MSA or MTA) | The host announcing itself for this hop | | `RFC5321.MailFrom` | Originator | The return address for notifications at the transfer level. It **need not** be the Author | | `RFC5321.RcptTo` | Author (or the Final MTA or MDA on redirect) | The envelope recipient, which may never appear in the headers | | `RFC5322.From` | Author | Who wrote the message (the DMARC identifier) | | `RFC5322.Sender` | Originator | Who submitted it. If it is absent, the `From:` mailbox is treated as the sender | | `RFC5322.Reply-To` | Author | Where replies should go | | `RFC5322.To/Cc/Bcc` | Author | The displayed recipients (Bcc recipients are not disclosed) | | `RFC5321.Received` | Each relay, mediator or receiver | A trace of hosts and IP addresses | | `RFC5321.Return-Path` | MDA | Records the `MailFrom` at delivery | | `RFC3461.ENVID` | Originator | An opaque tracking ID for one transit from posting to delivery (used to match DSNs) | | `RFC5321.ORCPT` | Originator | The original recipient address, which survives remapping. It is the only reliable way to match a DSN to a recipient | | `RFC2919.List-Id` | Mediator (list) | A globally unique list name that does not depend on any host | Three separate identities look like "the sender": `MailFrom`, `From:` and `Sender:`. Two different roles set them, and that is exactly why email authentication needed the concept of alignment ([DMARC](https://emailmarketing.net/learn/authentication/dmarc)). ## Ports and protocols quick reference | Port / protocol | Use | |---|---| | 25 / SMTP | Relay from MTA to MTA across ADMDs | | 587 / SUBMISSION | Submission from the aMUA to the MSA, authenticated (submission over implicit TLS on port 465 was added later, by RFC 8314) | | IMAP / POP | Access from the rMUA to the Message Store | | LMTP | Delivery from the MHS to the MDA without queuing | | ETRN / ODMR | Transfer from the MHS on request ("on-demand"), pulled by the receiving side | ## Related articles - [RFC 5321: SMTP](https://emailmarketing.net/learn/rfc/rfc5321-smtp), the relay protocol these components use - [RFC 5322: Message Format](https://emailmarketing.net/learn/rfc/rfc5322-message-format), the header fields each actor sets - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability), on how receiving ADMDs decide placement # RFC 6647 — Email Greylisting > How greylisting works (tuple mechanics, timing windows, reply codes), the IETF recommendations for greylisters, and what senders must do — same-IP retries, pool interactions — to pass it. Source: emailmarketing.net — https://emailmarketing.net/learn/rfc/rfc6647-greylisting When your first attempt to deliver to an unfamiliar receiver is deferred with a temporary failure, greylisting is the most common reason. Your retry logic has to be designed with greylisting in mind, or the deferral can repeat indefinitely. Greylisting means **temporarily degrading service to unknown email clients as a defense against abuse**. It exploits the fact that much spam software sends once and never retries after a `4xx` temporary failure, while a compliant MTA queues the message and retries as [RFC 5321 §4.5.4](https://emailmarketing.net/learn/rfc/rfc5321-smtp#retry-expectations-section-454) requires. RFC 6647 documents the technique. It is a Standards Track applicability statement in the style of a BCP, published in 2012. ## How greylisting is applied (the five variants) The RFC classifies greylisting by the SMTP stage at which the decision is made, and by what is recorded: | Variant | What is recorded | Behavior toward unknown entries or entries under the minimum age | |---|---|---| | Connection-level | Source IP (or hostname) only | `421` and close, or `4yz` to all further commands, until the source reaches a minimum age (for example, 30 minutes) | | HELO/EHLO-level | Tuple (source IP, HELO/EHLO parameter) | `4yz` replies while the tuple is absent or under the minimum age | | MAIL-level | Tuple (source IP, RFC5321.MailFrom) | Same | | RCPT-level | Tuple of the recipient plus any combination of source IP, MailFrom and other recipients | Same | | DATA-level | Tuples that add RFC5322.From and To, the Subject, message digests or analysis of the body; applied at `DATA` or after the final `.` | Same. This is the most expensive form for both sides | The standard form, and the one the RFC recommends implementing, is the **triplet of IP address, RFC5321.MailFrom and the first RFC5321.RcptTo**. ## Reply codes "Per RFC 5321, the only two reasonable choices are `421` if the implementation wishes to terminate the connection immediately, and `450` otherwise." A greylisting deferral therefore looks exactly like any other soft failure, and nothing in the reply reliably identifies it as greylisting. Some receivers say "greylisted" in the text, so always log the full reply text. ## Timing parameters (Section 5 recommendations to greylisters) | Parameter | RFC recommendation | |---|---| | Retry-acceptance window | MUST be configurable; the default SHOULD be **1 minute to 24 hours**. A retry before the minimum delay gains the sender nothing, and a retry after the maximum finds that the record has expired | | Record lifetime after passing | A timeout for database entries MUST exist; the default SHOULD be **at least one week**. IP addresses with no recent traffic are then deleted and must qualify again | | After a successful retry | Allow **all further SMTP traffic from that IP address**, whatever the envelope information. Passing once allowlists the IP address, not only the tuple | Other MUST and SHOULD items for greylisters: - All inbound border MTAs of an administrative management domain (ADMD) listed in DNS SHOULD share a **common greylisting database and common policies**. Otherwise a sender that retries to a different MX starts the clock again, which makes the delay longer. - Greylisters MAY track CIDR blocks (for example, /24) or groupings by domain, so that clustered outbound server farms qualify as a unit. - Greylisters MUST provide a manual override (an exception list) for IP addresses and network blocks. - Greylisting SHOULD NOT be applied on the submission service for authenticated clients, or to any authenticated session. ## Exceptions / whitelisting (Section 2.7) Exception sets may name IP addresses, CIDR blocks, host names or domain names that are exempt from greylisting. Good candidates are hosts known to retry properly and hosts that rarely send. DNS-based allowlist services can serve as a shared source of exceptions. ## What senders must do On the client side, RFC 6647's position is that a client cannot know why a `4xx` reply came back ("greylisting could be in effect"). **A client therefore needs to be able to retry in order to be considered fully capable.** For an ESP, this has these operational consequences: 1. **Retry from the same IP address.** The tuple includes the source IP address. If your MTA retries a deferred message from a different IP address in the pool, the greylister sees a brand-new tuple and defers again, possibly forever as the retries cycle through the pool. Your queue and retry logic must pin a deferred message (or at least a deferred destination) to the IP address that made the first attempt. This is the key interaction between greylisting and sending from pools. 2. **Keep MailFrom stable across retries.** VERP and return paths unique to each message are fine, since the tuple is per message anyway. Rewriting the envelope sender between attempts, however, creates a new tuple. 3. **Time the first retry well.** The RFC 5321 SHOULD of ≥30 minutes sits comfortably inside the default acceptance window (1-minute-to-24-hour). A first retry in the 5–30 minute range clears most greylisters quickly. Retrying within seconds is wasted, because the entry is still under the minimum age, and it looks like hammering the server. 4. **Expect inconsistency between MX hosts.** Receivers that ignore the SHOULD on a shared database defer you separately at each MX, and a retry that lands on another MX host restarts the wait. This is a defect at the receiver, not yours. Patience is the fix, not rotating IP addresses. 5. **Plan for warm-up.** New IP addresses are by definition unknown everywhere, so the first sends from a fresh IP address to smaller receivers see higher deferral rates for the first hours. Allow for this in your throughput expectations for [IP warm-up](https://emailmarketing.net/learn/ip-management/ip-warm-up). It clears as the tuples age in. 6. **Know that address changes defeat aging.** Senders on DHCP or rotating addresses appear as new sources after every change. Conversely, NAT makes separate MTAs share one IP address, so a pass by one machine exempts the others. This is why receivers increasingly distrust greylisting on its own. 7. **Protect time-critical mail** such as password resets and other transactional mail. Greylisting can delay delivery on first contact by minutes to hours. The RFC's own security section warns of "unintentional and detrimental consequences for delivery of legitimate mail", particularly for time-critical applications. The mitigation is to send transactional mail from established IP addresses used consistently, which will already be aged in or on exception lists. ## Security considerations (Section 8) - Attackers who rotate the tuple parameters can bloat the greylisting database, a denial of service against the receiver. Implementations should define a failure policy for when the database is attacked or unavailable. - Greylisting slows abuse down but does not authenticate anyone: any botnet that retries passes it. Its value is that it cheaply filters out the share of abuse that does not retry. ## Related articles - [RFC 5321 — SMTP](https://emailmarketing.net/learn/rfc/rfc5321-smtp), the retry obligations that greylisting relies on (≥30-minute retry interval, 4–5 day give-up) - [Enhanced Status Codes](https://emailmarketing.net/learn/bounce-handling/smtp-enhanced-status-codes), for classifying `4xx` deferrals - [IP Warm-Up](https://emailmarketing.net/learn/ip-management/ip-warm-up), on why fresh IP addresses see more deferrals # SMTPUTF8 / Internationalized Email (RFC 6530/6531/6532) > EAI digest: the SMTPUTF8 SMTP extension, UTF-8 headers, the no-downgrade rule, error codes, and what an ESP must decide about accepting and delivering internationalized addresses. Source: emailmarketing.net — https://emailmarketing.net/learn/rfc/smtputf8-eai If your subscribers or customers use email addresses written in their own scripts, such as `用户@例え.jp`, you have to decide whether your platform accepts those addresses and whether it can deliver to them. The Email Address Internationalization (EAI) suite lets email addresses and headers carry raw UTF-8, so that an address like that is a working mailbox. RFC 6530 is the framework, RFC 6531 is the SMTP extension (`SMTPUTF8`), and RFC 6532 covers the changes to the message format. RFC 6533 covers internationalized [delivery status notifications (DSNs)](https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications). The suite obsoletes the experimental RFCs 4952, 5336 and 5504. For an email service provider (ESP), the core question EAI raises is operational: **do you accept internationalized recipient addresses, and can you deliver to them from end to end?** ## Terminology (RFC 6530) - **All-ASCII address** versus **non-ASCII (i18n) address**: the second kind has at least one non-ASCII character in the local part, in the domain, or in both. - **Conventional message**: a message that strictly conforms to [RFC 5322](https://emailmarketing.net/learn/rfc/rfc5322-message-format). **Internationalized message**: a message that uses the EAI extensions and therefore no longer conforms to RFC 5322. It exists only inside a channel where SMTPUTF8 has been negotiated. - Domains could already be internationalized through the A-labels (`xn--…` Punycode) of Internationalized Domain Names in Applications (IDNA, RFC 5890–5894), and that works without EAI. What EAI adds is UTF-8 in the **local part**, which has no ASCII-compatible encoding at all, plus native U-labels and UTF-8 header values on the wire. ## The pivotal design decision: no in-transit downgrade The experimental protocol paired each non-ASCII address with an ASCII alternative, and let relays downgrade the message along the way. The working group abandoned this approach because of interoperability failures, security concerns about unauthenticated pairing of addresses, and complexity. The rule in RFC 5321 that "the local-part MUST be interpreted and assigned semantics only by the host specified in the domain part" makes any rewriting of local parts in transit unsafe. The consequence (RFC 6530 §8): a relay holding a message that requires SMTPUTF8 **MUST either** negotiate the extension with the next hop **or reject or bounce the message**, so that the sender can make another plan. There is no partial delivery and no automatic fallback to ASCII. Downgrading, where it happens at all, happens only at the endpoints (at submission or at final delivery). ## The SMTP extension (RFC 6531) - **EHLO keyword:** `SMTPUTF8`, with no parameters. - **Request:** if the envelope or the message needs the capability, the client MUST add the `SMTPUTF8` parameter, which takes no value, to `MAIL FROM`. Example: `MAIL FROM:<用户@example.com> SMTPUTF8 BODY=8BITMIME`. - **What it unlocks:** UTF-8 in the local parts of MAIL and RCPT, U-label domains in the envelope and in trace fields, and the internationalized headers of RFC 6532 in the content. - **8BITMIME is mandatory:** servers that offer SMTPUTF8 MUST also support and announce 8BITMIME (RFC 6152). SMTPUTF8 is used with `BODY=8BITMIME` (or `BODY=BINARYMIME` where it is advertised), because UTF-8 headers are 8-bit data. - **Syntax:** `atext`, quoted-string text, esmtp-values and sub-domains are extended with `UTF8-non-ascii`. The structure of delimiters in addresses is unchanged. - **Trace fields:** a server that supports SMTPUTF8 and adds `Received:` to an SMTPUTF8 message SHOULD use the U-label form. The new `WITH` protocol values `UTF8SMTP(A/S/SA)` and `UTF8LMTP(A/S/SA)` record the negotiation. - **DSN:** a server that advertises both DSN and SMTPUTF8 MUST implement RFC 6533 (delivery status notifications that can carry UTF-8). - **VRFY and EXPN** gain an optional `SMTPUTF8` parameter, so that the server knows UTF-8 replies are safe. ### Relay and fallback rules, and error codes A client that supports SMTPUTF8 but cannot negotiate it with the next hop **MUST NOT transmit** an internationalized address, or a message with internationalized headers at any MIME level. A mail submission agent (MSA) may transform the message at submission. A relay SHOULD reject the message or generate a non-delivery notification (as described in RFC 3464 and RFC 6533). | Enhanced code | Meaning | Typical basic codes | |---|---|---| | `X.6.7` | Non-ASCII addresses are not permitted for that sender or recipient | 550, 553 | | `X.6.8` | A UTF-8 reply is required, but the client did not declare SMTPUTF8 support | 252, 550, 553 | | `X.6.9` | A message with UTF-8 headers cannot be transferred to one or more recipients, so the message is rejected | 550 | | `X.6.10` | Deprecated (a duplicate of X.6.8) | None | Rejection points: `553` at RCPT or `550` at MAIL where only ASCII is accepted, and `554` after DATA when recipients cannot accept internationalized headers. ## Message format changes (RFC 6532) - The format adds `UTF8-non-ascii` to `VCHAR`, `ctext`, `atext`, `qtext`, `text` and `dtext`. Raw UTF-8 therefore becomes legal in unstructured fields (Subject), address local parts, domains, comments and quoted strings. **Header field names remain ASCII-only.** - The line length limit of 998 becomes **998 octets** (a multi-byte character counts once for each of its octets). The recommended limit of 78 stays in characters, because it is about display width. - **Normalization:** NFC SHOULD be used; NFKC SHOULD NOT, because it can merge distinctions needed to spell names. RFC 6530 adds: support at least NFC on the receiving side, and never depend on senders to normalize. C0 control characters are prohibited, and U+0008 (backspace) is explicitly forbidden in mailbox names. - **Encoded words (RFC 2047) SHOULD NOT be generated** in an internationalized message. Write the UTF-8 directly. (Agents MAY convert encoded words to UTF-8 when quoting older material.) - **Message-ID:** UTF-8 is permitted, but keeping it ASCII is advised, for threading through `In-Reply-To:` and `References:` with parties that do not support EAI. - **The `message/global` media type:** an encapsulated message with UTF-8 header values, the EAI counterpart of `message/rfc822`. Unlike other `message/*` types, **any content transfer encoding is permitted** (relaxing RFC 2045 §6.4). 8bit or binary is recommended where allowed, and the message MUST get a 7-bit-safe encoding if it is handed to a 7-bit system. It is used in RFC 6533 DSNs to return internationalized originals. ## Deliverability and operational implications for an ESP 1. **The delivery path is all or nothing.** You can deliver to `user@例え.jp` (an A-label domain with an ASCII local part) with an ordinary stack. You can deliver to `用户@anything` **only** if every hop to the recipient's MX negotiates SMTPUTF8. If the MX does not offer it, the only compliant outcomes are rejection at submission or a bounce. 2. **Provider support is uneven.** Gmail and Outlook.com accept SMTPUTF8 for inbound mail, and Gmail advertises it for outbound mail. Many corporate gateways, smaller MTAs and downstream tools do not. An ESP that accepts EAI recipients needs to handle capability for each destination, and needs a clear bounce classification (`X.6.7` or `X.6.9`) when no path exists. 3. **Audit the whole stack, not only the MTA.** The security section of RFC 6531 is explicit: systems for logging, trouble tickets, suppression and tracking must store full UTF-8 addresses (or a defined mapping to ASCII), or data is silently lost. Add to that list the validation regexes of signup forms, deduplication (normalize with NFC before comparing), Variable Envelope Return Path (VERP) encoding, bounce parsers (expect the RFC 6533 `utf-8` address types) and the URL encoding of one-click unsubscribe links. 4. **In principle, authentication is unaffected.** [SPF](https://emailmarketing.net/learn/authentication/spf), [DKIM](https://emailmarketing.net/learn/authentication/dkim) and [DMARC](https://emailmarketing.net/learn/authentication/dmarc) operate on domains, which have A-label forms. But apply the DKIM signature after any downgrade or transformation at an endpoint. Signed or encrypted content can never be upgraded or downgraded without breaking signatures (RFC 6530 names S/MIME and PGP explicitly). 5. **Risk from homographs and confusable characters:** internationalized From domains and local parts widen the room for phishing lookalikes (see [brand protection](https://emailmarketing.net/learn/reference/brand-protection-domain-management)). Receivers apply extra scrutiny to addresses that mix scripts. 6. **A defensible minimum position** for an ESP without full EAI support: accept internationalized domain names (IDNs) in A-label or U-label form (converting them to A-labels for SMTP), reject non-ASCII local parts at list import and in the API with a clear error, and document this. Accepting EAI addresses you cannot deliver to only manufactures bounces. ## Related articles - [RFC 5321 (SMTP)](https://emailmarketing.net/learn/rfc/rfc5321-smtp) - [RFC 5322 (Message Format)](https://emailmarketing.net/learn/rfc/rfc5322-message-format), the ASCII baseline that EAI extends - [MIME and Encoding](https://emailmarketing.net/learn/rfc/mime-and-encoding), including 8BITMIME and the encoding rules for `message/*` - [ESMTP Extensions](https://emailmarketing.net/learn/rfc/esmtp-extensions), the negotiation mechanism SMTPUTF8 relies on - [Delivery Status Notifications](https://emailmarketing.net/learn/bounce-handling/delivery-status-notifications), a format that RFC 6533 extends for EAI # Two Worlds of Email Deliverability > Working with mailbox providers (wanted/expected email) versus working against them (gaming techniques) — why gaming fails and why sending less can earn more. Source: emailmarketing.net — https://emailmarketing.net/learn/strategy/two-worlds-of-email-deliverability If your email is being filtered, you can either make it more wanted by recipients or try to get it past the filters with technical tricks. Those two approaches lead to two very different "worlds" of deliverability, and only the first one works over time. ## World 1: working with the mailbox providers Here your aim matches the providers' aim: mail that recipients **want** and **expect**, which is the mail providers are trying to deliver to the Inbox. Two conditions define that mail: - **Wanted:** it gives recipients something they value. - **Expected:** recipients recognize it, because they signed up or already have a business relationship with your brand. A provider cannot see into its users' minds, but it can observe their behaviour at scale, across tens of thousands of mailboxes, and that tells it more than asking would. Complaints and engagement carry the most weight: how many recipients mark a message as spam, how many open and read it, how many delete it unread, and how long they spend on it. Filtering algorithms turn those measurements into a verdict on whether your mail is wanted and expected. Behaviour is not the only input. Providers also examine **content**, where particular words or phrasing can push a message toward spam filtering, and **technical sending details** such as the number of connections you open, email authentication and warm-up schedules. Senders in this world send plainly and do not look for technical loopholes to "game" the system. Providers exist to deliver mail their users welcome, so in a program built on wanted and expected email the rest typically follows. Delivery problems still happen, and they are typically fixable. Open rates of **5% to 20% or higher** are common here, and the target is the **Inbox**. ## World 2: working against the mailbox providers Here senders try to trick spam filters into accepting or delivering mail that recipients neither want nor expect. Many senders arrive here without meaning to. Suppose your mail draws a lot of complaints or very little engagement, and providers have started filtering it. You have two possible responses: - **(A)** Look into the program itself: identify where the complaints or spam-trap hits come from and remove that cause, so recipients want and expect the mail more. That response keeps you in World 1. - **(B)** Leave the underlying cause in place and put all the effort into workarounds, such as spreading mail over many IP addresses so none attracts attention, rotating domain names, or sending the whole message as an image that content filters cannot read. That response takes you into World 2. World 2 is defined by the attempt to **game the system**. Plenty of poor deliverability advice circulates, so many senders choose this path in good faith. It fails because providers employ skilled, dedicated teams whose job is to spot the workarounds senders use against their filters and shut them down. **All gaming methods eventually stop working.** Every workaround named above is already well understood, and providers run countermeasures built to catch and penalize each one. Open rates around **0.1%** are typical in this world, and the standard "solution" to poor opens is to send more. Often the aim is no longer the Inbox at all, only the **Bulk or Spam folder**, as long as the mail is not refused outright. ## What makes email wanted and expected 1. **Permission is essential.** Mail that nobody asked for is unwanted by definition, so recipients must have invited you to write to them. 2. **What you send should match what people expect.** A subscriber who signed up for a "daily deal" and receives a daily advertisement with no deal in it is getting something other than what they wanted or expected. 3. **Volume should be reasonable and expected.** Sending five messages a day to people who were never told how often you would write means sending more than they expect, and probably more than they want. Tell subscribers how often to expect mail when they sign up. 4. **Permission cannot be hidden.** Consent tucked into terms and conditions that nobody reads still produces mail the recipient does not expect. A pre-checked checkbox has the same effect, since some people never notice it. 5. **The email must be identifiable.** A subscriber signed up for a particular brand. If the messages that arrive do not carry that brand, the subscriber sees mail from a sender they do not recognize and will probably regard it as unwanted and unexpected, however good the sign-up process was. 6. **Remove inactive subscribers.** Once a subscriber has gone a period of time without opening or clicking, stop mailing them. Someone who has ignored three emails a week for six months has in effect "emotionally unsubscribed". Dropping those addresses raises the share of your list that reads and wants your mail, so your sending as a whole becomes more wanted. Providers say openly that the purpose of their filters is to catch and block mail that recipients do not want or expect. ## Examples of gaming techniques (which do not really work) 1. **Using too many IP addresses (IP snowshoeing).** The sender spreads its volume thinly across many IP addresses, hoping each one sends too little to draw attention. Providers know the pattern and penalize senders who use more IP addresses than their volume justifies. GreenArrow recommends that each IP address send at least roughly 20,000 messages a day. 2. **Using too many domain names (domain snowshoeing).** The same trick applied to domains: spammers cycle through "disposable" domain names to shed a bad reputation and conceal who they are. Hard-core spammers go further, with methods that include taking over other senders' ESP accounts, DKIM replay attacks, sending through botnets and abusing open relays. Some of these are crimes. Measured against the goal of reaching the Inbox: - Filters are built specifically to detect IP and domain snowshoeing, so using either one can be enough on its own to move your mail to the Spam folder at many providers. - At best, snowshoeing gets mail into the **Spam folder**: some messages that would have been rejected outright are delivered to Spam instead. ## The two dimensions Two dimensions separate the worlds, and each is a scale with many positions between its ends: - **wanted and expected** at one end, **unwanted and unexpected** at the other - **not gaming** at one end, **gaming the system** at the other Progress means moving toward wanted and expected mail, and toward not gaming. The catch for a sender already in World 2 is that progress on **only one** dimension does not improve delivery. - Mail that becomes wanted and expected but still relies on gaming techniques is filtered for the gaming. - Mail that stops gaming but is still unwanted and unexpected is filtered for being unwanted. This change can even turn mail that used to reach the Spam folder into mail that is rejected entirely. The two have to improve **together**. ## Less is more: the economics that run against intuition Making mail more wanted and expected usually means sending **less** of it, and sending less can earn **more money**, because the smaller volume reaches the Inbox. GreenArrow illustrates this with a simplified, hypothetical example: - Mail in the Spam folder is opened 0.3% of the time, since about 95% of recipients never check Spam. - Mail in the Inbox is opened 10% of the time, 30× as often. - Every open is assumed to be equally likely to lead to the action that generates revenue. - The changes that make the mail wanted and expected cut volume by 5×, and they get it into the Inbox. Volume is 5 times lower while revenue per email is 30 times higher, so **total revenue rises 6×**. ## Making the changes Becoming more wanted and expected usually takes a close, thorough look at the whole email program. Let data drive it: change something, then watch what happens to complaint rates and engagement. Expect several rounds, because improving deliverability is an iterative process. Each campaign adds to your sending history, and that history points to the next improvement. The mailbox providers make the final decision to deliver to the Inbox, file in the Spam folder or reject, and these practices aim to make your mail the kind they choose to put in the Inbox. ## Related articles - [Basic IP Allocation](https://emailmarketing.net/learn/ip-management/basic-ip-allocation) - [Foundations of Email Deliverability](https://emailmarketing.net/learn/foundations/foundations-of-email-deliverability) - [Advanced IP Segmentation and Allocation](https://emailmarketing.net/learn/ip-management/advanced-ip-segmentation) # DANE for SMTP (RFC 7672) > DNSSEC-authenticated TLS for SMTP — TLSA record placement and parameters, the sending-MTA validation algorithm, failure handling, and how DANE compares to MTA-STS. Source: emailmarketing.net — https://emailmarketing.net/learn/transport-security/dane-smtp If your mail servers sit in DNSSEC-signed zones, you can tell every sending server exactly which TLS certificate or key your MX hosts must present, and stop attackers from stripping STARTTLS. DNS-Based Authentication of Named Entities (DANE), applied to SMTP in RFC 7672, does this with records published in DNSSEC-signed DNS. The secure existence of a TLSA record is enough on its own to tell sending mail transfer agents (MTAs) that TLS is available and mandatory for that server, which defeats STARTTLS stripping. The record data then authenticates the server without relying on public certificate authorities (CAs). DANE solves the same problem of downgrade and impersonation as [MTA-STS](https://emailmarketing.net/learn/transport-security/mta-sts), but it anchors trust in DNSSEC instead of the Web PKI combined with trust on first use. The two can coexist; see the comparison at the end. ## Prerequisite: DNSSEC Everything depends on the DNSSEC validation status. RFC 7672 uses four states: | State | Meaning | Sender treatment | |---|---|---| | `secure` | Cryptographically validated | Usable for DANE | | `insecure` | Zone not signed with DNSSEC | No DANE; fall back to opportunistic TLS as it worked before DANE | | `bogus` | Validation failed | Treated as a lookup error | | `indeterminate` | Validation status cannot be determined | Treated as a lookup error | A hard rule: if any DNS query used to locate TLSA records fails (`bogus`, `indeterminate`, timeout, malformed reply, SERVFAIL, and so on), the SMTP client **MUST treat that server as unreachable and MUST NOT deliver through it**. Tampering with DNS therefore causes a deferral, not a silent downgrade. To publish DANE, the zones that contain the MX hostnames, their address records and the TLSA records must all be signed with DNSSEC and must validate. ## TLSA record placement TLSA records live at a name derived from the **MX host** (not from the mail domain), prefixed with the port and the protocol: ``` _25._tcp.mx.example.com. IN TLSA 3 1 1 ``` For a non-standard SMTP port, put the port number in `_._tcp`. ## TLSA parameters for SMTP A TLSA record has three parameter fields (certificate usage, selector and matching type), plus the association data. For SMTP, only two certificate usages apply: | Usage | Name | SMTP applicability | |---|---|---| | 0 | PKIX-TA | **Not applicable.** An attacker who can defeat DNSSEC could replace the record anyway, so PKIX adds no security. MTAs also lack a canonical trust store of public CAs for opportunistic use | | 1 | PKIX-EE | **Not applicable** (for the same reasons) | | 2 | DANE-TA | Trust anchor mode: the record designates a CA (often the operator's own), and the server must include that trust anchor certificate in the certificate chain of its TLS handshake | | 3 | DANE-EE | End-entity mode: the record matches the server's leaf certificate or key directly. **Primary recommendation** | Recommended combinations of parameters: | Combination | Reading | Notes | |---|---|---| | `3 1 1` (DANE-EE, SPKI, SHA2-256) | SHA-256 digest of the server's public key | Primary recommendation. The record survives certificate renewal as long as the key does not change | | `2 0 1` (DANE-TA, Cert, SHA2-256) | SHA-256 digest of the trust anchor certificate | Secondary. The selector Cert(0) is preferred over SPKI(1) because it preserves the constraints of the trust anchor (path length, name constraints). Through a CNAME, many servers under the same CA can share one TLSA resource record set (RRset) | Support for SHA2-256 is mandatory in all DANE implementations, so `1` (SHA2-256) as the matching type is safe everywhere. ### Name checks and certificate lifetime | | DANE-EE(3) | DANE-TA(2) | |---|---|---| | Certificate name check | **MUST NOT** be performed, because the TLSA match alone authenticates the server | **Required**: a reference identifier must match an RFC 6125 DNS-ID (or a CN-ID if there are no DNS-IDs). The reference identifiers are the TLSA base domain (primary), the original next-hop domain, and the domain after CNAME expansion if it is different. Wildcards are valid only as the entire first label | | Certificate expiration | Ignored: validity comes from the lifetime of the DNSSEC signature on the TLSA record | Checked as part of chain validation | SNI: the SMTP client **MUST send Server Name Indication (SNI) containing the TLSA base domain**. Servers must not require SNI from clients, and do not need to send SNI in their own hello if the default certificate matches the TLSA records. ## Sending MTA algorithm 1. **MX resolution.** Look up the MX records for the next-hop domain. If the MX RRset is `secure`, continue for each MX host. If it is `insecure`, opportunistic DANE falls back to regular TLS handling as before DANE, while a locally configured policy that makes DANE mandatory defers instead. The MTA is not required to prefer the MX host that offers more security; the normal order of MX preference applies. 2. **Address resolution.** Resolve the A and AAAA records for the MX host first, both to confirm that it is reachable and to learn the DNSSEC status of the chain of names. If the address records are `insecure`, skip the TLSA lookups (this avoids lookup errors on unsigned zones). CNAME handling determines the candidate TLSA base domains: a `secure` CNAME chain gives two candidates (the fully expanded name first, then the original name), and an `insecure` initial CNAME leaves only the original name. 3. **TLSA lookup.** Query `_25._tcp.` for each candidate. The first candidate that returns a `secure` TLSA RRset becomes the TLSA base domain. Follow CNAMEs in TLSA responses only while the whole chain stays `secure`. 4. **Apply the outcome:** | TLSA lookup outcome | Sender obligation | |---|---| | `secure` RRset with at least 1 usable record | TLS is **mandatory**, and authentication through TLSA matching is **required**. If authentication fails, do not deliver through this server; try the next MX or defer | | `secure` non-empty RRset, but all records unusable (unknown parameters, and so on) | TLS (encryption) is mandatory, but authentication is not required. If the TLS connection fails, move to the next server or defer | | `insecure` RRset, or authenticated denial of existence | No DANE: fall back to opportunistic TLS as before DANE (cleartext is acceptable if STARTTLS is unavailable) | | Any lookup error (`bogus`, `indeterminate`, SERVFAIL, timeout) | The server is unreachable; defer if no other servers remain | Delivery failures under DANE are deferrals (transient), never a downgrade to cleartext. They can be reported through the [TLS-RPT](https://emailmarketing.net/learn/transport-security/tls-rpt) result types `tlsa-invalid`, `dnssec-invalid` and `dane-required`. ## Operational guidance for publishers **When you rotate keys or certificates, always publish in advance:** 1. Publish two TLSA records: one that matches the current key or certificate, and one that matches the next. 2. Wait at least the TTL of the TLSA records, so that caches expire. 3. Switch the server to the new key or certificate. 4. Remove the old TLSA record once it is no longer needed. If you rotate the server key without publishing the new TLSA record in advance, strict senders defer all mail until DNS converges. - With `3 1 1` (an SPKI digest), routine certificate renewals that keep the same key need **no** change to the TLSA records. - DANE-TA(2) with CNAME centralization: point the `_25._tcp` name of each server at a shared central TLSA RRset. The CA operator publishes digests of new trust anchors there before servers adopt new keys. If one server's key is compromised, replace its CNAME with a direct DANE-EE(3) record until its certificate expires. - **No selective STARTTLS:** if a server advertises STARTTLS only to some clients (for example, after probes in the style of greylisting), senders that support DANE, for which cleartext is forbidden, can never complete the expected first transaction. Operators that publish TLSA records MUST NOT run selective STARTTLS. - Monitor the health of your own TLSA records and DNSSEC continuously. An expired DNSSEC signature makes your domain unreachable, not only unauthenticated, for senders that validate DANE. ## DANE vs MTA-STS | | DANE (RFC 7672) | [MTA-STS](https://emailmarketing.net/learn/transport-security/mta-sts) (RFC 8461) | |---|---|---| | Trust anchor | DNSSEC | Web PKI (CA certificates) and HTTPS | | Requires DNSSEC | Yes (signed MX, address and TLSA zones) | No | | First-contact protection | Yes: secure denial of existence is itself authenticated | No: trust on first use, so protection begins once a policy is cached | | Downgrade resistance | Strong (DNS tampering leads to deferral) | Weaker (an attacker can suppress discovery before the first cache) | | Granularity | Per MX host and port | Per mail domain (MX name patterns) | | Certificate model | Pinned key or certificate (DANE-EE), or private trust anchor (DANE-TA); no public CA needed | A CA-signed certificate with a matching subject alternative name (SAN) is required on every MX | | Failure mode | Defer (temporary failure) | Defer under `enforce`; deliver and report under `testing` | | Reporting | Through [TLS-RPT](https://emailmarketing.net/learn/transport-security/tls-rpt) (`policy-type: tlsa`) | Through [TLS-RPT](https://emailmarketing.net/learn/transport-security/tls-rpt) (`policy-type: sts`) | Precedence when both are published: RFC 8461 requires that senders implementing both **MUST NOT let a passing MTA-STS policy override a failing DANE validation**. DANE is the stronger mechanism, and MTA-STS extends coverage to senders and domains that cannot use DNSSEC. Publishing both is legitimate and increasingly common. A sender's daily results for each appear as separate policy entries in TLS-RPT reports. # MTA-STS (SMTP MTA Strict Transport Security, RFC 8461) > How receiving domains publish an enforceable TLS policy via a DNS TXT record plus an HTTPS policy file, and how sending MTAs discover, cache, and apply it. Source: emailmarketing.net — https://emailmarketing.net/learn/transport-security/mta-sts MTA-STS (RFC 8461) lets a receiving domain declare that it supports TLS for inbound SMTP and that sending MTAs should refuse to deliver to it over insecure channels. It closes the classic STARTTLS weakness: because STARTTLS is negotiated in cleartext, an active attacker can strip it (downgrade) or impersonate the MX. MTA-STS gives senders an out-of-band, cached policy to detect both. Unlike [DANE for SMTP](https://emailmarketing.net/learn/transport-security/dane-smtp), MTA-STS does **not** require DNSSEC. It leans on the Web PKI (CA-signed certificates) and HTTPS instead — easier to deploy, but weaker against attackers who can tamper with DNS on first contact (see Security model below). ## Roles - **Policy Domain** — the recipient domain publishing the policy (the RFC5321 mail domain, i.e. the part after `@`). - **Sending MTA** — discovers, caches, and applies the policy when delivering to that domain. ## Policy discovery: the DNS TXT record The presence (and version) of a policy is signaled by a TXT record at `_mta-sts.`: ``` _mta-sts.example.com. IN TXT "v=STSv1; id=20160831085700Z;" ``` | Field | Required | Value | |---|---|---| | `v` | yes | `STSv1` (only defined version) | | `id` | yes | 1–32 alphanumeric chars uniquely identifying this policy instance; senders compare it against their cached policy's id to detect updates | Processing rules: - Fields are semicolon-separated key/value pairs; unknown fields are ignored. - If multiple TXT records are returned, discard any not beginning with `v=STSv1;`. If more than one valid record remains, the result is ambiguous (misconfiguration). - Multiple character-strings in one record are treated as concatenated. - CNAMEs at `_mta-sts.` are followed normally (this enables delegation — see below). The TXT record only *announces* a policy and its version. The policy content itself lives at the HTTPS endpoint. ## Policy retrieval: the HTTPS well-known endpoint The policy is fetched with an HTTPS GET from a "Policy Host" formed by prepending the literal label `mta-sts` to the Policy Domain: ``` https://mta-sts.example.com/.well-known/mta-sts.txt ``` Fetch requirements: | Requirement | Rule | |---|---| | Certificate | Valid X.509 for the `mta-sts` DNS-ID (e.g. `mta-sts.example.com`), chained to a root CA trusted by the sender, non-expired; wildcard match only for the complete left-most label | | HTTP status | Must be 200; **redirects must not be followed** | | HTTP caching | Must not be used (freshness is governed by `max_age`, not HTTP cache headers) | | Content-Type | `text/plain` recommended; `charset=utf-8` or `charset=us-ascii` accepted | | Timeout | Suggested: 1 minute | | Max policy size | Suggested: 64 KB | | Failed-fetch rate limit | At most one attempt per 5 minutes per policy version id | ## Policy file format CRLF-separated `key: value` pairs: ``` version: STSv1 mode: enforce mx: mail.example.com mx: *.example.net mx: backupmx.example.com max_age: 604800 ``` | Field | Required | Value | |---|---|---| | `version` | yes | `STSv1` | | `mode` | yes | `enforce` \| `testing` \| `none` | | `max_age` | yes | Cache lifetime in seconds, max `31557600` (1 year); expected to be weeks or greater | | `mx` | for enforce/testing (optional for none) | One pattern per `mx:` line; either a fully specified host (`mail.example.com`) or a wildcard for the left-most label only (`*.example.net`); IDNs must be Punycode A-labels | Parsing: unknown fields are ignored (extensibility); for duplicated non-repeatable fields (everything except `mx`), only the first occurrence counts. ### MX matching rules A candidate MX host is valid if its MX record name matches one of the `mx` patterns (RFC 6125 rules, wildcard restricted to the entire left-most label): | Pattern | Matches | Does not match | |---|---|---| | `*.example.com` | `mail.example.com` | `example.com`, `foo.bar.example.com` | | `example.com` | `example.com` | anything else | ## The three modes | Mode | Sender behavior | |---|---| | `enforce` | MUST NOT deliver to hosts that fail MX matching, fail certificate validation, or don't offer STARTTLS. Failing messages are treated as **transient** errors (retry), and the sender must re-check DNS for an updated policy before permanently failing a message | | `testing` | Deliver even on validation failure, but report failures via [TLS-RPT](https://emailmarketing.net/learn/transport-security/tls-rpt) if implemented. This is the safe on-ramp: exercise the full validation path and read reports before flipping to enforce | | `none` | Treat the domain as having no active policy; used for graceful opt-out | ## Sender-side requirements - MUST support TLS 1.2 or higher. - MUST support the TLS SNI extension. - The receiving MTA's certificate MUST be non-expired, MUST chain to a root CA trusted by the sender, and MUST contain a SAN DNS-ID matching the host per RFC 6125. Revocation MAY be checked (OCSP, CRLs). ## Caching and refresh - Cache a fetched policy for up to `max_age` seconds from the last fetch. - Before permanently failing a delivery under an `enforce` policy, check DNS for a newer policy (changed `id`) — the recipient may have fixed a broken policy. - SHOULD refresh proactively (e.g., a daily background fetch) rather than waiting for expiry — this shrinks the window in which an attacker can block discovery. - If the TXT record is found but the policy fetch fails **and no valid cached policy exists**: continue delivery as if MTA-STS were not implemented (fail open on first contact). - If no live policy is discoverable but a valid, unexpired cached policy exists: apply the cached policy (this is the core downgrade protection). ## Security model MTA-STS is **trust on first use**: until a sender has cached a policy, an attacker who can block DNS responses or the HTTPS fetch can make the domain appear policy-free. Once cached, the policy protects deliveries for `max_age` — hence the RFC's guidance that `max_age` SHOULD be "as long as is practical". DoS vector: an attacker who can modify a recipient domain's DNS can publish a malicious policy (long `max_age`, wrong `mx` constraints) that senders cache. Recovery relies on senders re-checking DNS before permanent failure. Contrast with DANE: DANE (DNSSEC-backed) is more downgrade-resistant; MTA-STS trades that for deployability (no DNSSEC needed). Per RFC 8461: senders implementing both **MUST NOT allow MTA-STS validation to override a failing DANE validation** — see [DANE for SMTP](https://emailmarketing.net/learn/transport-security/dane-smtp). ## Operational playbook **Deploying:** 1. Ensure every MX presents a valid CA-signed cert with matching SAN and offers STARTTLS. 2. Publish the policy file first, then the `_mta-sts` TXT record (senders seeing a new TXT id must not cache a stale policy). 3. Start with `mode: testing` and a modest `max_age`; enable [TLS-RPT](https://emailmarketing.net/learn/transport-security/tls-rpt) and watch reports. 4. Move to `mode: enforce` and lengthen `max_age` once reports are clean. **Updating (e.g. changing MX hosts):** update the HTTPS policy body **before** the TXT `id`. Keep old policies working for delivery during the transition window (up to the old `max_age`) or risk delays. **Removing MTA-STS gracefully:** 1. Publish a policy with `mode: none` and a small `max_age` (e.g., one day). 2. After previously cached policies have expired, remove the TXT record and the HTTPS endpoint. **Delegating to a provider:** CNAME `_mta-sts.` to the provider's TXT record, and point the `mta-sts.` host at the provider (CNAME/IP or reverse proxy). The catch: the policy endpoint's certificate must validate for **your** Policy Host name (`mta-sts.yourdomain.com`), not the provider's — the provider must provision a cert for your name. ## Why deliverability senders care MTA-STS is a *receiving-domain* control, but senders are on both sides of it: - As a **sending platform**, honoring recipient MTA-STS policies (and not delivering through failing paths) is increasingly expected of reputable infrastructure, and failures show up in the recipient's TLS-RPT data. - As a **domain owner**, publishing MTA-STS + [TLS-RPT](https://emailmarketing.net/learn/transport-security/tls-rpt) on your own domains is a trust signal consistent with the authentication posture mailbox providers now demand (see [DMARC](https://emailmarketing.net/learn/authentication/dmarc)) and protects mail you *receive* (including DMARC/TLS reports and reply traffic) from interception. # NIST SP 800-177r1 — Trustworthy Email (digest) > The US federal reference for email security — its numbered security recommendations across SPF, DKIM, DMARC, TLS, DANE/MTA-STS and S/MIME, the threat/mitigation matrix, and the federal-compliance context (BOD 18-01, FISMA, SP 800-52/800-53). Source: emailmarketing.net — https://emailmarketing.net/learn/transport-security/nist-sp-800-177 If your customers include US federal agencies, or organizations close to the US public sector, your email service will be measured against the federal government's email security guidance. That guidance is NIST Special Publication 800-177r1, Trustworthy Email (Rose, Nightingale, Garfinkel and Chandramouli; February 2019, 128 pp.). Its audience is enterprise email administrators. It applies to federal IT systems, as a companion to SP 800-45v2, *Guidelines on Electronic Mail Security*, and it is explicitly offered to non-government organizations for voluntary use. For an email service provider (ESP), it matters in two ways. It is the reference that customers in or near the US public sector will hold you to. It also packages SPF, DKIM, DMARC, TLS and DANE as one coherent set of recommendations, with the formal "Security Recommendation" numbers that procurement documents cite. **Some of its references are out of date.** The document cites DMARC as RFC 7489, which RFC 9989 has since obsoleted (see [DMARC Standard](https://emailmarketing.net/learn/authentication/dmarc-standard)). It describes ARC and REQUIRETLS as IETF work in progress; they have since been published as RFC 8617 and RFC 8689 (see [ARC](https://emailmarketing.net/learn/authentication/arc) and [SMTP TLS in Practice](https://emailmarketing.net/learn/transport-security/smtp-tls-practice)). It also states that MTA-STS had "no publicly available implementations" at the time of writing, although RFC 8461 was published at the same time and MTA-STS is now widely deployed. The recommendations remain the operative federal baseline. ## Federal requirements context - It is issued under the authority of FISMA (the Federal Information Security Modernization Act of 2014), and is consistent with OMB Circular A-130. - **DHS Binding Operational Directive BOD 18-01** (October 2017) requires domain-based authentication (SPF and DMARC, plus hardening of STARTTLS and HTTPS) for the domains of the federal executive branch. SP 800-177 presents itself as the guide to meeting BOD 18-01. It "does not extend those requirements", but gives guidance on best common practice. - Cryptographic parameters defer to NIST SP 800-57 (key management), SP 800-133 (key generation), SP 800-52 (TLS configuration) and FIPS-approved modules. - Appendix C provides a full **overlay of NIST SP 800-53 Rev. 4 controls onto email systems**. It maps the control baselines (Low, Moderate and High) to guidance specific to email for SPF, DKIM and DMARC, for SMTP over TLS, and for end-to-end (S/MIME) protection. Federal deployments must show these controls, and ESPs that serve agencies are asked for exactly this mapping in security questionnaires. ## Threats and mitigations matrix (Section 3) The document classifies threats to an email service as threats to integrity, confidentiality or availability: | Threat | Impact on purported sender | Mitigation | |---|---|---| | Email sent by an unauthorized MTA inside the enterprise (malware botnet) | Loss of reputation; valid mail blocked as spam or phishing | Domain-based authentication; digital signatures; block outbound port 25 for hosts that are not mail servers | | Spoofed or unregistered sending domain | Loss of reputation | SPF, DKIM and DMARC; digital signatures | | Forged sending address (phishing or spear phishing) | Loss of reputation; recipients disclose personally identifiable information (PII) | SPF, DKIM and DMARC; digital signatures; DNS-based blocklists (DNSBLs) | | Message modified in transit | Leak or alteration | TLS between servers; DKIM detects modification; end-to-end signatures | | Disclosure of content through traffic capture | Leak of PII | TLS on each hop; end-to-end encryption | | Disclosure of metadata | Privacy | TLS (with a noted limit: headers are still visible to MTAs) | | Unsolicited bulk email (UBE) | None, unless spoofed | A layered UBE pipeline (below) | | Denial of service (DoS or DDoS) on mail servers | Cannot send | Multiple servers and network segments, cloud providers, DNSBLs | | Malicious links or attachments | None | UBE techniques; "detonation chambers"; sanitization | The infrastructure recommendations here are to **block outbound port 25 except for authorized mail senders** (Rec 3-1), to avoid running MTAs on systems that are not part of the mail infrastructure, with internal hosts relaying through a trusted mail submission agent (MSA) instead (Rec 3-2), and to block inbound port 25 to unauthorized receivers (Rec 3-3). The document also warns about virtualization. Virtual machines that share NAT IP space with legitimate senders must be firewalled off port 25 or given separate NAT instances. ## The recommendation set The normative content of the document is its numbered Security Recommendations, condensed below. ### Section 4: authenticating the sending domain | Rec | Substance | |---|---| | 4-1 | Deploy SPF for every domain; **publish `v=spf1 -all` on every domain that sends no mail** (web-only or parked) to deny spoofers | | 4-2 | Deploy DNSSEC on all name servers and validate DNSSEC on all systems that receive email | | 4-3 | Federal: DKIM keys only with approved algorithms and key lengths. RSA with SHA-256 is approved; ed25519 (RFC 8463) was **not** approved for federal use at the time of writing (SHA-1 is disallowed for signatures) | | 4-4 | Protect DKIM private keys on the sending MTA (readable only by the MTA software); federal: FISMA control SC-12 | | 4-5 | **Each sending MTA gets its own private key and selector**, which limits the damage a compromised key can do | | 4-6 and 4-7 | Sign DKIM records with DNSSEC; validate DKIM queries with DNSSEC | | 4-8 | Mailing list software should verify the DKIM signatures of inbound mail and sign outbound mail again | | 4-9 | Broadcast and do-not-reply mail should carry S/MIME signatures | | 4-10 | **A unique DKIM key pair for each third party** that sends on the organization's behalf; publish a blank `p=` (or remove the resource record) to revoke it when the contract ends | | 4-11 (DMARC) | Domains that deploy SPF and DKIM should publish a DMARC record that signals the expected disposition | | 4-12 | Receivers should honor the DMARC policies of senders and send aggregate and failure reports | | 4-11 (S/MIME)* | Use S/MIME signatures for message authenticity and integrity | \* The published document numbers both the DMARC recommendation and the S/MIME recommendation "4-11". The summary in Section 4.8 lists the S/MIME one. Cite them by topic. The DKIM key parameters (Table 4-3) are RSA with SHA-256, at a recommended length of **2048 bits** and a recommended lifetime of **1–2 years**, and ed25519 at 256 bits, which is not approved for federal use. The key rotation procedure is: publish the new selector first, reconfigure the MTA, wait (the old key stays in DNS for about a week, for queued mail), and then delete the old resource record. Do not use web-based DKIM key generators for federal systems, because they expose the private key. On the order of deployment, the document advises publishing a `p=none` DMARC record with `rua` before you roll out SPF and DKIM, so that you get baseline visibility first. It calls `pct=` values other than 0 or 100 "not a wise strategy." For SPF change management, lower the TTL of the TXT record to about 300 seconds before editing it, and restore it (to about 3600 seconds) after you verify the change. Chains of SPF `include:` mechanisms are bounded by the limit of 10 DNS lookups. Do not `+` an include you do not control. To collect DMARC reports at a third party, the external report receiver must publish the authorization record `original-sender-domain._report._dmarc.mailto-domain`. Forwarding impact (Table 4-7): | Relay technique | Typical use | Breaks | |---|---|---| | Aliases | Forwarding, vanity addresses | SPF | | Re-sender | Forwarding from the mail client, or inline | SPF and DKIM | | Mailing lists | Re-posting with changes to the body | SPF and DKIM, which leads to DMARC rejection and to list unsubscribes | | Gateways | Unrestricted rewriting | SPF and DKIM | | Boundary filters | Spam and malware filters that modify content | DKIM | | Third parties | Email scanners, TIC providers | SPF and DMARC | The document's canonical forwarding failure is the Trusted Internet Connection (TIC) scanning loop. A cloud provider forwards mail to a scanner, and the scanner returns mail that now looks spoofed. ARC is the suggested mitigation. ### Section 5: transmission and content security | Rec | Substance | |---|---| | 5-1 | Use only TLS versions approved in NIST SP 800-52, with FIPS-approved cryptographic modules | | 5-2 | Servers that support TLS should advertise STARTTLS, and clients should attempt it whenever it is offered (the opportunistic floor; see [SMTP TLS in Practice](https://emailmarketing.net/learn/transport-security/smtp-tls-practice)) | | 5-3 | Receiving domains should implement **DANE, MTA-STS, or both** for every MX | | 5-4 | Federal DANE deployments: use **DANE-TA(2)**, where the certificate usage pins the certificate authority (CA) the agency chose, because federal use requires chain authentication to a known CA. Publish a **DANE-EE(3) record alongside it** for reliability. Both use selector SPKI(1) and matching type SHA2-256(1), that is, the TLSA parameters `3 1 1` and `2 1 1` | | 5-5 | Federal: S/MIME (with a certificate from a known CA) is preferred over OpenPGP for message confidentiality | The supporting analysis matches the guidance in [DANE](https://emailmarketing.net/learn/transport-security/dane-smtp) and [MTA-STS](https://emailmarketing.net/learn/transport-security/mta-sts), and goes slightly further: - PKIX-TA(0) and PKIX-EE(1) should not be used for opportunistic DANE. - DANE-EE(3) needs no SNI or name check, because the trust comes from DNSSEC. - Publishing both `3 1 1` and `2 1 1` lets clients validate through either DANE or the CA system. Its comparison of DANE and MTA-STS (Table 5-3) sets out the differences. DANE uses TLSA records and MTA-STS uses TXT records. DANE requires DNSSEC on the client, and MTA-STS requires HTTPS. DANE can scope CAs and MTA-STS cannot. PKIX is not required with DANE and is required with MTA-STS. Self-signed certificates are acceptable only with DANE certificate usage 3. Failure reporting exists only in the MTA-STS ecosystem ([TLS-RPT](https://emailmarketing.net/learn/transport-security/tls-rpt), RFC 8460). On failure, DANE closes the connection, while the behavior of MTA-STS depends on the policy. When both are deployed, DANE takes precedence. The certificate profile for federal mail follows the FPKI "FPIX" profiles, with `KeyPurposeId` `id-kp-emailProtection (1.3.6.1.5.5.7.3.4)`. CA signature hashes are SHA-256 or SHA-512 only, and device certificates carry the DNS name or IP address in subjectAltName. ### Sections 6–7: UBE filtering and end-user access - For inbound and outbound filtering, the recommended **pipeline order is blocklist and allowlist checks, then domain-based authentication, then content filtering**, cheapest first. Dynamic DNSBLs are preferred over static local lists. Mail that passes SPF, DKIM and DMARC "should not automatically be assumed to not be UBE." - Rec 7-1: IMAP and POP3 clients must connect over TLS (RFC 8314). Cleartext TCP with password authentication is "strongly discouraged." - Rec 7-2: maintain a cryptographic key management system (CKMS) for keys related to email (federal: compliance with SP 800-57). - Rec 7-3: keys that encrypt stored mail must be different from the keys used in transmission. ## What an ESP should take from it 1. **The `-all` rule for domains that send no mail (4-1)** and **a unique DKIM key for each third party (4-10)** are the two recommendations aimed most directly at the relationship with an ESP. An agency customer that follows 800-177 will demand a dedicated key pair, not your shared signing key, and will null-route its parked domains. 2. **A key and selector for each MTA (4-5)** is stricter than common ESP practice, which is one key per customer domain. Expect it in federal security reviews. 3. **DANE-TA(2) with DANE-EE(3), using `2 1 1` and `3 1 1`,** is the concrete federal TLSA recipe if you host inbound mail for such customers. 4. The **SP 800-53 Appendix C overlay** is the document to point to when a customer close to government asks "how does your email service map to our control baseline." 5. DNSSEC runs through every recommendation (4-2, 4-6, 4-7, and as a prerequisite for DANE). Realistically, sending and bounce domains that serve federal customers need zones signed with DNSSEC. # SMTP Smuggling — End-of-DATA Discrepancy Spoofing > How mismatched end-of-DATA parsing between MTAs (bare . vs standard .) lets an attacker smuggle a second spoofed message that inherits the session's authenticated domain and passes SPF/DKIM/DMARC; the Dec 2023 SEC Consult disclosure and the receiver-side fixes. Source: emailmarketing.net — https://emailmarketing.net/learn/transport-security/smtp-smuggling Even when your domain publishes SPF, DKIM and a DMARC policy of reject, a forged message using your domain can pass all three checks at a receiver whose mail server is vulnerable to SMTP smuggling. SMTP smuggling is a **spoofing** attack. It exploits the fact that two mail transfer agents (MTAs) in a mail path can disagree about where the DATA of a message ends. The base protocol ([RFC 5321](https://emailmarketing.net/learn/rfc/rfc5321-smtp)) ends DATA with exactly `.`: a dot alone on a line, framed by CRLF. For decades, servers have also tolerated non-standard variants with a bare ``, such as `.`, `.` and `.`. This leniency dates from Sendmail, and Postfix, Exim and others copied it for interoperability. When the sending (outbound) server and the receiving (inbound) server tolerate different sets of these variants, an attacker can inject a crafted line-ending sequence into a message body. The receiver then believes DATA has ended partway through the message, and treats the bytes that follow as **new SMTP commands**. They form a second `MAIL FROM` / `RCPT TO` / `DATA` transaction, that is, a second, fully spoofed message "smuggled" inside one legitimate SMTP transaction. **SEC Consult disclosed the attack publicly on 18 December 2023.** It is one of the more serious email spoofing techniques of recent years because of what it defeats: it makes a forged message pass SPF, DKIM and DMARC. It is mainly a **vulnerability of receivers**, and the fix belongs in the inbound MTA. Senders and ESPs still need to understand it, because a vulnerable receiver silently undermines the DMARC protection that senders rely on to defend their domains. The attack does not weaken any authentication record you publish. It defeats the enforcement of those records at a vulnerable receiving server. ## The parsing discrepancy There are two roles and two ways to fail, and the attack needs one failure of each kind: | Role | Vulnerable behavior | Consequence | |---|---|---| | **Outbound or submission MTA** | Forwards a message body that contains a dot sequence with a bare ``, without normalizing it to `` or rejecting it | A message goes out on the wire carrying an embedded, non-standard end-of-DATA marker | | **Inbound or receiving MTA** | Accepts a non-standard sequence such as `.` as a **valid** end of DATA | The bytes after it are parsed as new SMTP commands instead of message content | Neither behavior can be exploited on its own. The outbound server must let the unusual sequence through onto the wire, and the receiving server must accept it as the end of DATA. An attacker who controls a lenient outbound service, or has a free or compromised account on one, and who targets a lenient inbound service, can exploit the gap between them. ### Anatomy of a smuggled transaction An authenticated attacker submits **one** message through the outbound service. The visible envelope and headers use the attacker's own legitimate, throwaway address, so the submission is authorized. Inside the DATA payload, the attacker plants: ``` ...legitimate-looking body... . ← smuggled end-of-DATA (receiver honors it) MAIL FROM: RCPT TO: DATA From: admin@victim-domain.example Subject: (spoofed message) ...attacker payload... . ← real end-of-DATA ``` The vulnerable outbound service sends all of this as the body of the first message, because it did not treat `.` as the end of DATA. The vulnerable inbound service reads the same bytes, but does treat `.` as the end of the first message. It then interprets `MAIL FROM` / `RCPT TO` / `DATA` as a brand-new transaction. The receiver has now accepted a second message whose `From:` is `admin@victim-domain.example`, delivered over the outbound provider's own trusted, authenticated connection. `BDAT` / `CHUNKING` ([RFC 3030](https://emailmarketing.net/learn/rfc/esmtp-extensions)) offers a related route. BDAT frames content with an explicit count of octets instead of scanning for `.`, so it allows command pipelining that the DATA path forbids. Faulty BDAT handling has been a separate smuggling route on the inbound side. This is the interoperability warning noted in the [CHUNKING section of the ESMTP extensions reference](https://emailmarketing.net/learn/rfc/esmtp-extensions#rfc-3030--chunking-bdat-and-binarymime). ## Why it bypasses SPF, DKIM, and DMARC The smuggled message is not authenticated in its own right. It inherits the authentication of the outer session. Each mechanism fails for a different reason: | Mechanism | Why the smuggled message passes | |---|---| | **[SPF](https://emailmarketing.net/learn/authentication/spf)** | SPF checks the **envelope MAIL FROM** against the connecting IP address. The smuggled transaction is delivered from the outbound provider's own IP address, which is legitimately in the provider's SPF record. The receiver sees a smuggled `MAIL FROM` from a domain that either passes on that IP address or is simply evaluated against trusted infrastructure. SPF never looks at the `From:` header at all. | | **[DKIM](https://emailmarketing.net/learn/authentication/dkim)** | The forged `From:` domain does not need a valid signature. The attacker signs with a domain they control (which verifies correctly), or relies on the receiver not enforcing alignment with the header domain. DKIM proves that some domain signed some headers, not that the `From:` domain authorized this message. | | **[DMARC](https://emailmarketing.net/learn/authentication/dmarc)** | DMARC requires SPF or DKIM to **pass and align** with the `From:` domain. The smuggled message achieves alignment because it comes from legitimate outbound infrastructure that the victim domain's records already approve, or that the receiver already trusts. The receiver evaluates it as though the provider sent it on behalf of the victim domain. | The result: `admin@outlook.com`, `admin@microsoft.com`, or any address at ~1.35 million domains hosted by GMX and Ionos could be spoofed with a passing DMARC result at a vulnerable receiver. A domain owner who has done everything right (SPF, DKIM, DMARC at `p=reject`) gets no protection at a receiver that ends DATA leniently, because the forgery never had to defeat the records. It arrived inside a trusted session. Compare this with [DKIM replay](https://emailmarketing.net/learn/authentication/dkim-replay). Replay resends a genuinely signed message unchanged, to spend a sender's reputation. Smuggling creates a new message that borrows the authentication of a session. Both defeat the simple reasoning that a message is trustworthy because DMARC passed, from opposite directions. ## The December 2023 disclosure: affected parties SEC Consult (Timo Longin) demonstrated the attack against major production infrastructure. The difference between the **outbound** role (failing to clean up the sequence) and the **inbound** role (accepting unusual sequences) matters, because a provider could be exploitable in one role, the other, or both. | Party | Role reported | Notes and status | |---|---|---| | **GMX / Ionos** (United Internet) | Outbound | Allowed smuggling from ~1.35 million hosted domains. Patched **10 Aug 2023**. | | **Microsoft Exchange Online** | Outbound | Allowed spoofing from millions of domains (for example `outlook.com`, `microsoft.com`). Patched **16 Oct 2023**. | | **Cisco Secure Email (Gateway / Cloud Gateway)** | Inbound | Accepted unusual sequences in the **default** configuration. Cisco at first declined to change the default, so operators had to apply the receiver-side workaround themselves. | | **Apple iCloud, Fastmail, Startmail, Runbox** | Outbound, inbound, or both (varies) | Listed among the affected services in the disclosure. | | **Postfix, Sendmail, Exim** | Inbound (and outbound leniency) | The MTA software itself. Coordinated fixes and workarounds followed. | **Disclosure timeline:** first discoveries in June 2023, notifications to vendors in late July 2023, patches from GMX (Aug) and Microsoft (Oct), and **public disclosure on 18 Dec 2023**. **CVEs** were assigned to the open-source MTAs: | CVE | Software | |---|---| | **CVE-2023-51764** | Postfix | | **CVE-2023-51765** | Sendmail | | **CVE-2023-51766** | Exim | ## Mitigations The lasting fix is **strict enforcement of the end of DATA at the receiver**: accept only `.`, and neutralize bare newlines before they can be read as the end of DATA. Cleaning up on the outbound side, by normalizing a bare `` to `` before sending, closes the other half. The large providers deployed exactly this on their servers. ### Postfix (receiver-side) Postfix's guidance (postfix.org/smtp-smuggling.html) offers a short-term workaround and a long-term fix. Parameter defaults depend on the Postfix release. **Long-term fix**: handling of bare newlines (Postfix 3.8.5 / 3.7.10 / 3.6.14 / 3.5.24 and later): ``` smtpd_forbid_bare_newline = normalize smtpd_forbid_bare_newline_exclusions = $mynetworks ``` `normalize` accepts a bare `` from the client but processes it as if `` had been sent, while still requiring the standard `.` to end DATA. This defeats `.` smuggling without breaking older clients. The stricter `reject` setting refuses any bare newline outright, but may reject some legitimate mail. The `$mynetworks` exclusion spares trusted internal senders, such as local scripts. Later Postfix releases moved the default toward enforcement. **Short-term workaround**: block the route through pipelining and CHUNKING: ``` smtpd_data_restrictions = reject_unauth_pipelining smtpd_discard_ehlo_keywords = chunking, silent-discard ``` or, on Postfix 3.8.1+: ``` smtpd_forbid_unauth_pipelining = yes smtpd_discard_ehlo_keywords = chunking, silent-discard ``` `smtpd_forbid_unauth_pipelining` is enabled by default in Postfix 3.9+. In 3.8.1 / 3.7.6 / 3.6.10 / 3.5.20 it shipped disabled, for compatibility. Discarding the `chunking` EHLO keyword withdraws BDAT, which removes the route through BDAT command pipelining. The cost is losing the benefits BDAT would otherwise give for throughput and large messages. ### Cisco Secure Email (receiver-side) Change how the listener handles non-standard line endings. The vulnerable **"Clean"** behavior rewrites a bare CR or LF into CRLF, and can create an exploitable sequence for the backend server. Switch it to **"Allow"**, which passes the bytes through unchanged, so a strict backend that requires `.` never sees a false end of DATA. The vulnerable value was the default and vendor support was lacking at first, so operators had to make this change themselves. ### General receiver checklist - Enforce `.` as the **only** end of DATA. Reject or normalize a bare `` or ``. - Forbid unauthenticated command pipelining. Treat `MAIL FROM`, `RCPT TO` or `DATA` appearing inside DATA as a sign of attack. - Withdraw `BDAT` and `CHUNKING` on untrusted inbound listeners, or audit them carefully. - Clean up outbound mail too. Normalize bare newlines so that your outbound path can never send the building block of a smuggling attack to a receiver further along. - Keep MTA software up to date (past the CVE-2023-5176x fixes). ## What it means for senders and ESPs - **You cannot fix this by changing your own DNS records.** No SPF, DKIM or DMARC configuration stops smuggling, because it defeats enforcement, not publication. `p=reject` is still worth having. It protects you at every receiver that is patched, which since 2023 covers the large majority of mailbox-provider volume. - **If you are an ESP running inbound MTAs** (intake of feedback loop reports, the `abuse@` and `postmaster@` role addresses, bounce processors, MX for customer domains), you are a receiver, and the receiver-side fix is yours: strict enforcement of the end of DATA, current MTA builds, and careful control of where BDAT is offered. See [abuse desk](https://emailmarketing.net/learn/esp-operations/abuse-desk) and [outbound monitoring](https://emailmarketing.net/learn/esp-operations/outbound-monitoring) for where these listeners are. - **If you are an ESP running outbound MTAs**, make sure your submission path normalizes bare newlines. Otherwise a compromised or hostile customer could use your trusted IP addresses to smuggle spoofed mail from a third party's domain into a vulnerable receiver, which is exactly the abuse the large providers had to patch. This belongs with the hygiene of [customer domain authentication](https://emailmarketing.net/learn/esp-operations/customer-domain-authentication), and with the wider forms of spoofing abuse in the [email abuse taxonomy](https://emailmarketing.net/learn/reference/email-abuse-taxonomy). - **Understand the risk that remains in reporting.** A customer or brand you protect may see a report of a spoofed message that "passed DMARC", and the explanation may be a vulnerable receiver rather than a flaw in their setup. Being able to name SMTP smuggling, and point to the receiver-side fix, is the difference between a correct diagnosis and a long, fruitless search through the sender's DNS. ## Related articles - [DMARC (introduction)](https://emailmarketing.net/learn/authentication/dmarc), on the alignment logic that smuggling borrows to pass - [DKIM Replay](https://emailmarketing.net/learn/authentication/dkim-replay), the other major attack that defeats the assumption that a DMARC pass means a message can be trusted - [SMTP (RFC 5321)](https://emailmarketing.net/learn/rfc/rfc5321-smtp), which defines `.` as the end of DATA - [ESMTP Extensions](https://emailmarketing.net/learn/rfc/esmtp-extensions), on PIPELINING, CHUNKING and BDAT, which the workarounds restrict - [SPF](https://emailmarketing.net/learn/authentication/spf) and [DKIM](https://emailmarketing.net/learn/authentication/dkim), neither of which inspects the `From:` header on its own # SMTP TLS in Practice (STARTTLS, Implicit TLS, REQUIRETLS, version floors) > The sender-side TLS layer for mail — RFC 3207 STARTTLS mechanics, RFC 7435 opportunistic security, RFC 8314 implicit TLS on 465/587, RFC 8689 REQUIRETLS, and the RFC 8996 TLS 1.0/1.1 deprecation. Source: emailmarketing.net — https://emailmarketing.net/learn/transport-security/smtp-tls-practice If you send mail or run a submission service, you need to know how TLS is actually negotiated, when your servers may fall back to cleartext, and which ports and TLS versions to offer. [MTA-STS](https://emailmarketing.net/learn/transport-security/mta-sts), [DANE](https://emailmarketing.net/learn/transport-security/dane-smtp) and [TLS-RPT](https://emailmarketing.net/learn/transport-security/tls-rpt) are policies that receiving domains publish. Beneath them is the layer described here, seen from the sender's side. That layer covers how STARTTLS works on the wire, why mail uses opportunistic TLS by default (without authentication, and tolerating downgrades), which ports and TLS versions apply where, and how TLS can be made mandatory for a single message (REQUIRETLS) or through a minimum protocol version (the deprecation of TLS 1.0/1.1). ## STARTTLS mechanics (RFC 3207) STARTTLS upgrades a cleartext SMTP session to TLS on the same port (25 for relay between MTAs, 587 for submission). The sequence on the wire: 1. The client connects, the server greets it with `220`, and the client sends `EHLO`. 2. A server that supports TLS lists the `STARTTLS` keyword (with no parameters) in its EHLO response. 3. The client sends the command `STARTTLS` on its own (no parameters are allowed). 4. The server replies, and after a `220` both sides start the TLS handshake immediately. | Reply code | Meaning | |---|---| | `220` | Ready to start TLS. The client MUST begin TLS negotiation immediately | | `501` | Syntax error (parameters were supplied, and none are allowed) | | `454` | TLS not available for a temporary reason (the client can retry) | | `530` | "Must issue a STARTTLS command first": the server requires TLS before other commands | | `554` | The server refuses further SMTP commands because the security achieved is not sufficient | Rules after the handshake: - The SMTP session **returns to its initial state**, as if the 220 greeting had just been sent. The server MUST discard everything it learned from the client before TLS (for example, the EHLO argument), and the client MUST discard the list of server capabilities it received before TLS. - The client SHOULD send a new `EHLO`. The list of extensions the server advertises MAY differ from the one sent in cleartext. - The server MUST NOT advertise `STARTTLS` in its EHLO response after the handshake, and the client MUST NOT send STARTTLS when TLS is already active. - A publicly referenced SMTP server (an MX for a domain) MUST NOT require STARTTLS before it delivers mail locally. RFC 3207 forbids mandatory TLS on the public port 25 because not all senders support it. A receiving domain that wants mandatory TLS uses [MTA-STS](https://emailmarketing.net/learn/transport-security/mta-sts) or [DANE](https://emailmarketing.net/learn/transport-security/dane-smtp) instead, and a sender uses REQUIRETLS, described below. The security model has a weakness. Everything before the handshake, including the EHLO exchange and the STARTTLS advertisement itself, travels in cleartext and "may be modified by an active attacker." An attacker in the middle can simply remove the STARTTLS keyword, and the session continues in cleartext without any warning. This is the classic downgrade attack. RFC 3207's own answer is configuration. Both clients and servers "MUST be able to be configured to require successful TLS negotiation of an appropriate cipher suite for selected hosts before messages can be successfully transferred," and clients should check that the domain name in the server certificate matches the host they meant to reach. In practice, almost no MTA does this for all destinations, because it would break delivery. That is why the policy mechanisms (MTA-STS, DANE, REQUIRETLS) exist. ## Why mail tolerates downgrade: opportunistic security (RFC 7435) RFC 7435 sets out the design thinking behind how MTAs behave by default. It reverses the usual view of security. Instead of treating cleartext as a failure, it treats cleartext as the **baseline** and any encryption as an improvement: "some protection most of the time" is better than a strict policy that blocks communication. The main principles: - **Encrypt whenever both sides support it, and authenticate when possible** through means that resist downgrade (DANE, keys cached on first use (TOFU), manual configuration). With each peer, the result may be authenticated and encrypted, encrypted without authentication, or cleartext, whichever is the best available. - **An explicit policy overrides opportunistic behavior.** Where an administrator, or a policy published by the recipient, makes security mandatory, the mandatory policy wins. Opportunistic security is the minimum, not the maximum. - **Do not misrepresent the protection.** Sessions that are encrypted but not authenticated must not be logged, or shown to users, as equal to authenticated encryption. - **Prefer forward secrecy (PFS)** wherever possible, so that recorded traffic cannot be decrypted if a key is compromised later. The terms it introduces, which the transport security guides on this site also use: | Term | Meaning | |---|---| | Unauthenticated, encrypted | TLS without checking the peer's identity. It defeats passive monitoring but not an active attacker in the middle (MITM). It is still strictly better than cleartext | | Authenticated, encrypted | The peer's identity is verified (by a certificate or DANE). It defeats both passive and active attacks | | TOFU | Trust on first use: accept a key without authentication the first time, cache it, and check that it stays the same afterward (the caching model of MTA-STS works in a similar way) | The trade-off is deliberate. Opportunistic TLS accepts the risk of downgrade because the main benefit of encryption is against pervasive passive monitoring, and active attacks at scale can be detected. Falling back to cleartext when the TLS handshake fails is acceptable for opportunistic sessions only, because the alternative, refusing delivery, punishes the wrong party. This is the default behavior of nearly every sending MTA today. It is also why an ESP's outbound TLS policy is normally to "offer and attempt TLS everywhere, and verify certificates only where a recipient policy (MTA-STS or DANE) or a local rule for that destination requires it." ## Submission and access: implicit TLS on 465 (RFC 8314) RFC 8314 ("Cleartext Considered Obsolete") covers the side of mail that users connect to: submission from a mail client to a submission server (MUA to MSA), and access to mailboxes. It moves the recommendation from STARTTLS to **implicit TLS**, where TLS is negotiated as soon as the connection opens, before any protocol exchange: | Protocol | Port | Service name | Mode | |---|---|---|---| | SMTP submission | **465** | `submissions` | Implicit TLS (now the recommended main option) | | SMTP submission | **587** | `submission` | STARTTLS (kept during the transition) | | IMAP | 993 | `imaps` | Implicit TLS | | POP3 | 995 | `pop3s` | Implicit TLS | What an ESP should know: - Port 465 was registered incorrectly in the past ("smtps", later given to another service), but it was so widely used for submission that RFC 8314 made the existing practice official and registered it with IANA as `submissions`. It is **not** for relay between MTAs: port 25 still uses STARTTLS only. - Implicit TLS is preferred to STARTTLS because it is simpler to implement and debug, and because it is immune to the STARTTLS command injection vulnerabilities, where commands pipelined before TLS leak into the session after TLS. - During the transition, "clients and servers SHOULD implement both STARTTLS on port 587 and Implicit TLS on port 465". When both are configured properly, there is no significant difference in security. - Minimum versions: servers and mail clients **MUST support TLS 1.2 or later**. The default minimum requirement for confidentiality is negotiation of TLS 1.1 or later, which RFC 8996 (below) raises in practice. SSL 2.x, SSL 3.0 and TLS 1.0 should be discontinued "as soon as practicable." - Certificates: servers must keep valid certificates for all their service names (as RFC 7817 describes) and support Server Name Indication (SNI). Mail clients SHOULD NOT treat a session as confidential if the certificate does not validate. TLSA records signed with DNSSEC are an optional additional trust anchor. - When a provider stops accepting authentication in cleartext, the server "MUST NOT provide any indication over a cleartext channel of whether the user's authentication credentials were valid". This prevents attackers from discovering valid accounts over the insecure path. - It adds two clauses to the Received header: `tls` (the negotiated cipher suite) and `group` (the Diffie-Hellman group). They are useful when you audit the encryption of a delivery path. Why this matters to an ESP: the SMTP endpoints where your customers inject mail are submission services. The RFC 8314 baseline that customers' libraries increasingly expect is to offer 465 (implicit TLS) and 587 (STARTTLS), require TLS 1.2 or later, refuse authentication in cleartext, and present a valid certificate that supports SNI. ## Per-message mandatory TLS: REQUIRETLS (RFC 8689) REQUIRETLS is the sender's counterpart to the policies that recipients publish with MTA-STS and DANE. It lets the **originator of a message** require TLS for that specific message at every hop, and receive a bounce rather than have the message delivered in cleartext. It has two independent mechanisms that work in opposite directions. ### The REQUIRETLS SMTP extension (require TLS) - The server advertises `REQUIRETLS` in its EHLO response, and the client uses it as a parameter with no value on `MAIL FROM` (`MAIL FROM: REQUIRETLS`). - A client may forward a REQUIRETLS message to a server only when **all** of these are true: (1) the session is protected by TLS; (2) the MX lookup can be trusted, because it was signed with DNSSEC **or** the MX was validated by an MTA-STS policy; (3) the server's certificate chain verifies (through the Web PKI or DANE); (4) the next server's EHLO response after TLS advertises REQUIRETLS. - The sending MTA tries each MX host in turn until one meets every condition. If none does, the message MUST NOT be transmitted and MUST be bounced. - Relays MUST pass the REQUIRETLS parameter on. Intermediaries that send messages again as new messages should keep the requirement "to the extent feasible." How failures are reported, with enhanced status codes (see [Enhanced Status Codes](https://emailmarketing.net/learn/bounce-handling/smtp-enhanced-status-codes)): | Code | Meaning | |---|---| | `5.7.30` | REQUIRETLS support required (the next hop does not support the extension) | | `5.7.10` | Encryption needed (a session protected by TLS could not be established) | Bounce handling: non-delivery reports for REQUIRETLS messages MUST themselves carry REQUIRETLS (unless they are redacted), and the server MUST behave as if `RET=HDRS` were set. The bounce contains only the headers, never the body, so the protected content cannot leak through the delivery status notification (DSN). Bounces with a null return path should not be discarded silently just because the next relay does not support REQUIRETLS. ### The `TLS-Required: No` header field (waive TLS) This header makes the opposite request. A message header (`TLS-Required: No`) tells MTAs that the sender explicitly prefers delivery even without TLS, and instructs clients to ignore a DANE or MTA-STS policy that fails for this message. It is meant for mail that must reach a misconfigured domain, for example a message telling the postmaster that their TLS is broken. Clients that handle it "SHOULD attempt to send the message regardless of the ability to negotiate STARTTLS", while still using encryption when it is available. Unlike the SMTP extension, the header survives passing through MTAs that do not implement RFC 8689. Limitations: REQUIRETLS provides transport security only. Messages remain readable in plaintext on every MTA along the path, and confidentiality from end to end still requires S/MIME or OpenPGP. Adoption among large mailbox providers is still limited. Use REQUIRETLS for streams that must be secure between parties that cooperate (see [Mandated & Regulatory Email](https://emailmarketing.net/learn/operations/mandated-and-regulatory-email)), not on general marketing traffic. ## Version floor: TLS 1.0 and 1.1 are deprecated (RFC 8996) RFC 8996 (March 2021, BCP 195) formally deprecates TLS 1.0, TLS 1.1 and DTLS 1.0. It moves RFC 2246 (TLS 1.0), RFC 4346 (TLS 1.1), RFC 4347 (DTLS 1.0), RFC 5469 (the DES and IDEA cipher suites) and RFC 7507 (Fallback SCSV) to Historic status. The normative rules: - "TLS 1.0 MUST NOT be used" and "TLS 1.1 MUST NOT be used". Negotiating either of them from any TLS version MUST NOT be permitted. - Clients MUST NOT send a ClientHello with `client_version` {03,01} (1.0) or {03,02} (1.1), and servers MUST NOT send a matching ServerHello. Any party that receives a Hello with those versions MUST respond with a `protocol_version` alert and close the connection. - Servers MUST still accept any `{03,XX}` version number at the record layer of a ClientHello (for interoperability), but MUST NOT negotiate the deprecated versions. The reasons: both versions tie the integrity of the handshake to SHA-1, which allows downgrade attacks at a cost of ~2^77 operations. They authenticate with SHA-1 or MD5||SHA-1 signatures, support no AEAD cipher suites, and require obsolete ciphers (for example, `TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA`). In operation, every extra version you support is a source of misconfiguration and maintenance work. The sentinel value in TLS 1.3's ServerHello.Random replaces the Fallback SCSV defense against downgrade. What this means for mail (the RFC itself applies to all protocols): the practical minimum for SMTP, submission, IMAP and POP is **TLS 1.2**, with TLS 1.3 preferred. [MTA-STS](https://emailmarketing.net/learn/transport-security/mta-sts) already requires senders to support TLS 1.2 or later. Major mailbox providers have progressively refused TLS ≤1.1 on submission, and increasingly score or refuse handshakes with old versions on port 25. An ESP whose servers still offer TLS 1.0/1.1 for outbound mail will see handshake failures, logged as deferrals or bounces, at strict receivers. Accepting very old versions on inbound connections is a compliance finding. Configure a minimum of TLS 1.2, modern AEAD cipher suites, key exchange with PFS, and TLS 1.3 enabled. ## Sender-side operational summary for an ESP | Layer | Default behavior | Stricter options | |---|---|---| | Outbound port 25 | Opportunistic STARTTLS everywhere; fall back to cleartext if the handshake fails (RFC 7435) | Honor the [MTA-STS](https://emailmarketing.net/learn/transport-security/mta-sts) and [DANE](https://emailmarketing.net/learn/transport-security/dane-smtp) policies of recipients (verify certificates, refuse insecure paths, defer rather than downgrade); mandatory TLS rules for the destinations of contracted partners; REQUIRETLS for messages that must never travel in cleartext | | TLS versions and ciphers | TLS 1.2 minimum, 1.3 preferred, AEAD and PFS (RFC 8996) | Never turn 1.0 or 1.1 back on to "fix" delivery to a very old receiver; that receiver is the exception | | Certificates (validation on outbound mail) | Not enforced for opportunistic sessions | MUST be enforced when an MTA-STS or DANE policy, or REQUIRETLS, applies | | Submission (for customers) | 465 with implicit TLS and 587 with STARTTLS, TLS 1.2 or later, a valid certificate with SNI, no authentication in cleartext (RFC 8314) | None | | Visibility | Log the negotiated version and cipher for each delivery; generate [TLS-RPT](https://emailmarketing.net/learn/transport-security/tls-rpt) reports for domains that ask for them; watch the encryption dashboard in Google Postmaster Tools | None | # SMTP TLS Reporting (TLS-RPT, RFC 8460) > The reporting channel for SMTP transport security — DNS record syntax, JSON report schema, the full failure result-type taxonomy, and how to use the reports operationally. Source: emailmarketing.net — https://emailmarketing.net/learn/transport-security/tls-rpt If you are about to enforce TLS for mail sent to your domain, you need to know first whether any legitimate mail would fail. TLS reporting (TLS-RPT) tells you. Your domain publishes a DNS record that asks sending mail servers (MTAs) to report every day how TLS negotiation with your domain went: what succeeded, what failed, and why. TLS-RPT is defined in RFC 8460 and works alongside [MTA-STS](https://emailmarketing.net/learn/transport-security/mta-sts) and [DANE](https://emailmarketing.net/learn/transport-security/dane-smtp). Those two mechanisms enforce TLS; TLS-RPT tells you whether enforcement would break real mail flow, or is already breaking it. It does for transport security what DMARC aggregate reports do for [authentication](https://emailmarketing.net/learn/authentication/dmarc). ## The DNS record The record is a TXT record at `_smtp._tls.`: ``` _smtp._tls.example.com. IN TXT "v=TLSRPTv1; rua=mailto:reports@example.com" _smtp._tls.example.com. IN TXT "v=TLSRPTv1; rua=https://reporting.example.com/v1/tlsrpt" ``` | Directive | Required | Value | |---|---|---| | `v` | yes | `TLSRPTv1` | | `rua` | yes | A comma-separated list of report destinations, using the `mailto:` or `https:` scheme | Several `rua` endpoints are allowed. A reporter may try all of them or choose one, and the report counts as delivered as soon as **any one** endpoint accepts it. ## Report generation and timing - **Period:** one full calendar day in UTC (00:00–24:00 UTC). - **Delivery delay:** reporters should add a random delay of 1–14,400 seconds, so that receivers are not hit by all reports at once. - **Retries:** if delivery fails, retry for up to 24 hours after the first attempt, preferably with exponential backoff. - **Exception for email reports:** when a report is delivered by email, the reporter must NOT apply MTA-STS or DANE failures to that delivery. Reports about broken TLS must still get through, without encryption if necessary. ## Delivery mechanisms ### By email (`mailto:`) | Aspect | Requirement | |---|---| | MIME structure | `multipart/report; report-type="tlsrpt"` | | Media type of the report part | `application/tlsrpt+json` (plain) or `application/tlsrpt+gzip` (compressed with gzip, with the extension `.json.gz`; gzip is recommended) | | Required headers | `TLS-Report-Domain:` (the domain the report is about) and `TLS-Report-Submitter:` (the reporting domain) | | DKIM | Report messages MUST carry a valid DKIM signature with the service type `s=tlsrpt`, and the `l=` (body length) tag MUST NOT be used. Receivers should ignore email reports that are not signed | | Subject | `Report Domain: Submitter: Report-ID: ` | ### By HTTPS (`https:`) - An HTTP POST of `application/tlsrpt+json` or `application/tlsrpt+gzip` to the endpoint. - Delivery succeeds when the response is HTTP 200 or 201. - Reporters MAY ignore HTTPS certificate validation errors when they post, because the reporting channel must not be blocked by the very problems it reports. ### Report filename convention ``` {sender}!{policy-domain}!{start-timestamp}!{end-timestamp}[!{unique-id}].{json|json.gz} ``` Example: `mail.sender.example.com!example.net!1470013207!1470186007!001.json.gz` ## Report content (JSON schema) Top-level fields: | Field | Meaning | |---|---| | `organization-name` | The reporting organization | | `date-range` | `start-datetime` / `end-datetime`, in RFC 3339 format, covering the UTC day | | `contact-info` | Email address of the party responsible for the report | | `report-id` | Unique report identifier | | `policies` | An array of result objects, one for each policy (it is an array even when there is only one policy) | Each entry in `policies` describes one policy the sender evaluated. A single day can include both an MTA-STS entry and a DANE entry for the same domain: ```json { "policy": { "policy-type": "sts" | "tlsa" | "no-policy-found", "policy-string": ["version: STSv1", "mode: testing", "..."], "policy-domain": "example.com", "mx-host": "*.mail.example.com" }, "summary": { "total-successful-session-count": 5326, "total-failure-session-count": 303 }, "failure-details": [ ... ] } ``` Each `failure-details` entry contains: | Field | Meaning | |---|---| | `result-type` | The type of failure (table below) | | `sending-mta-ip` | The reporter's sending IP address (IPv4 in dotted-decimal notation, or IPv6 as in RFC 5952) | | `receiving-mx-hostname` | The MX hostname the sender connected to | | `receiving-mx-helo` | Optional: the HELO or EHLO banner the sender saw | | `receiving-ip` | The destination IP address used | | `failed-session-count` | The number of sessions with this failure | | `additional-information` | Optional: a URI with more detail | | `failure-reason-code` | Optional: detail about the TLS error (for example, an X.509 or OpenSSL error string) | A single session can count toward more than one `result-type`, because the types do not exclude each other. ## Failure result types | result-type | Class | Meaning | |---|---|---| | `starttls-not-supported` | negotiation | The recipient's MX did not advertise STARTTLS | | `certificate-host-mismatch` | negotiation | The identity in the certificate (hostname or SAN) did not match | | `certificate-expired` | negotiation | The certificate is past the end of its validity period | | `certificate-not-trusted` | negotiation | An untrusted or unknown certificate authority, a violated name constraint, or an error in the chain | | `validation-failure` | general | A negotiation failure that fits no other type; see `failure-reason-code` for detail | | `tlsa-invalid` | DANE | An error validating the TLSA record; no valid member of the record set matched | | `dnssec-invalid` | DANE | DNSSEC validation failed; no validly signed records were returned | | `dane-required` | DANE | The sender requires DANE, but no valid TLSA records signed with DNSSEC exist | | `sts-policy-fetch-error` | MTA-STS | The policy could not be retrieved (for example, the policy host was unreachable) | | `sts-policy-invalid` | MTA-STS | The MTA-STS policy was retrieved but failed validation | | `sts-webpki-invalid` | MTA-STS | The MTA-STS policy host failed Web PKI (certificate) authentication | ## Using the reports TLS-RPT is how you reduce the risk of moving [MTA-STS](https://emailmarketing.net/learn/transport-security/mta-sts) from `testing` to `enforce`: 1. **Publish TLS-RPT first**, or at the same time as an MTA-STS policy in `testing` mode. Reports arrive from every major sender that implements RFC 8460: Google, Microsoft and other large platforms send them. 2. **Watch `total-failure-session-count` for each policy type.** MTA-STS failures in testing mode that are not zero represent mail that would have been deferred or lost under enforcement. 3. **Sort failures by result type:** - `certificate-*`: fix the certificates on the named `receiving-mx-hostname` (expired, wrong SAN, private certificate authority). - `starttls-not-supported`: an MX, often a backup MX or an old appliance, has TLS turned off. - `sts-policy-fetch-error` / `sts-webpki-invalid`: your HTTPS endpoint at `mta-sts.`, or its certificate, is broken. - `sts-policy-invalid`: the policy syntax is wrong, or an `mx` pattern does not cover a real MX. - `tlsa-*` / `dnssec-invalid`: TLSA records are out of date, or DNSSEC signing has a problem (see the [DANE guidance on key rotation](https://emailmarketing.net/learn/transport-security/dane-smtp)). 4. **Keep monitoring after you enforce.** An expired certificate on one MX now defers mail from strict senders without any other warning, and TLS-RPT is often the only signal from outside your systems. 5. If one organization reports failures for a long time while others report success, the cause is usually a problem on the network path of that sender (or interception), not your configuration. A note on internationalized domain names: they appear as Punycode A-labels in all records and reports, never as U-labels. # TLS for Mail: M3AAWG Baseline Recommendations (April 2026) > The industry TLS floor — opportunistic TLS everywhere with only TLS 1.2/1.3, encrypted intracompany traffic, encrypted user access (993/995/465/587/HTTPS), and TLS version/cipher logging feeding TLS-RPT. Source: emailmarketing.net — https://emailmarketing.net/learn/transport-security/tls-baseline If you run mail servers, a short list of measures protects your mail from eavesdropping, and you can put them in place relatively quickly. They are the base that [MTA-STS](https://emailmarketing.net/learn/transport-security/mta-sts), [DANE for SMTP](https://emailmarketing.net/learn/transport-security/dane-smtp) and [TLS-RPT](https://emailmarketing.net/learn/transport-security/tls-rpt) build on. The measures come from *TLS for Mail: M3AAWG Baseline Recommendations* by the Messaging, Malware and Mobile Anti-Abuse Working Group (M3AAWG), updated in **April 2026** (first published in 2014; M3AAWG-155; reference URL m3aawg.org/TLSBaselineRecs2026). The document is deliberately brief and covers the "low-hanging fruit": three measures, plus a fourth on logging, that messaging providers can deploy against eavesdropping. It was motivated by the disclosures about global surveillance in the 2010s and by the ongoing pervasive monitoring of email traffic. It covers only measures that providers can deploy, not encryption by end users such as PGP, GPG or S/MIME. ## 1) Opportunistic TLS between providers, TLS 1.2 and 1.3 only - **Versions: use only TLS 1.2 and TLS 1.3.** In line with IETF RFC 8996, disable SSLv3, TLS 1.0 and TLS 1.1 because of their known security issues. The document says it again elsewhere: versions "such as 0.9, 1.0, or 1.1" are **obsolete and do not adequately protect data in transit**, and M3AAWG "specifically urges" supporting TLS 1.2–1.3 and nothing else. - Mail sent between MTAs without encryption is exposed both to unauthorized monitoring and to man-in-the-middle (MiTM) attacks. **Mandatory TLS based on a publicly trusted certificate** prevents both. However, TLS is not adopted everywhere, so forcing TLS is not feasible for general traffic. The answer is opportunistic TLS, with keys created for each session, which protects traffic on a best-effort basis (and can still be attacked by a man in the middle). - Many MTAs now support **DANE and MTA-STS**, which strengthen TLS session encryption further by protecting against downgrade and MiTM attacks. Consult your MTA's documentation to set up STARTTLS with recent versions and ciphers, and to disable obsolete ones properly. - **"M3AAWG strongly encourages all operators to enable Opportunistic TLS on all mail servers."** - Limitation: SMTP works **hop by hop**, and TLS works for each TCP connection, so opportunistic TLS protects each hop separately. If some hops in the delivery path use TLS and others do not, the protection is incomplete to the same extent. It is imperfect, but it protects at least some traffic from some passive attacks. - Verification: check what your servers offer with a testing tool for TLS over SMTP. The document names the **LuxSci SMTP TLS Checker** (luxsci.com/smtp-tls-checker) and **CheckTLS** (checktls.com/TestReceiver), both free for non-commercial use. ## 2) Encrypt intracompany network traffic The old assumption that internal traffic over dedicated links is secure "is no longer warranted", given how much pervasive network monitoring has been disclosed (the document cites **MUSCULAR (DS-200B)** and **Carnivore** in its footnotes). Encrypt **all traffic within your own network infrastructure**, with TLS or other cryptographic methods, in the same way that opportunistic TLS is applied to mail between MTAs over the internet. ## 3) Encrypt user credentials and access When users authenticate to read mail or submit messages, encrypt the exchange of credentials: | Access | Ports | |---|---| | IMAP with TLS, POP with TLS | **993** (IMAP), **995** (POP) | | IMAP or POP with STARTTLS | **143** (IMAP), **110** (POP) | | Mail submission with TLS | **465** | | Mail submission with STARTTLS | **587** | | Webmail | **HTTPS** | ## 4) Log TLS version and cipher data Both senders and receivers should log the **TLS version and cipher** of each TLS session, and may log data about failed connections, which "could be useful with TLSRPT reports" (see [TLS-RPT](https://emailmarketing.net/learn/transport-security/tls-rpt)). Detailed data helps with diagnosis in the short term, and aggregated data shows trends. ## Caveats and scope - These are "fundamental steps rather than comprehensive encryption guidance". Other M3AAWG documents cover more advanced topics. Review your policies periodically. - Before you change existing configurations, understand how the changes affect users, **especially those with older client software**. Real data about your users should inform deployment decisions. ## RFCs cited | RFC | Subject | |---|---| | RFC 5246 | TLS 1.2 | | RFC 7258 | Pervasive Monitoring Is an Attack | | RFC 7672 | SMTP security via opportunistic DANE TLS | | RFC 8446 | TLS 1.3 | | RFC 8460 | SMTP TLS Reporting | | RFC 8461 | SMTP MTA Strict Transport Security (MTA-STS) | | RFC 8996 | Deprecating TLS 1.0 and TLS 1.1 |