Требование к переводам строк

line termination in submitted mail
Самая частая ошибка подачи

Руководство называет самой частой ошибкой программы, подающей письма на узел, окончание строк одним LF вместо пары CRLF, которую требуют почтовые стандарты.

Разбирают записью сессии: блок <source> для адреса подающей программы с log-connections и log-commands показывает, на каком шаге передачи — например, на команде RCPT — случается сбой, а log-data печатает каждый байт с его шестнадцатеричным кодом, и пропавший CR становится видим.

Обвязки подачи здесь снисходительнее: при кодировках 7-бит и 8-бит они сами переводят одиночный LF в CRLF.

Главная ловушка — проверять программу только через обвязку. Обвязка сама чинит одиночный LF, и ошибка не видна; та же программа, подающая по SMTP, начнёт сбоить.
Что делает Хаб. Хаб сам подаёт письма прогрева на узел по SMTP, так что это требование касается и его; на чужой площадке это первое, что стоит проверить при странных отказах подачи.
Рекомендуемые значения

Что включить для разбора:

Директива Что пишет
log-connections подключения
log-commands команды и ответы
log-data данные с шестнадцатеричными кодами байтов
Самая частая ошибка и разбор записью сессии — из руководства (§ 4.2.4); перевод LF в обвязках — § 7.4.10. Разбор ловушки — наш.
Пример в конфигурации
<source 127.0.0.1>
    log-connections yes
    log-commands yes
    log-data yes</source>
Пример руководства; после правки конфигурацию перечитывают, а блок убирают, как только причина найдена.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Как проверить на узле
Включив запись, посмотреть сессию в журнале:
pmta reload
tail -100 /var/log/pmta/log
В записи данных CR и LF видны кодами 0d и 0a: одиночный 0a без 0d перед ним — ошибка подающей программы. Путь журнала — из log-file.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Подключить платформу отправки