hashed-address-file

<address-list>

Хеши адресов из отдельного файла
в конфигурации это строкаhashed-address-fileвнутри блока <address-list>
Длинный список, который никто не прочитает

Сочетание двух других строк: список ведётся файлом, а записи в нём — хеши. Каждая строка файла — хеш целого адреса, полученный по тому же правилу: нижний регистр, SHA256, BASE64URL.

Практически это единственная пригодная форма для чужого списка. Клиент отдаёт файл хешей, узел его исполняет, и ни конфигурация, ни резервная копия, ни человек с доступом к серверу адресов не видят.

Ограничения те же, что у hashed-address: только целые адреса, никаких образцов, доменов и локальных частей.

Главная ловушка — невозможность проверить список глазами. Ошибка в генерации файла (не тот регистр до хеширования, обычный BASE64 вместо BASE64URL, лишние пробелы) даёт список, который тихо не совпадает ни с чем. Единственный способ убедиться — посчитать хеш известного адреса инструментом из поставки и поискать строку в файле.
Что делает Хаб. Не пишет: подавление работает до узла. Форма важна как готовый ответ на просьбу «уважайте наш список, но адресов мы не дадим»: клиент присылает файл хешей, Хаб кладёт его на узел и подключает — и не получает вместе с этим чужую базу.
Рекомендуемые значения

Значение — путь к файлу. Что положить рядом с ним в порядок:

Что Зачем
правило генерации у того, кто даёт файл нижний регистр, SHA256, BASE64URL — иначе не совпадёт
контрольный адрес по нему проверяют, что файл вообще рабочий
права на файл хеши не адреса, но и показывать их незачем

Проверять только контрольным адресом. Прочитать такой список нельзя ни вам, ни тому, кто получит доступ к серверу, — это и есть его смысл.

Форма файла — из руководства (§ 3.3.5.4). Приём с контрольным адресом наш — иначе ошибку в генерации файла не поймать.
Пример в конфигурации
# клиентский список подавления, который мы не можем прочитать
<address-list foo>
    hashed-address-file /etc/pmta/suppression-address-list-hashed.txt</address-list>
Пример руководства. В файле строки вида f80vxObv18a0Gk2et394B6-S-TTgZp-RdYjUuUwnsRk~ — по одной на адрес. Договоритесь с тем, кто даёт файл, о контрольном адресе: по нему проверяется, что правило генерации совпало с вашим.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Принимают файл, не сверив правило генерации

§ 3.3.5.4

Чем чреватоХеши, посчитанные обычным BASE64 или без приведения к нижнему регистру, не совпадут ни с чем. Список подключён, ошибок нет, подавление не работает — и заметить это нечем.
Как заметитьПисьма уходят адресам, которые точно есть в списке клиента.
Как правильноДоговориться о контрольном адресе и проверить его хеш инструментом из поставки до того, как список пойдёт в работу.

Ждут от хешей сопоставления по образцу

§ 3.3.5.4

Чем чреватоХеш считается от целого адреса. Ни доменов, ни локальных частей, ни образцов в таком файле быть не может — они просто не совпадут.
Как заметитьЧасть записей работает, часть нет, закономерность непонятна.
Как правильноХешировать только целые адреса. Всё остальное — в обычный список.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
hashed-address-file <path>
Значения
путь к файлу; в файле по одному хешу целого адреса на строку
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<address-list>
Сколько раз
можно повторять
Всё здесь — из руководства, с разделом.
Наследование
Наследования у строки нет: она действует внутри своего блока <address-list>. Наследуется ссылка на список — suppression-lists в <source> сливается по правилу источников, в пуле достаётся участникам, а собственная строка участника пуловую перекрывает.
Как проверить на узле
Единственная работающая проверка — посчитать хеш известного адреса и поискать его в файле:
grep -c "$(pmtahashedAddress control@example.com)" /etc/pmta/suppression-address-list-hashed.txt
Единица означает, что правило генерации у вас и у поставщика файла совпало. Ноль — что где-то разошлось: чаще всего регистр до хеширования или кодировка результата.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Подавление адресов