replace-smtp-421-service-response

<domain>

Подменять ли текст ответа 421 на нейтральный
в конфигурации это строкаreplace-smtp-421-service-response falseвнутри блока <domain>
Чужой текст не уезжает в отчёт

Умолчание — false. Со значением true MTA заменяет текст ответа после кода 421 и после расширенного кода состояния на нейтральное «service unavailable».

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

Разбор по образцам продолжает работать. Исходный текст передаётся правилам smtp-pattern-list как был, так что щадящий режим и прочие действия по образцам не ломаются. Что при этом запишет учёт, руководство не уточняет.

Главная ловушка — подмена скрывает текст и от вас. Отчёт об отказе видит нейтральное «service unavailable», и человек, разбирающий проблему по отчёту, не узнает, что именно ответил приёмник.

Остаётся ли исходный текст в учёте, руководство не говорит: оговорено только, что его по-прежнему получают правила по образцам. Прежде чем рассчитывать на учёт, это стоит проверить на своём узле.

Вторая половина: строка касается только кода 421 — временного отказа обслуживания. Тексты остальных отказов, включая жёсткие 5xx, уезжают как были.

Что делает Хаб. Не пишет — остаётся вендорское false.

В отчётах строка у нас не проявилась бы: локальные отчёты об исходе подавлены во всех источниках подачи, наружу они не уходят вовсе. Тексты ответов приёмников Хаб получает записями учёта в телеметрии, а доходит ли подмена до учёта, руководство не говорит.

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

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

Что ставить. Вопрос — уходят ли отчёты наружу:

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

Второе не мешает правилам по образцам: они получают исходный текст. Сохранится ли он в учёте, руководство не говорит.

Умолчание false, подмена текста после кода и расширенного кода состояния, причина (адреса в отчётах) и сохранение исходного текста для разбора по образцам — из руководства, § 3.3.10.68.
Пример в конфигурации
# отчёты доходят до отправителей — чужие тексты в них не нужны
<domain *>
    replace-smtp-421-service-response true</domain>
Разбор по образцам не ломается: правилам передаётся исходный текст. Что попадёт в учёт — исходный текст или подменённый, — стоит проверить на узле.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Разбирают отказы по отчётам после включения подмены

§ 3.3.10.68

Чем чреватоОтчёт показывает нейтральный текст, и что именно ответил приёмник, из него не узнать. Если подмена дошла и до учёта, исходного текста не найти и там.
Как заметитьВсе временные отказы обслуживания в отчётах выглядят одинаково.
Как правильноПосмотреть текст ответа в записях учёта; если и там «service unavailable», выключить строку на время разбора.

Ждут подмены у остальных кодов отказа

§ 3.3.10.68

Чем чреватоСтрока касается только кода 421. Тексты жёстких отказов и прочих временных уезжают в отчёты как были, вместе со всем, что приёмник в них положил.
Как заметитьЧужие адреса и ссылки по-прежнему встречаются в отчётах об отказе.
Как правильноПодавлять отчёты целиком либо чистить их на своей стороне.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
replace-smtp-421-service-response <boolean>
Значения
yes | no | true | false
Умолчание
false § 3.3.10.68
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<domain>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <domain> и подчиняется слиянию блоков получателей: более узкий блок перекрывает более широкий. Здесь общий блок как раз уместен — подмена нужна всем приёмникам одинаково.
Как проверить на узле
Строку видно в конфигурации; что попадает в учёт — по тексту ответов 421 в записях:
grep -n 'replace-smtp-421\|suppress-local-dsn' /etc/pmta/config /etc/pmta/virtualhost.txt
grep -i 'smtp;421' /var/log/pmta/acct-*.csv 2>/dev/null | tail -10
Вторая команда покажет тексты ответов 421 в учёте, если записи временных отказов пишутся в файл (t в строке records); иначе 421 попадёт туда лишь в итоговом отказе. Увидите «service unavailable» — подмена дошла и до учёта. Если локальные отчёты подавлены, в отчётах строка не проявится никак.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Разобраться с доставляемостью · Настроить темп под провайдера