Кодировки при подаче

submission data encoding
Три режима для добавляемых данных

Кодировка в обвязке — режим, который действует на все данные, добавленные после его выбора: 7-бит, 8-бит или base64. По умолчанию — 7-бит.

7-бит и 8-бит данных не меняют, кроме одного: одиночный перевод строки LF превращается в пару CRLF. При 7-бит следить, чтобы у всех байтов был снят старший бит, — забота подающего.

base64 кодирует на лету всё добавленное, поэтому годится и для двоичного содержимого — если подающий сам ставит подходящие заголовки MIME, согласованные с Content-Transfer-Encoding.

Слияние и base64 несовместимы: данные слияния поддерживают только 7-бит и 8-бит.

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

Три режима:

Режим Что делает с данными
PmtaMsgENCODING_7BIT ничего, кроме LF в CRLF; старший бит — забота подающего; по умолчанию
PmtaMsgENCODING_8BIT ничего, кроме LF в CRLF
PmtaMsgENCODING_BASE64 кодирует на лету; для слияния не годится
Три кодировки, перевод LF, умолчание и ограничение слияния — из руководства (§ 7.4.10, § 7.4.14); самая частая ошибка подачи по SMTP — § 4.2.4. Вывод про разницу путей подачи — наш.
Пример в конфигурации
# двоичное вложение: base64 с совпадающим заголовком MIME
msg.setEncoding(PmtaMsgENCODING_BASE64);
Режим действует на всё, что добавлено после вызова, поэтому порядок вызовов решает, как закодирована каждая часть.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Как проверить на узле
Найти режимы кодировки в заголовках обвязки:
grep -rn 'PmtaMsgENCODING' /opt/pmta/api/include/ | head
Три значения перечисления — те самые режимы.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Подключить платформу отправки