privacy-policy

<signals>

Обезличивать ли адреса перед отправкой наружу
в конфигурации это строкаprivacy-policy retainвнутри блока <signals>
То же имя ещё 1:<acct-file><signals>— часть из них другие настройки, часть та же самая
Единственный способ не отдать адреса целиком

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

🔴 Это единственная защита при выгрузке. Данные уходят за периметр, и других способов ограничить их состав нет: какие поля отправлять, MTA выбирает сам.

Способ здесь один, в отличие от учёта. У файла учёта privacy-policy умеет и заглушку, и четыре вида хеша с ключом; тут только SHA-1 и без ключа. Значит, и стойкость другая: хеш без ключа подбирается по словарю адресов.

Одинаковость сохраняется — по хешу видно, что это тот же получатель. Аналитика от этого не страдает.

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

Выбор здесь короткий:

Значение Когда
retain (умолчание) данные и так отдаются вендору целиком
sha1 требования к персональным данным
Оба значения, умолчание retain и то, что хеш односторонний и по нижнему регистру, — из руководства (§ 11.1.6.2.16). Сравнение стойкости с обезличиванием учёта — наше.
Пример в конфигурации
# адреса уходят наружу — хотя бы не в открытом виде
<signals>
    api-key 0123456789abcdef012345678901234567890123
    privacy-policy sha1</signals>
Хеш здесь без ключа, в отличие от обезличивания файла учёта: стойкость ниже.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Полагаются на хеш без ключа как на обезличивание

наш опыт

Чем чреватоХеш SHA-1 без ключа сопоставляется со списком известных адресов за минуты. От того, у кого есть база, он не защищает.
Как заметитьСчитают, что персональные данные наружу не уходят.
Как правильноРешать вопрос составом того, что вообще отдаётся, а не только хешем.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
privacy-policy { retain | hash }
Значения
retain | sha1
Умолчание
retain § 11.1.6.2.16
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<signals>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Наследования нет: строка живёт внутри <signals>, а такой блок на узле один. Охват выгрузки по потокам задаётся не здесь, а строкой enable-signals с тремя уровнями.
Как проверить на узле
Проверять надо на стороне службы — в её отчётах:
grep -i "signals" /var/log/pmta/log | tail -20
Со стороны узла результат не виден. В отчётах службы вместо адресов должны быть шестнадцатеричные строки.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Безопасность узла