Аналитика вендора — и что уходит с узла ради неё

SparkPost Signals
Аналитика в обмен на данные о получателях

Служба вендора, которой узел непрерывно отдаёт данные учёта, а взамен получает аналитику: сводку, отчёт по отказам, оценку здоровья отправителя и отчёт по спам-ловушкам. Семнадцать директив главы настраивают именно её — заметная часть раздела о продвинутых возможностях посвящена платному сервису вендора.

Как включается. Нужен ключ доступа, созданный в личном кабинете службы с правами на запись событий и чтение учётной записи, и блок <signals> в конфигурации. Появление блока само по себе включает выгрузку — enable-signals по умолчанию разрешает её, и чтобы блок был, а выгрузки не было, нужно сказать это отдельно.

Чем управляют, что уходит. Включатель работает на трёх уровнях: узел целиком, пул адресов, отдельный адрес отправки. Плюс отбор по домену отправителя — но берётся он из заголовков письма (Sender или From), а не из настройки адреса.

Как уходит. Данные копятся на диске и удаляются после выгрузки. Есть порог свободного места (min-free-space), ниже которого накопленное начинает выбрасываться безвозвратно — в отчётах останутся дыры. Соединение одностороннее: узел только отдаёт, от службы ничего не получает. Через межсетевой экран нужен доступ к api.sparkpost.com по порту 443.

Что можно скрыть. privacy-policy хеширует локальную часть адресов получателей перед отправкой — односторонним хешем. Это единственная встроенная мера: всё остальное уходит как есть.

Отслеживание вовлечённости — отдельная история. Служба хочет знать об открытиях и переходах, и узел умеет вставлять в письма пиксель и переписывать ссылки сам (signals-engagement-tracking).

Главная ловушка — блок включает выгрузку самим фактом появления. Добавили <signals>, чтобы «посмотреть настройки», — и данные учёта начали уходить наружу. Ни подтверждения, ни отдельного разрешения не требуется: включатель по умолчанию разрешает. Второе следствие того же: порог свободного места молча выбрасывает накопленное, когда служба недоступна, — отчёты потом выглядят достоверными, но с дырами, и отличить дыру от спада отправки по ним нельзя.
Что делает Хаб. Не задействует вовсе — блока <signals> в конфигурации нет, и данные учёта наружу не уходят.

Так и задумано. Учёт узла Хаб забирает себе и строит аналитику сам: доставляемость по провайдерам, отказы по категориям, коридоры по парку. Служба вендора дала бы оценку здоровья и спам-ловушки, которых у нас нет, — но ценой того, что адреса получателей покидают нашу инфраструктуру и уходят третьей стороне.

Для коробочного продукта, который ставится клиенту на его сервер, это не техническая, а договорная проблема: данные его получателей уходили бы к вендору по нашей настройке.

Рекомендуемые значения

Ставить нечего — блока быть не должно. Если однажды понадобится:

Что На что смотреть
само включение блок включает выгрузку самим своим появлением
область узел, пул или адрес — отбирать, а не включать всё
отбор по отправителю берётся из заголовков письма, не из настройки адреса
хеширование адресов privacy-policy — единственная встроенная мера
порог места ниже него накопленное выбрасывается безвозвратно
применение руководство советует перезапуск, а не перезагрузку настроек

Про перезапуск отдельно. Руководство говорит, что перезагрузки достаточно, но рекомендует перезапуск: иначе внутренние процессы подхватят новые настройки не сразу. Для директивы, включающей выгрузку данных наружу, «не сразу» — плохое свойство.

Оценка про коробочный продукт — наша. Из руководства здесь состав службы, три уровня включения, отбор по заголовку письма, поведение буфера при недоступности, хеширование локальной части и совет о перезапуске.
Пример в конфигурации
# блока нет — и это осознанное решение, а не упущение
# если он появится, выгрузка начнётся сама:
<signals>    api-key КЛЮЧ
    privacy-policy sha1
    min-free-space 2G
</signals>
Пример показывает минимум, а не рекомендацию. Строка хеширования здесь не для красоты: без неё адреса получателей уходят к вендору целиком.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

Типичные ошибки и проблемы

что делают не так и чем это кончается3 ошибки▶

Добавляют блок, чтобы «посмотреть»

§ 11.1

Чем чреватоПоявление блока включает выгрузку: включатель по умолчанию разрешает её. Данные учёта — с адресами получателей — начинают уходить наружу с первой же перезагрузки настроек.
Как заметитьУ узла появились исходящие соединения на порт 443 к стороннему адресу, которых раньше не было.
Как правильноНе заводить блок ради изучения. Если он нужен для проб — выключать выгрузку явно и включать хеширование локальной части в той же правке.

Отбирают почту настройкой адреса, а не заголовком

§ 11.1.1

Чем чреватоОтбор по домену отправителя смотрит в заголовки письма, а не в настройки адреса отправки. Ожидание «этот адрес не выгружается» не сбывается: выгрузится всё, что уйдёт с него с подходящим заголовком.
Как заметитьВ отчётах службы видны письма, которые по замыслу не должны были туда попасть.
Как правильноОграничивать выгрузку включателем по областям, а отбор по отправителю применять как дополнение, помня, откуда он берёт домен.

Правят настройки службы перезагрузкой конфигурации

§ 11.1

Чем чреватоРуководство прямо рекомендует перезапуск: внутренние процессы подхватят новые настройки не сразу. Правка, выключающая выгрузку, какое-то время не действует — а речь о данных, уходящих наружу.
Как заметитьПосле правки выгрузка продолжается ещё некоторое время.
Как правильноПерезапускать MTA после любой правки настроек службы. Проверять по исходящим соединениям, а не по файлу.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Наследование
Наследуется включатель: заданный на уровне узла, он действует на все адреса; пуловый перекрывает узловой, адресный — пуловый. Прочие настройки службы живут в блоке <signals> в корне файла и области не имеют. Руководство советует после правки любой из них перезапускать MTA, а не только перезагружать настройки.
⇄

Связанные записи

3 связи

Как проверить на узле
Первое, что стоит проверить, — нет ли блока вовсе:
grep -n -A6 '^<signals' /etc/pmta/config
ss -tnp | grep ':443'
Пустой вывод первой команды и означает, что выгрузки нет. Вторая покажет исходящие соединения узла: подключения к api.sparkpost.com на порт 443 — признак того, что выгрузка идёт, даже если блок нашёлся не там, где искали.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Безопасность узла · Собрать телеметрию