retain-x-sp-subaccount-id

<signals>

Оставлять ли заголовок субсчёта в отправленном письме
в конфигурации это строкаretain-x-sp-subaccount-idвнутри блока <signals>
То же имя ещё 1:<inline-seeding><signals>— часть из них другие настройки, часть та же самая
Заголовок остаётся не только для получателя

Умолчание — false. С true MTA оставляет заголовок x-sp-subaccount-id в письме при отправке.

Руководство добавляет к этому важную оговорку: заголовок остаётся в письме и тогда, когда чтение выключено, — то есть при process-x-sp-subaccount-id false он тоже доезжает до получателя.

И вторая половина, ради которой строку включают. С true появляется возможность писать содержимое заголовка в файлы учёта, в записи доставки, отказа и временной неудачи. Это пригождается тем, кто передаёт события в службу вручную, своим вызовом.

Строка общая на два блока: выставленная здесь или в блоке засеивания <inline-seeding>, она действует для обоих.

Главная ловушка — заголовок уезжает получателю в двух случаях из трёх. Он остаётся и при true, и при выключенном чтении. Единственное сочетание, при котором его снимут, — чтение включено, сохранение выключено. Служебный номер клиента при этом живёт в чужой почте столько, сколько там живёт письмо.

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

Что делает Хаб. Не пишет: службой Signals он не пользуется, и заголовка субсчёта в нашей подаче нет.

Появись такой заголовок, в телеметрию он сам не попал бы: звёздочка в record-fields берёт стандартный набор полей, а заголовок письма нужно назвать отдельным полем header_… — так Хаб добавляет к жалобам header_feedback-id.

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

Что ставить. Случай для true узкий и вполне конкретный:

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

Второе включают ради учёта, а не ради получателя. Цена — номер уезжает вместе с письмом; уменьшить её нельзя, разве что вычистить заголовок отдельной строкой remove-header.

Умолчание false, сохранение заголовка при выключенном чтении, возможность писать его в записи учёта и общность строки с блоком засеивания — из руководства, § 11.1.6.2.13. Разбивка случаев наша.
Пример в конфигурации
# заголовок сохраняется ради записей учёта, а не ради получателя
<signals>
    api-key 0123456789012345678901234567890123456789
    process-x-sp-subaccount-id true
    retain-x-sp-subaccount-id true</signals>
Пара включается ради того, чтобы номер субсчёта попал в записи учёта. Сам заголовок при этом доезжает и до получателя.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Считают выключенную строку гарантией снятия заголовка

§ 11.1.6.2.13

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

Ждут номер в учёте от одной этой строки

§ 11.1.6.2.13

Чем чреватоСтрока только открывает возможность: какие поля попадают в записи учёта, решает настройка полей. Без неё номер в файлы не поедет.
Как заметитьСтрока включена, а в записях учёта номера субсчёта нет.
Как правильноДобавить поле в настройку полей записей учёта.

Считают строку настройкой только этого блока

§ 11.1.6.2.13

Чем чреватоОна общая на два: включённая для выгрузки событий, включена и для засеивания.
Как заметитьПоведение засеивания изменилось после правки блока выгрузки событий.
Как правильноЧитать обе строки как одну и проверять оба блока сразу.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
retain-x-sp-subaccount-id { yes | no }
Значения
yes | no | true | false
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<signals>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <signals>, но наследования в обычном смысле у неё нет: она общая с блоком засеивания, и выставленная в любом из двух действует для обоих. Отдельного значения «только для выгрузки событий» не существует.
Как проверить на узле
Строку видно в конфигурации; проверять надо оба блока и само письмо:
grep -n -A4 '^<signals>\|^<inline-seeding>' /etc/pmta/config
Отсутствие строк не означает, что заголовок снимается: при выключенном чтении он остаётся в письме. Убедиться можно только письмом в контрольный ящик.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Разделение отправителей