suppression-lists

<virtual-mta>

Списки подавления для писем с этого адреса отправки
в конфигурации это строкаsuppression-listsвнутри блока <virtual-mta>
То же имя ещё 2:<source><virtual-mta><virtual-mta-pool>— часть из них другие настройки, часть та же самая
Подавление на выходе — и всегда отказом

Строка называет списки через запятую, как и в источнике. Меняется одно, и это главное: выбора между отказом при подаче и отбитым письмом здесь нет. Письмо принимается, встаёт в очередь и отбивается записью 5.7.1 (suppressed), в тексте которой стоит имя списка.

Почему так. Адрес отправки выбирается уже после приёма письма — в момент подачи узел ещё не знает, каким потоком оно пойдёт. Проверять список раньше выбора попросту негде.

Отсюда и область применения. Здесь уместно то, что относится к адресу, а не к отправителю: получатели, которым с этого конкретного адреса писать нельзя. Общее подавление правильнее вешать на источник — там оно превращается в отказ.

Это независимая, вторая проверка. Список в источнике и список здесь не складываются и не заменяют друг друга: сработать может любой.

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

Значение — имена списков через запятую, как и в источнике. Разница в том, куда что вешать:

Что подавляем Где вешать Почему
общий чёрный список <source> там это отказ при подаче
получателей, которым нельзя с этого адреса здесь привязка к адресу, а не к отправителю
одинаково для группы адресов <virtual-mta-pool> достанется каждому участнику
Отсутствие выбора и код отказа — из руководства (§ 11.15.2). Разбивка «что куда вешать» — наша.
Пример в конфигурации
# получатели, которым нельзя писать именно с этого адреса
<virtual-mta shop-example-com>
    smtp-source-host 203.0.113.10 shop.example.com
    suppression-lists no-shop-mail</virtual-mta>
Письмо такому получателю будет принято, встанет в очередь и отобьётся с 5.7.1 (suppressed). Отправитель об этом при подаче не узнает — если это важно, список вешают на <source>.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Вешают общий чёрный список сюда

§ 11.15.2

Чем чреватоКаждое подавленное письмо проходит весь путь до очереди и превращается в отказ. На объёме это лишняя работа узла и поток отказов, которые классификатор обязан отличать от настоящих.
Как заметитьМного отказов 5.7.1 (suppressed) при том, что письма и не должны были отправляться.
Как правильноОбщее подавление вешать на <source> и ставить рядом accept-invalid-recipients no — тогда это отказ при подаче.

Считают такие отказы виной получателя

наш опыт

Чем чреватоОтказ рождается на нашем узле и о получателе не говорит ничего. Классификатор, вносящий его в чёрный список, подавляет адрес дважды и по несуществующей причине.
Как заметитьАдреса из списка подавления начинают попадать ещё и в общий чёрный список как «отказавшие».
Как правильноРазличать внутренние отказы по коду и тексту: x-pmta;recipient is in suppression list — это наше решение, а не ответ приёмника.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
suppression-lists <name>
Значения
имена объявленных списков адресов через запятую
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<virtual-mta>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Строка наследуется по обычному порядку адресов отправки: записанная в <virtual-mta-pool>, она достаётся каждому участнику, а собственная строка участника пуловую перекрывает целиком — списки не складываются. Руководство перечисляет её среди директив, поддерживаемых на уровне пула. Проверка в <source> при этом отдельная и независимая.
Как проверить на узле
Отличить это подавление от источникового можно по коду отказа:
pmtaacctfind --output csv[rcpt,vmta,dsnDiag] /var/log/pmta/acct-*.csv
5.7.1 (suppressed) — сработал список адреса отправки или пула; 5.7.1 (delivery not authorized) — список источника. В обоих случаях имя списка стоит в тексте отказа.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Подавление адресов