Жалобы, разобранные узлом — и разбираются они вторыми

критично

feedback loop processor
Порядок обработчиков решает, чем окажется письмо

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

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

Отсюда следствие: жалоба, похожая по форме на отчёт об отказе, будет разобрана как отказ. Формы у них родственные — оба служебные отчёты о письме, — и совпадение не редкость.

Что не опознано, то не пропадает. Отдельными настройками решается, доставлять ли нераспознанную почту обычным порядком или пересылать на указанный адрес.

Результат разбора попадает в учёт отдельным видом записи — по нему и считают долю жалоб.

Главная ловушка — считать долю жалоб по одному источнику. Часть жалоб опознаётся обработчиком отказов и уходит в учёт как отказ, часть приходит в форме, которую не опознал ни один, и попадает в обычную доставку или в пересылку. Число, взятое только из записей о жалобах, всегда занижено — вопрос лишь насколько.
Что делает Хаб. Настраивает: на узле стоит <feedback-loop-processor>, который ловит жалобы на fbl@fbl.<домен>. Распознанные жалобы дальше не пересылаются, а становятся записями учёта вида f и уходят вебхуком в Хаб — там они считаются в панелях парка, в оценке здоровья и в счётчиках прогрева.

Условия вне узла два: запись MX для fbl.<домен>, указывающая на узел (её заводят вручную), и петля обратной связи у провайдера, оформленная на этот адрес. Роль-адреса (abuse@, postmaster@, dmarc@) узел принимает отдельным правилом, но как отчёты о жалобах они не разбираются: обработчик ловит только fbl@fbl.<домен>.

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

Что надо, чтобы жалобы считались на узле:

Что Зачем
список адресов жалоб по нему обработчик и узнаёт свою почту
обработчик жалоб тот, кто разбирает отчёт
решение о нераспознанном доставлять обычным порядком или пересылать
понимание порядка обработчик отказов идёт первым и заберёт похожее

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

Долю жалоб сверять с двумя источниками. Учёт узла и данные провайдера расходятся всегда; расхождение и есть мера того, сколько разбор пропускает.

Совет про пересылку нераспознанного и сверку двух источников наши. Из руководства здесь механизм опознания по списку адресов, порядок обработчиков и настройки поведения с нераспознанной почтой.
Пример в конфигурации
# порядок обработчиков задан MTA: отказы, потом жалобы
<feedback-loop-processor>
    forward-unmatched-to fbl-review@example.net    deliver-unmatched-email false
</feedback-loop-processor>
Выделенная строка и есть способ увидеть, чего обработчик не понял. Без неё нераспознанные жалобы исчезают, и узнать об их существовании неоткуда.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Считают долю жалоб по одному источнику

§ 13

Чем чреватоЧасть жалоб опознаётся обработчиком отказов и уходит в учёт как отказ; часть не опознаётся вовсе. Число из записей о жалобах всегда занижено.
Как заметитьДоля жалоб по узлу заметно ниже той, что показывает провайдер.
Как правильноСверять два источника. Расхождение и есть мера того, сколько разбор пропускает.

Оставляют нераспознанное на обычной доставке

§ 13

Чем чреватоЖалоба в форме, которую обработчик не понял, уходит обычным порядком — то есть в никуда, если ящика за адресом нет. Узнать о существовании такой формы становится неоткуда.
Как заметитьОбработчик настроен, записей о жалобах мало, писем на адрес приходит заметно больше.
Как правильноПересылать нераспознанное на живой ящик и смотреть, что там оказывается.

Ждут, что обработчик жалоб заберёт всё с адреса жалоб

§ 13

Чем чреватоОбработчик отказов работает раньше и забирает то, что опознал. Жалоба, похожая по форме на отчёт об отказе, будет разобрана как отказ — и в записях о жалобах не появится.
Как заметитьЗаписи об отказах приходят с адресов, куда шлют жалобы.
Как правильноПомнить порядок. При расхождении смотреть записи об отказах: часть жалоб окажется там.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Наследование
Наследования у обработчика нет: он либо описан в конфигурации, либо нет. Наследуется список адресов, по которому он узнаёт свою почту, — и порядок обработчиков задан MTA, а не настройкой: отказы разбираются первыми всегда.
Как проверить на узле
Проверять надо не настройку, а то, что попало в учёт:
grep -n -A5 '^<feedback-loop-processor' /etc/pmta/config
grep -c '^f,' /var/log/pmta/acct-*.csv
Вторая команда считает записи о жалобах в учёте. Ноль при настроенном обработчике означает, что письма либо не приходят, либо опознаются обработчиком отказов раньше.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Разобраться с доставляемостью · Прогрев адресов · Подавление адресов
Важность
критично