критично
В каждой записи учёта об отказе есть поле bounceCat — категория. До этого раздела руководства она выглядит закрытым словарём из семнадцати значений: bad-mailbox, quota-issues, spam-related и прочие. Это не так.
Категорию выбирают правила, и правила можно писать свои. Блок <bounce-category-patterns> без имени разбирается раньше вендорских умолчаний из файла умолчаний; именованный блок можно привязать к конкретному приёмнику, и он разбирается раньше обоих. Порядок такой: правила приёмника, потом свои общие, потом вендорские.
Правило состоит из трёх частей. Необязательный этап сессии, регулярное выражение и имя категории: rcpt-to /invalid recipient/ recipient-related. Этап сейчас единственный — rcpt-to, он ограничивает совпадение ответами на команду с адресом получателя. Без этапа совпадают ответы с любого этапа.
Свои имена категорий разрешены прямо. Словарь не закрыт: можно завести категорию, которой у вендора нет, и она попадёт в учёт как есть. Именно это и делает механизм ценным — классификация переезжает туда, где приходит ответ, до записи в учёт.
Совпадение работает так же, как в списках образцов SMTP — руководство отсылает к <smtp-pattern-list> за подробностями.
Список жёстких категорий один на весь Хаб — bad-mailbox, inactive-mailbox, bad-domain (PmtaEventNormalizer::HARD_CATEGORIES). Раньше он лежал копиями в четырёх местах и расходился ровно на no-answer-from-host; теперь эта категория мягкая везде.
Этот механизм — способ убрать перевод целиком. Если правила писать самим, узел может писать в учёт сразу нашу категорию, взятую из слов приёмника, а не вендорскую, которую потом надо истолковать. Один шаг между отказом и решением об адресе исчезает.
Что стоит завести своими правилами:
| Категория | Что ловить | Зачем |
|---|---|---|
| «адреса нет» | no such user, unknown recipient, 5.1.1 на этапе получателя | прямое основание снять адрес |
| «ящик переполнен» | mailbox full, over quota | ящик жив, адрес снимать нельзя |
| «придержали за репутацию» | spam, blocked, spamhaus | не про адрес вовсе — про нас |
| «сервер молчит» | таймауты и обрывы | не про адрес и не про репутацию |
Этап rcpt-to стоит указывать почти всегда там, где речь об адресе. Ответ «нет такого пользователя», сказанный на этапе данных, относится к письму целиком, а не к одному получателю, и трактовать его как приговор адресу нельзя.
Своё имя категории лучше вендорского, когда смысл не совпадает с вендорским ни с одной из семнадцати: собственное имя честнее, чем натянутое чужое.
# свои правила разбираются раньше вендорских <bounce-category-patterns> /mailbox +(is +)?full/ quota-issues rcpt-to /[45]\.\d+\.\d+/ recipient-related</bounce-category-patterns> <bounce-category-patterns custom> /no longer available/ quota-issues </bounce-category-patterns> <domain hotmail.com> bounce-category-patterns custom </domain>
что делают не так и чем это кончается3 ошибки▶
§ 12
§ 11.7.1
§ 11.7.1
3 связи
Отбито окончательноОбразцы, которые эту категорию и назначают. § 12.6Неправильно настроен приёмникКатегорию назначает образец, а список образцов можно дополнить своим и своими названиями. § 12.6Неполадка соединенияКатегорию назначает образец, а список образцов можно дополнить своим и своими названиями. § 12.6Домена не существуетКатегорию назначает образец, а список образцов можно дополнить своим и своими названиями. § 12.6Адреса не существуетКатегорию назначает образец, а список образцов можно дополнить своим и своими названиями. § 12.6Придержано по содержимомуКатегорию назначает образец, а список образцов можно дополнить своим и своими названиями. § 12.6
pmtastats bounce-categories --bounceCat all /var/log/pmta/acct-*.csv grep -n -A6 '^<bounce-category-patterns' /etc/pmta/config
3 статьи
◇Разбор отказов, пришедших письмомОтчёты об отказах, приходящие письмом, разбираются отдельным обработчиком — и он работает раньше обработчика жалоб.◇Два обработчика входящих отчётов и что с ними делатьОтказы письмом и жалобы разбираются двумя одинаково устроенными блоками; у каждого свой список адресов и своя пара решений о судьбе письма.◇Списки адресов — именованные и безымянныеСписок адресов, доменов, образцов или хешей; именованный подключается директивами вроде подавления, безымянный живёт внутри процессора входящей почты.