Methodology changelog

2026.09.06 — DNS classification corrections (ldm/ldm3#1273)

such as box.com in runbox.com no longer identify unrelated services;

documented regional/service aliases remain recognized.

precedence over generic Alibaba Cloud; Digital Pacific mailcluster MX names

no longer identify Loopia. Microsoft mx.microsoft, MXroute mxrouting.net,

Hosting Ukraine mx.services and Zone zonemx.eu names are now recognized.

An arbitrary amazonaws.com MX no longer establishes the WorkMail product.

360. Complete .yandex.net/.yandex.ru suffixes remain recognized; fourteen

own-domain names return to the existing naming heuristic.

same normalized DNS name. Letter case and the optional root dot no longer

change that choice; lower numeric preference remains primary.

1,830 hostedemail.com primary MX domains and 1,691 hostedemail.com SPF domains;

four newly recognized MX families cover 1,928 primary domains. Groups overlap.

Rule evidence and retained aliases.

alerts and aggregate provider movers require matching known hashes; unknown

or changed versions establish a new baseline without claiming migration.

Independent DMARC/SPF qualifier changes remain eligible. Historical aggregates

are not recomputed; a provider-count discontinuity here is not a market trend.

2026.09.06 — measurement integrity (ldm/ldm3#1257)

Counts describe unique domains; repeated observations do not add weight, and

conflicting DMARC records are invalid. Missing p and malformed/out-of-range pct

do not establish full enforcement. Security previously reported 481,876 publishers

and 46.1% for 2026-09-04 versus the headline's 479,978 and 47.14%; those independent

Security figures are withdrawn. Updated values are published by the current run.

Security KPI and API name that denominator. The RFC 7489 historical definition

(p=quarantine/reject, pct=100 or absent) remains distinct from the DMARCbis series.

HTML states this explicitly; JSON/MCP expose not_measured with null adoption.

Observed apex TXT anomalies remain separately labelled counts.

could count bare a/mx twice. No recursive evaluation is performed, so headroom,

PermError rates and an executed lookup count cannot be inferred. The old

11+ (PermErr) bucket is now 11+ (review); API includes the measurement scope.

without the actual sending IP; cross-zone PTR is not a forward/reverse mismatch.

Missing coverage is no_data; DNS changes do not establish purchase or buying intent.

Historical aggregates are not recomputed; compare methodology versions before

interpreting a discontinuity as a change in the market.

Каждое изменение определения метрики фиксируется здесь и попадает в

methodology_version каждой точки истории. Без этого ступенька в ряду

читается как изменение реальности, а не формулы.

Публичная копия: /email-stats/changelog.html.


2026.08.30

Итог аудита научности 30.08.2026. Первый прогон под этой версией — 2026-08-31.

Изменены определения

МетрикаБылоСталоВлияние
total_domains_scannedтождественно domains_with_mx (числитель выдавался за размер выборки)domains_resolved — фактически резолвнутые домены снапшотана снапшоте 2026-08-29: 618 823 → 960 066 (+341 243 домена без MX перестали быть невидимыми); hero-текст показывает обе величины
quality (детекция partial)отклонение вниз >15% от медианы окна ±15ддля плотного окна (≥4 соседей в ±15д) порог 5%; для прореженной истории — прежние 15%точка 2026-08-29 (names_measured −9.75%, партиция источника −8%) помечается partial вместо ok
kpi_deltas_* в api/latest.jsonближайшая точка «не позже N дней назад» без предела расстояния и без учёта qualityтолько quality == ok точки; метка окна обязана совпадать с фактическим интервалом (d1 = ровно 1 день, d30 ≤ 40), иначе null; если последняя точка не ok — дельты не публикуются«дневная» дельта −58 396 (фактически за 4 дня, 08-25→08-29, от partial-точки) больше невозможна
Поле дельт счётчиковабсолютные разности доменов лежали в kpi_deltas_ppсчётчики (domains_with_mx/spf/dmarc) → kpi_deltas_abs; в _pp остались только метрики в процентных пунктахимя поля перестало врать о единицах; добавлено машиночитаемое kpi_delta_policy
rank в domains.csv.gzколонка объявлена и пуста во всех 1 944 978 строкахзаполняется по свежему списку Tranco каждый прогон; выпавшие из top-1M — NULLмёртвая колонка датасета ожила

Добавлены гейты

опубликованная дельта требует существования ok-точки того же источника в

окне метки; последняя точка не-ok с опубликованными дельтами — блокер.

нести dictionary_hash (обещание «провенанс у каждой точки» из 2026.07.26

фактически не выполнялось: 0 из 214 точек архива).

Ретроактивно

источника: единственный part-файл 386.3 МБ против 420.0–420.4 МБ у соседних

дней; названные KPI просели на −8.6…−10.5% пропорционально, доля mx/resolved

стабильна). Ряды и дельты её больше не используют; заголовочные цифры дня

замещаются первым полным снапшотом.

— остаются честными дырами ряда.


2026.07.26

Первый прогон под новой методикой — 2026-07-27 (скан 2026-07-25 или новее).

Изменены определения

МетрикаБылоСталоВлияние
domains_with_mxвсе домены с любой MX-записьюбез RFC 7505 null-MX (MX 0 .)−4 201 домен (−0.63%) на снапшоте 2026-07-24
long_tail.self_hosted_domainsпересчёт `same\sub_of` по всем доменамprovider == 'Self-Hosted', как в таблице провайдеров−187 доменов; таблица и long-tail сошлись (было 151 019 / 151 206)
DMARC-ряды до 2022-08-110null84 точки: у alexa-партиций OpenINTEL нет запросов _dmarc.* вообще, ноль означал бы «никто не публикует DMARC»
Месячная точка при прореживаниипервый день месяцамедоид ok-дней месяцаодин сбойный день больше не представляет месяц (2022-08-11 = весь август 2022)
Дельты 7d/30d/365dближайшая точка по датеближайшая сопоставимая: тот же list_source, quality == okдельты через границу alexa→tranco не публикуются
Проценты в HTMLлокальные :.1f / сырые значенияединый fmt_pct, два знака47.0% / 46.99% / 46.9% для одной метрики стали одним значением

Добавлены метрики

«Топ-1M» — не знаменатель: alexa-партиция 2022-04-01 содержит 1 637 544 apex-имени,

2021-02-01 — 559 235, tranco 2026-07-24 — 1 087 498.

dmarc.rua_external_vendor_only, dmarc.maturity (enforcing / monitoring / inert),

dmarc.top_rua_vendors.

(RFC 9989/9990/9991), где тега pct= больше нет. enforced (RFC 7489)

сохраняется ради непрерывности ряда с 2016 года.

начала, но функция tier() не вызывалась ни разу).

methodology_version, dictionary_hashes — провенанс каждой точки.

Исправлены факты в тексте методологии

Числа §2-§17 больше не литералы, а считаются из данных. Разошедшиеся значения

на момент правки: паттернов MX 328 (писали ~310), токенов верификации 149 (~70),

реестр 1 867 221 домен (~1.2 M), domains.csv.gz 22 МБ (~13 МБ),

SPF-покрытие 82.57% (~81.5%), длинный хвост 17.43% и 80 425 уникальных целей

(~18.5% и «~84 k синглтонов» — на деле синглтонов 64 741).

Известные разрывы ряда, которые НЕ чинятся пересчётом

эту границу несопоставимы: разные измеренные популяции.

классификатора (5 категорий, без бакета Self-Hosted). Ряды провайдеров на

этом участке разорваны намеренно; интерполяция убрана.