add-date-header

<source>

Добавлять ли заголовок Date, если его нет
в конфигурации это строкаadd-date-header noвнутри блока <source>
Страховка от письма без даты

Умолчание — no. Значений три, и третье не булево:

no — не трогать. yes — дописать, если заголовка нет; имеющийся не переписывается. override — поставить свой в любом случае.

Заголовок Date обязателен по стандарту письма, и приёмники относятся к его отсутствию плохо. Но подающая платформа обычно ставит его сама, так что строка — страховка, а не рабочий механизм.

Со слиянием не работает. Руководство говорит прямо: автоматическое добавление даты для писем, собираемых слиянием, не поддерживается; там ту же задачу решает переменная *date.

Главная ловушка — override вместе с отложенной отправкой. Со значением yes дата ставится один раз при приёме, а override переписывает и присланную. В паре с date-header-time delivery это значит, что в письме окажется время фактической доставки, которое может отстоять от подачи на дни — и получатель увидит письмо, отправленное «сегодня», хотя ждал его позавчера.
Что делает Хаб. Не пишет — остаётся вендорское no. Дату ставит сама библиотека отправки: письмо прогрева уходит с Date всегда, и дописывать нечего.

Строка пригодилась бы как страховка на узле, куда подаёт чужая платформа неизвестного качества, — но там же и опаснее: override затрёт дату, которую отправитель поставил намеренно.

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

Что ставить. Три значения решают три разных задачи:

Значение Когда
no (умолчание) подающая платформа ставит дату сама — обычный случай
yes подача разнородная, и часть писем приходит без даты
override дата отправителя заведомо неверна: сбитые часы, старая очередь на его стороне

Третье значение — крайняя мера: оно стирает намерение отправителя и в паре с временем доставки даёт письмо, датированное задним числом наоборот.

Умолчание no, три значения и оговорка про слияние — из руководства, § 3.3.7.1. Разбивка случаев наша.
Пример в конфигурации
# дата дописывается только тем письмам, что пришли без неё
<source 0/0>
    add-date-header yes</source>
С этим значением уже стоящий в письме Date не переписывается. Чтобы переписывать, нужно override — и тогда стоит сразу решить, какое время в него класть.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Ждут дату у писем, собранных слиянием

§ 3.3.7.1

Чем чреватоРуководство исключает этот случай прямо: автоматическое добавление даты для слияния не поддерживается. Письма уходят без даты, и заметно это становится по отношению приёмников, а не по ошибке MTA.
Как заметитьДаты нет у части писем — ровно у тех, что собраны слиянием.
Как правильноЗадавать дату переменной *date в самом слиянии.

Ставят override, не решив вопрос о времени

наш опыт

Чем чреватоПереписывается и та дата, которую отправитель поставил намеренно. А если рядом выбрано время доставки, в письме окажется момент фактической отправки — для отложенной рассылки это дни спустя.
Как заметитьПолучатели видят в письмах не то время, которое стояло при подаче.
Как правильноПользоваться yes, а override держать для случая с заведомо неверными часами на подающей стороне.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
add-date-header <enumeration>
Значения
no | yes | override
Умолчание
no § 3.3.7.1
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<source>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <source> и подчиняется слиянию источников: соединение попадает под все адресные блоки, которые его накрывают, и узкий перекрывает широкий. Для подачи под логином действует именованный блок, и строку в нём приходится повторять — наследования из адресных блоков в именованный мы на своей установке не увидели.
Как проверить на узле
Настройка видна в конфигурации, результат — в доставленном письме:
grep -n 'add-date-header\|date-header-time' /etc/pmta/config /etc/pmta/virtualhost.txt
Что реально доехало, показывает только письмо в контрольном ящике: заголовок Date в нём должен быть один, и время в нём — то, которое вы задумали.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Подключить платформу отправки