User Tools

Site Tools


provenance:security:email_authentication

This is an old revision of the document!


Provenance: security:email_authentication

The working log behind email_authentication: every query with its denominator, the hand maps, the folds and their residue, the quotes that were checked and the one that turned out not to be a quote, the external sources that were accepted and the ones that were rejected, and what the four reviewers found. Corpus-level caveats — how the 5,859 papers were selected, why 2025–2026 are provisional — are on corpus and are not restated here.

This is a log, not prose. It is for someone checking a number.

1. The run

Date 2026-09-09
Corpus at the time data/extract/run1/extractions.jsonl, 5,859 papers, 7 venues (CCS, IMC, NDSS, PETS, USENIX Security, TheWebConf, IEEE S&P), 2010–2026
Page population 31 papers — the INFRA verdict of scripts/msg_fold.mjs
Report script scripts/report_email_authentication.mjs (754 lines), output reproduced in full in section 8 below
Model Claude Opus 5, one main agent
Sub-agents one currency research pass (sonnet); three focused review passes (sonnet); one generic review pass (fable). All findings and dispositions in section 12 below
Pages touched security:email_authentication (created), provenance:security:email_authentication (created), literature:bibliography (+26 entries, 1 corrected), security (five children → six), roadmap (row moved from Queued to Assessed)
New BibTeX keys 26 — 24 for the population, plus jeitner2021_injection (adjacent) and yajima2023_first (the BIMI measurement outside the corpus, added after review). One existing entry corrected: lee2020_longitudinal

2. The population, and why it was not re-derived

The 31 papers were not derived by a query written for this page. They are the INFRA verdict of scripts/msg_fold.mjs, the hand map published on 2026-09-02 with email_tracking and printed by scripts/report_email_tracking.mjs section H. That map screened a 354-paper candidate pool, built by unioning a title-slug regex with a full-text density threshold over message-channel vocabulary, and gave every paper in the pool one of eleven verdicts. INFRA is the one whose object is the machinery that carries the message rather than the message.

Reusing it rather than writing a new query is a deliberate choice with a cost and a benefit:

  • Benefit. The population is already published, already hand-read, already carries a one-line reason per paper, and the count already appears in two places on privacy:email_tracking. Re-deriving it would have produced a second, slightly different 31 and left the two pages disagreeing.
  • Cost. The candidate pool that produced it was built for a page about message tracking. Its recall for email-infrastructure work is therefore a property of somebody else's regex. Section 3 is the recall check that closes this.

scripts/report_email_authentication.mjs imports the map and throws if the INFRA slice is no longer 31 papers, and again if any of its own hand maps stops covering exactly those 31 slugs:

if (INFRA.length !== 31)
  throw new Error(`msg_fold INFRA slice is ${INFRA.length}, page was written against 31`);
if (PAPERS.length !== 31)
  throw new Error(`only ${PAPERS.length} of 31 INFRA slugs found in extractions.jsonl`);
...
assertComplete('KEYS', KEYS);
assertComplete('MECH', MECH);
assertComplete('METHOD', METHOD);

assertComplete reports both directions — a slug in the population with no map entry, and a map entry for a slug not in the population. Both were exercised during development by deleting entries; both fire.

31 of 5,859 is not a rate, and the page says so. The only honest denominator for it is the 354-paper candidate pool, which belongs to the other page.

3. Recall: does the hand map miss email-authentication papers?

A full-text probe over all 5,859 papers (paper.cols.txt, whitespace collapsed; 4 papers have no .cols file and count as negatives), counting occurrences of each mechanism family:

const PATS = {
  spf: /\bSPF\b|Sender Policy Framework/g,   dkim: /\bDKIM\b|DomainKeys/g,
  dmarc: /\bDMARC\b/g,                       starttls: /STARTTLS|\bSTART ?TLS\b/g,
  dane: /\bTLSA\b|\bDANE\b/g,                mtasts: /MTA-STS|TLS-RPT|TLSRPT/g,
  smime: /S\/MIME|SMIMEA|OPENPGPKEY/g,       smtp: /\bSMTP\b|\bMTA\b|\bMX record/g,
  bimi: /\bBIMI\b|Brand Indicators/g,        arc: /Authenticated Received Chain|\bARC (chain|set|seal)/g,
};
// mech = spf+dkim+dmarc+dane+mtasts+bimi+arc ; tls = starttls+smime
Probe Admission rule Papers hit of the 31 Mapped to another verdict Unmapped
TIGHT mech≥10 or tls≥10 or (smtp≥30 and mech≥3) 45 30 5 10
WIDE mech≥4 or tls≥4 or (smtp≥15 and mech≥2) 77 31 14 32

Widening the probe added 32 unmapped papers and none of them belongs on the page. Read by hand on 2026-09-09, they are DANE-for-HTTPS (When HTTPS Meets CDN, IEEE S&P 2014, 60 DANE/TLSA hits and not one about mail), DNSSEC registrar and resolver work, ALPACA, DROWN, Let's Encrypt, a DNS toolkit paper, PDF encryption, and two software-engineering interview studies where S/MIME appears in a quotation. The full list is in section H of the report output.

Two things this establishes and one it does not:

  1. The hand map is not missing a cluster. A regex twice as permissive as the one that would sensibly be written for this topic finds nothing new.
  2. The probe cannot replace the hand map. The TIGHT probe misses one of the 31 — IMC/2017/email-typosquatting, whose subject is misdirected mail and which names no authentication mechanism at all. A page defined by the regex would have dropped it.
  3. It does not establish that the seven venues are the field. EuroS&P, ACSAC, RAID, AsiaCCS, TMA, PAM, ANRW and ACM CCR are outside the corpus entirely, and this literature publishes in several of them.

Boundary cases: papers I considered and left out

Paper msg_fold verdict Decision
WWW/2024/unfiltered-measuring-cloud-based-email-filtering-bypasses SE (spam / filtering) Left out, and this is the one I would most expect a reasonable person to decide the other way. Its measured object is a delivery-path misconfiguration (the hosting provider accepts mail that did not come via the contracted filter) and its instrument is SMTP probing — both squarely this page's. It is filed under filtering because filtering is what the bypass defeats. I did not move it, because the task brief says to reuse the published verdict rather than re-derive, and because privacy:email_tracking publishes “31 papers” in two places: silently making it 32 would put two live pages in disagreement. Instead it is named on the content page in Adjacent, and deliberately not in the 31, with the argument stated. If a future run wants it in, change msg_fold.mjs and both pages together.
NDSS/2025/hades-attack-…-email-blocklists SE Left out. Object is blocklist manipulation.
NDSS/2026/one-email-many-faces-…-email-aliases EID Left out. Alias identity confusion is email_tracking's subject.
2024/inbox-invasion-…-mime-ambiguities SE Left out. Content inspection, not transport.
USENIX/2021/injection-attacks-reloaded-tunnelling-malicious-payloads-over-dns not in the candidate pool at all Left out. Its object is DNS response injection; SPF validators (libspf2, policyd-spf) are among the vulnerable consumers, which makes it the direct methodological ancestor of SPFail. Cited on the page as adjacent, and a BibTeX entry was added for it.

4. Every query, with its population

All counts are of papers, never of extraction tuples. Sentinels (not-stated, none-mentioned) are never counted as an answer. Reproduce with node scripts/report_email_authentication.mjs.

# Question Population (denominator) Answer Report section
Q1 How many papers, and when? the 31 2015:2 2017:1 2018:2 2019:1 2020:2 2021:2 2022:5 2023:5 2024:4 2025:6 2026:1 — 28 are ≥2018, 21 are ≥2022 A
Q2 Which venues? the 31 USENIX 16, IMC 7, NDSS 4, CCS 1, IEEE S&P 1, TheWebConf 1, PETS 1 A
Q2b How concentrated is the authorship? the 31; authors from corpus2/.meta plus out/authors.json (PETS and USENIX .meta records carry none, so the cache is not optional — two papers had to have their authors fetched during this run before the query would cover all 31) 111 distinct authors. Five first authors have more than one paper here, covering 13 of the 31; twelve people appear on four or more; Haixin Duan appears on 7. The page's first draft said “three of the 31 share a first author”, from impression — this query replaced it A3
Q3 Which mechanism does each paper measure? the 31, multi-valued, hand map SPF 16, DKIM 12, DMARC 12, STARTTLS 9, delivery-path 6, S/MIME+OpenPGP 6, DANE 4, DNSSEC 3, MTA-STS 2, autoconfig 2, ARC 1 B
Q4 Which instrument does each paper use? the 31, multi-valued, hand map dns-scan 18, account-delivery-test 14, smtp-probe 13, client-matrix 11, software-testbed 7, provider-logs 6, operator-survey 5, code-analysis 3, notification-experiment 3, passive-dns 2, user-study 2, honey-domain 1. Instruments per paper: mean 2.74, median 3, range 1-5, distribution {1:4, 2:7, 3:14, 4:5, 5:1} C
Q5 Did the instrument mix change? the 31, split 2015–2019 (6) / 2020–2022 (9) / 2023–2026 (16) operator-survey 0/6 → 1/9 → 4/16; software-testbed 0/6 → 2/9 → 5/16; their union is 8 of the 16 papers from 2023 on, and 0 of the 6 from 2015-2019; code-analysis goes the other way, 1/6 → 2/9 → 0/16 C
Q6 What sampling frames? the 31; all 31 record at least one population[].sourceList hand-built list 13, Tranco 9, Alexa 7, Adobe-2013 breach list 5, operator logs 5, passive DNS/OpenINTEL 3, university lists 3, TLD zone files 3, Enron 2, other top list 2, IPv4 space 1 D
Q7 Did the frame date? the 17 of the 31 naming a domain-list frame last Alexa use 2023; first Tranco use 2021; first zone-file use 2023; papers from 2024 onwards using Alexa: 0 D
Q8 Ethics review reported? the 31 none-mentioned 12, explicitly-discussed-no-review 6, approved 5, not-required 4, sought-outcome-unstated 2, exempt 2 F
Q8b Is that worse than the corpus? the 4,965 corpus papers carrying an ethics object No, better. none-mentioned 64.2% corpus against 38.7% here; approved 20.1% corpus against 16.1% here. n = 31, so neither gap is a difference. The page's first draft said the distribution was worse than the corpus, from impression; the figures reviewer caught it and the comparison is now computed in the script F
Q9 Affected parties notified? the 31 yes 19, partial 6, not-stated 3, no 2, not-applicable 1 F
Q10 Artifacts? the 31 availability public 20, none-mentioned 9, promised 1, withheld 1; 18 give a codeUrl F
Q11 Statistics beyond description? the 31 descriptive-only 29; hypothesis-test 2; regression 1; correlation 1; resampling 1; 0 papers have no statistics tuple at all F
Q12 Hand coding and agreement? the 19 of the 31 that coded something by hand 0 report an inter-rater agreement metric F
Q13 People recruited? the 31 8 papers; five operator surveys with n = 39, 74, 16, 95, 117; one MTurk field study n = 488; one lab study n = 50; one 48-university field study. Recruitment channel: the extraction says 3 of 5 and undercounts by one – [1Ashiq, Md. Ishtiaq; Li, Weitong; Fiebig, Tobias; Chung, Taejoong (2023): "You've Got Report: Measurement and Security Implications of DMARC Reporting", in: Proceedings of the USENIX Security Symposium. (Link)] names MailOP, NANOG and MESSEU in its own text and the extractor recorded not-stated F
Q14 Which mechanisms does the corpus never measure? all 5,859 papers, full-text probe BIMI named in 5, all 5 in the 31, all 5 related-work sentences (hand-read) – measured by none. REQUIRETLS named in 0. TLS-RPT named in 3, all in the 31, and it is not unmeasured: [1Ashiq, Md. Ishtiaq; Li, Weitong; Fiebig, Tobias; Chung, Taejoong (2023): "You've Got Report: Measurement and Security Implications of DMARC Reporting", in: Proceedings of the USENIX Security Symposium. (Link)] Table 4 measures provider support, 2 of 8 EHPs. The page's first two drafts got this wrong in both directions; see section 12 below G
Q15 Is the population complete? all 5,859 papers, two probes see section 3 above H
Q16 What tools do these papers use? the 26 of the 31 naming at least one tool as used Postfix 10, OpenSSL/pyOpenSSL 5, a PGP implementation 5, an SPF validator library 4, ZMap 4, Dovecot 3, a spam/blocklist service 3 … residue in section 6 I

The full per-paper lists behind Q3, Q4 and Q16 are printed in the report output; they are not reproduced here because they are the same 31 slugs eleven times over.

Figures published on the page, with denominators

53 figures, each hand-keyed in the FIGURES array of the report script with its population and its evidence quote, and each printed by report section E. They are not repeated here — section E of the output embedded in section 8 below is the authoritative list, and it is generated, so it cannot drift from the script. Read it rather than this page if you are checking a number.

Three figures on the page are derived rather than quoted, and are marked here because a derived percentage is where an inferred denominator hides:

  • “4,167,633 domains (41.7%)” — the paper states the count and states the population as the top ten million; the percentage is mine, 4,167,633 / 10,000,000.
  • “882,183 domains (8.8%)” — same paper, same arithmetic.
  • MTA-STS “0.07%–0.13% by TLD” — the paper's own Table 1 gives the per-TLD percentages and the header of the column they are shares of reads “Domains with MX Records”. The four zone totals in that table sum to 86.8 million; the page does not publish 68,030 / 86.8M as a combined rate, because the paper does not, and because the prose and the table disagree with each other on .org (0.12% in the prose, 0.13% in Table 1). The page quotes the range, not a combined figure.

5. The hand maps

Two of the page's tables are hand maps, not extraction fields, because the schema has no field for them. Both live in the report script, both are asserted complete against the 31, and both are my judgement.

  • MECH — which deployed mechanism the paper measures, read off its own results section. Not which it mentions: every one of the 31 mentions SPF. A paper whose object is where mail goes rather than any single mechanism gets delivery-path.
  • METHOD — the instrument families, defined in the METHODS dictionary in the script so the definition travels with the count. A paper gets every family it actually ran, which is why the mean is 2.7.

Judgement calls inside them worth naming:

  • email-typosquatting gets delivery-path and honey-domain. It measures neither an authentication mechanism nor a transport-security mechanism; it measures what happens to mail that is addressed wrongly. It is in the population because msg_fold put it there and because misdirection is a delivery-path property.
  • heads-in-the-clouds gets delivery-path and dns-scan only. Its subject is university cloud migration generally; MX-record concentration is one section of it. It is the weakest fit of the 31 and I would not have admitted it from scratch.
  • s-mine gets smtp-probe for its internet-wide LDAP scan. LDAP is not SMTP; the family is “actively connect to servers and drive a protocol” and there is no better bucket. Flagged rather than renamed.
  • DNSSEC is listed as a measured mechanism for three papers because DANE cannot be measured without it, not because those papers are DNSSEC studies.

6. Folds, and the residue in full

Two free-text fields were folded. Both residues are printed by the script and are reproduced here, because a residue that exists only in a local script output is a residue nobody will ever look at.

6a. ''population[].sourceList'' → sampling frame

Rule (report section D):

[/alexa/i, 'Alexa (retired Nov 2022)'],
[/tranco/i, 'Tranco'],
[/majestic|umbrella|domcop|quantcast/i, 'another top list (Majestic / Umbrella / DomCop)'],
[/zone file|verisign|internetstiftelsen|public interest registry|czds/i, 'TLD zone files'],
[/passive dns|farsight|sie|dnsdb|openintel/i, 'passive DNS / OpenINTEL'],
[/adobe/i, 'Adobe 2013 breach address list'],
[/enron/i, 'Enron corpus'],
[/gmail|coremail|smtp connection log|reception log|delivery log/i, 'operator logs'],
[/university|times higher|the top100|institution/i, 'university lists'],
[/custom (seed|client|list)|selected public|public software|specialized mailing|mailing list|nanog|mailop/i, 'hand-built list'],
[/ipv4|address space|scans\.io|censys|zmap/i, 'IPv4 address space'],

43 distinct strings did not fold. They are almost all one-off study-specific populations rather than reusable frames, which is the finding: outside the top-list/zone-file/passive-DNS trio, everybody builds their own. The full residue is in report section D and is reproduced verbatim in the embedded output below. A sample of what is in it: “48 universities”, “DomCop Top 10M list”, “dmarcian's DMARC Data Reporters”, “emailclientmarketshare.com”, “mailsac.com”, “public LDAP servers”, “reachable mail servers identified in setup guides”, “shared infrastructure settings: cloud servers, proxy services, serverless functions, CI/CD platforms, and CDN services”, “Tor exit list”, “VPNGate”.

One residue entry is a sentinel and should be read as one, not as a frame: “not-stated” for USENIX/2021/why-tls-is-better-without-starttls.

One is a pointer rather than a source and would be wrong to fold into anything: “based on [56]”, “previous work [44]” and “prior research [40]” (all USENIX/2025/email-spoofing-with-smtp-smuggling). The extractor recorded the citation instead of the list. That is an extraction limitation, not a study one.

6b. ''tools[].name'' (''usedOrMentioned === "used"'') → tool family

Denominator: the 26 of the 31 papers that name at least one tool as used. The fold merges implementations of the same thing (libspf2/pyspf/Mail::SPF/policyd-spf/spfmilter/python-postfix-policyd-spf → “an SPF validator library”; GnuPG/gpg/GPGME/Enigmail/GPG Suite/OpenKeychain/OpenPGP.js → “a PGP implementation”). The unmapped residue is large — roughly a hundred distinct strings across the 31 papers — and is printed in full in report section I. It is dominated by single-use infrastructure (QEMU, GNU Parallel, mitmproxy, Qualtrics, jc, hashcat, Google Translate) and by named commercial services (Netstar URL Categorization, Coremail spam filter, GoDaddy Domains API, HaveIBeenPwned).

The fold is not cosmetic. Without it, OpenSSL and openssl are two tools, ZMap, Zmap and XMap are three, and every one of them falls below any reporting threshold.

7. Quotes: what was checked, and the two-column problem

7a. The 49 published figures

Every figure the page publishes carries an evidence.quote in the FIGURES array, and the script locates each one in paper.cols.txt in three modes — exact after whitespace collapse, whitespace-and-hyphen folded, punctuation folded. Four figures needed two fragments, giving 57 fragments in total; three of those second fragments exist because the source sentence is not contiguous in any available rendering, and the fourth is a corroborating quotation rather than a splice.

Final state: 55 exact, 2 punctuation-folded, 0 unlocatable. The script prints *** N QUOTE(S) COULD NOT BE LOCATED *** and the page's quotes were rewritten until that line disappeared.

That is a selection effect and it should be stated as one. Reaching zero meant changing the quote, never the figure. Ten quotes were rewritten in the first pass and one in the last; in every case the number and the claim stayed and only the string moved, usually by shortening to the contiguous part of the same sentence. The full before/after list:

Figure First quote (unlocatable) Published quote
DKIM 28.1% “find at least 28.1% of the domains have deployed DKIM” “28.1% of Alexa Top 1 million domains have enabled DKIM” — a different sentence in the same abstract
DANE 0.60–0.73% the whole caption split into two fragments, spliced set
Extended Hell(o) SPF the whole sentence split into two fragments, spliced set
MTA-STS 68,030 “we find adoption to have risen 3-4 times, with adoption ranging between 53,800 (0.07%)” the contiguous tail, plus Table 1's .com row as quote2
MTA-STS 19.6% the results-section sentence the contributions-list sentence, which is contiguous
MTA-STS 29.6% the results-section sentence the contributions-list phrasing plus a corroborating second fragment
MTA-STS 94.7% “Out of the 94 participants … 89 (94.7%) had heard of the standard” “While awareness of MTA-STS was high (94.7%)”
Efail S/MIME “exfiltration channels exist for 23 of the 35 tested S/MIME email clients” “23 of the 35 tested S/MIME email clients”
SPF Beyond survey “54 (87.1%) answered yes, while only 8 explicitly indicated they do not” “answered yes, while only 8 explicitly indicated they do not”
BreakSPF 51.7% “51.7% of domains have SPF records that include more than 65,536” “findings revealed that 51.7% of domains have SPF records”
Misleading UI 25 of 35 “Table 4 shows the 25 email providers that have misleading UIs” “25 out of 35 providers will automatically load the spoofed sender's photo”

No figure was dropped for being unquotable, and no figure's value changed to make a quote fit.

7b. The spliced sentences, and why they are not errors

paper.cols.txt repairs two-column reading order, but it cannot repair a sentence that the PDF itself interrupts with a table row, a figure caption or a running head. Three of the page's figures sit on such a sentence and carry a spliced annotation in the script. A fourth figure carries a second quote fragment that is an independent corroborating quotation rather than a split sentence, and a fifth spliced sentence – the DANE rollover figure – is stated in the page's prose rather than in a figure row, so three is a floor rather than a total. I checked each against paper.txt and paper.norm.txt as well; none of the three renderings contains the sentence contiguously, so this is the PDF's layout, not the extraction pipeline's fault.

Paper Role What the sentence looks like in .cols
a-longitudinal-and-comprehensive-study-of-the-dane-ecosystem-in-email spliced figure (spliced set) “0.60% (.com) ∼ 0.73% (.net) of all 4.1 Datasets domains with MX records have corresponding TLSA records in the latest snapshot.” — a section heading lands inside a figure caption
extended-hell-o-… spliced figure (spliced set) “Our analysis shows that only 4,167,633 do”“mains in the top ten million implement SPF” — broken mid-word by a column break
unraveling-the-complexities-of-mta-sts-… (68,030 row) spliced figure (spliced set) Table 1 is interleaved with a figure legend; quote2 is the .com row of that table
unraveling-the-complexities-of-mta-sts-… (29.6% row) corroborating fragment, not a splice the second fragment is an independent sentence from the contributions list, quoted because the figure appears twice in the paper with different framing. No spliced annotation
breakspf-… shortened, not split “findings revealed that 51.7% of domains have SPF records”“that include more than 65,536 (216 ) IP addresses” — a table of error types sits between them, so the published quote stops at the first half
efail-… shortened, not split “Of the tested 48 email clients, 13 load ex-” [table rows] “ternal images by default.” — the published quote is the contiguous “23 of the 35 tested S/MIME email clients” instead
under-the-hood-of-dane-mismanagement-in-smtp prose figure, outside FIGURES “more than 87% of SMTP servers in each case perform rollovers incor-” [column break] “rectly at least once”. Stated in the page's What to Report section, not in a figure row, so the script does not track it. This is why three is a floor

So: three figures carry a spliced annotation, one carries a second fragment for a different reason, two were shortened to a contiguous fragment rather than split, and at least one prose figure outside the tracked array is spliced too.

Consequence for the page: it does not present any of these five as one continuous quotation. It states the figure and leaves the split-quote evidence here.

7c. The extraction's own quotes

As a check on the extraction rather than on the page: all 206 detection[].evidence.quote values across the 31 papers were located.

Mode Quotes
exact 119
punctuation-folded 11
not contiguous in .cols 76 (36.9%)

36.9% is far above the 0.9% unlocatable rate data/extract/README.md reports corpus-wide, and that difference needs explaining rather than reporting. Of the 76: 11 contain an explicit ellipsis inserted by the extractor and were never expected to match. The remaining 65 were sampled by hand on 2026-09-09 — eight of them read in context in paper.cols.txt:

Paper Quote Verdict
DKIM deployment 2022 “We find 28.1% domains support DKIM based on active scanning on Alexa top 1M domains” Real. .cols reads “We find 28.1% domains support 1190 31st USENIX Security Symposium Table 3: … DKIM based on active scanning on Alexa top 1M domains” — a page number, a running head and a table caption inside the sentence
DANE ecosystem 2020 “0.60% (.com) ∼ 0.73% (.net) of all domains with MX records …” Real. Section heading inside a figure caption
Efail 2018 “Of the tested 48 email clients, 13 load external images by default.” Real. Table rows inside the sentence
Johnny 2019 “Using this attack, we were able to spoof arbitrary signature verification results in Enigmail, GPG Suite, and Mailpile.” Real. Column break inside the sentence
Heads in the Clouds 2023 “In the U.S. from 87 (33.46%) to 196 (75.38%), in the U.K. from 15 (13.04%) to 64 (55.65%).” Real. A parenthetical about Brightspace and Blackboard is interleaved
BreakSPF 2024 “51.7% of domains have SPF records that include more than 65,536 (216 ) IP addresses.” Real. Table of error types interleaved. Note (216 ) is the PDF's rendering of the superscript in 216
Extended Hell(o) 2023 “Our analysis shows that only 4,167,633 domains in the top ten million implement SPF.” Real. Broken mid-word
27 Years 2022 “In contrast, 2,287,922 (2.8%) were signed using S/MIME or PGP.” Not verbatim. The paper says “In contrast, 2,287,922 (2.8%) emails were signed.” and the “using S/MIME or PGP” comes from the next sentence. The number and the claim are right; the extractor merged two adjacent sentences into one quotation. The page states the figure and does not quote this sentence.

So: 7 of 8 sampled are real sentences broken by page furniture; 1 of 8 is a genuine extractor paraphrase that preserves the figure. A .cols-only quote check on a two-column mail-measurement paper produces false failures at a rate that would be alarming if you did not look at them, and one true failure that a passing check would have hidden. Both directions are worth knowing.

8. The report script and its output

Committed as scripts/report_email_authentication.mjs. Re-runnable against the current data/extract/run1; every figure on the content page comes from its output, and it throws rather than silently continuing if the population or any hand map moves.

report_email_authentication.mjs
// Report script for `security:email_authentication`.
//
// Every figure on that page is printed here with its own denominator, and
// every quote the page puts in quotation marks is verified against
// data/fulltext/<year>/<venue>/<slug>/paper.cols.txt before it is printed.
//
// Population rule: the page's 31 papers are NOT re-derived here. They are the
// `INFRA` verdict of scripts/msg_fold.mjs — the hand map published with
// `privacy:email_tracking` (2026-09-02), which screened a 354-paper candidate
// pool and separated "the object of measurement is a message" from "the object
// of measurement is the machinery that carries the message". This script
// imports that map and asserts that the INFRA slice is still 31 papers, so a
// change to msg_fold.mjs breaks this report instead of silently moving the
// page's denominator.
//
// Everything this script adds on top of that population is hand-keyed below
// (MECH, METHOD, FIGURES) and checked for completeness against the 31: a slug
// missing from any map throws.
//
// Usage: node scripts/report_email_authentication.mjs
//        node scripts/report_email_authentication.mjs --format wiki   (tables only)
 
import fs from 'node:fs';
import path from 'node:path';
import { loadExtractions, dataRoot } from './lib.mjs';
import { MAP as MSG_MAP } from './msg_fold.mjs';
 
const ROOT = dataRoot();
const H = (s) => console.log('\n' + '='.repeat(78) + '\n' + s + '\n' + '='.repeat(78));
 
// ---------------------------------------------------------------------------
// A. Population
// ---------------------------------------------------------------------------
const INFRA = Object.entries(MSG_MAP)
  .filter(([, v]) => v[0] === 'INFRA')
  .map(([slug, v]) => ({ slug, reason: v[1] }));
const INFRA_SLUGS = new Set(INFRA.map((x) => x.slug));
 
const ALL = loadExtractions();
const PAPERS = ALL.filter((p) => INFRA_SLUGS.has(p.slug)).sort(
  (a, b) => a.year - b.year || a.venue.localeCompare(b.venue)
);
const bySlug = new Map(PAPERS.map((p) => [p.slug, p]));
 
if (INFRA.length !== 31)
  throw new Error(`msg_fold INFRA slice is ${INFRA.length}, page was written against 31`);
if (PAPERS.length !== 31)
  throw new Error(`only ${PAPERS.length} of 31 INFRA slugs found in extractions.jsonl`);
 
const key = (p) => `${p.venue}/${p.year}/${p.slug}`;
 
// ---------------------------------------------------------------------------
// B. Hand maps. A slug missing from either map throws (see assertComplete).
// ---------------------------------------------------------------------------
 
// ---------------------------------------------------------------------------
// B0. Citekey per paper. Hand-keyed so the page's reference table is generated
//     rather than retyped; assertComplete below throws if a paper has no key.
// ---------------------------------------------------------------------------
const KEYS={
 'security-by-any-other-name-on-the-effectiveness-of-provider-based-email-security':'foster2015_security',
 'neither-snow-nor-rain-nor-mitm-an-empirical-analysis-of-email-delivery-security':'durumeric2015_neither',
 'email-typosquatting':'szurdi2017_email',
 'efail-breaking-s-mime-and-openpgp-email-encryption-using-exfiltration-channels':'poddebniak2018_efail',
 'end-to-end-measurements-of-email-spoofing-attacks':'hu2018_measurements',
 'johnny-you-are-fired-spoofing-openpgp-and-s-mime-signatures-in-emails':'mueller2019_johnny',
 'a-longitudinal-and-comprehensive-study-of-the-dane-ecosystem-in-email':'lee2020_longitudinal',
 'composition-kills-a-case-study-of-email-sender-authentication':'chen2020_composition',
 'weak-links-in-authentication-chains-a-large-scale-analysis-of-email-sender-spoof':'shen2021_weak',
 'why-tls-is-better-without-starttls-a-security-analysis-of-starttls-in-the-email':'poddebniak2021_better',
 'spfail-discovering-measuring-and-remediating-vulnerabilities-in-email-sender-val':'bennett2022_spfail',
 'a-large-scale-and-longitudinal-measurement-study-of-dkim-deployment':'wang2022_longitudinal',
 'under-the-hood-of-dane-mismanagement-in-smtp':'lee2022_under',
 'revisiting-email-forwarding-security-under-the-authenticated-received-chain-prot':'wang2022_revisiting',
 '27-years-and-81-million-opportunities-later-investigating-the-use-of-email-encry':'stransky2022_years',
 'heads-in-the-clouds-measuring-universities-migration-to-public-clouds-implicatio':'fiebig2023_heads',
 'lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild':'czybik2023_lazy',
 'youve-got-report-measurement-and-security-implications-of-dmarc-reporting':'ashiq2023_report',
 'content-type-multipart-oracle-tapping-into-format-oracles-in-email-end-to-end-en':'ising2023_content',
 'extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i':'blechschmidt2023_hello',
 'bounce-in-the-wild-a-deep-dive-into-email-delivery-failures-from-a-large-email-s':'li2024_bounce',
 'breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet':'wang2024_breakspf',
 'fakebehalf-imperceptible-email-spoofing-attacks-against-the-delegation-mechanism':'ma2024_fakebehalf',
 'spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr':'ashiq2024_beyond',
 'unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema':'ashiq2025_unraveling',
 'email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify':'wang2025_email',
 'a-multifaceted-study-on-the-use-of-tls-and-auto-detect-in-email-ecosystems':'tang2025_multifaceted',
 's-mine-collecting-and-analyzing-s-mime-certificates-at-scale':'oendaroe2025_mine',
 'understanding-and-characterizing-intermediate-paths-of-email-delivery-the-hidden':'li2025_characterizing',
 'automatic-insecurity-exploring-email-auto-configuration-in-the-wild':'wen2025_automatic',
 'coordmail-exploiting-smtp-timeout-and-command-interaction-to-coordinate-email-middleware-for-convergence-amplification-attack':'li2026_coordmail',
};
 
// Which deployed mechanism(s) the paper MEASURES — not which it mentions.
// Read off the paper's own results section. `delivery-path` means the object is
// where mail goes and who carries it, with no single mechanism as the subject.
const MECH = {
  'security-by-any-other-name-on-the-effectiveness-of-provider-based-email-security': ['STARTTLS', 'SPF', 'DKIM', 'DMARC', 'DNSSEC'],
  'neither-snow-nor-rain-nor-mitm-an-empirical-analysis-of-email-delivery-security': ['STARTTLS', 'SPF', 'DKIM', 'DMARC'],
  'email-typosquatting': ['delivery-path'],
  'efail-breaking-s-mime-and-openpgp-email-encryption-using-exfiltration-channels': ['S/MIME+OpenPGP'],
  'end-to-end-measurements-of-email-spoofing-attacks': ['SPF', 'DKIM', 'DMARC'],
  'johnny-you-are-fired-spoofing-openpgp-and-s-mime-signatures-in-emails': ['S/MIME+OpenPGP'],
  'a-longitudinal-and-comprehensive-study-of-the-dane-ecosystem-in-email': ['DANE', 'STARTTLS', 'DNSSEC'],
  'composition-kills-a-case-study-of-email-sender-authentication': ['SPF', 'DKIM', 'DMARC'],
  'weak-links-in-authentication-chains-a-large-scale-analysis-of-email-sender-spoof': ['SPF', 'DKIM', 'DMARC'],
  'why-tls-is-better-without-starttls-a-security-analysis-of-starttls-in-the-email': ['STARTTLS'],
  'spfail-discovering-measuring-and-remediating-vulnerabilities-in-email-sender-val': ['SPF'],
  'a-large-scale-and-longitudinal-measurement-study-of-dkim-deployment': ['DKIM'],
  'under-the-hood-of-dane-mismanagement-in-smtp': ['DANE', 'STARTTLS', 'DNSSEC'],
  'revisiting-email-forwarding-security-under-the-authenticated-received-chain-prot': ['ARC', 'SPF', 'DKIM', 'DMARC'],
  '27-years-and-81-million-opportunities-later-investigating-the-use-of-email-encry': ['S/MIME+OpenPGP'],
  'heads-in-the-clouds-measuring-universities-migration-to-public-clouds-implicatio': ['delivery-path'],
  'lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild': ['SPF', 'DMARC'],
  'youve-got-report-measurement-and-security-implications-of-dmarc-reporting': ['DMARC'],
  'content-type-multipart-oracle-tapping-into-format-oracles-in-email-end-to-end-en': ['S/MIME+OpenPGP'],
  'extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i': ['SPF', 'DKIM', 'DMARC', 'MTA-STS', 'DANE', 'STARTTLS', 'S/MIME+OpenPGP'],
  'bounce-in-the-wild-a-deep-dive-into-email-delivery-failures-from-a-large-email-s': ['delivery-path', 'SPF', 'DKIM', 'DMARC'],
  'breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet': ['SPF', 'DMARC'],
  'fakebehalf-imperceptible-email-spoofing-attacks-against-the-delegation-mechanism': ['SPF', 'DKIM', 'DMARC'],
  'spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr': ['SPF'],
  'unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema': ['MTA-STS', 'STARTTLS'],
  'email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify': ['SPF', 'DKIM', 'delivery-path'],
  'a-multifaceted-study-on-the-use-of-tls-and-auto-detect-in-email-ecosystems': ['STARTTLS', 'DANE', 'autoconfig'],
  's-mine-collecting-and-analyzing-s-mime-certificates-at-scale': ['S/MIME+OpenPGP'],
  'understanding-and-characterizing-intermediate-paths-of-email-delivery-the-hidden': ['delivery-path', 'SPF'],
  'automatic-insecurity-exploring-email-auto-configuration-in-the-wild': ['autoconfig', 'STARTTLS'],
  'coordmail-exploiting-smtp-timeout-and-command-interaction-to-coordinate-email-middleware-for-convergence-amplification-attack': ['delivery-path', 'SPF', 'DKIM'],
};
 
// The instrument. A paper gets every family it actually ran.
const METHODS = {
  'dns-scan': 'resolve DNS records (TXT/MX/TLSA/_mta-sts) over a domain list',
  'passive-dns': 'query a passive-DNS archive instead of resolving live',
  'smtp-probe': 'open SMTP sessions against real MTAs and drive the protocol',
  'account-delivery-test': 'register accounts at real providers, send crafted mail, observe the inbox',
  'client-matrix': 'test N mail clients (MUAs) by hand or semi-automatically',
  'provider-logs': 'analyse logs, headers or mailboxes from a real mail operator',
  'operator-survey': 'survey mail administrators',
  'notification-experiment': 'notify misconfigured operators, then rescan',
  'software-testbed': 'run MTA/library implementations in a controlled lab',
  'code-analysis': 'read the implementation source',
  'honey-domain': 'register domains or addresses and receive live mail',
  'user-study': 'recruit end users',
};
 
const METHOD = {
  'security-by-any-other-name-on-the-effectiveness-of-provider-based-email-security': ['dns-scan', 'smtp-probe', 'account-delivery-test'],
  'neither-snow-nor-rain-nor-mitm-an-empirical-analysis-of-email-delivery-security': ['dns-scan', 'smtp-probe', 'provider-logs'],
  'email-typosquatting': ['honey-domain', 'dns-scan'],
  'efail-breaking-s-mime-and-openpgp-email-encryption-using-exfiltration-channels': ['client-matrix'],
  'end-to-end-measurements-of-email-spoofing-attacks': ['dns-scan', 'account-delivery-test', 'client-matrix', 'user-study'],
  'johnny-you-are-fired-spoofing-openpgp-and-s-mime-signatures-in-emails': ['client-matrix', 'code-analysis'],
  'a-longitudinal-and-comprehensive-study-of-the-dane-ecosystem-in-email': ['dns-scan', 'smtp-probe', 'account-delivery-test', 'software-testbed'],
  'composition-kills-a-case-study-of-email-sender-authentication': ['account-delivery-test', 'client-matrix'],
  'weak-links-in-authentication-chains-a-large-scale-analysis-of-email-sender-spoof': ['account-delivery-test', 'client-matrix'],
  'why-tls-is-better-without-starttls-a-security-analysis-of-starttls-in-the-email': ['client-matrix', 'smtp-probe', 'software-testbed'],
  'spfail-discovering-measuring-and-remediating-vulnerabilities-in-email-sender-val': ['smtp-probe', 'code-analysis', 'notification-experiment'],
  'a-large-scale-and-longitudinal-measurement-study-of-dkim-deployment': ['dns-scan', 'passive-dns', 'provider-logs'],
  'under-the-hood-of-dane-mismanagement-in-smtp': ['dns-scan', 'smtp-probe', 'operator-survey'],
  'revisiting-email-forwarding-security-under-the-authenticated-received-chain-prot': ['provider-logs', 'account-delivery-test', 'code-analysis'],
  '27-years-and-81-million-opportunities-later-investigating-the-use-of-email-encry': ['provider-logs'],
  'heads-in-the-clouds-measuring-universities-migration-to-public-clouds-implicatio': ['dns-scan'],
  'lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild': ['dns-scan', 'notification-experiment', 'account-delivery-test'],
  'youve-got-report-measurement-and-security-implications-of-dmarc-reporting': ['dns-scan', 'passive-dns', 'account-delivery-test', 'operator-survey'],
  'content-type-multipart-oracle-tapping-into-format-oracles-in-email-end-to-end-en': ['client-matrix'],
  'extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i': ['dns-scan', 'smtp-probe', 'account-delivery-test', 'notification-experiment', 'operator-survey'],
  'bounce-in-the-wild-a-deep-dive-into-email-delivery-failures-from-a-large-email-s': ['provider-logs', 'dns-scan'],
  'breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet': ['dns-scan', 'account-delivery-test', 'software-testbed'],
  'fakebehalf-imperceptible-email-spoofing-attacks-against-the-delegation-mechanism': ['account-delivery-test', 'client-matrix', 'user-study'],
  'spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr': ['dns-scan', 'smtp-probe', 'operator-survey', 'software-testbed'],
  'unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema': ['dns-scan', 'smtp-probe', 'account-delivery-test', 'operator-survey'],
  'email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify': ['account-delivery-test', 'smtp-probe', 'software-testbed'],
  'a-multifaceted-study-on-the-use-of-tls-and-auto-detect-in-email-ecosystems': ['client-matrix', 'smtp-probe', 'dns-scan'],
  's-mine-collecting-and-analyzing-s-mime-certificates-at-scale': ['smtp-probe', 'client-matrix'],
  'understanding-and-characterizing-intermediate-paths-of-email-delivery-the-hidden': ['provider-logs', 'dns-scan'],
  'automatic-insecurity-exploring-email-auto-configuration-in-the-wild': ['dns-scan', 'client-matrix', 'software-testbed'],
  'coordmail-exploiting-smtp-timeout-and-command-interaction-to-coordinate-email-middleware-for-convergence-amplification-attack': ['smtp-probe', 'account-delivery-test', 'software-testbed'],
};
 
function assertComplete(name, map) {
  const missing = [...INFRA_SLUGS].filter((s) => !(s in map));
  const extra = Object.keys(map).filter((s) => !INFRA_SLUGS.has(s));
  if (missing.length || extra.length)
    throw new Error(`${name}: missing ${missing.length} ${JSON.stringify(missing)}; extra ${extra.length} ${JSON.stringify(extra)}`);
}
assertComplete('KEYS', KEYS);
assertComplete('MECH', MECH);
assertComplete('METHOD', METHOD);
for (const [slug, ms] of Object.entries(METHOD))
  for (const m of ms) if (!(m in METHODS)) throw new Error(`${slug}: unknown method family ${m}`);
 
// ---------------------------------------------------------------------------
// C. Hand-keyed figures. Every one of these appears on the page. `quote` is
//    checked verbatim against paper.cols.txt below; `pdfOnly: true` marks a
//    quote the .cols rendering splices and that was verified against paper.pdf
//    text instead (see the provenance page).
// ---------------------------------------------------------------------------
const FIGURES = [
  // --- adoption, in publication order, each with the population it measured ---
  { g: 'adoption', slug: 'neither-snow-nor-rain-nor-mitm-an-empirical-analysis-of-email-delivery-security',
    what: 'STARTTLS', value: '81.8% (648,030)', pop: 'mail-enabled domains among the Alexa Top Million, 26 Apr 2015',
    quote: 'In total, 648,030 (81.8%) of mail-enabled domains supported STARTTLS' },
  { g: 'adoption', slug: 'neither-snow-nor-rain-nor-mitm-an-empirical-analysis-of-email-delivery-security',
    what: 'DMARC', value: '1.1%', pop: 'Alexa Top Million domains with an MX record, Apr 2015',
    quote: 'only 35% successfully configure encryption, and 1.1% specify a DMARC authentication policy' },
  { g: 'adoption', slug: 'end-to-end-measurements-of-email-spoofing-attacks',
    what: 'SPF', value: '44.9%', pop: 'Alexa top 1 million domains, Jan 2018 snapshot',
    quote: 'About 44.9% of the domains have published a valid SPF record in 2018' },
  { g: 'adoption', slug: 'a-large-scale-and-longitudinal-measurement-study-of-dkim-deployment',
    what: 'DKIM', value: '28.1% (lower bound)', pop: 'Alexa Top 1 million domains, probed with 40 selectors harvested from passive DNS',
    quote: '28.1% of Alexa Top 1 million domains have enabled DKIM' },
  { g: 'adoption', slug: 'a-longitudinal-and-comprehensive-study-of-the-dane-ecosystem-in-email',
    what: 'DANE (TLSA)', value: '0.60%–0.73%', pop: 'second-level domains WITH an MX record in .com / .net',
    quote: '0.60% (.com) ∼ 0.73% (.net) of all',
    quote2: 'domains with MX records have corresponding TLSA records in the latest snapshot',
    spliced: 'a column break drops the figure caption "4.1 Datasets" into the middle of the sentence' },
  { g: 'adoption', slug: 'extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i',
    what: 'SPF', value: '4,167,633 domains (41.7%)', pop: 'Tranco top 10 million domains, 2023',
    quote: 'Our analysis shows that only 4,167,633 do',
    quote2: 'mains in the top ten million implement SPF',
    spliced: 'the sentence is broken mid-word by a column break' },
  { g: 'adoption', slug: 'extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i',
    what: 'DMARC', value: '882,183 domains (8.8%)', pop: 'Tranco top 10 million domains, final scan June 2023',
    quote: 'Of the top 10 million domains, 882,183 deployed a DMARC policy at the time of our final scan in June 2023' },
  { g: 'adoption', slug: 'extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i',
    what: 'MTA-STS', value: '6,948 records, 569 with a policy file', pop: 'Tranco top 10 million domains WITH an MX record, 2023',
    quote: 'However, only 569 of these domains actually had a policy file hosted in that location' },
  { g: 'adoption', slug: 'lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild',
    what: 'SPF', value: '56.5% / 60.2%', pop: '12 million domains (all) vs the top 1 million of them, 2023',
    quote: 'a clear increase in SPF usage to 56.5 % can be observed from our scan' },
  { g: 'adoption', slug: 'lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild',
    what: 'DMARC', value: '13.6% / 22.6%', pop: '12 million domains (all) vs the top 1 million of them, 2023',
    quote: 'is now at 22.6 % for the top 1 million domains and 13.6 % for all domains' },
  { g: 'adoption', slug: 'breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet',
    what: 'SPF', value: '60.9% published, 55.9% valid', pop: 'Tranco top million domains, 2023–24',
    quote: '60.9% of the top million domains have deployed SPF records, and 55.9% have deployed valid SPF records' },
  { g: 'adoption', slug: 'unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema',
    what: 'MTA-STS', value: '68,030 domains (0.07%–0.13%)', pop: 'domains WITH AN MX RECORD in the .com/.net/.org/.se zone files (86.8M; Table 1 column header reads "Domains with MX Records"), 29 Sep 2024',
    quote: 'have risen 3-4 times, with adoption ranging between 53,800 (0.07%)',
    quote2: '.com 73,939,004 53,800 (0.07%)',
    spliced: 'Table 1, whose header column reads "Domains with MX Records", is interleaved with a figure legend; quote2 is the .com row' },
 
  // --- what the receiver actually does, as opposed to what the sender publishes ---
  { g: 'enforcement', slug: 'security-by-any-other-name-on-the-effectiveness-of-provider-based-email-security',
    what: 'SPF enforcement', value: '10 providers acted', pop: '22 large providers where the authors held an account, 2014–15',
    quote: 'Almost all providers performed the SPF DNS query, but only 10 took action, half at the SMTP layer' },
  { g: 'enforcement', slug: 'spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr',
    what: 'inbound SPF validation before DATA', value: '6.8% (81,843)', pop: '1.2 million reachable SMTP servers derived from four zone files',
    quote: 'initiate SPF queries prior to issuing the DATA command' },
  { g: 'enforcement', slug: 'unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema',
    what: 'sender-side MTA-STS validation', value: '19.6% (469)', pop: '2,394 sender domains observed in the authors’ deliverability tests',
    quote: 'Our sender-side dataset reveals that 19.6% of domains perform MTA-STS validation when sending email to an MTA-STS enabled domain' },
  { g: 'enforcement', slug: 'a-longitudinal-and-comprehensive-study-of-the-dane-ecosystem-in-email',
    what: 'DANE-validating senders', value: '4 providers', pop: '29 email providers tested end to end',
    quote: 'we find that only four email service providers (mail.com, comcast.net, gmx.com, tutanota.com) actually fetch TLSA records' },
  { g: 'enforcement', slug: 'end-to-end-measurements-of-email-spoofing-attacks',
    what: 'forged mail reaching the inbox', value: '34 of 35 providers', pop: '35 public email providers, Dec 2017 – Jan 2018',
    quote: 'out of the 35 email services allowed at least one forged email to arrive the inbox' },
  { g: 'enforcement', slug: 'weak-links-in-authentication-chains-a-large-scale-analysis-of-email-sender-spoof',
    what: 'sender-inconsistency checks', value: '12 services', pop: '30 email services and 23 clients tested, 2021',
    quote: 'only 12 services perform the sender inconsistency checks' },
 
  // --- misconfiguration: the second thing every one of these papers measures ---
  { g: 'misconfig', slug: 'lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild',
    what: 'SPF authorising >100,000 IPv4 addresses', value: '34.7%', pop: 'the SPF-publishing domains of the 12 million scanned, 2023',
    quote: '34.7 % of the domains allow emails to be sent from over 100 000 IP addresses' },
  { g: 'misconfig', slug: 'spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr',
    what: 'SPF needing >10 DNS lookups', value: '6.5%', pop: '55 million domains that have SPF records, latest of 17 monthly zone-file scans',
    quote: 'We use our latest scan and focus on 55 M domains that have SPF records' },
  { g: 'misconfig', slug: 'unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema',
    what: 'MTA-STS incorrectly configured', value: '29.6% (20,144)', pop: 'the 68,030 domains that published an MTA-STS record, Sep 2024',
    quote: '29.6% of domains with MTA-STS records in our latest scan',
    quote2: 'We find that out of the 20,144 misconfigured domains, 640 (3.2%) domains will encounter email delivery failures' },
  { g: 'misconfig', slug: 'under-the-hood-of-dane-mismanagement-in-smtp',
    what: 'invalid TLSA records', value: 'over 22%', pop: 'SMTP servers serving .com domains, hourly snapshots',
    quote: 'the percentage of SMTP servers with invalid TLSA records is over 22% when they serve domains in .com' },
  { g: 'misconfig', slug: 'a-large-scale-and-longitudinal-measurement-study-of-dkim-deployment',
    what: 'DKIM keys ≤ 1024 bits', value: '84%', pop: '3,627,871 domains with DKIM keys in passive DNS',
    quote: 'of 3,627,871 domains still use DKIM keys that are less or equal to 1024 bits' },
  { g: 'misconfig', slug: 'a-large-scale-and-longitudinal-measurement-study-of-dkim-deployment',
    what: 'shared DKIM keys', value: '66.9% (2,427,682)', pop: 'the DKIM-publishing domains in the passive-DNS set',
    quote: 'we find 61,062 DKIM keys shared by more than one domain' },
  { g: 'misconfig', slug: 'youve-got-report-measurement-and-security-implications-of-dmarc-reporting',
    what: 'external rua without an authorisation record', value: '26% (520K)', pop: '2 million DMARC records naming an external reporting domain',
    quote: 'we find that 520K (26%) of them do not have the authorization DMARC records' },
  { g: 'misconfig', slug: 'extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i',
    what: 'STARTTLS certificate validation failure', value: '30.0%', pop: '2,112,682 connectable MXs, 2023',
    quote: 'Of the remaining 2,112,682 MXs, only 1,478,060 (70.0%) passed proper certificate validation' },
  { g: 'misconfig', slug: 'automatic-insecurity-exploring-email-auto-configuration-in-the-wild',
    what: 'auto-configuration support', value: '7.52% (79,212)', pop: '1,053,469 domains scanned for Autodiscover / Autoconfig / SRV',
    quote: 'domains support at least one auto-configuration mechanism' },
 
  { g: 'misconfig', slug: 'lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild',
    what: 'SPF with no restrictive all qualifier', value: '5.9% (427,767)', pop: 'the SPF-publishing domains of the 12 million scanned, 2023 (427,767 / 0.059 = 7.25M, i.e. the SPF-publishing subset, not all 12M)',
    quote: 'the SPF configuration is missing a restrictive all policy' },
  { g: 'clients', slug: 'end-to-end-measurements-of-email-spoofing-attacks',
    what: 'providers showing any security indicator on a forged message', value: '9 of 35', pop: '35 popular email providers, web and mobile interfaces inspected by hand',
    quote: 'only 9 of 35 providers have implemented some security indicators' },
  { g: 'clients', slug: 'end-to-end-measurements-of-email-spoofing-attacks',
    what: 'providers showing a MISLEADING element on a forged message', value: '25 of 35', pop: 'the same 35 providers',
    quote: '25 out of 35 providers will automatically load the spoofed sender\'s photo' },
  { g: 'logs', slug: '27-years-and-81-million-opportunities-later-investigating-the-use-of-email-encry',
    what: 'emails encrypted', value: '0.06% (46,973)', pop: 'the same 81.6 million emails at one university',
    quote: '46,973 (0.06%) emails were encrypted' },
 
  // --- the client side ---
  { g: 'clients', slug: 'efail-breaking-s-mime-and-openpgp-email-encryption-using-exfiltration-channels',
    what: 'exfiltration channels', value: '23 of 35 S/MIME, 10 of 28 OpenPGP', pop: '48 mail clients tested',
    quote: '23 of the 35 tested S/MIME email clients' },
  { g: 'clients', slug: 'johnny-you-are-fired-spoofing-openpgp-and-s-mime-signatures-in-emails',
    what: 'signature spoofing', value: '14 of 20 OpenPGP, 15 of 22 S/MIME', pop: '25 mail clients tested',
    quote: 'in 14 out of 20 tested OpenPGP-capable email clients' },
  { g: 'clients', slug: 'why-tls-is-better-without-starttls-a-security-analysis-of-starttls-in-the-email',
    what: 'plaintext downgrade', value: '15 of 28', pop: '28 mail clients tested, 2021',
    quote: 'In total, 15 of 28 clients could be downgraded to plaintext and leaked sensitive data' },
  { g: 'clients', slug: 'a-multifaceted-study-on-the-use-of-tls-and-auto-detect-in-email-ecosystems',
    what: 'silent TLS downgrade', value: '19 of 49', pop: '49 mail clients tested, 2025',
    quote: 'we found that 19 clients may inadvertently downgrade the security of the email protocols to no-TLS without notifying the user' },
  { g: 'clients', slug: 'automatic-insecurity-exploring-email-auto-configuration-in-the-wild',
    what: 'auto-configuration attack', value: '22 of 29', pop: '29 mail clients exercised against controlled servers',
    quote: '22/29 clients were vulnerable to at least one of the attack scenarios' },
 
  // --- provider-side logs ---
  { g: 'logs', slug: '27-years-and-81-million-opportunities-later-investigating-the-use-of-email-encry',
    what: 'users who ever used S/MIME or PGP', value: '5.46%', pop: '81.6 million emails from 37,089 accounts at one university, 27 years',
    quote: 'We found that only 5.46% of all users ever used S/MIME or PGP' },
  { g: 'logs', slug: 'bounce-in-the-wild-a-deep-dive-into-email-delivery-failures-from-a-large-email-s',
    what: 'hard bounces', value: '8.11% (24M)', pop: '298 million emails at one large Chinese ESP',
    quote: '259M (87.07%) are non-bounced, 14M (4.82%) are soft-bounced, and 24M (8.11%) are hard-bounced' },
  { g: 'logs', slug: 'bounce-in-the-wild-a-deep-dive-into-email-delivery-failures-from-a-large-email-s',
    what: 'bounces caused by sender authentication failure', value: '2.19% (701K)', pop: 'the same 298 million emails; share of all, not of bounces',
    quote: 'We find that 701K (2.19%) emails are hard-bounced due to sender authentication failure' },
  { g: 'logs', slug: 'understanding-and-characterizing-intermediate-paths-of-email-delivery-the-hidden',
    what: 'paths relying entirely on third-party relaying', value: '82.7% (86.9M)', pop: '105 million emails with a reconstructable intermediate path',
    quote: 'We find that 82.7% of email intermediate paths fall into the Third-party hosting category' },
  { g: 'logs', slug: 'understanding-and-characterizing-intermediate-paths-of-email-delivery-the-hidden',
    what: 'concentration of the relay market (HHI)', value: '40%', pop: 'middle nodes across all reconstructed intermediate paths',
    quote: 'we obtain an HHI of 40% for the middle node market, which indicates a highly concentrated market' },
  { g: 'logs', slug: 'neither-snow-nor-rain-nor-mitm-an-empirical-analysis-of-email-delivery-security',
    what: 'inbound Gmail messages authenticated by SPF, DKIM or both', value: '94.40%', pop: 'Gmail SMTP handshake logs, April 2015',
    quote: 'During April 2015, 94.40% of incoming Gmail messages were authenticated with DKIM, SPF, or both' },
 
  // --- notification experiments ---
  { g: 'notify', slug: 'lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild',
    what: 'SPF errors fixed two weeks after notification', value: '6,931 errors', pop: 'notified domains, rescanned two weeks later; total errors fell 3.28%',
    quote: 'We observe that 6 931 errors have been fixed by that time' },
  { g: 'notify', slug: 'extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i',
    what: 'SPF misconfiguration remediated one month after notification', value: '39.7% vs 20.7% control',
    pop: 'notified vs undeliverable-notification domains; Fisher exact p = 7.8e-43',
    quote: 'only 1,076 were still misconfigured in November, which is a decrease of 39.7%' },
  { g: 'notify', slug: 'spfail-discovering-measuring-and-remediating-vulnerabilities-in-email-sender-val',
    what: 'still vulnerable after four months', value: 'just over 80%', pop: 'domains inferred vulnerable to the libSPF2 flaw, remeasured over four months',
    quote: 'just over 80% of domains that we were able to infer results for were still vulnerable' },
 
  // --- operator surveys ---
  { g: 'survey', slug: 'spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr',
    what: 'operators who validate SPF inbound', value: '87.1% (54)', pop: '62 survey respondents who answered that question (95 started)',
    quote: 'answered yes, while only 8 explicitly indicated they do not' },
  { g: 'survey', slug: 'unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema',
    what: 'operators who had heard of MTA-STS', value: '94.7% (89)', pop: '94 respondents who answered that question (117 engaged with the survey)',
    quote: 'While awareness of MTA-STS was high (94.7%)' },
  { g: 'survey', slug: 'youve-got-report-measurement-and-security-implications-of-dmarc-reporting',
    what: 'DMARC publishers who also send reports', value: '66% (26)', pop: '39 operators who said they publish DMARC records; 74 answered any question',
    quote: 'Out of 39 operators who published DMARC records, we also find that 26 (66%) also send DMARC reports' },
 
  // --- shared infrastructure: the 2024-2026 turn ---
  { g: 'shared', slug: 'breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet',
    what: 'domains exploitable through a shared-infrastructure IP inside their own SPF', value: '23,916',
    pop: 'Tranco top million; 23 of them in the top 1,000',
    quote: 'We uncover that 23,916 domains are vulnerable to BreakSPF attacks' },
  { g: 'shared', slug: 'breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet',
    what: 'SPF records covering more than 65,536 addresses', value: '51.7%', pop: 'the SPF-publishing domains of the Tranco top million',
    quote: 'findings revealed that 51.7% of domains have SPF records' },
  { g: 'shared', slug: 'email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify',
    what: 'exploitable sender/receiver pairs', value: '36 of 440', pop: '20 sending x 22 receiving public email services',
    quote: 'we identified 36 exploitable pairs out of the 440' },
  { g: 'shared', slug: 'coordmail-exploiting-smtp-timeout-and-command-interaction-to-coordinate-email-middleware-for-convergence-amplification-attack',
    what: 'reflected mail passing SPF or DKIM', value: '77.89% (7,851)', pop: '10,079 exploitable bounce servers found by probing',
    quote: 'We discover that emails from 7,851 (77.89%) bounce servers could be verified by SPF or DKIM' },
  { g: 'shared', slug: 'lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild',
    what: 'domains spoofable by renting shared web hosting', value: '26,095', pop: 'domains whose SPF authorised the rented hosts; 4 of 5 providers allowed it',
    quote: 'we are able to send emails with valid SPF entries from 26 095 domains' },
];
 
// ---------------------------------------------------------------------------
// D. Quote verification against paper.cols.txt (three whitespace/hyphen modes)
// ---------------------------------------------------------------------------
const colsCache = new Map();
function colsText(p) {
  if (colsCache.has(p.slug)) return colsCache.get(p.slug);
  const f = path.join(ROOT, 'fulltext', String(p.year), p.venue, p.slug, 'paper.cols.txt');
  const v = fs.existsSync(f) ? fs.readFileSync(f, 'utf8') : null;
  colsCache.set(p.slug, v);
  return v;
}
const norm = (s) => s.replace(/[‘’]/g, "'").replace(/[“”]/g, '"').replace(/[‐-―]/g, '-').replace(/\s+/g, ' ').trim();
const nospace = (s) => norm(s).replace(/[\s-]/g, '');
const nopunct = (s) => nospace(s).replace(/[^a-z0-9]/gi, '').toLowerCase();
 
function locate(p, quote) {
  const t = colsText(p);
  if (t === null) return 'NO-COLS-FILE';
  if (norm(t).includes(norm(quote))) return 'exact';
  if (nospace(t).includes(nospace(quote))) return 'whitespace-folded';
  if (nopunct(t).includes(nopunct(quote))) return 'punctuation-folded';
  // The .cols rendering repairs two-column reading order but still interposes
  // page furniture (running heads, table captions, figure labels) inside a
  // sentence that spans a column break. A quote that is real in the PDF but
  // interrupted in .cols shows up here as 'spliced': both ends are present,
  // the middle is not contiguous. Anything on the page must be 'exact' or a
  // fragment short enough to be contiguous -- see FIGURES.
  const h = nopunct(t);
  let pre = 0, suf = 0;
  for (let k = 1; k <= quote.length; k++) { if (h.includes(nopunct(quote.slice(0, k)))) pre = k; else break; }
  for (let k = 1; k <= quote.length; k++) { if (h.includes(nopunct(quote.slice(quote.length - k)))) suf = k; else break; }
  if (pre >= 25 && suf >= 25) return `spliced(head ${pre}ch / tail ${suf}ch)`;
  return `NOT FOUND (longest head ${pre}ch: "${quote.slice(0, pre)}")`;
}
 
// ---------------------------------------------------------------------------
// E. Output
// ---------------------------------------------------------------------------
const wikiOnly = process.argv.includes('--format') && process.argv[process.argv.indexOf('--format') + 1] === 'wiki';
 
H('A. POPULATION');
console.log(`corpus            : ${ALL.length} extracted papers, 7 venues, 2010-2026`);
console.log(`page population   : ${PAPERS.length} papers, verdict INFRA in scripts/msg_fold.mjs`);
console.log(`  denominator note: this is 0.53% of ${ALL.length}. It is NOT a share of anything`);
console.log(`                    meaningful; it is a hand-mapped topical slice of a 354-paper`);
console.log(`                    candidate pool published with privacy:email_tracking.`);
const yrs = {}, vns = {};
for (const p of PAPERS) { yrs[p.year] = (yrs[p.year] || 0) + 1; vns[p.venue] = (vns[p.venue] || 0) + 1; }
console.log('\nby year  :', Object.entries(yrs).map(([k, v]) => `${k}:${v}`).join('  '));
console.log('by venue :', Object.entries(vns).sort((a, b) => b[1] - a[1]).map(([k, v]) => `${k}:${v}`).join('  '));
console.log(`\n2018-2026: ${PAPERS.filter(p => p.year >= 2018).length} of 31; 2022-2026: ${PAPERS.filter(p => p.year >= 2022).length} of 31`);
console.log('\nThe list, oldest first:');
for (const p of PAPERS) console.log(`  ${key(p)}\n      ${MSG_MAP[p.slug][1]}`);
 
H('A2. THE 31, AS THE PAGE PRINTS THEM (DokuWiki table, generated -- do not retype)');
{
  const VEN = { USENIX: 'USENIX Sec', IMC: 'IMC', NDSS: 'NDSS', CCS: 'CCS', 'IEEE-SP': 'IEEE S&P', WWW: 'TheWebConf', PETS: 'PETS' };
  console.log('^ Year ^ Venue ^ Paper ^ What it measures ^');
  for (const p of PAPERS) console.log(`| ${p.year} | ${VEN[p.venue]} | {[${KEYS[p.slug]}]} | ${MSG_MAP[p.slug][1]} |`);
  const dupes = Object.values(KEYS).filter((k, i, a) => a.indexOf(k) !== i);
  if (dupes.length) throw new Error(`duplicate citekeys: ${dupes}`);
  console.log(`\n${new Set(Object.values(KEYS)).size} distinct citekeys for ${PAPERS.length} papers.`);
}
 
H('A3. WHO WROTE THEM. Author concentration across the 31.');
{
  // Authors come from data/corpus2/.meta plus out/authors.json, the same two
  // sources bibgen.mjs uses -- PETS and USENIX .meta records carry no authors,
  // so the cache is not optional here. A paper with no author list is reported,
  // not skipped: an undercount would understate the concentration.
  const metaDir = path.join(ROOT, 'corpus2/.meta');
  const idx = new Map();
  for (const f of fs.readdirSync(metaDir).filter((x) => x.endsWith('.json')))
    for (const r of JSON.parse(fs.readFileSync(path.join(metaDir, f), 'utf8')).papers)
      idx.set(`${r.venue}/${r.year}/${r.slug}`, r);
  const cachePath = path.join(path.dirname(new URL(import.meta.url).pathname), '..', 'out', 'authors.json');
  const cache = fs.existsSync(cachePath) ? JSON.parse(fs.readFileSync(cachePath, 'utf8')) : {};
  const firsts = new Map(), all = new Map();
  const noAuthors = [];
  for (const p of PAPERS) {
    const k = key(p);
    const au = (idx.get(k) && idx.get(k).authors) || cache[k] || null;
    if (!au || !au.length) { noAuthors.push(k); continue; }
    const norm = (a) => String(a).trim();
    const f = norm(au[0]);
    if (!firsts.has(f)) firsts.set(f, []);
    firsts.get(f).push(k);
    for (const a of new Set(au.map(norm))) { if (!all.has(a)) all.set(a, []); all.get(a).push(k); }
  }
  console.log(`denominator: ${PAPERS.length - noAuthors.length} of ${PAPERS.length} papers have an author list.`);
  if (noAuthors.length) console.log(`  NO AUTHOR LIST (excluded, and this undercounts the concentration): ${JSON.stringify(noAuthors)}`);
  const repeatFirst = [...firsts.entries()].filter(([, v]) => v.length > 1).sort((a, b) => b[1].length - a[1].length);
  const covered = new Set(repeatFirst.flatMap(([, v]) => v));
  console.log(`\nFirst authors with more than one paper here: ${repeatFirst.length}, covering ${covered.size} of ${PAPERS.length} papers`);
  for (const [a, v] of repeatFirst) console.log(`  ${String(v.length).padStart(2)}  ${a}`);
  console.log('\nAuthors on four or more of the 31:');
  for (const [a, v] of [...all.entries()].filter(([, v]) => v.length >= 4).sort((x, y) => y[1].length - x[1].length))
    console.log(`  ${String(v.length).padStart(2)}  ${a}`);
  console.log(`\ndistinct authors across the ${PAPERS.length - noAuthors.length}: ${all.size}`);
}
 
H('B. MECHANISM MEASURED (hand map, paper-counted, multi-valued)');
{
  const c = new Map();
  for (const p of PAPERS) for (const m of MECH[p.slug]) { if (!c.has(m)) c.set(m, []); c.get(m).push(key(p)); }
  console.log(`denominator: ${PAPERS.length} papers. Multi-valued, so shares do not sum to 100%.\n`);
  for (const [m, list] of [...c.entries()].sort((a, b) => b[1].length - a[1].length))
    console.log(`  ${String(list.length).padStart(2)}  ${((list.length / PAPERS.length) * 100).toFixed(1).padStart(5)}%  ${m}`);
  console.log('\n  MECHANISMS NO PAPER MEASURES THE DEPLOYMENT OF (full-text probe, section G):');
  console.log('    BIMI       -- named in 5 corpus papers, all 5 in this population, all 5 related-work sentences');
  console.log('    TLS-RPT    -- named in 3, all 3 in this population. NOT untouched: youve-got-report');
  console.log('                  Table 4 measures provider support (2 of 8 EHPs) and its survey asks');
  console.log('                  operators whether they send reports. What nobody has done is scan a');
  console.log('                  DOMAIN POPULATION for _smtp._tls records, the way four papers scan SPF.');
  console.log('    REQUIRETLS -- named in 0 papers corpus-wide');
  if (!wikiOnly) {
    console.log('\n  papers per mechanism:');
    for (const [m, list] of [...c.entries()].sort((a, b) => b[1].length - a[1].length)) {
      console.log(`   ${m}:`);
      for (const k of list) console.log(`      ${k}`);
    }
  }
}
 
H('C. INSTRUMENT (hand map, paper-counted, multi-valued)');
{
  const c = new Map();
  for (const p of PAPERS) for (const m of METHOD[p.slug]) { if (!c.has(m)) c.set(m, []); c.get(m).push(key(p)); }
  // Mean and median are both printed and both labelled. An earlier version of
  // this line computed the mean and called it the median, and the page repeated
  // the mislabel; they differ here (2.74 vs 3).
  const per = PAPERS.map((p) => METHOD[p.slug].length).sort((a, b) => a - b);
  const mean = per.reduce((a, b) => a + b, 0) / per.length;
  const median = per[Math.floor(per.length / 2)];
  const hist = {};
  for (const n of per) hist[n] = (hist[n] || 0) + 1;
  console.log(`denominator: ${PAPERS.length} papers. Multi-valued: MEAN ${mean.toFixed(2)}, MEDIAN ${median}, range ${per[0]}-${per[per.length - 1]}, distribution ${JSON.stringify(hist)} (instruments per paper).\n`);
  for (const [m, list] of [...c.entries()].sort((a, b) => b[1].length - a[1].length))
    console.log(`  ${String(list.length).padStart(2)}  ${((list.length / PAPERS.length) * 100).toFixed(1).padStart(5)}%  ${m.padEnd(24)} ${METHODS[m]}`);
  {
    const late = PAPERS.filter((p) => p.year >= 2023);
    const newish = late.filter((p) => METHOD[p.slug].includes('operator-survey') || METHOD[p.slug].includes('software-testbed'));
    console.log(`\n  papers from 2023 onwards running an operator survey OR a software testbed: ${newish.length} of ${late.length}`);
    for (const p of newish) console.log(`      ${key(p)}  [${METHOD[p.slug].filter((m) => m === 'operator-survey' || m === 'software-testbed').join(', ')}]`);
  }
  console.log('\n  by period (does the instrument date?):');
  const periods = [['2015-2019', (y) => y <= 2019], ['2020-2022', (y) => y >= 2020 && y <= 2022], ['2023-2026', (y) => y >= 2023]];
  const all = [...c.keys()].sort();
  console.log('    ' + 'instrument'.padEnd(24) + periods.map(([n]) => n.padStart(11)).join(''));
  for (const m of all) {
    const row = periods.map(([, f]) => {
      const n = PAPERS.filter((p) => f(p.year) && METHOD[p.slug].includes(m)).length;
      const d = PAPERS.filter((p) => f(p.year)).length;
      return `${n}/${d}`.padStart(11);
    });
    console.log('    ' + m.padEnd(24) + row.join(''));
  }
  if (!wikiOnly) {
    console.log('\n  papers per instrument:');
    for (const [m, list] of [...c.entries()].sort((a, b) => b[1].length - a[1].length)) {
      console.log(`   ${m}:`);
      for (const k of list) console.log(`      ${k}`);
    }
  }
}
 
H('D. SAMPLING FRAME (population[].sourceList, folded, paper-counted)');
{
  // Fold: only the frames a domain-list scan can draw from. Residue printed.
  const FOLD = [
    [/alexa/i, 'Alexa (retired Nov 2022)'],
    [/tranco/i, 'Tranco'],
    [/majestic|umbrella|domcop|quantcast/i, 'another top list (Majestic / Umbrella / DomCop)'],
    [/zone file|verisign|internetstiftelsen|public interest registry|czds/i, 'TLD zone files'],
    [/passive dns|farsight|sie|dnsdb|openintel/i, 'passive DNS / OpenINTEL'],
    [/adobe/i, 'Adobe 2013 breach address list'],
    [/enron/i, 'Enron corpus'],
    [/gmail|coremail|smtp connection log|reception log|delivery log/i, 'operator logs'],
    [/university|times higher|the top100|institution/i, 'university lists'],
    [/custom (seed|client|list)|selected public|public software|specialized mailing|mailing list|nanog|mailop/i, 'hand-built list'],
    [/ipv4|address space|scans\.io|censys|zmap/i, 'IPv4 address space'],
  ];
  const c = new Map(); const residue = new Map();
  for (const p of PAPERS) {
    const seen = new Set();
    for (const s of p.population) {
      const v = s.sourceList;
      if (v === null || v === undefined) continue;
      const hit = FOLD.find(([re]) => re.test(v));
      if (hit) seen.add(hit[1]);
      else { if (!residue.has(v)) residue.set(v, new Set()); residue.get(v).add(key(p)); }
    }
    for (const f of seen) { if (!c.has(f)) c.set(f, new Set()); c.get(f).add(key(p)); }
  }
  const withPop = PAPERS.filter((p) => p.population.length > 0).length;
  console.log(`denominator: ${withPop} of ${PAPERS.length} papers record at least one population[].sourceList.\n`);
  for (const [f, s] of [...c.entries()].sort((a, b) => b[1].size - a[1].size)) console.log(`  ${String(s.size).padStart(2)}  ${f}`);
  // The frame moved, and it is datable. Printed per paper so the claim on the
  // page ("Alexa through 2022, Tranco after, zone files from 2023") is the
  // script's, not the prose's.
  console.log('\n  Which frame, by paper (only papers naming a domain-list frame):');
  let alexaLast = 0, trancoFirst = 9999, zoneFirst = 9999;
  for (const p of PAPERS) {
    const srcs = p.population.map((x) => x.sourceList).filter(Boolean);
    const a = srcs.some((v) => /alexa/i.test(v));
    const t = srcs.some((v) => /tranco/i.test(v));
    const z = srcs.some((v) => /zone file|verisign|internetstiftelsen|public interest registry/i.test(v));
    if (!(a || t || z)) continue;
    if (a) alexaLast = Math.max(alexaLast, p.year);
    if (t) trancoFirst = Math.min(trancoFirst, p.year);
    if (z) zoneFirst = Math.min(zoneFirst, p.year);
    console.log(`      ${p.year} ${p.venue.padEnd(8)} ${(a ? 'Alexa ' : '').padEnd(6)}${(t ? 'Tranco ' : '').padEnd(7)}${(z ? 'zone-files' : '').padEnd(10)}  ${p.slug.slice(0, 48)}`);
  }
  console.log(`\n      last Alexa use: ${alexaLast}; first Tranco use: ${trancoFirst}; first zone-file use: ${zoneFirst}`);
  console.log(`      papers from 2024 onwards using Alexa: ${PAPERS.filter((p) => p.year >= 2024 && p.population.some((x) => /alexa/i.test(x.sourceList || ''))).length}`);
 
  console.log(`\n  UNMAPPED RESIDUE: ${residue.size} distinct strings, printed in full --`);
  for (const [v, s] of [...residue.entries()].sort()) console.log(`      "${v}"  (${[...s].join(', ')})`);
}
 
H('E. FIGURES ON THE PAGE, with their denominators and their quote check');
{
  const groups = {};
  for (const f of FIGURES) (groups[f.g] ||= []).push(f);
  let bad = 0, byMode = {};
  for (const [g, list] of Object.entries(groups)) {
    console.log(`\n--- ${g} ---`);
    for (const f of list) {
      const p = bySlug.get(f.slug);
      if (!p) throw new Error(`FIGURES references a slug outside the population: ${f.slug}`);
      const modes = [['quote', locate(p, f.quote)]];
      if (f.quote2) modes.push(['quote2', locate(p, f.quote2)]);
      for (const [, m] of modes) {
        byMode[m] = (byMode[m] || 0) + 1;
        if (!['exact', 'whitespace-folded', 'punctuation-folded'].includes(m)) bad++;
      }
      console.log(`  ${f.what}`);
      console.log(`      value       : ${f.value}`);
      console.log(`      DENOMINATOR : ${f.pop}`);
      console.log(`      source      : ${key(p)}`);
      console.log(`      quote [${modes[0][1]}]: "${f.quote}"`);
      if (f.quote2) console.log(`      quote2 [${modes[1][1]}]: "${f.quote2}"`);
      if (f.spliced) console.log(`      SPLICE      : ${f.spliced} -- the page states this figure without presenting it as one continuous quotation`);
    }
  }
  console.log(`\n  ${FIGURES.length} figures, ${FIGURES.length + FIGURES.filter((f) => f.quote2).length} quote fragments. Location modes: ${JSON.stringify(byMode)}`);
  if (bad) console.log(`  *** ${bad} QUOTE(S) COULD NOT BE LOCATED -- do not publish these ***`);
  else console.log('  All figure quotes located in paper.cols.txt.');
}
 
H('F. WHAT THE 31 PAPERS REPORT ABOUT THEMSELVES (extraction enums, not hand maps)');
{
  const stated = (v) => v !== null && v !== undefined && !['not-stated', 'none-mentioned', 'not-applicable', 'unclear', 'unknown'].includes(v);
  const tally = (label, f) => {
    const c = new Map();
    for (const p of PAPERS) { const v = String(f(p)); c.set(v, (c.get(v) || 0) + 1); }
    console.log(`\n  ${label} (denominator ${PAPERS.length}):`);
    for (const [v, n] of [...c.entries()].sort((a, b) => b[1] - a[1])) console.log(`      ${String(n).padStart(2)}  ${v}`);
  };
  tally('ethics.reviewOutcome', (p) => p.ethics.reviewOutcome);
  {
    // The page used to say this population's ethics reporting is "worse than the
    // corpus-wide picture". It is not. Computed here so the comparison is the
    // script's rather than an impression.
    const withEthics = ALL.filter((p) => p.ethics !== null && p.ethics !== undefined);
    const corpusNone = withEthics.filter((p) => p.ethics.reviewOutcome === 'none-mentioned').length;
    const corpusApproved = withEthics.filter((p) => p.ethics.reviewOutcome === 'approved').length;
    const pageNone = PAPERS.filter((p) => p.ethics.reviewOutcome === 'none-mentioned').length;
    const pageApproved = PAPERS.filter((p) => p.ethics.reviewOutcome === 'approved').length;
    console.log(`\n    CORPUS COMPARISON (denominator: the ${withEthics.length} papers with an ethics object):`);
    console.log(`      none-mentioned: corpus ${corpusNone} (${((corpusNone / withEthics.length) * 100).toFixed(1)}%)  vs  this page ${pageNone}/${PAPERS.length} (${((pageNone / PAPERS.length) * 100).toFixed(1)}%)`);
    console.log(`      approved      : corpus ${corpusApproved} (${((corpusApproved / withEthics.length) * 100).toFixed(1)}%)  vs  this page ${pageApproved}/${PAPERS.length} (${((pageApproved / PAPERS.length) * 100).toFixed(1)}%)`);
    console.log(`      n=31 is small: do not read a few points either way as a difference.`);
  }
  tally('ethics.notifiedAffectedParties', (p) => p.ethics.notifiedAffectedParties);
  tally('artifacts.availability', (p) => p.artifacts.availability);
  console.log(`\n  papers whose artifacts.codeUrl is set: ${PAPERS.filter((p) => p.artifacts.codeUrl).length} of ${PAPERS.length}`);
  for (const p of PAPERS) if (p.artifacts.codeUrl) console.log(`      ${key(p)}\n          ${p.artifacts.codeUrl}`);
  console.log(`\n  statistics[].kind, papers (denominator ${PAPERS.length}, multi-valued):`);
  {
    const c = new Map();
    for (const p of PAPERS) for (const s of new Set(p.statistics.map((x) => x.kind))) c.set(s, (c.get(s) || 0) + 1);
    for (const [v, n] of [...c.entries()].sort((a, b) => b[1] - a[1])) console.log(`      ${String(n).padStart(2)}  ${v}`);
    console.log(`      ${String(PAPERS.filter((p) => p.statistics.length === 0).length).padStart(2)}  (no statistics tuple at all)`);
  }
  console.log(`\n  humanAnnotation: ${PAPERS.filter((p) => p.humanAnnotation.length > 0).length} of ${PAPERS.length} papers coded something by hand;`);
  console.log(`      of those, ${PAPERS.filter((p) => p.humanAnnotation.some((h) => stated(h.agreementMetric))).length} report an inter-rater agreement metric.`);
  console.log(`\n  participants: ${PAPERS.filter((p) => p.participants.length > 0).length} of ${PAPERS.length} recruited people.`);
  for (const p of PAPERS) for (const a of p.participants)
    console.log(`      ${key(p)}  n=${a.n} kind=${a.studyKind} recruitment=${a.recruitment}`);
}
 
H('G. FULL-TEXT PROBES: mechanisms the corpus does NOT measure');
{
  const PROBES = {
    BIMI: /\bBIMI\b|Brand Indicators for Message/g,
    'TLS-RPT': /TLS-RPT|TLSRPT|\bsmtp-tls-report/gi,
    REQUIRETLS: /REQUIRETLS/g,
    'DANE (any)': /\bTLSA\b|\bDANE\b/g,
    'MTA-STS': /MTA-STS/g,
    ARC: /Authenticated Received Chain|\bARC (chain|set|seal|header)/g,
  };
  let nofile = 0;
  const hits = {};
  for (const k of Object.keys(PROBES)) hits[k] = [];
  for (const p of ALL) {
    const t = colsText(p);
    if (t === null) { nofile++; continue; }
    const flat = t.replace(/\s+/g, ' ');
    for (const [k, re] of Object.entries(PROBES)) { re.lastIndex = 0; const m = flat.match(re); if (m) hits[k].push({ k: key(p), n: m.length, infra: INFRA_SLUGS.has(p.slug) }); }
  }
  console.log(`probe population: all ${ALL.length} extracted papers; ${nofile} have no paper.cols.txt and count as negative.\n`);
  for (const [k, list] of Object.entries(hits)) {
    const inf = list.filter((x) => x.infra).length;
    console.log(`  ${k.padEnd(12)} mentioned in ${String(list.length).padStart(4)} papers corpus-wide; ${inf} of them in this page's 31`);
  }
  {
    // The page claimed "every paper in this population cites the Informational
    // RFC 7489". The generic reviewer falsified it by grepping. Computed here so
    // the corrected sentence is the script's.
    let cites = 0; const noRfc = [];
    for (const p of PAPERS) {
      const t = colsText(p);
      if (t === null) { noRfc.push([key(p), 'NO .cols FILE']); continue; }
      if (t.includes('7489')) cites++;
      else noRfc.push([key(p), t.includes('DMARC') ? 'names DMARC, not the RFC' : 'never mentions DMARC']);
    }
    console.log(`\n  RFC 7489 (the Informational DMARC RFC that RFC 9989 obsoleted in May 2026):`);
    console.log(`    cited by ${cites} of the ${PAPERS.length}; the other ${noRfc.length} do not --`);
    for (const [k, why] of noRfc) console.log(`      ${why.padEnd(26)} ${k}`);
  }
  console.log('\n  BIMI, in full -- every corpus paper that names it:');
  for (const x of hits.BIMI.sort((a, b) => b.n - a.n)) console.log(`      ${String(x.n).padStart(2)}x  ${x.infra ? '[in the 31]' : '           '}  ${x.k}`);
  console.log('\n  A mention is not a measurement. Hand-read 2026-09-09: all five BIMI mentions are');
  console.log('  related-work or background sentences ("BIMI is built on DMARC and has not ...").');
  console.log('  No paper in these seven venues measures BIMI deployment. REQUIRETLS: 0 mentions.');
}
 
H('H. RECALL: is the 31 missing anything?');
{
  const PATS = {
    spf: /\bSPF\b|Sender Policy Framework/g, dkim: /\bDKIM\b|DomainKeys/g, dmarc: /\bDMARC\b/g,
    starttls: /STARTTLS|\bSTART ?TLS\b/g, dane: /\bTLSA\b|\bDANE\b/g, mtasts: /MTA-STS|TLS-RPT|TLSRPT/g,
    smime: /S\/MIME|SMIMEA|OPENPGPKEY/g, smtp: /\bSMTP\b|\bMTA\b|\bMX record/g,
    bimi: /\bBIMI\b|Brand Indicators/g, arc: /Authenticated Received Chain|\bARC (chain|set|seal)/g,
  };
  const mapped = new Set(Object.keys(MSG_MAP));
  const run = (name, admit) => {
    const out = [];
    for (const p of ALL) {
      const t = colsText(p); if (t === null) continue;
      const flat = t.replace(/\s+/g, ' ');
      const c = {}; for (const [k, re] of Object.entries(PATS)) { re.lastIndex = 0; const m = flat.match(re); c[k] = m ? m.length : 0; }
      const mech = c.spf + c.dkim + c.dmarc + c.dane + c.mtasts + c.bimi + c.arc;
      const tls = c.starttls + c.smime;
      if (admit(mech, tls, c.smtp)) out.push({ k: key(p), slug: p.slug, title: p.title, mech, tls, smtp: c.smtp, c });
    }
    const infra = out.filter((o) => INFRA_SLUGS.has(o.slug)).length;
    const other = out.filter((o) => mapped.has(o.slug) && !INFRA_SLUGS.has(o.slug));
    const un = out.filter((o) => !mapped.has(o.slug));
    console.log(`\n  ${name}: ${out.length} papers hit | ${infra}/31 of the population | ${other.length} already mapped to another verdict | ${un.length} unmapped`);
    return { out, other, un };
  };
  const tight = run('TIGHT  (mech>=10 or tls>=10 or (smtp>=30 and mech>=3))', (m, t, s) => m >= 10 || t >= 10 || (s >= 30 && m >= 3));
  const wide = run('WIDE   (mech>=4  or tls>=4  or (smtp>=15 and mech>=2))', (m, t, s) => m >= 4 || t >= 4 || (s >= 15 && m >= 2));
  const missed = [...INFRA_SLUGS].filter((s) => !tight.out.some((o) => o.slug === s));
  console.log(`\n  Population papers the TIGHT probe misses: ${missed.length} -- ${JSON.stringify(missed)}`);
  console.log(`  (The probe is a recall check on the hand map, not the population rule. It cannot`);
  console.log(`   find email-typosquatting, whose subject is misdirected mail and which names no`);
  console.log(`   mechanism; the hand map can. That is the argument for the hand map.)`);
  console.log('\n  Every UNMAPPED paper the WIDE probe admits, read by hand 2026-09-09:');
  for (const o of wide.un.sort((a, b) => (b.mech + b.tls) - (a.mech + a.tls)))
    console.log(`      ${String(o.mech).padStart(3)}m ${String(o.tls).padStart(3)}t  ${o.k}\n            ${o.title}`);
  console.log('\n  VERDICT: none of them measures deployed email authentication or transport security.');
  console.log('  They are DNS, PKI and TLS papers that name SPF or STARTTLS in passing (DANE for');
  console.log('  HTTPS/CDN, DNSSEC registrar studies, ALPACA, DROWN, a DNS toolkit paper).');
  console.log('  Widening the probe from TIGHT to WIDE added 0 papers to the population.');
  console.log('\n  Papers the probe hits that msg_fold gave a DIFFERENT verdict (boundary cases):');
  for (const o of wide.other.sort((a, b) => (b.mech + b.tls) - (a.mech + a.tls)))
    console.log(`      ${String(o.mech).padStart(3)}m ${String(o.tls).padStart(3)}t  [${MSG_MAP[o.slug][0]}]  ${o.k}`);
}
 
H('I. TOOLS NAMED AS USED (paper-counted, folded, residue printed)');
{
  const FOLD = [
    [/^postfix$/i, 'Postfix'], [/^exim$/i, 'Exim'], [/^sendmail$/i, 'Sendmail'], [/^qmail$/i, 'qmail'],
    [/^dovecot$/i, 'Dovecot'], [/microsoft exchange/i, 'Microsoft Exchange'],
    [/^z?map$/i, 'ZMap'], [/^zgrab/i, 'ZGrab2'], [/^xmap$/i, 'XMap'], [/^censys$/i, 'Censys'],
    [/^unbound$/i, 'Unbound'], [/^bind9?$/i, 'BIND'], [/openintel/i, 'OpenINTEL'],
    [/farsight|\bsie\b/i, 'Farsight SIE passive DNS'], [/^checkdmarc$/i, 'checkdmarc'],
    [/libspf2|pyspf|mail::spf|policyd-spf|spfmilter|python-postfix-policyd-spf/i, 'an SPF validator library'],
    [/^opendkim$|^opendmarc$|^openarc$/i, 'OpenDKIM / OpenDMARC / OpenARC'],
    [/openssl|pyopenssl/i, 'OpenSSL / pyOpenSSL'], [/gnupg|^gpg$|gpgme|enigmail|gpg suite|openkeychain|openpgp\.js/i, 'a PGP implementation'],
    [/^pkilint$/i, 'pkilint'], [/badkeys|fastgcd|factordb|pwnedkeys|hashcat/i, 'a weak-key checker'],
    [/^dnstwist$/i, 'dnstwist'], [/spamassassin|spamhaus|spamcop|rspamd|milter-greylist/i, 'a spam/blocklist service or filter'],
  ];
  const c = new Map(); const residue = new Map();
  for (const p of PAPERS) {
    const seen = new Set();
    for (const t of p.tools) {
      if (t.usedOrMentioned !== 'used') continue;
      const hit = FOLD.find(([re]) => re.test(t.name));
      if (hit) seen.add(hit[1]);
      else { if (!residue.has(t.name)) residue.set(t.name, new Set()); residue.get(t.name).add(key(p)); }
    }
    for (const f of seen) { if (!c.has(f)) c.set(f, new Set()); c.get(f).add(key(p)); }
  }
  console.log(`denominator: ${PAPERS.filter((p) => p.tools.some((t) => t.usedOrMentioned === 'used')).length} of ${PAPERS.length} papers name at least one tool as used.\n`);
  for (const [f, s] of [...c.entries()].sort((a, b) => b[1].size - a[1].size)) console.log(`  ${String(s.size).padStart(2)}  ${f}`);
  console.log(`\n  UNMAPPED RESIDUE: ${residue.size} distinct strings across ${new Set([...residue.values()].flatMap((s) => [...s])).size} papers.`);
  console.log('  Printed in full because a page that folds must show what it could not fold:');
  const cols = [...residue.keys()].sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));
  for (let i = 0; i < cols.length; i += 3) console.log('      ' + cols.slice(i, i + 3).map((x) => x.padEnd(34)).join(''));
}
 
H('J. QUOTE SPOT-CHECK OF THE EXTRACTION ITSELF');
{
  // Every detection[].evidence.quote in the 31, located in paper.cols.txt.
  let n = 0; const modes = {}; const bad = [];
  for (const p of PAPERS) for (const d of p.detection) {
    n++; const m = locate(p, d.evidence.quote); modes[m] = (modes[m] || 0) + 1;
    if (!['exact','whitespace-folded','punctuation-folded'].includes(m)) bad.push(`${key(p)} [${d.evidence.section}] "${d.evidence.quote}"`);
  }
  console.log(`${n} detection[].evidence.quote values across the ${PAPERS.length} papers.`);
  console.log(`location modes: ${JSON.stringify(modes)}`);
  console.log(`unlocatable: ${bad.length} (${((bad.length / n) * 100).toFixed(1)}%) --`);
  for (const b of bad) console.log(`    ${b}`);
}
 
H('K. DONE');
console.log(`figures published: ${FIGURES.length}`);
console.log(`population       : ${PAPERS.length} papers`);
console.log(`generated        : run this file, do not retype its numbers`);

Unedited output of the above, run 2026-09-09 against data/extract/run1 (5,859 papers):

report_email_authentication-output.txt
==============================================================================
A. POPULATION
==============================================================================
corpus            : 5859 extracted papers, 7 venues, 2010-2026
page population   : 31 papers, verdict INFRA in scripts/msg_fold.mjs
  denominator note: this is 0.53% of 5859. It is NOT a share of anything
                    meaningful; it is a hand-mapped topical slice of a 354-paper
                    candidate pool published with privacy:email_tracking.
 
by year  : 2015:2  2017:1  2018:2  2019:1  2020:2  2021:2  2022:5  2023:5  2024:4  2025:6  2026:1
by venue : USENIX:16  IMC:7  NDSS:4  CCS:1  IEEE-SP:1  WWW:1  PETS:1
 
2018-2026: 28 of 31; 2022-2026: 21 of 31
 
The list, oldest first:
  CCS/2015/security-by-any-other-name-on-the-effectiveness-of-provider-based-email-security
      provider-side mail security
  IMC/2015/neither-snow-nor-rain-nor-mitm-an-empirical-analysis-of-email-delivery-security
      STARTTLS / SPF / DKIM / DMARC deployment
  IMC/2017/email-typosquatting
      doppelganger mail domains catching misdirected mail
  USENIX/2018/efail-breaking-s-mime-and-openpgp-email-encryption-using-exfiltration-channels
      S/MIME and OpenPGP exfiltration channels
  USENIX/2018/end-to-end-measurements-of-email-spoofing-attacks
      spoofing reaching the inbox and what the UI shows
  USENIX/2019/johnny-you-are-fired-spoofing-openpgp-and-s-mime-signatures-in-emails
      signature spoofing in mail clients
  USENIX/2020/a-longitudinal-and-comprehensive-study-of-the-dane-ecosystem-in-email
      DANE for SMTP
  USENIX/2020/composition-kills-a-case-study-of-email-sender-authentication
      sender-authentication composition flaws
  USENIX/2021/weak-links-in-authentication-chains-a-large-scale-analysis-of-email-sender-spoof
      sender spoofing across 30 providers
  USENIX/2021/why-tls-is-better-without-starttls-a-security-analysis-of-starttls-in-the-email
      STARTTLS
  IEEE-SP/2022/27-years-and-81-million-opportunities-later-investigating-the-use-of-email-encry
      27 years of mail encryption at one university
  IMC/2022/spfail-discovering-measuring-and-remediating-vulnerabilities-in-email-sender-val
      SPF implementation vulnerabilities
  USENIX/2022/a-large-scale-and-longitudinal-measurement-study-of-dkim-deployment
      DKIM deployment
  USENIX/2022/under-the-hood-of-dane-mismanagement-in-smtp
      DANE mismanagement
  WWW/2022/revisiting-email-forwarding-security-under-the-authenticated-received-chain-prot
      ARC and forwarding
  IMC/2023/lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild
      SPF configuration
  PETS/2023/heads-in-the-clouds-measuring-universities-migration-to-public-clouds-implicatio
      MX-record concentration as the measurement
  USENIX/2023/youve-got-report-measurement-and-security-implications-of-dmarc-reporting
      DMARC aggregate reporting
  USENIX/2023/content-type-multipart-oracle-tapping-into-format-oracles-in-email-end-to-end-en
      format oracles in mail end-to-end encryption
  USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i
      confidentiality and integrity mechanisms in the wild
  IMC/2024/bounce-in-the-wild-a-deep-dive-into-email-delivery-failures-from-a-large-email-s
      delivery failures at a large ESP
  NDSS/2024/breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet
      SPF at shared infrastructure
  USENIX/2024/fakebehalf-imperceptible-email-spoofing-attacks-against-the-delegation-mechanism
      spoofing via the on-behalf-of delegation
  USENIX/2024/spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr
      SPF operations
  IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema
      MTA-STS deployment
  IMC/2025/understanding-and-characterizing-intermediate-paths-of-email-delivery-the-hidden
      the hops between sender and recipient
  NDSS/2025/a-multifaceted-study-on-the-use-of-tls-and-auto-detect-in-email-ecosystems
      TLS and autoconfiguration in mail clients
  NDSS/2025/automatic-insecurity-exploring-email-auto-configuration-in-the-wild
      mail autoconfiguration
  USENIX/2025/email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify
      SMTP smuggling
  USENIX/2025/s-mine-collecting-and-analyzing-s-mime-certificates-at-scale
      S/MIME certificates at scale
  NDSS/2026/coordmail-exploiting-smtp-timeout-and-command-interaction-to-coordinate-email-middleware-for-convergence-amplification-attack
      SMTP middleware amplification
 
==============================================================================
A2. THE 31, AS THE PAGE PRINTS THEM (DokuWiki table, generated -- do not retype)
==============================================================================
^ Year ^ Venue ^ Paper ^ What it measures ^
| 2015 | CCS | {[foster2015_security]} | provider-side mail security |
| 2015 | IMC | {[durumeric2015_neither]} | STARTTLS / SPF / DKIM / DMARC deployment |
| 2017 | IMC | {[szurdi2017_email]} | doppelganger mail domains catching misdirected mail |
| 2018 | USENIX Sec | {[poddebniak2018_efail]} | S/MIME and OpenPGP exfiltration channels |
| 2018 | USENIX Sec | {[hu2018_measurements]} | spoofing reaching the inbox and what the UI shows |
| 2019 | USENIX Sec | {[mueller2019_johnny]} | signature spoofing in mail clients |
| 2020 | USENIX Sec | {[lee2020_longitudinal]} | DANE for SMTP |
| 2020 | USENIX Sec | {[chen2020_composition]} | sender-authentication composition flaws |
| 2021 | USENIX Sec | {[shen2021_weak]} | sender spoofing across 30 providers |
| 2021 | USENIX Sec | {[poddebniak2021_better]} | STARTTLS |
| 2022 | IEEE S&P | {[stransky2022_years]} | 27 years of mail encryption at one university |
| 2022 | IMC | {[bennett2022_spfail]} | SPF implementation vulnerabilities |
| 2022 | USENIX Sec | {[wang2022_longitudinal]} | DKIM deployment |
| 2022 | USENIX Sec | {[lee2022_under]} | DANE mismanagement |
| 2022 | TheWebConf | {[wang2022_revisiting]} | ARC and forwarding |
| 2023 | IMC | {[czybik2023_lazy]} | SPF configuration |
| 2023 | PETS | {[fiebig2023_heads]} | MX-record concentration as the measurement |
| 2023 | USENIX Sec | {[ashiq2023_report]} | DMARC aggregate reporting |
| 2023 | USENIX Sec | {[ising2023_content]} | format oracles in mail end-to-end encryption |
| 2023 | USENIX Sec | {[blechschmidt2023_hello]} | confidentiality and integrity mechanisms in the wild |
| 2024 | IMC | {[li2024_bounce]} | delivery failures at a large ESP |
| 2024 | NDSS | {[wang2024_breakspf]} | SPF at shared infrastructure |
| 2024 | USENIX Sec | {[ma2024_fakebehalf]} | spoofing via the on-behalf-of delegation |
| 2024 | USENIX Sec | {[ashiq2024_beyond]} | SPF operations |
| 2025 | IMC | {[ashiq2025_unraveling]} | MTA-STS deployment |
| 2025 | IMC | {[li2025_characterizing]} | the hops between sender and recipient |
| 2025 | NDSS | {[tang2025_multifaceted]} | TLS and autoconfiguration in mail clients |
| 2025 | NDSS | {[wen2025_automatic]} | mail autoconfiguration |
| 2025 | USENIX Sec | {[wang2025_email]} | SMTP smuggling |
| 2025 | USENIX Sec | {[oendaroe2025_mine]} | S/MIME certificates at scale |
| 2026 | NDSS | {[li2026_coordmail]} | SMTP middleware amplification |
 
31 distinct citekeys for 31 papers.
 
==============================================================================
A3. WHO WROTE THEM. Author concentration across the 31.
==============================================================================
denominator: 31 of 31 papers have an author list.
 
First authors with more than one paper here: 5, covering 13 of 31 papers
   3  Chuhan Wang
   3  Md. Ishtiaq Ashiq
   3  Ruixuan Li
   2  Damian Poddebniak
   2  Hyeonmin Lee
 
Authors on four or more of the 31:
   7  Haixin Duan
   6  Qingfeng Pan
   5  Sebastian Schinzel
   5  Taejoong Chung
   5  Jianjun Chen
   5  Baojun Liu
   5  Yanzhong Lin
   4  Damian Poddebniak
   4  Fabian Ising
   4  Chuhan Wang
   4  Md. Ishtiaq Ashiq
   4  Tobias Fiebig
 
distinct authors across the 31: 111
 
==============================================================================
B. MECHANISM MEASURED (hand map, paper-counted, multi-valued)
==============================================================================
denominator: 31 papers. Multi-valued, so shares do not sum to 100%.
 
  16   51.6%  SPF
  12   38.7%  DKIM
  12   38.7%  DMARC
   9   29.0%  STARTTLS
   6   19.4%  delivery-path
   6   19.4%  S/MIME+OpenPGP
   4   12.9%  DANE
   3    9.7%  DNSSEC
   2    6.5%  MTA-STS
   2    6.5%  autoconfig
   1    3.2%  ARC
 
  MECHANISMS NO PAPER MEASURES THE DEPLOYMENT OF (full-text probe, section G):
    BIMI       -- named in 5 corpus papers, all 5 in this population, all 5 related-work sentences
    TLS-RPT    -- named in 3, all 3 in this population. NOT untouched: youve-got-report
                  Table 4 measures provider support (2 of 8 EHPs) and its survey asks
                  operators whether they send reports. What nobody has done is scan a
                  DOMAIN POPULATION for _smtp._tls records, the way four papers scan SPF.
    REQUIRETLS -- named in 0 papers corpus-wide
 
  papers per mechanism:
   SPF:
      CCS/2015/security-by-any-other-name-on-the-effectiveness-of-provider-based-email-security
      IMC/2015/neither-snow-nor-rain-nor-mitm-an-empirical-analysis-of-email-delivery-security
      USENIX/2018/end-to-end-measurements-of-email-spoofing-attacks
      USENIX/2020/composition-kills-a-case-study-of-email-sender-authentication
      USENIX/2021/weak-links-in-authentication-chains-a-large-scale-analysis-of-email-sender-spoof
      IMC/2022/spfail-discovering-measuring-and-remediating-vulnerabilities-in-email-sender-val
      WWW/2022/revisiting-email-forwarding-security-under-the-authenticated-received-chain-prot
      IMC/2023/lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild
      USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i
      IMC/2024/bounce-in-the-wild-a-deep-dive-into-email-delivery-failures-from-a-large-email-s
      NDSS/2024/breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet
      USENIX/2024/fakebehalf-imperceptible-email-spoofing-attacks-against-the-delegation-mechanism
      USENIX/2024/spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr
      IMC/2025/understanding-and-characterizing-intermediate-paths-of-email-delivery-the-hidden
      USENIX/2025/email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify
      NDSS/2026/coordmail-exploiting-smtp-timeout-and-command-interaction-to-coordinate-email-middleware-for-convergence-amplification-attack
   DKIM:
      CCS/2015/security-by-any-other-name-on-the-effectiveness-of-provider-based-email-security
      IMC/2015/neither-snow-nor-rain-nor-mitm-an-empirical-analysis-of-email-delivery-security
      USENIX/2018/end-to-end-measurements-of-email-spoofing-attacks
      USENIX/2020/composition-kills-a-case-study-of-email-sender-authentication
      USENIX/2021/weak-links-in-authentication-chains-a-large-scale-analysis-of-email-sender-spoof
      USENIX/2022/a-large-scale-and-longitudinal-measurement-study-of-dkim-deployment
      WWW/2022/revisiting-email-forwarding-security-under-the-authenticated-received-chain-prot
      USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i
      IMC/2024/bounce-in-the-wild-a-deep-dive-into-email-delivery-failures-from-a-large-email-s
      USENIX/2024/fakebehalf-imperceptible-email-spoofing-attacks-against-the-delegation-mechanism
      USENIX/2025/email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify
      NDSS/2026/coordmail-exploiting-smtp-timeout-and-command-interaction-to-coordinate-email-middleware-for-convergence-amplification-attack
   DMARC:
      CCS/2015/security-by-any-other-name-on-the-effectiveness-of-provider-based-email-security
      IMC/2015/neither-snow-nor-rain-nor-mitm-an-empirical-analysis-of-email-delivery-security
      USENIX/2018/end-to-end-measurements-of-email-spoofing-attacks
      USENIX/2020/composition-kills-a-case-study-of-email-sender-authentication
      USENIX/2021/weak-links-in-authentication-chains-a-large-scale-analysis-of-email-sender-spoof
      WWW/2022/revisiting-email-forwarding-security-under-the-authenticated-received-chain-prot
      IMC/2023/lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild
      USENIX/2023/youve-got-report-measurement-and-security-implications-of-dmarc-reporting
      USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i
      IMC/2024/bounce-in-the-wild-a-deep-dive-into-email-delivery-failures-from-a-large-email-s
      NDSS/2024/breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet
      USENIX/2024/fakebehalf-imperceptible-email-spoofing-attacks-against-the-delegation-mechanism
   STARTTLS:
      CCS/2015/security-by-any-other-name-on-the-effectiveness-of-provider-based-email-security
      IMC/2015/neither-snow-nor-rain-nor-mitm-an-empirical-analysis-of-email-delivery-security
      USENIX/2020/a-longitudinal-and-comprehensive-study-of-the-dane-ecosystem-in-email
      USENIX/2021/why-tls-is-better-without-starttls-a-security-analysis-of-starttls-in-the-email
      USENIX/2022/under-the-hood-of-dane-mismanagement-in-smtp
      USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i
      IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema
      NDSS/2025/a-multifaceted-study-on-the-use-of-tls-and-auto-detect-in-email-ecosystems
      NDSS/2025/automatic-insecurity-exploring-email-auto-configuration-in-the-wild
   delivery-path:
      IMC/2017/email-typosquatting
      PETS/2023/heads-in-the-clouds-measuring-universities-migration-to-public-clouds-implicatio
      IMC/2024/bounce-in-the-wild-a-deep-dive-into-email-delivery-failures-from-a-large-email-s
      IMC/2025/understanding-and-characterizing-intermediate-paths-of-email-delivery-the-hidden
      USENIX/2025/email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify
      NDSS/2026/coordmail-exploiting-smtp-timeout-and-command-interaction-to-coordinate-email-middleware-for-convergence-amplification-attack
   S/MIME+OpenPGP:
      USENIX/2018/efail-breaking-s-mime-and-openpgp-email-encryption-using-exfiltration-channels
      USENIX/2019/johnny-you-are-fired-spoofing-openpgp-and-s-mime-signatures-in-emails
      IEEE-SP/2022/27-years-and-81-million-opportunities-later-investigating-the-use-of-email-encry
      USENIX/2023/content-type-multipart-oracle-tapping-into-format-oracles-in-email-end-to-end-en
      USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i
      USENIX/2025/s-mine-collecting-and-analyzing-s-mime-certificates-at-scale
   DANE:
      USENIX/2020/a-longitudinal-and-comprehensive-study-of-the-dane-ecosystem-in-email
      USENIX/2022/under-the-hood-of-dane-mismanagement-in-smtp
      USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i
      NDSS/2025/a-multifaceted-study-on-the-use-of-tls-and-auto-detect-in-email-ecosystems
   DNSSEC:
      CCS/2015/security-by-any-other-name-on-the-effectiveness-of-provider-based-email-security
      USENIX/2020/a-longitudinal-and-comprehensive-study-of-the-dane-ecosystem-in-email
      USENIX/2022/under-the-hood-of-dane-mismanagement-in-smtp
   MTA-STS:
      USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i
      IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema
   autoconfig:
      NDSS/2025/a-multifaceted-study-on-the-use-of-tls-and-auto-detect-in-email-ecosystems
      NDSS/2025/automatic-insecurity-exploring-email-auto-configuration-in-the-wild
   ARC:
      WWW/2022/revisiting-email-forwarding-security-under-the-authenticated-received-chain-prot
 
==============================================================================
C. INSTRUMENT (hand map, paper-counted, multi-valued)
==============================================================================
denominator: 31 papers. Multi-valued: MEAN 2.74, MEDIAN 3, range 1-5, distribution {"1":4,"2":7,"3":14,"4":5,"5":1} (instruments per paper).
 
  18   58.1%  dns-scan                 resolve DNS records (TXT/MX/TLSA/_mta-sts) over a domain list
  14   45.2%  account-delivery-test    register accounts at real providers, send crafted mail, observe the inbox
  13   41.9%  smtp-probe               open SMTP sessions against real MTAs and drive the protocol
  11   35.5%  client-matrix            test N mail clients (MUAs) by hand or semi-automatically
   7   22.6%  software-testbed         run MTA/library implementations in a controlled lab
   6   19.4%  provider-logs            analyse logs, headers or mailboxes from a real mail operator
   5   16.1%  operator-survey          survey mail administrators
   3    9.7%  code-analysis            read the implementation source
   3    9.7%  notification-experiment  notify misconfigured operators, then rescan
   2    6.5%  user-study               recruit end users
   2    6.5%  passive-dns              query a passive-DNS archive instead of resolving live
   1    3.2%  honey-domain             register domains or addresses and receive live mail
 
  papers from 2023 onwards running an operator survey OR a software testbed: 8 of 16
      USENIX/2023/youve-got-report-measurement-and-security-implications-of-dmarc-reporting  [operator-survey]
      USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i  [operator-survey]
      NDSS/2024/breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet  [software-testbed]
      USENIX/2024/spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr  [operator-survey, software-testbed]
      IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema  [operator-survey]
      NDSS/2025/automatic-insecurity-exploring-email-auto-configuration-in-the-wild  [software-testbed]
      USENIX/2025/email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify  [software-testbed]
      NDSS/2026/coordmail-exploiting-smtp-timeout-and-command-interaction-to-coordinate-email-middleware-for-convergence-amplification-attack  [software-testbed]
 
  by period (does the instrument date?):
    instrument                2015-2019  2020-2022  2023-2026
    account-delivery-test           2/6        4/9       8/16
    client-matrix                   3/6        3/9       5/16
    code-analysis                   1/6        2/9       0/16
    dns-scan                        4/6        3/9      11/16
    honey-domain                    1/6        0/9       0/16
    notification-experiment         0/6        1/9       2/16
    operator-survey                 0/6        1/9       4/16
    passive-dns                     0/6        1/9       1/16
    provider-logs                   1/6        3/9       2/16
    smtp-probe                      2/6        4/9       7/16
    software-testbed                0/6        2/9       5/16
    user-study                      1/6        0/9       1/16
 
  papers per instrument:
   dns-scan:
      CCS/2015/security-by-any-other-name-on-the-effectiveness-of-provider-based-email-security
      IMC/2015/neither-snow-nor-rain-nor-mitm-an-empirical-analysis-of-email-delivery-security
      IMC/2017/email-typosquatting
      USENIX/2018/end-to-end-measurements-of-email-spoofing-attacks
      USENIX/2020/a-longitudinal-and-comprehensive-study-of-the-dane-ecosystem-in-email
      USENIX/2022/a-large-scale-and-longitudinal-measurement-study-of-dkim-deployment
      USENIX/2022/under-the-hood-of-dane-mismanagement-in-smtp
      IMC/2023/lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild
      PETS/2023/heads-in-the-clouds-measuring-universities-migration-to-public-clouds-implicatio
      USENIX/2023/youve-got-report-measurement-and-security-implications-of-dmarc-reporting
      USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i
      IMC/2024/bounce-in-the-wild-a-deep-dive-into-email-delivery-failures-from-a-large-email-s
      NDSS/2024/breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet
      USENIX/2024/spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr
      IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema
      IMC/2025/understanding-and-characterizing-intermediate-paths-of-email-delivery-the-hidden
      NDSS/2025/a-multifaceted-study-on-the-use-of-tls-and-auto-detect-in-email-ecosystems
      NDSS/2025/automatic-insecurity-exploring-email-auto-configuration-in-the-wild
   account-delivery-test:
      CCS/2015/security-by-any-other-name-on-the-effectiveness-of-provider-based-email-security
      USENIX/2018/end-to-end-measurements-of-email-spoofing-attacks
      USENIX/2020/a-longitudinal-and-comprehensive-study-of-the-dane-ecosystem-in-email
      USENIX/2020/composition-kills-a-case-study-of-email-sender-authentication
      USENIX/2021/weak-links-in-authentication-chains-a-large-scale-analysis-of-email-sender-spoof
      WWW/2022/revisiting-email-forwarding-security-under-the-authenticated-received-chain-prot
      IMC/2023/lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild
      USENIX/2023/youve-got-report-measurement-and-security-implications-of-dmarc-reporting
      USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i
      NDSS/2024/breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet
      USENIX/2024/fakebehalf-imperceptible-email-spoofing-attacks-against-the-delegation-mechanism
      IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema
      USENIX/2025/email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify
      NDSS/2026/coordmail-exploiting-smtp-timeout-and-command-interaction-to-coordinate-email-middleware-for-convergence-amplification-attack
   smtp-probe:
      CCS/2015/security-by-any-other-name-on-the-effectiveness-of-provider-based-email-security
      IMC/2015/neither-snow-nor-rain-nor-mitm-an-empirical-analysis-of-email-delivery-security
      USENIX/2020/a-longitudinal-and-comprehensive-study-of-the-dane-ecosystem-in-email
      USENIX/2021/why-tls-is-better-without-starttls-a-security-analysis-of-starttls-in-the-email
      IMC/2022/spfail-discovering-measuring-and-remediating-vulnerabilities-in-email-sender-val
      USENIX/2022/under-the-hood-of-dane-mismanagement-in-smtp
      USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i
      USENIX/2024/spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr
      IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema
      NDSS/2025/a-multifaceted-study-on-the-use-of-tls-and-auto-detect-in-email-ecosystems
      USENIX/2025/email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify
      USENIX/2025/s-mine-collecting-and-analyzing-s-mime-certificates-at-scale
      NDSS/2026/coordmail-exploiting-smtp-timeout-and-command-interaction-to-coordinate-email-middleware-for-convergence-amplification-attack
   client-matrix:
      USENIX/2018/efail-breaking-s-mime-and-openpgp-email-encryption-using-exfiltration-channels
      USENIX/2018/end-to-end-measurements-of-email-spoofing-attacks
      USENIX/2019/johnny-you-are-fired-spoofing-openpgp-and-s-mime-signatures-in-emails
      USENIX/2020/composition-kills-a-case-study-of-email-sender-authentication
      USENIX/2021/weak-links-in-authentication-chains-a-large-scale-analysis-of-email-sender-spoof
      USENIX/2021/why-tls-is-better-without-starttls-a-security-analysis-of-starttls-in-the-email
      USENIX/2023/content-type-multipart-oracle-tapping-into-format-oracles-in-email-end-to-end-en
      USENIX/2024/fakebehalf-imperceptible-email-spoofing-attacks-against-the-delegation-mechanism
      NDSS/2025/a-multifaceted-study-on-the-use-of-tls-and-auto-detect-in-email-ecosystems
      NDSS/2025/automatic-insecurity-exploring-email-auto-configuration-in-the-wild
      USENIX/2025/s-mine-collecting-and-analyzing-s-mime-certificates-at-scale
   software-testbed:
      USENIX/2020/a-longitudinal-and-comprehensive-study-of-the-dane-ecosystem-in-email
      USENIX/2021/why-tls-is-better-without-starttls-a-security-analysis-of-starttls-in-the-email
      NDSS/2024/breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet
      USENIX/2024/spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr
      NDSS/2025/automatic-insecurity-exploring-email-auto-configuration-in-the-wild
      USENIX/2025/email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify
      NDSS/2026/coordmail-exploiting-smtp-timeout-and-command-interaction-to-coordinate-email-middleware-for-convergence-amplification-attack
   provider-logs:
      IMC/2015/neither-snow-nor-rain-nor-mitm-an-empirical-analysis-of-email-delivery-security
      IEEE-SP/2022/27-years-and-81-million-opportunities-later-investigating-the-use-of-email-encry
      USENIX/2022/a-large-scale-and-longitudinal-measurement-study-of-dkim-deployment
      WWW/2022/revisiting-email-forwarding-security-under-the-authenticated-received-chain-prot
      IMC/2024/bounce-in-the-wild-a-deep-dive-into-email-delivery-failures-from-a-large-email-s
      IMC/2025/understanding-and-characterizing-intermediate-paths-of-email-delivery-the-hidden
   operator-survey:
      USENIX/2022/under-the-hood-of-dane-mismanagement-in-smtp
      USENIX/2023/youve-got-report-measurement-and-security-implications-of-dmarc-reporting
      USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i
      USENIX/2024/spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr
      IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema
   code-analysis:
      USENIX/2019/johnny-you-are-fired-spoofing-openpgp-and-s-mime-signatures-in-emails
      IMC/2022/spfail-discovering-measuring-and-remediating-vulnerabilities-in-email-sender-val
      WWW/2022/revisiting-email-forwarding-security-under-the-authenticated-received-chain-prot
   notification-experiment:
      IMC/2022/spfail-discovering-measuring-and-remediating-vulnerabilities-in-email-sender-val
      IMC/2023/lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild
      USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i
   user-study:
      USENIX/2018/end-to-end-measurements-of-email-spoofing-attacks
      USENIX/2024/fakebehalf-imperceptible-email-spoofing-attacks-against-the-delegation-mechanism
   passive-dns:
      USENIX/2022/a-large-scale-and-longitudinal-measurement-study-of-dkim-deployment
      USENIX/2023/youve-got-report-measurement-and-security-implications-of-dmarc-reporting
   honey-domain:
      IMC/2017/email-typosquatting
 
==============================================================================
D. SAMPLING FRAME (population[].sourceList, folded, paper-counted)
==============================================================================
denominator: 31 of 31 papers record at least one population[].sourceList.
 
  13  hand-built list
   9  Tranco
   7  Alexa (retired Nov 2022)
   5  Adobe 2013 breach address list
   5  operator logs
   3  passive DNS / OpenINTEL
   3  university lists
   3  TLD zone files
   2  Enron corpus
   2  another top list (Majestic / Umbrella / DomCop)
   1  IPv4 address space
 
  Which frame, by paper (only papers naming a domain-list frame):
      2015 CCS      Alexa                    security-by-any-other-name-on-the-effectiveness-
      2015 IMC      Alexa                    neither-snow-nor-rain-nor-mitm-an-empirical-anal
      2017 IMC      Alexa                    email-typosquatting
      2018 USENIX   Alexa                    end-to-end-measurements-of-email-spoofing-attack
      2021 USENIX         Tranco             why-tls-is-better-without-starttls-a-security-an
      2022 IMC      Alexa                    spfail-discovering-measuring-and-remediating-vul
      2022 USENIX   Alexa                    a-large-scale-and-longitudinal-measurement-study
      2023 IMC            Tranco             lazy-gatekeepers-a-large-scale-study-on-spf-conf
      2023 USENIX   Alexa        zone-files  youve-got-report-measurement-and-security-implic
      2024 NDSS           Tranco             breakspf-how-shared-infrastructures-magnify-spf-
      2024 USENIX                zone-files  spf-beyond-the-standard-management-and-operation
      2025 IMC            Tranco zone-files  unraveling-the-complexities-of-mta-sts-deploymen
      2025 IMC            Tranco             understanding-and-characterizing-intermediate-pa
      2025 NDSS           Tranco             automatic-insecurity-exploring-email-auto-config
      2025 USENIX         Tranco             email-spoofing-with-smtp-smuggling-how-the-share
      2025 USENIX         Tranco             s-mine-collecting-and-analyzing-s-mime-certifica
      2026 NDSS           Tranco             coordmail-exploiting-smtp-timeout-and-command-in
 
      last Alexa use: 2023; first Tranco use: 2021; first zone-file use: 2023
      papers from 2024 onwards using Alexa: 0
 
  UNMAPPED RESIDUE: 43 distinct strings, printed in full --
      "48 universities"  (USENIX/2025/email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify)
      "BankDomain"  (NDSS/2025/automatic-insecurity-exploring-email-auto-configuration-in-the-wild)
      "DNS server survey"  (USENIX/2020/a-longitudinal-and-comprehensive-study-of-the-dane-ecosystem-in-email)
      "Facebook leak and name-dataset"  (USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i)
      "FreeDisposableProvider"  (NDSS/2025/automatic-insecurity-exploring-email-auto-configuration-in-the-wild)
      "Google Custom Search JSON API results"  (NDSS/2025/a-multifaceted-study-on-the-use-of-tls-and-auto-detect-in-email-ecosystems)
      "Google Play Store"  (USENIX/2021/why-tls-is-better-without-starttls-a-security-analysis-of-starttls-in-the-email)
      "GovDomain"  (NDSS/2025/automatic-insecurity-exploring-email-auto-configuration-in-the-wild)
      "Internet hosts with open TCP/25 ports"  (NDSS/2026/coordmail-exploiting-smtp-timeout-and-command-interaction-to-coordinate-email-middleware-for-convergence-amplification-attack)
      "PassiveDNS1 and QiAnXin PassiveDNS2"  (USENIX/2022/a-large-scale-and-longitudinal-measurement-study-of-dkim-deployment)
      "Top100Provider"  (NDSS/2025/automatic-insecurity-exploring-email-auto-configuration-in-the-wild)
      "Tor exit list"  (NDSS/2024/breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet)
      "VPNGate"  (NDSS/2024/breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet)
      "Wikipedia pages listing universities"  (PETS/2023/heads-in-the-clouds-measuring-universities-migration-to-public-clouds-implicatio)
      "aggregate dataset shared with us by email-security-scans.org"  (IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema)
      "based on [56]"  (USENIX/2025/email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify)
      "college students recruited for the study"  (USENIX/2024/fakebehalf-imperceptible-email-spoofing-attacks-against-the-delegation-mechanism)
      "custom mail-server setup guides"  (NDSS/2025/a-multifaceted-study-on-the-use-of-tls-and-auto-detect-in-email-ecosystems)
      "custom provider list"  (USENIX/2022/a-large-scale-and-longitudinal-measurement-study-of-dkim-deployment, WWW/2022/revisiting-email-forwarding-security-under-the-authenticated-received-chain-prot)
      "custom provider lists from related work, security-aware providers, and globally/Germany-popular providers"  (USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i)
      "custom selection from Android, iOS, macOS, and Windows email clients"  (NDSS/2025/a-multifaceted-study-on-the-use-of-tls-and-auto-detect-in-email-ecosystems)
      "custom target selection"  (USENIX/2021/weak-links-in-authentication-chains-a-large-scale-analysis-of-email-sender-spoof, USENIX/2024/fakebehalf-imperceptible-email-spoofing-attacks-against-the-delegation-mechanism)
      "custom target-domain list"  (WWW/2022/revisiting-email-forwarding-security-under-the-authenticated-received-chain-prot)
      "dmarcian's DMARC Data Reporters"  (USENIX/2023/youve-got-report-measurement-and-security-implications-of-dmarc-reporting)
      "emailclientmarketshare.com"  (USENIX/2020/composition-kills-a-case-study-of-email-sender-authentication)
      "free mail domains list"  (USENIX/2025/s-mine-collecting-and-analyzing-s-mime-certificates-at-scale)
      "http://artinvoice.hu/spams/"  (USENIX/2018/efail-breaking-s-mime-and-openpgp-email-encryption-using-exfiltration-channels)
      "http://untroubled.org/spam/"  (USENIX/2018/efail-breaking-s-mime-and-openpgp-email-encryption-using-exfiltration-channels)
      "iTunes store"  (USENIX/2021/why-tls-is-better-without-starttls-a-security-analysis-of-starttls-in-the-email)
      "intermediate path dataset"  (IMC/2025/understanding-and-characterizing-intermediate-paths-of-email-delivery-the-hidden)
      "mailsac.com"  (WWW/2022/revisiting-email-forwarding-security-under-the-authenticated-received-chain-prot)
      "not-stated"  (USENIX/2021/why-tls-is-better-without-starttls-a-security-analysis-of-starttls-in-the-email)
      "open-source proxy repositories"  (NDSS/2024/breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet)
      "popular MTA programs identified by a prior study"  (USENIX/2020/a-longitudinal-and-comprehensive-study-of-the-dane-ecosystem-in-email)
      "popular open-source DMARC reporting software"  (USENIX/2023/youve-got-report-measurement-and-security-implications-of-dmarc-reporting)
      "previous work [44]"  (USENIX/2025/email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify)
      "prior research [40]"  (USENIX/2025/email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify)
      "public LDAP servers"  (USENIX/2025/s-mine-collecting-and-analyzing-s-mime-certificates-at-scale)
      "public email datasets"  (USENIX/2018/efail-breaking-s-mime-and-openpgp-email-encryption-using-exfiltration-channels)
      "reachable mail servers identified in setup guides"  (NDSS/2025/a-multifaceted-study-on-the-use-of-tls-and-auto-detect-in-email-ecosystems)
      "reachable mail servers"  (NDSS/2025/a-multifaceted-study-on-the-use-of-tls-and-auto-detect-in-email-ecosystems)
      "shared infrastructure settings: cloud servers, proxy services, serverless functions, CI/CD platforms, and CDN services"  (NDSS/2024/breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet)
      "synthetic Facebook password-reset emails"  (USENIX/2018/efail-breaking-s-mime-and-openpgp-email-encryption-using-exfiltration-channels)
 
==============================================================================
E. FIGURES ON THE PAGE, with their denominators and their quote check
==============================================================================
 
--- adoption ---
  STARTTLS
      value       : 81.8% (648,030)
      DENOMINATOR : mail-enabled domains among the Alexa Top Million, 26 Apr 2015
      source      : IMC/2015/neither-snow-nor-rain-nor-mitm-an-empirical-analysis-of-email-delivery-security
      quote [exact]: "In total, 648,030 (81.8%) of mail-enabled domains supported STARTTLS"
  DMARC
      value       : 1.1%
      DENOMINATOR : Alexa Top Million domains with an MX record, Apr 2015
      source      : IMC/2015/neither-snow-nor-rain-nor-mitm-an-empirical-analysis-of-email-delivery-security
      quote [exact]: "only 35% successfully configure encryption, and 1.1% specify a DMARC authentication policy"
  SPF
      value       : 44.9%
      DENOMINATOR : Alexa top 1 million domains, Jan 2018 snapshot
      source      : USENIX/2018/end-to-end-measurements-of-email-spoofing-attacks
      quote [exact]: "About 44.9% of the domains have published a valid SPF record in 2018"
  DKIM
      value       : 28.1% (lower bound)
      DENOMINATOR : Alexa Top 1 million domains, probed with 40 selectors harvested from passive DNS
      source      : USENIX/2022/a-large-scale-and-longitudinal-measurement-study-of-dkim-deployment
      quote [exact]: "28.1% of Alexa Top 1 million domains have enabled DKIM"
  DANE (TLSA)
      value       : 0.60%–0.73%
      DENOMINATOR : second-level domains WITH an MX record in .com / .net
      source      : USENIX/2020/a-longitudinal-and-comprehensive-study-of-the-dane-ecosystem-in-email
      quote [exact]: "0.60% (.com) ∼ 0.73% (.net) of all"
      quote2 [exact]: "domains with MX records have corresponding TLSA records in the latest snapshot"
      SPLICE      : a column break drops the figure caption "4.1 Datasets" into the middle of the sentence -- the page states this figure without presenting it as one continuous quotation
  SPF
      value       : 4,167,633 domains (41.7%)
      DENOMINATOR : Tranco top 10 million domains, 2023
      source      : USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i
      quote [exact]: "Our analysis shows that only 4,167,633 do"
      quote2 [exact]: "mains in the top ten million implement SPF"
      SPLICE      : the sentence is broken mid-word by a column break -- the page states this figure without presenting it as one continuous quotation
  DMARC
      value       : 882,183 domains (8.8%)
      DENOMINATOR : Tranco top 10 million domains, final scan June 2023
      source      : USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i
      quote [exact]: "Of the top 10 million domains, 882,183 deployed a DMARC policy at the time of our final scan in June 2023"
  MTA-STS
      value       : 6,948 records, 569 with a policy file
      DENOMINATOR : Tranco top 10 million domains WITH an MX record, 2023
      source      : USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i
      quote [exact]: "However, only 569 of these domains actually had a policy file hosted in that location"
  SPF
      value       : 56.5% / 60.2%
      DENOMINATOR : 12 million domains (all) vs the top 1 million of them, 2023
      source      : IMC/2023/lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild
      quote [exact]: "a clear increase in SPF usage to 56.5 % can be observed from our scan"
  DMARC
      value       : 13.6% / 22.6%
      DENOMINATOR : 12 million domains (all) vs the top 1 million of them, 2023
      source      : IMC/2023/lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild
      quote [exact]: "is now at 22.6 % for the top 1 million domains and 13.6 % for all domains"
  SPF
      value       : 60.9% published, 55.9% valid
      DENOMINATOR : Tranco top million domains, 2023–24
      source      : NDSS/2024/breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet
      quote [exact]: "60.9% of the top million domains have deployed SPF records, and 55.9% have deployed valid SPF records"
  MTA-STS
      value       : 68,030 domains (0.07%–0.13%)
      DENOMINATOR : domains WITH AN MX RECORD in the .com/.net/.org/.se zone files (86.8M; Table 1 column header reads "Domains with MX Records"), 29 Sep 2024
      source      : IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema
      quote [exact]: "have risen 3-4 times, with adoption ranging between 53,800 (0.07%)"
      quote2 [exact]: ".com 73,939,004 53,800 (0.07%)"
      SPLICE      : Table 1, whose header column reads "Domains with MX Records", is interleaved with a figure legend; quote2 is the .com row -- the page states this figure without presenting it as one continuous quotation
 
--- enforcement ---
  SPF enforcement
      value       : 10 providers acted
      DENOMINATOR : 22 large providers where the authors held an account, 2014–15
      source      : CCS/2015/security-by-any-other-name-on-the-effectiveness-of-provider-based-email-security
      quote [exact]: "Almost all providers performed the SPF DNS query, but only 10 took action, half at the SMTP layer"
  inbound SPF validation before DATA
      value       : 6.8% (81,843)
      DENOMINATOR : 1.2 million reachable SMTP servers derived from four zone files
      source      : USENIX/2024/spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr
      quote [exact]: "initiate SPF queries prior to issuing the DATA command"
  sender-side MTA-STS validation
      value       : 19.6% (469)
      DENOMINATOR : 2,394 sender domains observed in the authors’ deliverability tests
      source      : IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema
      quote [exact]: "Our sender-side dataset reveals that 19.6% of domains perform MTA-STS validation when sending email to an MTA-STS enabled domain"
  DANE-validating senders
      value       : 4 providers
      DENOMINATOR : 29 email providers tested end to end
      source      : USENIX/2020/a-longitudinal-and-comprehensive-study-of-the-dane-ecosystem-in-email
      quote [exact]: "we find that only four email service providers (mail.com, comcast.net, gmx.com, tutanota.com) actually fetch TLSA records"
  forged mail reaching the inbox
      value       : 34 of 35 providers
      DENOMINATOR : 35 public email providers, Dec 2017 – Jan 2018
      source      : USENIX/2018/end-to-end-measurements-of-email-spoofing-attacks
      quote [exact]: "out of the 35 email services allowed at least one forged email to arrive the inbox"
  sender-inconsistency checks
      value       : 12 services
      DENOMINATOR : 30 email services and 23 clients tested, 2021
      source      : USENIX/2021/weak-links-in-authentication-chains-a-large-scale-analysis-of-email-sender-spoof
      quote [exact]: "only 12 services perform the sender inconsistency checks"
 
--- misconfig ---
  SPF authorising >100,000 IPv4 addresses
      value       : 34.7%
      DENOMINATOR : the SPF-publishing domains of the 12 million scanned, 2023
      source      : IMC/2023/lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild
      quote [exact]: "34.7 % of the domains allow emails to be sent from over 100 000 IP addresses"
  SPF needing >10 DNS lookups
      value       : 6.5%
      DENOMINATOR : 55 million domains that have SPF records, latest of 17 monthly zone-file scans
      source      : USENIX/2024/spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr
      quote [exact]: "We use our latest scan and focus on 55 M domains that have SPF records"
  MTA-STS incorrectly configured
      value       : 29.6% (20,144)
      DENOMINATOR : the 68,030 domains that published an MTA-STS record, Sep 2024
      source      : IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema
      quote [exact]: "29.6% of domains with MTA-STS records in our latest scan"
      quote2 [exact]: "We find that out of the 20,144 misconfigured domains, 640 (3.2%) domains will encounter email delivery failures"
  invalid TLSA records
      value       : over 22%
      DENOMINATOR : SMTP servers serving .com domains, hourly snapshots
      source      : USENIX/2022/under-the-hood-of-dane-mismanagement-in-smtp
      quote [exact]: "the percentage of SMTP servers with invalid TLSA records is over 22% when they serve domains in .com"
  DKIM keys ≤ 1024 bits
      value       : 84%
      DENOMINATOR : 3,627,871 domains with DKIM keys in passive DNS
      source      : USENIX/2022/a-large-scale-and-longitudinal-measurement-study-of-dkim-deployment
      quote [exact]: "of 3,627,871 domains still use DKIM keys that are less or equal to 1024 bits"
  shared DKIM keys
      value       : 66.9% (2,427,682)
      DENOMINATOR : the DKIM-publishing domains in the passive-DNS set
      source      : USENIX/2022/a-large-scale-and-longitudinal-measurement-study-of-dkim-deployment
      quote [exact]: "we find 61,062 DKIM keys shared by more than one domain"
  external rua without an authorisation record
      value       : 26% (520K)
      DENOMINATOR : 2 million DMARC records naming an external reporting domain
      source      : USENIX/2023/youve-got-report-measurement-and-security-implications-of-dmarc-reporting
      quote [exact]: "we find that 520K (26%) of them do not have the authorization DMARC records"
  STARTTLS certificate validation failure
      value       : 30.0%
      DENOMINATOR : 2,112,682 connectable MXs, 2023
      source      : USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i
      quote [exact]: "Of the remaining 2,112,682 MXs, only 1,478,060 (70.0%) passed proper certificate validation"
  auto-configuration support
      value       : 7.52% (79,212)
      DENOMINATOR : 1,053,469 domains scanned for Autodiscover / Autoconfig / SRV
      source      : NDSS/2025/automatic-insecurity-exploring-email-auto-configuration-in-the-wild
      quote [exact]: "domains support at least one auto-configuration mechanism"
  SPF with no restrictive all qualifier
      value       : 5.9% (427,767)
      DENOMINATOR : the SPF-publishing domains of the 12 million scanned, 2023 (427,767 / 0.059 = 7.25M, i.e. the SPF-publishing subset, not all 12M)
      source      : IMC/2023/lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild
      quote [exact]: "the SPF configuration is missing a restrictive all policy"
 
--- clients ---
  providers showing any security indicator on a forged message
      value       : 9 of 35
      DENOMINATOR : 35 popular email providers, web and mobile interfaces inspected by hand
      source      : USENIX/2018/end-to-end-measurements-of-email-spoofing-attacks
      quote [punctuation-folded]: "only 9 of 35 providers have implemented some security indicators"
  providers showing a MISLEADING element on a forged message
      value       : 25 of 35
      DENOMINATOR : the same 35 providers
      source      : USENIX/2018/end-to-end-measurements-of-email-spoofing-attacks
      quote [exact]: "25 out of 35 providers will automatically load the spoofed sender's photo"
  exfiltration channels
      value       : 23 of 35 S/MIME, 10 of 28 OpenPGP
      DENOMINATOR : 48 mail clients tested
      source      : USENIX/2018/efail-breaking-s-mime-and-openpgp-email-encryption-using-exfiltration-channels
      quote [exact]: "23 of the 35 tested S/MIME email clients"
  signature spoofing
      value       : 14 of 20 OpenPGP, 15 of 22 S/MIME
      DENOMINATOR : 25 mail clients tested
      source      : USENIX/2019/johnny-you-are-fired-spoofing-openpgp-and-s-mime-signatures-in-emails
      quote [exact]: "in 14 out of 20 tested OpenPGP-capable email clients"
  plaintext downgrade
      value       : 15 of 28
      DENOMINATOR : 28 mail clients tested, 2021
      source      : USENIX/2021/why-tls-is-better-without-starttls-a-security-analysis-of-starttls-in-the-email
      quote [exact]: "In total, 15 of 28 clients could be downgraded to plaintext and leaked sensitive data"
  silent TLS downgrade
      value       : 19 of 49
      DENOMINATOR : 49 mail clients tested, 2025
      source      : NDSS/2025/a-multifaceted-study-on-the-use-of-tls-and-auto-detect-in-email-ecosystems
      quote [exact]: "we found that 19 clients may inadvertently downgrade the security of the email protocols to no-TLS without notifying the user"
  auto-configuration attack
      value       : 22 of 29
      DENOMINATOR : 29 mail clients exercised against controlled servers
      source      : NDSS/2025/automatic-insecurity-exploring-email-auto-configuration-in-the-wild
      quote [exact]: "22/29 clients were vulnerable to at least one of the attack scenarios"
 
--- logs ---
  emails encrypted
      value       : 0.06% (46,973)
      DENOMINATOR : the same 81.6 million emails at one university
      source      : IEEE-SP/2022/27-years-and-81-million-opportunities-later-investigating-the-use-of-email-encry
      quote [exact]: "46,973 (0.06%) emails were encrypted"
  users who ever used S/MIME or PGP
      value       : 5.46%
      DENOMINATOR : 81.6 million emails from 37,089 accounts at one university, 27 years
      source      : IEEE-SP/2022/27-years-and-81-million-opportunities-later-investigating-the-use-of-email-encry
      quote [exact]: "We found that only 5.46% of all users ever used S/MIME or PGP"
  hard bounces
      value       : 8.11% (24M)
      DENOMINATOR : 298 million emails at one large Chinese ESP
      source      : IMC/2024/bounce-in-the-wild-a-deep-dive-into-email-delivery-failures-from-a-large-email-s
      quote [exact]: "259M (87.07%) are non-bounced, 14M (4.82%) are soft-bounced, and 24M (8.11%) are hard-bounced"
  bounces caused by sender authentication failure
      value       : 2.19% (701K)
      DENOMINATOR : the same 298 million emails; share of all, not of bounces
      source      : IMC/2024/bounce-in-the-wild-a-deep-dive-into-email-delivery-failures-from-a-large-email-s
      quote [exact]: "We find that 701K (2.19%) emails are hard-bounced due to sender authentication failure"
  paths relying entirely on third-party relaying
      value       : 82.7% (86.9M)
      DENOMINATOR : 105 million emails with a reconstructable intermediate path
      source      : IMC/2025/understanding-and-characterizing-intermediate-paths-of-email-delivery-the-hidden
      quote [punctuation-folded]: "We find that 82.7% of email intermediate paths fall into the Third-party hosting category"
  concentration of the relay market (HHI)
      value       : 40%
      DENOMINATOR : middle nodes across all reconstructed intermediate paths
      source      : IMC/2025/understanding-and-characterizing-intermediate-paths-of-email-delivery-the-hidden
      quote [exact]: "we obtain an HHI of 40% for the middle node market, which indicates a highly concentrated market"
  inbound Gmail messages authenticated by SPF, DKIM or both
      value       : 94.40%
      DENOMINATOR : Gmail SMTP handshake logs, April 2015
      source      : IMC/2015/neither-snow-nor-rain-nor-mitm-an-empirical-analysis-of-email-delivery-security
      quote [exact]: "During April 2015, 94.40% of incoming Gmail messages were authenticated with DKIM, SPF, or both"
 
--- notify ---
  SPF errors fixed two weeks after notification
      value       : 6,931 errors
      DENOMINATOR : notified domains, rescanned two weeks later; total errors fell 3.28%
      source      : IMC/2023/lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild
      quote [exact]: "We observe that 6 931 errors have been fixed by that time"
  SPF misconfiguration remediated one month after notification
      value       : 39.7% vs 20.7% control
      DENOMINATOR : notified vs undeliverable-notification domains; Fisher exact p = 7.8e-43
      source      : USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i
      quote [exact]: "only 1,076 were still misconfigured in November, which is a decrease of 39.7%"
  still vulnerable after four months
      value       : just over 80%
      DENOMINATOR : domains inferred vulnerable to the libSPF2 flaw, remeasured over four months
      source      : IMC/2022/spfail-discovering-measuring-and-remediating-vulnerabilities-in-email-sender-val
      quote [exact]: "just over 80% of domains that we were able to infer results for were still vulnerable"
 
--- survey ---
  operators who validate SPF inbound
      value       : 87.1% (54)
      DENOMINATOR : 62 survey respondents who answered that question (95 started)
      source      : USENIX/2024/spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr
      quote [exact]: "answered yes, while only 8 explicitly indicated they do not"
  operators who had heard of MTA-STS
      value       : 94.7% (89)
      DENOMINATOR : 94 respondents who answered that question (117 engaged with the survey)
      source      : IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema
      quote [exact]: "While awareness of MTA-STS was high (94.7%)"
  DMARC publishers who also send reports
      value       : 66% (26)
      DENOMINATOR : 39 operators who said they publish DMARC records; 74 answered any question
      source      : USENIX/2023/youve-got-report-measurement-and-security-implications-of-dmarc-reporting
      quote [exact]: "Out of 39 operators who published DMARC records, we also find that 26 (66%) also send DMARC reports"
 
--- shared ---
  domains exploitable through a shared-infrastructure IP inside their own SPF
      value       : 23,916
      DENOMINATOR : Tranco top million; 23 of them in the top 1,000
      source      : NDSS/2024/breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet
      quote [exact]: "We uncover that 23,916 domains are vulnerable to BreakSPF attacks"
  SPF records covering more than 65,536 addresses
      value       : 51.7%
      DENOMINATOR : the SPF-publishing domains of the Tranco top million
      source      : NDSS/2024/breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet
      quote [exact]: "findings revealed that 51.7% of domains have SPF records"
  exploitable sender/receiver pairs
      value       : 36 of 440
      DENOMINATOR : 20 sending x 22 receiving public email services
      source      : USENIX/2025/email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify
      quote [exact]: "we identified 36 exploitable pairs out of the 440"
  reflected mail passing SPF or DKIM
      value       : 77.89% (7,851)
      DENOMINATOR : 10,079 exploitable bounce servers found by probing
      source      : NDSS/2026/coordmail-exploiting-smtp-timeout-and-command-interaction-to-coordinate-email-middleware-for-convergence-amplification-attack
      quote [exact]: "We discover that emails from 7,851 (77.89%) bounce servers could be verified by SPF or DKIM"
  domains spoofable by renting shared web hosting
      value       : 26,095
      DENOMINATOR : domains whose SPF authorised the rented hosts; 4 of 5 providers allowed it
      source      : IMC/2023/lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild
      quote [exact]: "we are able to send emails with valid SPF entries from 26 095 domains"
 
  53 figures, 57 quote fragments. Location modes: {"exact":55,"punctuation-folded":2}
  All figure quotes located in paper.cols.txt.
 
==============================================================================
F. WHAT THE 31 PAPERS REPORT ABOUT THEMSELVES (extraction enums, not hand maps)
==============================================================================
 
  ethics.reviewOutcome (denominator 31):
      12  none-mentioned
       6  explicitly-discussed-no-review
       5  approved
       4  not-required
       2  sought-outcome-unstated
       2  exempt
 
    CORPUS COMPARISON (denominator: the 4965 papers with an ethics object):
      none-mentioned: corpus 3188 (64.2%)  vs  this page 12/31 (38.7%)
      approved      : corpus 998 (20.1%)  vs  this page 5/31 (16.1%)
      n=31 is small: do not read a few points either way as a difference.
 
  ethics.notifiedAffectedParties (denominator 31):
      19  yes
       6  partial
       3  not-stated
       2  no
       1  not-applicable
 
  artifacts.availability (denominator 31):
      20  public
       9  none-mentioned
       1  promised-not-yet-available
       1  explicitly-withheld
 
  papers whose artifacts.codeUrl is set: 18 of 31
      USENIX/2019/johnny-you-are-fired-spoofing-openpgp-and-s-mime-signatures-in-emails
          https://github.com/RUB-NDS/Johnny-You-Are-Fired
      USENIX/2020/a-longitudinal-and-comprehensive-study-of-the-dane-ecosystem-in-email
          https://dane-study.github.io
      USENIX/2020/composition-kills-a-case-study-of-email-sender-authentication
          https://github.com/chenjj/espoofer
      USENIX/2021/weak-links-in-authentication-chains-a-large-scale-analysis-of-email-sender-spoof
          https://github.com/mo-xiaoxi/EmailSpoofingTestTool
      USENIX/2021/why-tls-is-better-without-starttls-a-security-analysis-of-starttls-in-the-email
          https://github.com/FHMS-ITS/EAST
      IEEE-SP/2022/27-years-and-81-million-opportunities-later-investigating-the-use-of-email-encry
          https://publications.teamusec.de/2022-oaklandemail/
      USENIX/2022/under-the-hood-of-dane-mismanagement-in-smtp
          https://dane-study.github.io
      PETS/2023/heads-in-the-clouds-measuring-universities-migration-to-public-clouds-implicatio
          https://github.com/headsinthecloud/cloudheadschecker
      USENIX/2023/youve-got-report-measurement-and-security-implications-of-dmarc-reporting
          https://dmarc-study.github.io/
      USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i
          https://github.com/letoams/openpgpkeymilter/pull/8
      USENIX/2024/spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr
          https://spf-measurement.github.io
      IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema
          https://mta-sts.netsecurelab.org
      IMC/2025/understanding-and-characterizing-intermediate-paths-of-email-delivery-the-hidden
          https://github.com/RUI-XUAN-LI/Email_Path
      NDSS/2025/a-multifaceted-study-on-the-use-of-tls-and-auto-detect-in-email-ecosystems
          https://github.com/tls-downgrade/email-security.git
      NDSS/2025/automatic-insecurity-exploring-email-auto-configuration-in-the-wild
          https://github.com/emailconfigtest/mailconfig
      USENIX/2025/email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify
          https://zenodo.org/records/14738722
      USENIX/2025/s-mine-collecting-and-analyzing-s-mime-certificates-at-scale
          https://github.com/FHMS-ITS/SMINE
      NDSS/2026/coordmail-exploiting-smtp-timeout-and-command-interaction-to-coordinate-email-middleware-for-convergence-amplification-attack
          https://github.com/RUI-XUAN-LI/CoordMail
 
  statistics[].kind, papers (denominator 31, multi-valued):
      29  descriptive-only
       2  hypothesis-test
       1  regression
       1  correlation
       1  resampling
       0  (no statistics tuple at all)
 
  humanAnnotation: 19 of 31 papers coded something by hand;
      of those, 0 report an inter-rater agreement metric.
 
  participants: 8 of 31 recruited people.
      USENIX/2018/end-to-end-measurements-of-email-spoofing-attacks  n=488 kind=field-study recruitment=mechanical-turk
      USENIX/2022/under-the-hood-of-dane-mismanagement-in-smtp  n=39 kind=survey recruitment=professional-network
      USENIX/2023/youve-got-report-measurement-and-security-implications-of-dmarc-reporting  n=74 kind=survey recruitment=not-stated
      USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i  n=16 kind=survey recruitment=not-stated
      USENIX/2024/fakebehalf-imperceptible-email-spoofing-attacks-against-the-delegation-mechanism  n=50 kind=lab-study recruitment=university-pool
      USENIX/2024/spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr  n=95 kind=survey recruitment=professional-network
      IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema  n=117 kind=survey recruitment=professional-network
      USENIX/2025/email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify  n=48 kind=field-study recruitment=not-stated
 
==============================================================================
G. FULL-TEXT PROBES: mechanisms the corpus does NOT measure
==============================================================================
probe population: all 5859 extracted papers; 4 have no paper.cols.txt and count as negative.
 
  BIMI         mentioned in    5 papers corpus-wide; 5 of them in this page's 31
  TLS-RPT      mentioned in    3 papers corpus-wide; 3 of them in this page's 31
  REQUIRETLS   mentioned in    0 papers corpus-wide; 0 of them in this page's 31
  DANE (any)   mentioned in   54 papers corpus-wide; 14 of them in this page's 31
  MTA-STS      mentioned in   11 papers corpus-wide; 9 of them in this page's 31
  ARC          mentioned in    6 papers corpus-wide; 6 of them in this page's 31
 
  RFC 7489 (the Informational DMARC RFC that RFC 9989 obsoleted in May 2026):
    cited by 18 of the 31; the other 13 do not --
      never mentions DMARC       IMC/2017/email-typosquatting
      never mentions DMARC       USENIX/2018/efail-breaking-s-mime-and-openpgp-email-encryption-using-exfiltration-channels
      names DMARC, not the RFC   USENIX/2019/johnny-you-are-fired-spoofing-openpgp-and-s-mime-signatures-in-emails
      names DMARC, not the RFC   USENIX/2021/weak-links-in-authentication-chains-a-large-scale-analysis-of-email-sender-spoof
      names DMARC, not the RFC   USENIX/2021/why-tls-is-better-without-starttls-a-security-analysis-of-starttls-in-the-email
      never mentions DMARC       IEEE-SP/2022/27-years-and-81-million-opportunities-later-investigating-the-use-of-email-encry
      names DMARC, not the RFC   USENIX/2022/under-the-hood-of-dane-mismanagement-in-smtp
      never mentions DMARC       USENIX/2023/content-type-multipart-oracle-tapping-into-format-oracles-in-email-end-to-end-en
      names DMARC, not the RFC   IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema
      never mentions DMARC       IMC/2025/understanding-and-characterizing-intermediate-paths-of-email-delivery-the-hidden
      never mentions DMARC       NDSS/2025/a-multifaceted-study-on-the-use-of-tls-and-auto-detect-in-email-ecosystems
      names DMARC, not the RFC   NDSS/2025/automatic-insecurity-exploring-email-auto-configuration-in-the-wild
      never mentions DMARC       USENIX/2025/s-mine-collecting-and-analyzing-s-mime-certificates-at-scale
 
  BIMI, in full -- every corpus paper that names it:
       9x  [in the 31]  USENIX/2018/end-to-end-measurements-of-email-spoofing-attacks
       9x  [in the 31]  USENIX/2020/composition-kills-a-case-study-of-email-sender-authentication
       7x  [in the 31]  USENIX/2023/youve-got-report-measurement-and-security-implications-of-dmarc-reporting
       4x  [in the 31]  USENIX/2024/spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr
       3x  [in the 31]  USENIX/2021/weak-links-in-authentication-chains-a-large-scale-analysis-of-email-sender-spoof
 
  A mention is not a measurement. Hand-read 2026-09-09: all five BIMI mentions are
  related-work or background sentences ("BIMI is built on DMARC and has not ...").
  No paper in these seven venues measures BIMI deployment. REQUIRETLS: 0 mentions.
 
==============================================================================
H. RECALL: is the 31 missing anything?
==============================================================================
 
  TIGHT  (mech>=10 or tls>=10 or (smtp>=30 and mech>=3)): 45 papers hit | 30/31 of the population | 5 already mapped to another verdict | 10 unmapped
 
  WIDE   (mech>=4  or tls>=4  or (smtp>=15 and mech>=2)): 77 papers hit | 31/31 of the population | 14 already mapped to another verdict | 32 unmapped
 
  Population papers the TIGHT probe misses: 1 -- ["email-typosquatting"]
  (The probe is a recall check on the hand map, not the population rule. It cannot
   find email-typosquatting, whose subject is misdirected mail and which names no
   mechanism; the hand map can. That is the argument for the hand map.)
 
  Every UNMAPPED paper the WIDE probe admits, read by hand 2026-09-09:
       60m   0t  IEEE-SP/2014/when-https-meets-cdn-a-case-of-authentication-in-delegated-service
            When HTTPS Meets CDN: A Case of Authentication in Delegated Service.
       50m   0t  IMC/2017/mission-accomplished-https-security-after-diginotar
            Mission accomplished?: HTTPS security after diginotar.
       35m   1t  PETS/2025/real-world-deniability-in-messaging
            Real-World Deniability in Messaging
       32m   0t  USENIX/2021/injection-attacks-reloaded-tunnelling-malicious-payloads-over-dns
            Injection Attacks Reloaded: Tunnelling Malicious Payloads over DNS
       18m   0t  IEEE-SP/2021/cross-layer-attacks-and-how-to-use-them-for-dns-cache-poisoning-device-tracking
            Cross Layer Attacks and How to Use Them (for DNS Cache Poisoning, Device Tracking and More).
       18m   0t  PETS/2026/cryptographically-secured-domain-validation
            Cryptographically-Secured Domain Validation
       12m   6t  IEEE-SP/2024/tcp-spoofing-reliable-payload-transmission-past-the-spoofed-tcp-handshake
            TCP Spoofing: Reliable Payload Transmission Past the Spoofed TCP Handshake.
       16m   0t  IMC/2023/wolf-in-sheeps-clothing-evaluating-security-risks-of-the-undelegated-record-on-d
            Wolf in Sheep's Clothing: Evaluating Security Risks of the Undelegated Record on DNS Hosting Services.
       11m   2t  IMC/2022/zdns-a-fast-dns-toolkit-for-internet-measurement
            ZDNS: a fast DNS toolkit for internet measurement.
        0m  10t  USENIX/2021/alpaca-application-layer-protocol-confusion-analyzing-and-mitigating-cracks-in-t
            ALPACA: Application Layer Protocol Confusion - Analyzing and Mitigating Cracks in TLS Authentication
        8m   0t  NDSS/2026/continuous-user-behavior-monitoring-using-dns-cache-timing-attacks
            Continuous User Behavior Monitoring using DNS Cache Timing Attacks
        2m   6t  USENIX/2026/opossum-attack-application-layer-desynchronization-using-opportunistic-tls
            Opossum Attack: Application Layer Desynchronization using Opportunistic TLS
        6m   2t  IEEE-SP/2023/is-cryptographic-deniability-sufficient-non-expert-perceptions-of-deniability-in
            Is Cryptographic Deniability Sufficientƒ Non-Expert Perceptions of Deniability in Secure Messaging.
        7m   0t  CCS/2019/lets-encrypt-an-automated-certificate-authority-to-encrypt-the-entire-web
            Let's Encrypt: An Automated Certificate Authority to Encrypt the Entire Web.
        7m   0t  CCS/2023/silence-is-not-golden-disrupting-the-load-balancing-of-authoritative-dns-servers
            Silence is not Golden: Disrupting the Load Balancing of Authoritative DNS Servers.
        0m   7t  USENIX/2024/the-challenges-of-bringing-cryptography-from-research-papers-to-products-results
            The Challenges of Bringing Cryptography from Research Papers to Products: Results from an Interview Study with Experts
        0m   7t  NDSS/2025/attributing-open-source-contributions-is-critical-but-difficult-a-systematic-analysis-of-github-practices-and-their-impact-on-software-supply-chain-security
            Attributing Open-Source Contributions is Critical but Difficult: A Systematic Analysis of GitHub Practices and Their Impact on Software Supply Chain Security
        7m   0t  IEEE-SP/2024/practical-attacks-against-dns-reputation-systems
            Practical Attacks Against DNS Reputation Systems.
        6m   0t  NDSS/2015/upgrading-https-in-mid-air-an-empirical-study-of-strict-transport-security-and-k
            Upgrading HTTPS in Mid-Air: An Empirical Study of Strict Transport Security and Key Pinning
        6m   0t  IMC/2018/ldplayer-dns-experimentation-at-scale
            LDplayer: DNS Experimentation at Scale.
        4m   1t  IMC/2017/understanding-the-role-of-registrars-in-dnssec-deployment
            Understanding the role of registrars in DNSSEC deployment.
        0m   5t  CCS/2019/practical-decryption-exfiltration-breaking-pdf-encryption
            Practical Decryption exFiltration: Breaking PDF Encryption.
        5m   0t  NDSS/2025/a-large-scale-measurement-study-of-the-proxy-protocol-and-its-security-implications
            A Large-Scale Measurement Study of the PROXY Protocol and its Security Implications
        0m   4t  USENIX/2016/drown-breaking-tls-using-sslv2
            DROWN: Breaking TLS Using SSLv2
        0m   4t  NDSS/2017/measuring-small-subgroup-attacks-against-diffie-hellman
            Measuring small subgroup attacks against Diffie-Hellman
        4m   0t  IMC/2020/behind-closed-doors-a-network-tale-of-spoofing-intrusion-and-false-dns-security
            Behind Closed Doors: A Network Tale of Spoofing, Intrusion, and False DNS Security.
        0m   4t  IMC/2021/tracing-your-roots-exploring-the-tls-trust-anchor-ecosystem
            Tracing your roots: exploring the TLS trust anchor ecosystem.
        0m   4t  USENIX/2022/hyperdegrade-from-ghz-to-mhz-effective-cpu-frequencies
            HyperDegrade: From GHz to MHz Effective CPU Frequencies
        4m   0t  IMC/2023/stale-tls-certificates-investigating-precarious-third-party-access-to-valid-tls
            Stale TLS Certificates: Investigating Precarious Third-Party Access to Valid TLS Keys.
        0m   4t  USENIX/2025/x-509dos-exploiting-and-detecting-denial-of-service-vulnerabilities-in-cryptogra
            X.509DoS: Exploiting and Detecting Denial-of-Service Vulnerabilities in Cryptographic Libraries using Crafted X.509 Certificates
        4m   0t  IEEE-SP/2014/analyzing-forged-ssl-certificates-in-the-wild
            Analyzing Forged SSL Certificates in the Wild.
        2m   0t  IEEE-SP/2015/vetting-ssl-usage-in-applications-with-sslint
            Vetting SSL Usage in Applications with SSLINT.
 
  VERDICT: none of them measures deployed email authentication or transport security.
  They are DNS, PKI and TLS papers that name SPF or STARTTLS in passing (DANE for
  HTTPS/CDN, DNSSEC registrar studies, ALPACA, DROWN, a DNS toolkit paper).
  Widening the probe from TIGHT to WIDE added 0 papers to the population.
 
  Papers the probe hits that msg_fold gave a DIFFERENT verdict (boundary cases):
       36m   3t  [SE]  WWW/2024/unfiltered-measuring-cloud-based-email-filtering-bypasses
       33m   0t  [SE]  NDSS/2025/hades-attack-understanding-and-evaluating-manipulation-risks-of-email-blocklists
       10m   0t  [PHISH]  CCS/2025/phishing-susceptibility-and-the-in-effectiveness-of-common-anti-phishing-interve
       10m   0t  [EID]  NDSS/2026/one-email-many-faces-a-deep-dive-into-identity-confusion-in-email-aliases
        8m   0t  [PHISH]  USENIX/2014/a-look-at-targeted-attacks-through-the-lense-of-an-ngo
        7m   0t  [INST]  USENIX/2016/hey-you-have-a-problem-on-the-feasibility-of-large-scale-web-vulnerability-notif
        7m   0t  [PHISH]  USENIX/2017/detecting-credential-spearphishing-in-enterprise-settings
        7m   0t  [PHISH]  USENIX/2019/high-precision-detection-of-business-email-compromise
        4m   3t  [INST]  PETS/2023/comparing-large-scale-privacy-and-security-notifications
        6m   0t  [SE]  CCS/2024/inbox-invasion-exploiting-mime-ambiguities-to-evade-email-attachment-detectors
        4m   1t  [SE]  USENIX/2012/b-bel-leveraging-email-delivery-for-spam-mitigation
        4m   0t  [PHISH]  USENIX/2019/detecting-and-characterizing-lateral-phishing-at-scale
        4m   0t  [INST]  USENIX/2021/effective-notification-campaigns-on-the-web-a-matter-of-trust-framing-and-suppor
        4m   0t  [PHISH]  IEEE-SP/2023/design-and-evaluation-of-inclusive-email-security-indicators-for-people-with-vis
 
==============================================================================
I. TOOLS NAMED AS USED (paper-counted, folded, residue printed)
==============================================================================
denominator: 29 of 31 papers name at least one tool as used.
 
  10  Postfix
   5  OpenSSL / pyOpenSSL
   4  ZMap
   4  a spam/blocklist service or filter
   4  a PGP implementation
   3  BIND
   3  Dovecot
   2  OpenINTEL
   2  Unbound
   2  an SPF validator library
   2  OpenDKIM / OpenDMARC / OpenARC
   2  a weak-key checker
   1  Exim
   1  qmail
   1  Sendmail
   1  Microsoft Exchange
   1  ZGrab2
   1  checkdmarc
   1  Farsight SIE passive DNS
   1  dnstwist
   1  XMap
   1  pkilint
   1  Censys
 
  UNMAPPED RESIDUE: 68 distinct strings across 26 papers.
  Printed in full because a page that folds must show what it could not fold:
      active scanning tool              Alexa Web Information Service     Amazon Mechanical Turk            
      Apple Mail                        AS59645 BTTF historic bulk whois serviceauthoritative DNS server          
      AWS                               AWS EC2                           bag-of-words analysis             
      BERT                              browser-based crawler             check_host function               
      Cloudflare DNS                    Coremail                          Coremail spam filter              
      Cure53 HTTPLeaks                  Db-IP                             Debian Code Search                
      Docker                            Drain                             Email Privacy Tester              
      GitHub Code Search                GNU Parallel                      GoDaddy API                       
      GoDaddy Domains API               Google Custom Search JSON API     Google Form                       
      Google Hosted S/MIME              Google Translate                  HaveIBeenPwned                    
      html5sec                          instrumented SMTP client          Internet Archive's Wayback Machine
      iOS Mail                          ip-api                            iRedAPD                           
      jc                                King                              Kplaysearch                       
      Let's Encrypt                     Linode                            Mail-In-a-Box                     
      Mailman3                          Microsoft Outlook                 mitmproxy                         
      Mozilla CA list                   Mozilla NSS                       Mozilla NSS root store            
      Mozilla Thunderbird               mtpolicyd                         Netstar URL Categorization and Threat Intelligence Solution
      Nginx                             OWASP Cross Site Scripting Filter Evasion Cheat SheetPublic Suffix List (PSL)          
      pyasn                             Python                            PyWhois                           
      QEMU                              Qualtrics                         Ruby Whois                        
      STARTTLS command injection testing toolSympa                             tcpdump                           
      Textract                          Ubuntu 18.04 LTS root store       VirusTotal                        
      WHOIS History API                 Wireshark                         
 
==============================================================================
J. QUOTE SPOT-CHECK OF THE EXTRACTION ITSELF
==============================================================================
206 detection[].evidence.quote values across the 31 papers.
location modes: {"exact":119,"NOT FOUND (longest head 16ch: \"If there was no \")":1,"spliced(head 60ch / tail 42ch)":1,"punctuation-folded":11,"NOT FOUND (longest head 36ch: \"our larger measurement to all 7,269 \")":1,"NOT FOUND (longest head 23ch: \"exfiltration channels e\")":1,"NOT FOUND (longest head 7ch: \"and 10 \")":1,"spliced(head 51ch / tail 46ch)":1,"spliced(head 42ch / tail 25ch)":1,"NOT FOUND (longest head 23ch: \"This extensive list of \")":1,"NOT FOUND (longest head 14ch: \"We identified \")":1,"spliced(head 73ch / tail 47ch)":1,"spliced(head 107ch / tail 27ch)":1,"spliced(head 130ch / tail 25ch)":1,"NOT FOUND (longest head 8ch: \"Table 4 \")":1,"spliced(head 36ch / tail 46ch)":1,"spliced(head 77ch / tail 61ch)":1,"spliced(head 27ch / tail 128ch)":1,"spliced(head 61ch / tail 59ch)":1,"spliced(head 59ch / tail 26ch)":1,"spliced(head 35ch / tail 80ch)":1,"spliced(head 46ch / tail 56ch)":1,"spliced(head 53ch / tail 62ch)":1,"spliced(head 58ch / tail 36ch)":1,"spliced(head 61ch / tail 40ch)":1,"spliced(head 55ch / tail 25ch)":1,"spliced(head 57ch / tail 65ch)":1,"NOT FOUND (longest head 24ch: \"In contrast, 2,287,922 (\")":1,"spliced(head 27ch / tail 116ch)":1,"NOT FOUND (longest head 30ch: \"Overall, we encountered three \")":1,"NOT FOUND (longest head 7ch: \"Around \")":1,"spliced(head 30ch / tail 54ch)":1,"NOT FOUND (longest head 12ch: \"we find the \")":1,"NOT FOUND (longest head 13ch: \"We find that \")":1,"spliced(head 48ch / tail 33ch)":1,"spliced(head 55ch / tail 51ch)":1,"spliced(head 66ch / tail 51ch)":1,"spliced(head 30ch / tail 50ch)":1,"spliced(head 66ch / tail 60ch)":1,"spliced(head 56ch / tail 60ch)":1,"spliced(head 65ch / tail 28ch)":1,"NOT FOUND (longest head 9ch: \"The U.S. \")":1,"NOT FOUND (longest head 12ch: \"In the U.S. \")":1,"NOT FOUND (longest head 50ch: \"In the U.S., we find that the adoption of Zoom... \")":1,"spliced(head 62ch / tail 48ch)":1,"spliced(head 54ch / tail 95ch)":1,"NOT FOUND (longest head 58ch: \"Thus, their amplification factor is 1,460× (= 5,839 200 × \")":1,"spliced(head 53ch / tail 45ch)":1,"spliced(head 27ch / tail 98ch)":1,"spliced(head 41ch / tail 43ch)":1,"spliced(head 52ch / tail 91ch)":1,"spliced(head 39ch / tail 51ch)":1,"spliced(head 56ch / tail 53ch)":1,"NOT FOUND (longest head 20ch: \"We found that only T\")":1,"NOT FOUND (longest head 50ch: \"The spoofing email passed the verification of SPF \")":1,"NOT FOUND (longest head 10ch: \"all 16 tar\")":1,"spliced(head 118ch / tail 26ch)":1,"spliced(head 33ch / tail 57ch)":1,"NOT FOUND (longest head 7ch: \"54 (87.\")":1,"spliced(head 79ch / tail 55ch)":1,"spliced(head 25ch / tail 26ch)":1,"spliced(head 49ch / tail 25ch)":1,"spliced(head 36ch / tail 29ch)":1,"NOT FOUND (longest head 110ch: \"Out of the 94 participants who responded to the question about their familiarity with MTA-STS, 89 (94.7%) had \")":1,"NOT FOUND (longest head 12ch: \"At last, we \")":1,"spliced(head 65ch / tail 66ch)":1,"spliced(head 56ch / tail 46ch)":1,"NOT FOUND (longest head 20ch: \"For Autoconfig, ... \")":1,"spliced(head 96ch / tail 49ch)":1,"NOT FOUND (longest head 5ch: \"we de\")":1,"spliced(head 49ch / tail 102ch)":1,"spliced(head 41ch / tail 50ch)":1,"NOT FOUND (longest head 49ch: \"20.51 % of certificates fall into this category. \")":1,"spliced(head 54ch / tail 34ch)":1,"NOT FOUND (longest head 12ch: \"We found 71,\")":1,"NOT FOUND (longest head 22ch: \"We find that for each \")":1,"spliced(head 42ch / tail 48ch)":1,"spliced(head 85ch / tail 65ch)":1}
unlocatable: 76 (36.9%) --
    CCS/2015/security-by-any-other-name-on-the-effectiveness-of-provider-based-email-security [methodology] "If there was no DNSKEY record, then the domain was marked as not supporting DNSSEC."
    IMC/2015/neither-snow-nor-rain-nor-mitm-an-empirical-analysis-of-email-delivery-security [results] "As of April 26, 2015, Gmail successfully initiated STARTTLS connections for 80% of outgoing messages, while 60% of incoming connections initiated a STARTTLS session."
    IMC/2017/email-typosquatting [results] "our larger measurement to all 7,269 suspected typosquatting domains resulted in 15 emails being apparently opened and/or read by someone, and two honey tokens being accessed."
    USENIX/2018/efail-breaking-s-mime-and-openpgp-email-encryption-using-exfiltration-channels [abstract] "exfiltration channels exist for 23 of the 35 tested S/MIME email clients"
    USENIX/2018/efail-breaking-s-mime-and-openpgp-email-encryption-using-exfiltration-channels [abstract] "and 10 of the 28 tested OpenPGP email clients."
    USENIX/2018/efail-breaking-s-mime-and-openpgp-email-encryption-using-exfiltration-channels [results] "Out of 48 tested mail clients 17 had missing isolation which would allow leaking secret messages"
    USENIX/2018/efail-breaking-s-mime-and-openpgp-email-encryption-using-exfiltration-channels [results] "Of the tested 48 email clients, 13 load external images by default."
    USENIX/2018/efail-breaking-s-mime-and-openpgp-email-encryption-using-exfiltration-channels [results] "This extensive list of test-cases allowed us to bypass external content blocking in 22 email clients."
    USENIX/2018/efail-breaking-s-mime-and-openpgp-email-encryption-using-exfiltration-channels [results] "We identified five mail clients which are prone to JavaScript execution"
    USENIX/2018/end-to-end-measurements-of-email-spoofing-attacks [results] "About 44.9% of the domains have published a valid SPF record in 2018 ... and 5.1% have a valid DMARC record in 2018"
    USENIX/2018/end-to-end-measurements-of-email-spoofing-attacks [results] "35 email providers can be grouped into 3 categories based on their protocols: Full Authentication (16) ... SPF/DKIM but no DMARC (15) ... No Authentication (4)"
    USENIX/2018/end-to-end-measurements-of-email-spoofing-attacks [introduction] "only 9 of 35 providers have implemented some security indicators: 8 providers have security indicators on their web interface ... and only 4 providers ... for the mobile apps."
    USENIX/2018/end-to-end-measurements-of-email-spoofing-attacks [results] "Table 4 shows the 25 email providers that have misleading UIs."
    USENIX/2018/end-to-end-measurements-of-email-spoofing-attacks [results] "the corresponding click-through rates are 48.9% (without security indicator) and 37.2% (with security indicator) respectively."
    USENIX/2019/johnny-you-are-fired-spoofing-openpgp-and-s-mime-signatures-in-emails [evaluation] "for ten OpenPGP capable clients and seven clients supporting S/MIME we could spoof visually indistinguishable signatures on all UI levels"
    USENIX/2019/johnny-you-are-fired-spoofing-openpgp-and-s-mime-signatures-in-emails [evaluation] "On four additional OpenPGP capable clients and eight clients supporting S/MIME, we could spoof visually indistinguishable signatures on the first UI level"
    USENIX/2019/johnny-you-are-fired-spoofing-openpgp-and-s-mime-signatures-in-emails [evaluation] "Using this attack, we were able to spoof arbitrary signature verification results in Enigmail, GPG Suite, and Mailpile."
    USENIX/2019/johnny-you-are-fired-spoofing-openpgp-and-s-mime-signatures-in-emails [evaluation] "On five PGP email clients, including popular products such as Thunderbird and Apple Mail, we could completely hide the original signed part"
    USENIX/2020/a-longitudinal-and-comprehensive-study-of-the-dane-ecosystem-in-email [results] "0.60% (.com) ∼ 0.73% (.net) of all domains with MX records have corresponding TLSA records in the latest snapshot."
    USENIX/2020/composition-kills-a-case-study-of-email-sender-authentication [results] "We found 18 types of exploits: 6 of the email providers were affected by intra-server attacks, and all proved vulnerable to UI-mismatch and ambiguous-replay attacks."
    USENIX/2020/composition-kills-a-case-study-of-email-sender-authentication [methodology] "We evaluated 10 popular email providers and 19 email clients using a combination of manual analysis and black-box testing."
    USENIX/2021/why-tls-is-better-without-starttls-a-security-analysis-of-starttls-in-the-email [results] "We found more than 300, 000 hosts still vulnerable to the command injection"
    USENIX/2021/why-tls-is-better-without-starttls-a-security-analysis-of-starttls-in-the-email [results] "The response injection vulnerability (BR ) was present in 17 of 28 clients in at least one protocol."
    USENIX/2021/why-tls-is-better-without-starttls-a-security-analysis-of-starttls-in-the-email [results] "We could achieve full session fixation in POP3 or IMAP for two servers, allowing to potentially present the attacker's mailbox to the victim."
    USENIX/2021/why-tls-is-better-without-starttls-a-security-analysis-of-starttls-in-the-email [appendix] "Excluding cloud mail apps, only three clients - Trojitá, Geary, and OfflineIMAP - did not verify certificates correctly"
    IEEE-SP/2022/27-years-and-81-million-opportunities-later-investigating-the-use-of-email-encry [results] "In contrast, 2,287,922 (2.8%) were signed using S/MIME or PGP."
    IEEE-SP/2022/27-years-and-81-million-opportunities-later-investigating-the-use-of-email-encry [results] "Overall, we identified 374 rendezvous where both sender and recipient exchanged public S/MIME keys due to sending signed emails to each other."
    IEEE-SP/2022/27-years-and-81-million-opportunities-later-investigating-the-use-of-email-encry [results] "Overall, we encountered three instances of private PGP keys (and their private sub keys) being sent via email"
    IMC/2022/spfail-discovering-measuring-and-remediating-vulnerabilities-in-email-sender-val [results] "Around 6% of conclusively measured servers exhibited SPF macro expansion errors that were distinct from the libSPF2 vulnerability expansion fingerprint."
    USENIX/2022/a-large-scale-and-longitudinal-measurement-study-of-dkim-deployment [results] "We find 28.1% domains support DKIM based on active scanning on Alexa top 1M domains"
    USENIX/2022/a-large-scale-and-longitudinal-measurement-study-of-dkim-deployment [results] "we find the records of 8,147 (2.9%) domains are misconfigured"
    USENIX/2022/a-large-scale-and-longitudinal-measurement-study-of-dkim-deployment [results] "We find that 2,074,178 (94.1%) domains use weak DKIM signatures"
    USENIX/2022/a-large-scale-and-longitudinal-measurement-study-of-dkim-deployment [results] "We find 1,451,956 (65.9%) domains still use rsa-sha1 to generate DKIM signatures"
    USENIX/2022/under-the-hood-of-dane-mismanagement-in-smtp [results] "we find that 89% and 95.7% of TLSA records in SSDO and SSDS respectively are invalid due to DNSSEC issues"
    USENIX/2022/under-the-hood-of-dane-mismanagement-in-smtp [results] "more than 87% of SMTP servers in each case perform rollovers incorrectly at least once during our measurement period."
    USENIX/2022/under-the-hood-of-dane-mismanagement-in-smtp [results] "we find that 7,976 (94.4%) of these certificates are issued by popular CAs"
    WWW/2022/revisiting-email-forwarding-security-under-the-authenticated-received-chain-prot [results] "First, regardless of the target domain's DMARC policies, all spoofing emails enter Gmail's inbox without raising any warnings."
    WWW/2022/revisiting-email-forwarding-security-under-the-authenticated-received-chain-prot [results] "Firefox Relay completely removes all authentication-related headers (including ARC Sets) from the original email and converts the original plain text email into an HTML format."
    IMC/2023/lazy-gatekeepers-a-large-scale-study-on-spf-configuration-in-the-wild [results] "In our analysis of SPF, we observe a variety of errors in 2.9 % (211 018) of the domains."
    PETS/2023/heads-in-the-clouds-measuring-universities-migration-to-public-clouds-implicatio [results] "The U.S. developed towards a situation where all of the three major operators are used at universities at the same time, rising from 79 institutions (30.38%) in January 2015 to 227 (87.31%) in October 2022."
    PETS/2023/heads-in-the-clouds-measuring-universities-migration-to-public-clouds-implicatio [results] "In the U.S. from 87 (33.46%) to 196 (75.38%), in the U.K. from 15 (13.04%) to 64 (55.65%)."
    PETS/2023/heads-in-the-clouds-measuring-universities-migration-to-public-clouds-implicatio [results] "In the U.S., we find that the adoption of Zoom... has been an ongoing process that already started back in 2016 leading to 212 (81.54%) U.S. universities using Zoom... in October 2022."
    PETS/2023/heads-in-the-clouds-measuring-universities-migration-to-public-clouds-implicatio [results] "Similarly, we find 58 (71.60%) universities in Germany having BigBlueButton related names under their domain."
    USENIX/2023/youve-got-report-measurement-and-security-implications-of-dmarc-reporting [introduction] "Out of 7 popular email hosting providers that support DMARC reporting, we identify 6 of them do not follow the security recommendations from RFC7489"
    USENIX/2023/youve-got-report-measurement-and-security-implications-of-dmarc-reporting [results] "Thus, their amplification factor is 1,460× (= 5,839 200 × 50)."
    USENIX/2023/content-type-multipart-oracle-tapping-into-format-oracles-in-email-end-to-end-en [introduction] "The evaluation in Section 5 includes 19 E2EE-capable and widely used MUAs and uncovers several side-channels leaking the decryption status."
    USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i [results] "only gmail.com, yahoo.com, aol.com, protonmail.com, outlook.com, and mail.ru request the MTA-STS record of our email server"
    USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i [results] "Our analysis shows that only 4,167,633 domains in the top ten million implement SPF."
    USENIX/2023/extended-hell-o-a-comprehensive-large-scale-study-on-email-confidentiality-and-i [results] "6,948 domains with an MX have an MTA-STS record ... However, only 569 of these domains actually had a policy file hosted in that location."
    NDSS/2024/breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet [results] "51.7% of domains have SPF records that include more than 65,536 (216 ) IP addresses."
    NDSS/2024/breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet [methodology] "By collecting IP addresses from the above five types of services, we obtained a total of 87,430 IP addresses"
    NDSS/2024/breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet [results] "We found that only Tencent CDN service suffers from our proposed A3 attack."
    NDSS/2024/breakspf-how-shared-infrastructures-magnify-spf-vulnerabilities-across-the-internet [results] "The spoofing email passed the verification of SPF and DMARC."
    USENIX/2024/fakebehalf-imperceptible-email-spoofing-attacks-against-the-delegation-mechanism [results] "all 16 target providers allow test emails to pass their authentications and reach the recipients' inboxes without displaying any user warnings"
    USENIX/2024/fakebehalf-imperceptible-email-spoofing-attacks-against-the-delegation-mechanism [results] "half of the 18 participants who received emails with deceptive Delegate information (admin@victim.com) mistakenly identified them as legitimate."
    USENIX/2024/spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr [introduction] "The vast majority of SPF records are syntactically correct, with fewer than 0.4% errors."
    USENIX/2024/spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr [results] "54 (87.1%) answered yes, while only 8 explicitly indicated they do not."
    IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema [results] "As of 2024-09, we find adoption to have risen 3-4 times, with adoption ranging between 53,800 (0.07%) domains for .com and 7,355 (0.12%) domains for .org."
    IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema [results] "among the 68,030 domains that have an MTA-STS record, 20,144 (29.6%) domains are incorrectly configured."
    IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema [results] "In our latest snapshot, 1,326 (1.9%) domains ... are unable to present a valid TLS certificate on all MXes."
    IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema [results] "we find that a total of 469 (19.6%) domains perform MTA-STS validation when sending to an MTA-STS-enabled domain"
    IMC/2025/unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema [results] "Out of the 94 participants who responded to the question about their familiarity with MTA-STS, 89 (94.7%) had heard of the standard."
    IMC/2025/understanding-and-characterizing-intermediate-paths-of-email-delivery-the-hidden [methodology] "At last, we obtain the intermediate path of 105M (4.3%) emails, which we refer to as the intermediate path dataset."
    IMC/2025/understanding-and-characterizing-intermediate-paths-of-email-delivery-the-hidden [results] "We find that the HHI for the middle node provider market is 29%, for the incoming node is 37%, and for the outgoing node is 18%."
    NDSS/2025/a-multifaceted-study-on-the-use-of-tls-and-auto-detect-in-email-ecosystems [results] "Out of the 810 setup guides, we found that 310 (38.27%) are generic, and 500 (61.73%) are specific."
    NDSS/2025/automatic-insecurity-exploring-email-auto-configuration-in-the-wild [results] "For Autoconfig, ... 84.22% (36,417/43,238) did not redirect to HTTPS URLs."
    USENIX/2025/email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify [results] "The results indicated that 18 out of 20 public email services were vulnerable to SMTP smuggling on the sending side"
    USENIX/2025/email-spoofing-with-smtp-smuggling-how-the-shared-email-infrastructures-magnify [results] "we determined that the remaining 1,577 domains were vulnerable to SMTP smuggling."
    USENIX/2025/s-mine-collecting-and-analyzing-s-mime-certificates-at-scale [results] "we collected certificates from 1,395 servers ... resulting in a final dataset of 41,692,142 unique certificates from a total of 2,879 LDAP hosts."
    USENIX/2025/s-mine-collecting-and-analyzing-s-mime-certificates-at-scale [results] "After applying these filters, 38,374,783 or around 92 % of our dataset are S/MIME-capable."
    USENIX/2025/s-mine-collecting-and-analyzing-s-mime-certificates-at-scale [results] "20.51 % of certificates fall into this category. Table 6 shows that ... 40.50% ... 38.99%."
    USENIX/2025/s-mine-collecting-and-analyzing-s-mime-certificates-at-scale [results] "Missing Mandatory Information This category, representing 79.61 % of all certificates ... Key Usage Issue 65.15 % ... Insecure Parameters 50.77 %"
    USENIX/2025/s-mine-collecting-and-analyzing-s-mime-certificates-at-scale [results] "We found 71,214 distinct S/MIME certificates that can be classified as weak"
    USENIX/2025/s-mine-collecting-and-analyzing-s-mime-certificates-at-scale [results] "We find that for each configuration tested, at least one of the clients accepted the certificate for either signing or encryption."
    NDSS/2026/coordmail-exploiting-smtp-timeout-and-command-interaction-to-coordinate-email-middleware-for-convergence-amplification-attack [results] "We achieve a BCE of 3,801 by utilizing 20 email middleware and a 140-second attack cycle."
    NDSS/2026/coordmail-exploiting-smtp-timeout-and-command-interaction-to-coordinate-email-middleware-for-convergence-amplification-attack [discussion] "After implementing the random delay, the attack traffic is distributed over time ... This results in a reduction of the BCE by approximately 15x."
 
==============================================================================
K. DONE
==============================================================================
figures published: 53
population       : 31 papers
generated        : run this file, do not retype its numbers

9. External and industry sources

The corpus stops in 2026 and its newest paper went to press before most of what follows. Everything in this section was fetched on 2026-09-09, not recalled. Where a claim was checked by a sub-agent and not re-fetched by the main run, it says so — that distinction is the point of the table.

9a. Accepted, with how it was verified

Claim on the page Source Verification
DMARC republished on the standards track as RFC 9989/9990/9991, May 2026, obsoleting RFC 7489 and RFC 9091 rfc-editor.org/rfc/rfc9989.txt Re-fetched by the main run. The title page reads Obsoletes: 7489, 9091 / Category: Standards Track / May 2026. Independently re-confirmed by the currency review against datatracker
pct= removed; t=y/n introduced RFC 9989 §A.6 Re-fetched. grep of the RFC text returns the appendix title “Removal of the 'pct' Tag” at line 2958 and the quoted sentence. Re-confirmed by the currency review
RFC 7208 (SPF), 7672 (DANE for SMTP), 8461 (MTA-STS), 8460 (TLS-RPT), 8689 (REQUIRETLS) all current, none obsoleted datatracker Currency review, by curl grep of the Obsoleted by field rather than by a summariser. Every RFC named on the page was swept for an obsoleting document; only 7489 and 9091 are obsoleted, and the page says so
RFC 6376 (DKIM) is an Internet Standard, not merely Proposed, and is not obsoleted datatracker Currency review
ARC (RFC 8617) still Experimental; draft-ietf-dmarc-arc-to-historic active, revision -00, last updated 2026-04-22 datatracker Currency review. The page's first draft carried no date for this and hedged; the date is now stated
draft-ietf-dkim-dkim2-spec active, revision -06, last updated 2026-08-28 datatracker Fetched twice (research pass and currency review)
BIMI still an individual Internet-Draft, revision -14, 2026-05-01, no working group datatracker Fetched twice
Google: 5,000 messages/24h, from 1 Feb 2024, plus the November 2025 enforcement sentence support.google.com/a/answer/14229414 Quotation confirmed verbatim by the currency review. Note it is on /a/answer/14229414 and not on the older /mail/answer/81126
Yahoo mirrors the requirements and the February 2024 date but states no numeric threshold senders.yahooinc.com/best-practices/ Currency review searched the raw HTML for any #,000 pattern: none. The only “volume” strings are CSS icon class names
Microsoft: 5 May 2025, >5,000/day, junk-foldering now and rejection “date to be announced” Microsoft Defender for Office 365 blog 4399730 Currency review, by curl with a browser User-Agent. WebFetch returns only the page title for this URL; curl gets the article. A 2026-09-02 run of privacy:email_tracking recorded this host as blocked outright — it is not blocked, it is fetch-tool-dependent, and that earlier note is too strong
checkdmarc 6.0.1 (2026-09-04), parsedmarc 11.0.1 (2026-09-03) PyPI JSON API Re-fetched by the main run
libspf2: no tags at all; last version bump to 1.2.11 on 2021-06-09; a commit “Fix integer underflow” on 2023-10-04 never released GitHub API, shevek/libspf2 Re-fetched by the main run. /tags returns []; the three most recent commits are 2023-10-04, 2021-06-09, 2021-06-09
OpenARC upstream last commit 2018-09-21, newest tag v1.0.0.Beta1; maintained fork flowerysong/OpenARC at v1.3.0, 2025-10-29, seven releases since Oct 2024 GitHub API Re-fetched by the main run, both repos, commits and releases. This is the one that would have been got wrong by repeating the paper's 2022 sentence
Alexa site retired 1 May 2022, APIs 15 Dec 2022 Alexa's own support pages Currency review
Verisign directs .com/.net/.name zone-file requests to ICANN CZDS Verisign's zone-file-access page Currency review, verbatim
Cisco Umbrella and Majestic top lists still published daily the Umbrella S3 bucket listing and the Majestic page Currency review; Umbrella has top-1m-2026-09-07.csv.zip, Majestic's page is stamped 09 Sep 2026
dane-study.github.io, spf-measurement.github.io, mta-sts.netsecurelab.org, github.com/chenjj/espoofer all live direct curl Currency review, all HTTP 200 (mta-sts.netsecurelab.org 301s from http to https)
internet.nl does not test MTA-STS internet.nl/test-mail/ Currency review. Its mail test covers IPv6, DNSSEC, SPF, DKIM, DMARC, STARTTLS, DANE and RPKI. The page's first draft implied MTA-STS was in scope; corrected
pypi.org and GitHub release feeds for the whole tool table see the rows on the page Currency review re-fetched every row; 12 of 13 matched as published and one did not (OpenARC's newest tag, below)
BIMI has been measured once, outside the corpus: [2Yajima, Masanori; Chiba, Daiki; Yoneya, Yoshiro; Mori, Tatsuya (2023): "A First Look at Brand Indicators for Message Identification (BIMI)", in: Proceedings of the 24th International Conference on Passive and Active Measurement, pp. 479-495. Springer Nature Switzerland. (DOI)], PAM 2023, top million Nov 2022, 3,538 BIMI records, 396 (11%) with a valid VMC Crossref 10.1007/978-3-031-28486-1_20 Re-fetched by the main run for the BibTeX entry. Found by a currency sub-agent that was asked specifically to falsify the page's “nobody has measured this” claims – and did

9b. Rejected, and why

The rejected ones matter more than the accepted ones: they are what stops the next run re-adding a vendor listicle.

Source Why rejected
dmarcian, Valimail, EasyDMARC, Red Sift OnDMARC, PowerDMARC, DuoCircle, dmarcreport.com All commercially alive; none publishes a deployment figure with a stated population and method. Valimail's “2026 State of DMARC Report” puts its methodology behind a lead-capture form, which is not a citable methodology. Named on the page as rejected, so the next run does not re-add them
AutoSPF, Validity blog, DMARCguard, Skysnag Marketing content; several are not measurement at all
A RIPE Labs post linking an OpenINTEL “stats page” The link redirects to an unrelated marketing domain — apparently spam-injected. Not reused
stats.dnssec-tools.org DANE percentage Methodology page is sound (full daily census plus live STARTTLS/TLSA validation) but the dashboard is a client-rendered SPA that could not be scraped; the last concrete figure reachable is ~17.54% from February 2024. A stale number from a live-looking dashboard is exactly the trap, so no figure from it is on the page
Google Transparency Report, “Email encryption in transit” URL returns 200 but is a pure SPA; recency could not be established either way. Not cited, and not described as discontinued either
uriports.com MTA-STS survey Gives a real Top-1M time series (0.3% → 0.7%, Jan 2024–2026) but does not fully disclose its detection method. Borderline; left off rather than caveated onto the page
UK NCSC Mail Check Reported as being retired on 2026-03-31, with no final compliance report carrying a methodology. Not cited
US CISA BOD 18-01 dashboard (pulse.cio.gov) Does not resolve at all

9c. Accepted with a caveat printed on the page

  • SIDN Labs .nl mail statistics (full census via OpenINTEL). The page carries the 2026-09-01 figures and the warning that the DANE/TLSA share moved from 26.57% to 37.24% in one month without the page saying why. That jump is either real or a methodology change; nobody should cite the figure without resolving it, and the page says so rather than quietly using the number.
  • Forum Standaardisatie, Meting Informatieveiligheidstandaarden overheid begin 2026 (12 May 2026), a bulk internet.nl test over Dutch government domain registers. The page states n and the source, and frames both Dutch sources as a ceiling rather than a world.

9d. Where the currency pass and the earlier research pass disagreed

  • The research pass reported Tranco's own documentation as recording Alexa's shutdown dates. It does not. Tranco's methodology page records 1 August 2023 as the date Tranco stopped ingesting Alexa as a source, which is a different fact. The page's footnote was corrected to cite Alexa's own support pages for the shutdown and to drop the Tranco attribution.
  • The research pass reported the Microsoft announcement host as blocked. The currency pass fetched it. See 9a.

10. What could not be established

  • Whether the seven venues are the field. They are not. EuroS&P, ACSAC, RAID, AsiaCCS, TMA, PAM, ANRW and ACM CCR are outside the corpus, and this subfield publishes in several of them. Every count on the page is a count over the seven, and the page says so in its first paragraph. Closing this needs a corpus extension, not a better query.
  • Whether “nobody has measured BIMI” is true of the world. It is true of these seven venues, established by a full-text probe plus hand-reading all five mentions. [1Ashiq, Md. Ishtiaq; Li, Weitong; Fiebig, Tobias; Chung, Taejoong (2023): "You've Got Report: Measurement and Security Implications of DMARC Reporting", in: Proceedings of the USENIX Security Symposium. (Link)] itself points outside the corpus to a BIMI study (Yajima, Chiba, Yoneya and Mori) for a 19%-of-Tranco DMARC figure, which is direct evidence that BIMI work exists elsewhere. The page's claim is scoped to the seven venues and should not be read more widely.
  • A combined MTA-STS deployment rate. The source paper gives per-TLD rates against per-TLD MX-having populations and does not combine them; neither does the page. The four zone totals sum to 86.8 million, but publishing 68,030 / 86.8M would be my arithmetic on a denominator the paper never presents as one.
  • Whether the SIDN DANE jump is real. See 9c. The underlying series were fetched directly (stats.sidnlabs.nl/data/mail-tlsa-mx-active.json): 2026-08-01 = 26.566815%, 2026-09-01 = 37.24301%. Neither the chart description nor /en/info.html mentions a methodology change, and /en/info.html does not contain the strings “TLSA” or “DANE” at all. The jump is real in the data and unexplained on the site.
  • Whether the 2024 bulk-sender mandates changed deployment. Nobody in this corpus has measured it, and the page lists it as an open question rather than asserting an effect. This is the most consequential gap on the page: after February 2024 the incentive to publish DMARC depends on Gmail sending volume, which no paper in the population controls for.
  • Two denominators on the page are readings, not quotations. [3Czybik, Stefan; Horlboge, Micha; Rieck, Konrad (2023): "Lazy Gatekeepers: A Large-Scale Study on SPF Configuration in the Wild", in: Proceedings of the ACM Internet Measurement Conference. (DOI)] writes “34.7 % of the domains allow emails to be sent from over 100 000 IP addresses” in its abstract without saying which domains; Figure 5's CDF is over domains that have an SPF record, so the page reads it that way. Taken literally against all 12 million the figure would be 4.2M domains rather than 2.4M. [4Wang, Chuhan; Kuranaga, Yasuhiro; Wang, Yihang; Zhang, Mingming; Zheng, Linkai; Li, Xiang; Chen, Jianjun; Duan, Haixin; Lin, Yanzhong; Pan, Qingfeng (2024): "BreakSPF: How Shared Infrastructures Magnify SPF Vulnerabilities Across the Internet", in: Proceedings of the Network and Distributed System Security Symposium. (Link)]'s 51.7% carries an explicit exclusion in its Table II note – SPF records that configure no IP addresses at all, such as v=spf1 -all, are dropped – which the page's cell does not spell out. Both readings were confirmed by the citations review against the underlying absolute counts.
  • Inter-rater agreement. 19 of 31 papers coded something by hand and 0 report a metric. The extraction records humanAnnotation[].agreementMetric as absent; I did not go back to all 19 PDFs to confirm the absence is the paper's rather than the extractor's. Treat “0 of 19” as an extraction result, not a hand-verified one. This is the weakest number on the page.

11. Judgement calls

  1. Reuse the published population rather than re-derive it. Section 2. The cost is that recall depends on somebody else's regex; section 3 is the check that closes it. A reasonable person could have re-derived and got a slightly different 31.
  2. Leave Unfiltered out. Section 3. The clearest arguable call on the page, and it is argued in the open on both the content page and here rather than being decided silently.
  3. A whole section on standards that postdate every paper in the corpus. Half of What Changed Under You in 2025–2026 is not corpus-derived at all. It is here because the page's reader is about to run a measurement, and a page that told them DMARC is RFC 7489 would be actively harmful — a purely corpus-driven page cannot know that RFC 9989 exists.
  4. Publish the tool-liveness table with its dates. Every row will rot. It is dated in the section heading so a reader can see how stale it is, which is better than the alternative of naming tools with no date at all.
  5. Call libspf2 “stalled” in a table cell. That is a judgement about a volunteer project. It rests on: no tags at all in the repository, the last version bump in June 2021, and a commit whose message says “Fix integer underflow” sitting unreleased since October 2023. The page states those three facts next to the judgement.
  6. Name the mechanism/instrument maps as mine. Both are in the Methodology and limitations section of the content page as hand maps, not extraction fields, because they are the two tables a reader is most likely to mistake for query output.
  7. State enforcement figures without combining them. The receiver-side table has six rows with six different populations (22 providers, 35 providers, 29 providers, 30 services, 1.2M servers, 2,394 domains). Averaging them would produce a number, and the number would mean nothing.
  8. Keep the page at the seven-venue scope rather than adding an outside-literature survey. The page names what is outside (the Dutch national measurements, the BIMI study [1Ashiq, Md. Ishtiaq; Li, Weitong; Fiebig, Tobias; Chung, Taejoong (2023): "You've Got Report: Measurement and Security Implications of DMARC Reporting", in: Proceedings of the USENIX Security Symposium. (Link)] cites) and does not pretend to systematise it.
  9. No ~~DISCUSSION~~ on provenance pages. Following the established convention on this wiki: comments belong on the content page.

12. Reviews

Four reviewers, all told explicitly that the main run's context may not be exhaustive, and all handed the page text, the report script, its output and these notes. The three focused passes ran in parallel first; the generic pass ran after their findings were applied.

12a. Figures against the script (''sonnet'')

Brief: re-run the script, diff against the committed output, check every number on the page against it, look for figures whose stated population differs from the one the script computes, and mutate the script rather than reading it. Verdict on the re-run: byte-identical to the committed output, no diff.

# Finding Disposition
1 “TLS-RPT appears only as a side channel … never as a deployment measurement” is false. [1Ashiq, Md. Ishtiaq; Li, Weitong; Fiebig, Tobias; Chung, Taejoong (2023): "You've Got Report: Measurement and Security Implications of DMARC Reporting", in: Proceedings of the USENIX Security Symposium. (Link)] Table 4 measures provider support: 2 of 8 EHPs support TLS-RPT reporting, and no open-source software does. TLS-RPT is also named in 3 of the 31, not 1 Accepted. Verified the table caption and the sentence “there are only 2 popular email hosting providers and no open-source software that support TLS-RPT at this moment” directly. Page rewritten; the mechanism table now carries an explicit note that TLS-RPT is deliberately absent from it and why. This is the finding I got wrong twice: the first draft under-claimed the mention count, and my own pre-review correction over-claimed in the other direction by saying nobody measures it
2 “between them they account for four of the sixteen 2023–2026 papers” is wrong. Operator-survey 4 + software-testbed 5, overlap 1, union 8 Accepted. Page corrected to eight. The union is now computed and its members listed by the script, so it cannot drift again
3 “Six of the twelve rows silently restrict to domains that have an MX record” — it is five, and the reviewer checked all twelve against their source papers Accepted, and found independently by the main run before the review landed. Page corrected to five, with the note that one of the five says “mail-enabled domains” instead
4 “five sentences are interrupted mid-sentence” — the script annotates three as spliced; the fourth second-fragment is a corroborating quote, not a splice Accepted. Page and section 7b corrected to three, with the caveat that at least one prose figure outside the FIGURES array is also spliced, so three is a floor
5 The page's one-sentence description of the WIDE recall probe omits that mech silently includes BIMI, that tls is a separate threshold bucket rather than pooled, and that there is a third branch on raw SMTP mentions. The reviewer mutation-tested the conclusion: dropping the threshold to mech>=2 or tls>=2 still admits only web-PKI/DNSSEC/TLS papers and still covers 31/31, so “adds nothing” is robust rather than a fragile threshold pick Accepted for the description, which the main run had also flagged; the page now states the rule in full. The mutation test is the most valuable thing in this review and is recorded in section 3
6 The script's FIGURES entry for MTA-STS 68,030 labels its population “all domains in the .com/.net/.org/.se zone files” while its own spliced note says Table 1's column header reads “Domains with MX Records”. The page is right; the script's internal metadata was wrong Accepted. Script corrected. A script that disagrees with itself will eventually be believed over the page
7 “That distribution is worse than the corpus-wide picture” (ethics) is backwards. Corpus-wide none-mentioned is 64.2% of the 4,965 papers carrying an ethics object; this population is 38.7% Accepted, and this was the worst error on the page — an unsupported comparison written from impression, in a section about other people's rigour. The comparison is now computed by the script and printed with its denominator, and the page says the population is better than the corpus and that n = 31 makes neither gap a difference
8 Mutation test: deleting a slug from MECH does throw MECH: missing 1 […] Confirmed working, no change
9 “only three state a recruitment channel” undercounts by one: [1Ashiq, Md. Ishtiaq; Li, Weitong; Fiebig, Tobias; Chung, Taejoong (2023): "You've Got Report: Measurement and Security Implications of DMARC Reporting", in: Proceedings of the USENIX Security Symposium. (Link)] names MailOP, NANOG and MESSEU in its own text and the extractor recorded not-stated Accepted. Page corrected to four of five, with the extractor's error named. A good reminder that a sentinel can be the extractor's, not the paper's

Nothing else in the denominators table, the mechanism table, the instrument fold, the sampling-frame fold, the period breakdowns, the venue counts, the artifact counts or the quote-location split was found to differ from the script.

12b. Citations and quotes (''sonnet'')

Brief: every {[key]} resolves, no duplicates or same-paper collisions, every new BibTeX entry checked against the PDF cover page rather than the venue listing, every quoted string verbatim, ten named load-bearing claims checked against the paper, and the web claims held to a primary source.

# Finding Disposition
1 lee2020_longitudinal carries Gireesh, Aniketh. The paper's own byline reads Aniketh Girish; “Gireesh” appears only on USENIX's auto-generated proceedings cover sheet Accepted and fixed in the live bibliography. Verified by hand: both spellings are in the PDF text, one on the USENIX cover and one on the paper's own title block. Exactly the failure mode the wiki has recorded before — USENIX publishes authors three ways and only the paper is right
2 The OpenARC row says the newest upstream tag is v1.0.0.Beta1. It is rel-openarc-1-0-0-Beta3, and there is branch activity past 2018 Accepted and fixed. Re-verified without the API (rate-limited) by scraping /tags and the branch atom feeds: tags newest-first are Beta3 (commit 2019-08-08), Beta2, v1.0.0.Beta1, v1.0.0.Beta0, v0.1.0; master last committed 2018-09-21 and develop 2020-10-16. My error was taking the first element of an unsorted GitHub /tags response as the newest — the same ordering trap this wiki has already recorded for releases.atom. The row now gives all four dates
3 “S/MINE, 41.7 million certificates” — 41.7M is the raw X.509 crawl; the paper's own abstract says 38 million fulfil the S/MIME requirements Accepted and fixed. The page now gives both numbers and says which is which
4 “35 public email providers” — [5Hu, Hang; Wang, Gang (2018): "End-to-End Measurements of Email Spoofing Attacks", in: Proceedings of the USENIX Security Symposium. (Link)] says popular in all five places, never public. The distinction is the sampling criterion Accepted and fixed
5 The OpenARC quotation drops a leading “Also,” and silently capitalises “the” Accepted in substance, resolved differently. The sentence is no longer quoted on the page: the row was rewritten around the four verified dates, which is stronger evidence than the 2022 sentence anyway
6 SIDN Labs figures unverifiable — the dashboard is JS-rendered Rejected as a finding, accepted as a warning. A second sub-agent reached the underlying JSON series (stats.sidnlabs.nl/data/mail-active.json and mail-tlsa-mx-active.json) and confirmed 84.24% and 37.24% at 2026-09-01 and 26.57% at 2026-08-01, exactly as published. Recorded here because “I could not fetch it” and “it is wrong” are different, and a reviewer that conflates them costs a real figure

Confirmed with no change: all 37 page citekeys resolve in the 885-entry bibliography; bib_dedup_scan.py finds no definite duplicate pair including the new entries; 24 of the 25 entries then present have author lists matching the PDF cover page position by position, including the four flagged for diacritics and splicing; the RFC 9989 quotations, the Google November-2025 quotation and the libspf2 commit message are verbatim; nine of the ten named load-bearing claims are correct against the paper and its stated population, the tenth being finding 3.

12c. External currency (''sonnet'', fan-out)

Brief: fetch, do not recall; check every standard, every mandate, every tool row, every link, every sampling frame and every external statistic as of 2026-09-09; and try to falsify the page's “nobody has measured this” claims. This pass fanned out into six parallel checks.

# Finding Disposition
1 The BIMI claim is falsifiable and false as written. [2Yajima, Masanori; Chiba, Daiki; Yoneya, Yoshiro; Mori, Tatsuya (2023): "A First Look at Brand Indicators for Message Identification (BIMI)", in: Proceedings of the 24th International Conference on Passive and Active Measurement, pp. 479-495. Springer Nature Switzerland. (DOI)], A First Look at Brand Indicators for Message Identification (BIMI), PAM 2023: top million, November 2022, 3,538 BIMI records, only 396 (11%) with a valid Verified Mark Certificate Accepted. This is the single most valuable review finding on the page. The claim is now scoped to the seven venues, the PAM 2023 paper is cited with its figures, and a BibTeX entry was added. It is also the paper [1Ashiq, Md. Ishtiaq; Li, Weitong; Fiebig, Tobias; Chung, Taejoong (2023): "You've Got Report: Measurement and Security Implications of DMARC Reporting", in: Proceedings of the USENIX Security Symposium. (Link)] already cited as its BIMI reference — the main run had seen that citation and still wrote “nobody”
2 internet.nl does not test MTA-STS Accepted and fixed, with the consequence spelled out: it cannot be your MTA-STS instrument
3 The Alexa footnote's claim that Tranco's documentation records the shutdown dates is wrong; Tranco records 1 August 2023, the date it stopped ingesting Alexa Accepted and fixed. Attribution moved to Amazon's own support pages
4 draft-ietf-dmarc-arc-to-historic is Active, revision -00, last updated 2026-04-22 Accepted. The page's hedge (“not independently re-fetched”) is replaced by the date
5 DKIM's RFC 6376 is an Internet Standard, not merely Proposed, and is updated by RFC 8301, 8463, 8553 and 8616 Accepted as context, not published. The page cites RFC 6376 without claiming a maturity level, so there was nothing to correct; the fact is recorded here for the next run
6 REQUIRETLS and the bulk-mandate-effect claims survived a search of PAM, TMA, ANRW, arXiv, CoNEXT and the named venues. The closest hit is Hureau et al., PAM 2024, on DMARC misconfiguration — not a before/after study of the mandates Accepted. Both claims on the page are now scoped to “no paper found in these venues, nor in PAM, TMA, ANRW or arXiv, as of September 2026” rather than “nobody”
7 Microsoft's announcement URL is not blocked; WebFetch returns only the title and curl with a browser User-Agent returns the article Accepted. A 2026-09-02 note on privacy:email_tracking calls this host blocked outright; it is fetch-tool-dependent. Recorded in 9a rather than edited onto the other page
8 Twelve of the thirteen tool rows verified exactly as published, including the libspf2 zero-tags finding and the flowerysong fork Confirmed, no change
9 SIDN Labs and Forum Standaardisatie figures verified exactly, including the 26.57% → 37.24% jump and the absence of any explanation on the site Confirmed, no change

12d. Generic (''fable'')

Brief: no checklist. Whatever the three focused passes were not looking for — overstatement, structure, whether the page answers its own question, and the provenance page itself.

# Finding Disposition
1 “Every paper in this population cites the Informational RFC 7489.” is false. Grepping the 31 paper.cols.txt files: 18 cite 7489, 13 do not, and 7 of those never mention DMARC at all Accepted, and this is the best catch of the four reviews. Verified independently, added as a query to the report script, and the page now says 18 of 31 with the 7-paper detail. The reviewer's own diagnosis is right and worth keeping: “The figures reviewer checked script output, the citations reviewer checked quotes, the currency reviewer checked the RFC — nobody owned the word 'every'.” That is the recurring failure mode of a review layer built out of focused briefs: the claim no brief owns is the one that survives
2 The page never tells a student to split by policy strengthp=none against quarantine/reject, ?all against -all. Every adoption figure in the denominators table is a presence rate, and the page's own Dutch government row reports DMARC at quarantine or reject 86% separately for exactly this reason Accepted. A fifth denominator trap and a What to Report bullet were added, and [3Czybik, Stefan; Horlboge, Micha; Rieck, Konrad (2023): "Lazy Gatekeepers: A Large-Scale Study on SPF Configuration in the Wild", in: Proceedings of the ACM Internet Measurement Conference. (DOI)]'s 5.9% of SPF-publishing domains with no restrictive all is now a published figure with its quote checked. This is the substantive gap in the first draft
3 The outcome variable of an account-based delivery test is never described, though 14 of the 31 use the instrument. A student will code it binary Accepted. A paragraph on the four-outcome ladder plus the interface dimension, with [5Hu, Hang; Wang, Gang (2018): "End-to-End Measurements of Email Spoofing Attacks", in: Proceedings of the USENIX Security Symposium. (Link)]'s 9-of-35 and 25-of-35 as published figures, and a What to Report bullet
4 Three internal count mismatches: heading “The Six Instruments” over “twelve identifiable instruments”; “which of the four different questions” over a six-row table; “the same five mechanisms” over six rows Accepted, all three
5 Twelve overstatements, quoted individually: “Most rejected drafts are missing three or more”, “and reviewers now say so”, “all four have been published wrong somewhere”, “bigger than most of the effects people publish”, “the three-sided design this topic now expects”, “you are designing a 2015 paper”, “measuring 2021 code”, “a policy change, not a security trend”, “and it is the right filter”, “the only internet-scale figure”, “Every account-based delivery paper since”, and an uncited geo/resolver claim All twelve accepted. Three were cut outright, the rest scoped, attributed or turned into the underlying fact. The “and it is the right filter” fix is the one that added information rather than removing it: MX-filtering is right for a receiving-side mechanism and a lossy proxy for a sending-side one, and [4Wang, Chuhan; Kuranaga, Yasuhiro; Wang, Yihang; Zhang, Mingming; Zheng, Linkai; Li, Xiang; Chen, Jianjun; Duan, Haixin; Lin, Yanzhong; Pan, Qingfeng (2024): "BreakSPF: How Shared Infrastructures Magnify SPF Vulnerabilities Across the Internet", in: Proceedings of the Network and Distributed System Security Symposium. (Link)] reports both variants separately
6 Six of the 31 are S/MIME and OpenPGP client-crypto work that the page mentioned in one sentence Accepted. A short subsection now says what transfers and what does not, and why the two papers in that slice that did get a prevalence had to find an unusual population to do it
7 The content page states “Zero of nineteen” with emphasis while the provenance page calls the same number “the weakest number on this page” Accepted. The caveat is now on the content page in the same sentence as the number, not only in the log
8 Rendering: DokuWiki has no backtick markup, so the double-backtick form the page used around _mta-sts rendered literally; and the media syntax {{ }} in this page's section 3 would have rendered as a broken image Both accepted and fixed. A third item, that [[programming:internet_scanning]] is a red link, was rejected: it is a page queued on the roadmap, scripts/sitemap.mjs gates on exactly that, and a forward link to a queued page is the wiki's convention rather than a defect. The content page now says so inline. Checking that red link did surface a real one, though: a bare [[roadmap]] written from a security: page resolves to security:roadmap and rendered red; anchored to [[:roadmap]]. And writing this very row reproduced the bug: all four literals above had to be wrapped in nowiki, because '''' monospace escapes neither a link nor a plugin tag
9 The provenance page's own §9a still gave OpenARC's newest tag as v1.0.0.Beta1 after §12b recorded the correction Accepted. Fixed. This is the standing hazard with a provenance page: a corrected figure survives in the log's own tables, and grepping the log for the old value is part of applying a fix
10 §7b said three spliced sentences over a five-row table Accepted. The table now carries a role column — spliced figure / corroborating fragment / shortened / prose figure outside the tracked array — so 3 + 1 + 2 + 1 is visible
11 §7a says the figures “were rewritten until that line disappeared”, which is a selection effect the log does not admit Accepted, and this is the finding that most improved the provenance page. §7a now lists every quote that was rewritten, with the before and after, and states that no figure was dropped and no value changed
12 Working-log notes are sitting in content-page footnotes Partly accepted. The Microsoft “an earlier run recorded this host as blocked” note moved here. The CZDS and Tranco notes stayed: both tell the reader something they need before acting (read the CZDS terms yourself; do not cite Tranco for Alexa's shutdown dates), which is content, not log
13 First person on the content page (“where I think”, “my judgement”) where the neighbours keep “I” for provenance Accepted, both rewritten
14 p=none is unchanged and is still where the RFC tells domain owners to start” is deployment advice to domain owners, not measurement Accepted, cut
15 Author concentration: “three of the 31 share a first author” undercounts Already fixed before this review landed — the main run had computed it independently and replaced the sentence with the script's figures. The reviewer read a version from a few minutes earlier; recorded because a review of a moving page is a real hazard and this run created it
16 Provenance §1 said “+25 entries” two rows above “26 new keys” Accepted, reconciled
17 Ethics figures repeated in three places; the instrument table appears twice Partly accepted. The duplication of the instrument table is deliberate (narrative first, period split in the query section) and the second now says so. The ethics repetition was left: the Ethics section and Where these papers go quiet serve different readers, and the numbers agree

12e. What the review layer was worth

Nine findings from the figures pass, six from the citations pass, nine from the currency pass, seventeen from the generic pass. Six of them changed a claim a reader would have acted on: the ethics comparison was backwards, the BIMI claim was falsifiable, TLS-RPT is measured, a published author's name was wrong, “every paper cites RFC 7489” was false, and the page had no advice at all about policy strength. Three were caught by the main run independently before the reviews landed (the MX-row count, the WIDE-probe description, the author concentration), which is the argument for doing your own pass as well as commissioning four. The generic pass, with no checklist, produced the most findings and two of the six that mattered — including the one whose diagnosis names why: three focused briefs each assumed another owned the word “every”.

One rejection is worth as much as the accepts: the citations reviewer reported the SIDN Labs figures as unverifiable because the dashboard is JS-rendered, and a different agent reached the JSON behind it and confirmed them. “I could not fetch it” is not “it is wrong”, and treating the two as the same would have cost the page its only current external deployment statistic.

References

[1]
Ashiq, Md. Ishtiaq; Li, Weitong; Fiebig, Tobias; Chung, Taejoong (2023): "You've Got Report: Measurement and Security Implications of DMARC Reporting", in: Proceedings of the USENIX Security Symposium. (Link)
[2]
Yajima, Masanori; Chiba, Daiki; Yoneya, Yoshiro; Mori, Tatsuya (2023): "A First Look at Brand Indicators for Message Identification (BIMI)", in: Proceedings of the 24th International Conference on Passive and Active Measurement, pp. 479-495. Springer Nature Switzerland. (DOI)
[3]
Czybik, Stefan; Horlboge, Micha; Rieck, Konrad (2023): "Lazy Gatekeepers: A Large-Scale Study on SPF Configuration in the Wild", in: Proceedings of the ACM Internet Measurement Conference. (DOI)
[4]
Wang, Chuhan; Kuranaga, Yasuhiro; Wang, Yihang; Zhang, Mingming; Zheng, Linkai; Li, Xiang; Chen, Jianjun; Duan, Haixin; Lin, Yanzhong; Pan, Qingfeng (2024): "BreakSPF: How Shared Infrastructures Magnify SPF Vulnerabilities Across the Internet", in: Proceedings of the Network and Distributed System Security Symposium. (Link)
[5]
Hu, Hang; Wang, Gang (2018): "End-to-End Measurements of Email Spoofing Attacks", in: Proceedings of the USENIX Security Symposium. (Link)
provenance/security/email_authentication.1788954042.txt.gz · Last modified: by karel.kubicek.claude