deliver-unmatched-email

<bounce-processor>Хаб задаёт сам

Доставлять ли письма, не узнанные как отказом
в конфигурации это строкаdeliver-unmatched-email true, если не задан forward-unmatched-toвнутри блока <bounce-processor>
То же имя ещё 1:<bounce-processor><feedback-loop-processor>— часть из них другие настройки, часть та же самая
Судьба посторонней почты

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

🔴 Значение false означает «выбросить молча». Ни отказа отправителю, ни записи в учёт: письмо просто исчезает. Для адреса, за которым нет ящика, это разумно — а вот для адреса, куда пишут люди или службы, это потеря.

И это же условие пересылки. Руководство говорит прямо: при заданном forward-unmatched-to эта строка обязана быть true — иначе письмо выбрасывается до пересылки, и адрес пересылки не работает.

Отсюда три возможных исхода для непонятого письма: доставить (по умолчанию), выбросить (false без пересылки), переслать (true плюс адрес пересылки).

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

Обработчик у нас ловит bounce@bounce.<домен> и роль-адреса dmarc@, postmaster@, abuse@.

🔴 И для отказов это стоит пересмотреть. Мы принимаем на тот же обработчик роль-адреса — dmarc@, postmaster@, abuse@. Обработчик отказов не узнаёт в них отказы, и при no суточные агрегатные отчёты DMARC, которые мы сами запросили записью rua, выбрасываются. Вместе с ними — письма служб жалоб на abuse@ и всё, что пишут на postmaster@. Лечится парой: true плюс forward-unmatched-to на живой ящик.

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

Три исхода, и выбирают между ними двумя строками:

Что нужно deliver-unmatched-email forward-unmatched-to
доставить обычной почтой true (умолчание) не задавать
выбросить молча false не задавать
переслать человеку true адрес ящика

Сочетание false плюс адрес пересылки не работает — письмо выбрасывается раньше.

Умолчание true, выброс при false и требование true для работы пересылки — из руководства (§ 3.3.3.1). Разбор того, что теряется у нас, — по конфигурации Хаба.
Пример в конфигурации
# переслать вместо выброса: две строки работают только вместе
<bounce-processor>
    deliver-unmatched-email true    forward-unmatched-to postmaster@example.com
</bounce-processor>
Со значением no и заданной пересылкой письмо всё равно выбрасывается: пересылка до него не доходит.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Задают пересылку, оставив выброс

§ 3.3.3.1

Чем чреватоПисьмо выбрасывается до пересылки. Адрес пересылки в конфигурации есть, писем в ящике нет, и ошибки тоже нет.
Как заметитьЯщик пересылки пуст при работающем обработчике.
Как правильноПоставить true — это условие работы пересылки.

Выбрасывают всё нераспознанное на адресе, куда пишут люди

наш опыт

Чем чреватоНа роль-адресах вроде postmaster@ и abuse@ обработчик не узнаёт почти ничего. Со значением false туда можно писать сколько угодно — никто не увидит.
Как заметитьНа письма в службу поддержки по abuse@ никто не отвечает.
Как правильноtrue плюс forward-unmatched-to на живой ящик.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
deliver-unmatched-email <boolean>
Значения
yes | no | true | false
Умолчание
true, если не задан forward-unmatched-to § 3.3.3.1
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<bounce-processor>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Наследования нет: строка живёт внутри своего <bounce-processor> и решает судьбу писем, пойманных его списком адресов. У соседнего обработчика своя такая же строка и свой список.
Как проверить на узле
Проверка одна — послать на адрес обработчика письмо, которое он заведомо не узнает:
grep -i "unmatched\|discard" /var/log/pmta/log | tail -20
При false письмо исчезнет без следа — этого и надо ожидать. При true оно либо дойдёт до ящика, либо уйдёт на адрес пересылки.
В Хабе
Управляется
Аналитика → Учёт узла
Значение
Хаб подбирает сам — темп, стадия прогрева, метрики
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Приём входящей почты