Журнал и учёт — два файла и два разных вопроса

logging file and accounting file
Почему это два файла, а не один

MTA держит два потока записей, и путать их — самая частая ошибка при разборе неисправности.

Журнал отвечает на вопрос «что делал узел»: запуск и остановка, ошибки, трассировки соединений при включённых переключателях. Это первое место, куда смотрят, когда что-то пошло не так.

Учёт отвечает на вопрос «что стало с письмами»: по записи на событие, в разбираемом машиной формате. Настраивается блоком <acct-file>.

Разделение сделано по трём причинам, и вендор называет их прямо. Формат учёта эффективнее для последующей обработки. Производительность — учёт пишется по своим правилам. И третье, самое практичное: журнал можно отдать в поддержку, не раскрывая данные учёта.

В журнал операционной системы MTA пишет только то, чего не смог записать в свой — ошибки запуска и подобное. Пустой журнал MTA при неработающем узле означает, что смотреть надо там.

Ротация есть у обоих, но настраивается порознь: log-rotate и log-auto-rotation для журнала, move-interval, max-size и delete-after для учёта.

Главная ловушка — искать судьбу письма в журнале. Его там нет и не будет, сколько ни включай подробности: журнал пишет о соединении, а не о письме. Обратное тоже верно — причину обрыва соединения в учёте не найти, там только результат.
Что делает Хаб. Пользуется обоими и по-разному.

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

Журнал мы не собираем вовсе. Читают его при разборе — по SSH, руками. Это осознанный выбор: журнал объёмен, а на вопросы, которые задают панели, отвечает учёт.

🔎 Из этого следует практическое правило для нас: если панель показывает пустоту, а узел работает — смотреть надо журнал, и именно на узле. Телеметрия про письма ничего не скажет о том, почему она сама не уходит.

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

Собственных значений у механизма нет — их задают две группы строк:

Что Журнал Учёт
где лежит log-file путь в теге <acct-file>
сколько хранится log-rotate delete-after
когда сменяется log-auto-rotation move-interval, max-size
подробность переключатели log-* records, record-fields
Само разделение, три причины и роль журнала операционной системы — из руководства (§ 4.1.2). Практическое правило про пустую панель — наше.
Пример в конфигурации
# два потока, две настройки, два разных вопроса
log-file /var/log/pmta/loglog-rotate 8

<acct-file /var/log/pmta/acct.csv>
    records d, b
    delete-after 7d
</acct-file>
Журнал настраивается строками уровня узла, учёт — блоком. Общего у них только одно: место на диске.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Ищут судьбу письма в журнале

§ 4.1.2

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

Отдают в поддержку учёт вместо журнала

§ 4.1.2

Чем чреватоВ учёте лежат адреса ваших получателей и ответы приёмников. В журнале — работа узла. Разделение и сделано ради того, чтобы второе можно было отдать, не раскрывая первого.
Как заметитьВ поддержку ушёл файл с адресной базой.
Как правильноОтдавать журнал; при необходимости приложить учёт с включённым privacy-policy.

Ждут, что телеметрия объяснит собственное молчание

наш опыт

Чем чреватоПанель питается учётом. Если он не доходит, объяснить это может только журнал узла — и смотреть его надо на самом узле.
Как заметитьПанель пуста, узел при этом отправляет почту.
Как правильноЗайти на узел и прочитать журнал; для вебхука включить http-webhook-log-verbose.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Наследование
Наследования у механизма нет — наследуются директивы, которыми он включается. Журнал на узле один, файлов учёта может быть несколько.
Как проверить на узле
Проверка проста: два файла должны расти по-разному — журнал скачками, учёт равномерно:
ls -la /var/log/pmta/
Растёт только учёт — это норма при отсутствии неисправностей. Растёт только журнал — узел о чём-то сообщает, и это первое, что стоит прочитать. Не растёт ничего — MTA не работает или не может писать, и смотреть надо в журнал операционной системы.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Разобрать зависшую очередь · Собрать телеметрию