sender-or-from

<signals-filter>

Правило отбора по домену отправителя
в конфигурации это строкаsender-or-fromвнутри блока <signals-filter>
Отбор по письму, а не по потоку

Обычный охват выгрузки задаётся по потокам — узел, пул, адрес отправки. Эта строка даёт второй способ: отбор по домену отправителя из самого письма, независимо от того, каким потоком оно ушло.

Правило состоит из двух частей: образец домена и решение — enable-signals или disable-signals. При включении к решению можно дописать субсчёт и область отслеживания.

Образцы разбираются по порядку, и подстановка работает: *.customer1.com покрывает поддомены, * — всё остальное. Обычный приём — перечислить частные случаи, а последней строкой поставить общее правило.

Список именованный, и подключается он к охвату по имени: вместо enable-signals true пишется enable-signals ИмяСписка.

🔴 Не попавшее ни под одно правило считается выключенным. Руководство говорит это прямо: при подключении списка охват по умолчанию false для всего, что не совпало.

🔎 У засеивания такого отбора нет вовсе. Вендор оговаривает, что это может развести субсчета двух механизмов — и советует держать их согласованными.

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

🔎 Сам приём при этом полезный и знакомый: отбор по домену отправителя, а не по потоку, — то же, чем у нас занимается список выбора адреса отправки. Разница в том, что там правило выбирает поток, а здесь — судьбу данных о письме.

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

Порядок правил значим, последним ставят общее:

Образец Решение Что покрывает
marketing.customer1.com enable-signals,subaccount=555 точное имя
transact.customer1.com disable-signals исключение
*.customer1.com enable-signals,subaccount=333 остальные поддомены
* enable-signals,subaccount=222 всё прочее

Субсчёт и область отслеживания задаются только при включении.

Устройство правила, значимость порядка, запрет subaccount и tracking-domain при выключении и правило «не совпавшее выключено» — из руководства (§ 11.1.6.3.1, § 11.1.6.1.1). Замечание про отсутствие такого отбора у засеивания — из § 11.2.1.
Пример в конфигурации
# последнее правило обязательно, иначе несовпавшее выпадет молча
<signals-filter ListOne>
    sender-or-from  marketing.customer1.com  enable-signals,subaccount=555    sender-or-from  transact.customer1.com   disable-signals
    sender-or-from  *.customer1.com          enable-signals,subaccount=333
    sender-or-from  *                        enable-signals,subaccount=222
</signals-filter>

enable-signals ListOne
Последняя строка подключает список к охвату. Без неё сам список ничего не делает.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Не ставят последнее общее правило

§ 11.1.6.1.1

Чем чреватоВсё, что не совпало ни с одним образцом, считается выключенным. Часть трафика выпадает из аналитики молча.
Как заметитьВ отчётах службы заметно меньше писем, чем отправлено.
Как правильноДописать последней строку с образцом * и нужным решением.

Настраивают субсчета отбором, пользуясь и засеиванием

§ 11.2.1

Чем чреватоУ засеивания такого отбора нет. Субсчета двух механизмов разойдутся, и данные в отчётах лягут под разные счета.
Как заметитьВ отчётах засеивания и выгрузки разные субсчета у одного трафика.
Как правильноДержать субсчета согласованными; отбором пользоваться осторожно.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
sender-or-from <domain> [subaccount N]
Значения
образец домена, затем enable-signals с необязательными subaccount и tracking-domain либо disable-signals
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<signals-filter>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Наследования у строки нет: она живёт внутри своего именованного списка. Наследуется подключение списка — строкой охвата enable-signals, у которой три уровня: узел, пул, адрес отправки.
Как проверить на узле
Проверять надо по тому, что дошло до службы, — со стороны узла отбор не виден:
grep -i "signals" /var/log/pmta/log | tail -20
Расхождение между отправленным объёмом и объёмом в отчётах службы — признак того, что часть писем отсеяна отбором.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Разделение отправителей