Диалект регулярных выражений

regex dialect
Совместимый с Perl, со своими тонкостями

Руководство определяет регулярное выражение в конфигурации как выражение, совместимое с Perl (PCRE), и называет библиотеку PCRE в благодарностях. Такие выражения принимают <pattern-list>, <smtp-pattern-list>, образцы категорий отказов, списки адресов, dkim-headers и другие места.

Две особенности закреплены в руководстве. В <pattern-list> все выражения по умолчанию не различают регистр — различение включают встроенным модификатором (?-i). Заголовки сравниваются целиком, с пробелами и переводами строк, так что выражение с ^ или $ должно это учитывать.

Главная ловушка — регистр по умолчанию. В <pattern-list> выражение совпадает без учёта регистра: /test/ поймает и TEST, и узкое правило сработает шире задуманного.
Что делает Хаб. Пишет выражения: правила выбора адреса отправки mail-from /@домен$/ в <pattern-list> и тексты ответов в <smtp-pattern-list> шаблона политик. Домен в правиле экранируется, так что точка в нём — буквальная точка.
Рекомендуемые значения

Где работают выражения:

Где Что сравнивается
<pattern-list> отправитель, получатель, заголовки — без учёта регистра
<smtp-pattern-list> ответы приёмника
bounce-category-patterns тексты отказов для категорий учёта
<address-list> адреса
dkim-headers имена заголовков для подписи
Определение выражения и библиотека PCRE — из руководства (§ 3.2, § 14); регистр и сравнение заголовков целиком — § 3.3.14, § 3.3.14.1; остальные места — их разделы. Таблица — наша.
Пример в конфигурации
<pattern-list pmta-pattern>
    mail-from /@example\.com$/ virtual-mta=vmta1</pattern-list>
Так пишет Хаб: точка экранирована, $ привязывает домен к концу адреса.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Как проверить на узле
Проверить выражение на образце до записи в конфигурацию:
echo 'User@EXAMPLE.com' | grep -Pi '@example\.com$'
grep -P понимает выражения, совместимые с Perl; ключ -i повторяет умолчание <pattern-list> — без различения регистра.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Классификация отказов · Жизненный цикл конфигурации · Ротация адресов отправки