log-transfer-failures

<domain>Хаб задаёт сам

Записывать ли обрывы при передаче тела письма
в конфигурации это строкаlog-transfer-failures falseвнутри блока <domain>
Откуда берутся дубли и обрезанные письма

Строка добавляет в журнал обрывы соединения во время передачи заголовков и тела письма. Умолчание — выключено.

Вендор называет конкретный класс неисправностей, ради которого строка нужна: дубли и частичные доставки. Механика такая: узел передал тело, соединение оборвалось до подтверждения, и узел не знает — дошло письмо или нет. Он повторит, а получатель может увидеть две копии.

В учёте этого не видно. Там будет временная ошибка или успех, но не «оборвалось на теле».

Строка дешёвая: пишется только при обрыве, а не при каждом соединении.

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

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

Чего строка не даёт. Запись идёт в журнал узла, а не в телеметрию: Хаб её не видит. Она нужна в момент разбирательства «почему клиент получил письмо дважды» — тогда в журнале есть ответ, а не пустота.

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

Включают на время разбора и выключают после:

Значение Когда
no (умолчание) обычная работа
yes получатели жалуются на дубли или обрезанные письма
Умолчание и предмет записи — из руководства (§ 3.3.10.5). Порядок разбора и предупреждение про объём — наши.
Пример в конфигурации
# на время разбора
<domain …>
    log-transfer-failures true</domain>
После разбора строку убирают. При правках через Хаб она и так исчезнет при следующем применении конфигурации.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Ищут причину дублей в учёте

наш опыт

Чем чреватоУчёт покажет повторную отправку как обычную попытку. Того, что предыдущая оборвалась на теле, там нет.
Как заметитьПолучатели видят две копии, в учёте всё выглядит нормально.
Как правильноВключить эту строку для приёмника, на который жалуются.

Ищут эти записи в файле учёта

наш опыт

Чем чреватоЖурнал и учёт — разные файлы и разные вопросы. В учёте есть результат по письму, но не ход работы узла.
Как заметитьВ файле учёта нет ничего похожего на ожидаемые записи.
Как правильноСмотреть журнал, путь к которому задан строкой log-file.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
log-transfer-failures <boolean>
Значения
yes | no | true | false
Умолчание
false § 3.3.10.5
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<domain>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Значение сливается по блокам <domain> от общего к частному: побеждает наиболее подходящий блок, а не последний по файлу, — поэтому строка в <domain *> включит запись сразу для всех приёмников. Журнал при этом один на узел — записи всех включённых переключателей ложатся вперемешку.
⇄

Связанные директивы

1 связь

Как проверить на узле
Смотрим журнал MTA, отобрав нужные строки:
grep -i "transfer\|truncat\|abort" /var/log/pmta/log | tail -20
Предупреждения появляются только при обрывах. Их отсутствие — хороший знак, а не признак невключённой строки.
В Хабе
Значение
Хаб подбирает сам — темп, стадия прогрева, метрики
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Разобраться с доставляемостью