privacy-policy

<acct-file>

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

Строка заменяет левую часть адреса — всё до собаки — во всех записях этого файла, в ответах приёмников и в адресах отправителя формы VERP. Умолчание — retain, то есть ничего не менять.

Способов пять, и делятся они на два рода:

Значение Что делает Можно ли сверить
retain (умолчание) ничего —
redact “X” заменяет заглушкой, по умолчанию … нет
siphash “ключ” быстрый хеш с ключом да
siphash-hexkey то же, ключ шестнадцатеричный да
hmac-sha256 “ключ” криптостойкий хеш с ключом да
hmac-sha256-hexkey то же, ключ шестнадцатеричный да

Разница между заглушкой и хешем принципиальная. Заглушка стирает адрес насовсем: две записи об одном получателе становятся неразличимы. Хеш сохраняет одинаковость — по нему видно, что это тот же человек, — и позволяет найти его записи, посчитав хеш известного адреса командой pmta digest.

Требования к ключам разные. У SipHash ключ не длиннее 16 байт, и короткий MTA дополнит нулями. У HMAC-SHA256 рекомендуется не менее 32 байт: короче — MTA предупредит, но примет.

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

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

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

Выбирают по тому, нужна ли потом сверка:

Значение Когда
retain (умолчание) свои рассылки, доступ к узлу ограничен
hmac-sha256 “длинный ключ” требования к персональным данным, сверка нужна
siphash “ключ” то же, но объём учёта велик и важна скорость
redact учёт отдают наружу и сверка не нужна вовсе

Ключ хранят там же, где прочие секреты, и не меняют без причины.

Пять способов, требования к длине ключей, приведение к нижнему регистру и охват (получатель, ответы приёмников, VERP) — из руководства (§ 3.3.11.16). Разбор выбора между заглушкой и хешем — наш.
Пример в конфигурации
# учёт без адресов, но со сверкой: хеш с длинным ключом
<acct-file /var/log/pmta/acct.csv>
    records d, b
    privacy-policy hmac-sha256 "KEY-32-BYTES-OR-LONGER"</acct-file>
Ключ здесь — часть конфигурации, то есть лежит открытым текстом. Найти запись по известному адресу можно командой pmta digest, дав ей только левую часть адреса.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Выбирают заглушку там, где потом понадобится сверка

наш опыт

Чем чреватоЗаглушка стирает адрес насовсем: две записи об одном получателе становятся неразличимы, и посчитать что-либо по получателям уже нельзя.
Как заметитьВсе адреса в учёте одинаковы.
Как правильноПользоваться хешем: он сохраняет одинаковость и позволяет искать по известному адресу.

Меняют ключ хеширования

наш опыт

Чем чреватоОдин и тот же получатель до и после смены даёт разные хеши. Связь между старым и новым учётом рвётся, и никакой пересчёт её не восстановит.
Как заметитьПосле правки конфигурации число уникальных получателей скачкообразно выросло.
Как правильноМенять ключ только осознанно, отмечая дату смены; для сверки старого учёта хранить прежний ключ.

Дают HMAC-SHA256 короткий ключ

§ 3.3.11.16

Чем чреватоMTA предупредит, но примет. Стойкость хеша при этом ниже рекомендованной, а исправить задним числом нельзя — только сменой ключа, которая рвёт связь со старым учётом.
Как заметитьВ журнале предупреждение о длине ключа при запуске.
Как правильноВзять ключ не короче 32 байт сразу, при первой настройке.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
privacy-policy <enumeration>
Значения
retain | redact | siphash | siphash-hexkey | hmac-sha256 | hmac-sha256-hexkey, вторым словом ключ или заглушка
Умолчание
retain § 3.3.11.16
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<acct-file>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Наследования нет: строка живёт внутри своего <acct-file> и действует на записи только этого потока. Два блока учёта могут писать одни и те же события — один с адресами, другой без, — и это обычный способ отдать наружу обезличенную копию.
Как проверить на узле
Смотрим сам файл: обезличенный адрес виден сразу:
head -3 "$(ls -t /var/log/pmta/acct-*.csv | head -1)"
Левая часть адреса будет заглушкой или шестнадцатеричной строкой. Проверить хеш известного адреса: pmta digest ЛЕВАЯ_ЧАСТЬ — команде даётся именно левая часть, без домена.
В Хабе
Цена ошибки
опасно: последствия переживут откат
Сценарии
Безопасность узла · Собрать телеметрию