log-commands

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

Записывать ли весь разговор SMTP
в конфигурации это строкаlog-commands falseвнутри блока <source>
Первое, что включают при разборе связи

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

Вендор называет её главным инструментом разбора. Формулировка в руководстве прямая: включение этой директивы — «обычно первый и самый полезный шаг» при неисправностях связи, потому что видно, на каком шаге доставка сорвалась.

Вторая ступень из трёх. log-connections пишет факт соединения, эта — разговор, log-data — каждый байт. Разница в объёме между первой и второй — порядок.

В журнал попадают адреса и ответы приёмников целиком. Это стоит помнить рядом с log-file-world-readable: включённые вместе, они открывают переписку каждому пользователю машины.

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

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

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

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

Значение Когда
no (умолчание) обычная работа
yes разбор: подача срывается, надо увидеть, на каком шаге

Сначала стоит попробовать ступень ниже — log-connections: она отвечает на вопрос «доходит ли вообще» и стоит на порядок дешевле.

Умолчание false и оценка «первый и самый полезный шаг при разборе связи» — из руководства (§ 3.3.7.65). Лестница ступеней и замечание про открытый журнал — наши.
Пример в конфигурации
# разбор: видно, на каком шаге разговора всё сорвалось
<source 10.0.0.7>
    log-connections yes
    log-commands true</source>
Две строки вместе дают полную картину одного соединения. После разбора убирают обе.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

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

наш опыт

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

Включают вместе с открытым на чтение журналом

наш опыт

Чем чреватоВ журнале оказывается переписка — адреса, темы, ответы приёмников, — и её может прочитать любой пользователь машины.
Как заметитьРядом стоит log-file-world-readable true.
Как правильноНе совмещать: либо закрыть журнал, либо не писать в него разговор.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
log-commands <boolean>
Значения
yes | no | true | false
Умолчание
false § 3.3.7.65
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<source>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <source> и достаётся тому, чей адрес совпал с блоком. Разговор с приёмниками при отправке пишется не отсюда — там свои строки в блоке получателя.
Как проверить на узле
Смотрим журнал во время подачи письма:
grep -E "^\S+ \S+ \( *[0-9]+\)(<<<|>>>)" /var/log/pmta/log | tail -30
Строки с >>> — то, что сказал собеседник, с <<< — то, что сказал узел. Обрыв виден по последней паре: на ней разговор и кончился.
В Хабе
Управляется
Инфраструктура → Параметры узла
Значение
Хаб подбирает сам — темп, стадия прогрева, метрики
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Разобраться с доставляемостью · Разобрать зависшую очередь