time-first-attempt-hires-timestamp

Global

Миллисекунды во времени первой попытки
в конфигурации это строкаtime-first-attempt-hires-timestamp falseвнутри блока Global
Дробность там, где секунды слишком грубы

Строка добавляет миллисекунды к отметке времени первой попытки в записях учёта. Умолчание — false, и применима она только тогда, когда включён track-time-first-attempt.

Смысл появляется на быстрых узлах. Если письма уходят за доли секунды, отметка с точностью до секунды показывает ноль у всех — и различить «мгновенно» от «за полсекунды» становится нельзя. Именно это различие и есть предмет измерения.

Не путать с log-hires-timestamp — та строка про отметки в журнале, эта про поле в учёте. Названия похожи, файлы разные.

Цена — несколько знаков на запись, и только у тех видов, где поле присутствует.

Главная ловушка — включить без подсчёта. Без track-time-first-attempt строка не делает ничего: величины, к которой она добавляет дробную часть, просто нет. Ошибки при этом не будет.
Что делает Хаб. Не пишет, хотя сам подсчёт включён: track-time-first-attempt true стоит в обоих шаблонах с 30.08.2026.

Дробная часть Хабу сейчас ничего не дала бы: время доставки телеметрия считает в целых секундах — по timeLogged, timeQueued и totalSecondsQueued, а timeFirstAttempt служит лишь запасным путём и тоже берётся с точностью до секунды.

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

Включают вместе с подсчётом или не включают вовсе:

Значение Когда
false (умолчание) подсчёт выключен или узел медленный
true подсчёт включён и письма уходят за доли секунды
Умолчание false и условие «только при включённом подсчёте» — из руководства (§ 3.3.1.42). Довод про быстрые узлы — наш.
Пример в конфигурации
# обе строки вместе: без первой вторая не делает ничего
track-time-first-attempt true
time-first-attempt-hires-timestamp true
Похожая по названию log-hires-timestamp — про журнал, а не про учёт. Их легко перепутать в конфигурации.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Включают дробность без подсчёта

§ 3.3.1.42

Чем чреватоСтрока применима только при включённом track-time-first-attempt. Без него добавлять дробную часть не к чему, и она молча не работает.
Как заметитьСтрока есть, колонка первой попытки пуста.
Как правильноВключить подсчёт; дробность имеет смысл только вместе с ним.

Путают со строкой дробности в журнале

наш опыт

Чем чреватоlog-hires-timestamp касается отметок в журнале MTA, эта — поля в учёте. Включённая не та строка не даёт ожидаемого.
Как заметитьМиллисекунды появились в журнале, а в учёте нет — или наоборот.
Как правильноДля учёта — эта строка, для журнала — log-hires-timestamp.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
time-first-attempt-hires-timestamp <boolean>
Значения
yes | no | true | false
Умолчание
false § 3.3.1.42
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
Global
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Наследования нет: строка пишется в корне файла, раздел Global. Действует на все записи учёта узла, где есть поле первой попытки.
Как проверить на узле
Смотрим значение в самом учёте:
head -3 "$(ls -t /var/log/pmta/acct-*.csv | head -1)"
Три цифры после точки в отметке первой попытки означают, что строка работает. Пустая колонка — не включён подсчёт.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Собрать телеметрию