Собственный журнал узла

logging file
Первое место, куда смотреть, когда что-то не так

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

Содержимое широкое по замыслу. В одном файле события жизненного цикла — запуск и остановка, — ошибки выполнения, следы соединений и команд, которые включаются директивами журналирования по каждому источнику или приёмнику, и предупреждения резолвера.

Ротация автоматическая, а её параметры — часть конфигурации: сколько прошлых файлов хранить, решается директивами. То есть глубина истории — настройка, а не свойство файла.

Не путать с учётом. Учёт — это данные о письмах, по одной записи на получателя, и он существует ради отчётов. Журнал — про сам MTA, и он существует ради разбора. Директивы у них разные, назначение разное, и подменять один другим не выйдет (log-accounting-separation).

Главная ловушка — включить подробные следы и забыть выключить. Журналирование команд и соединений включается по источнику или по приёмнику и выдаёт строку на каждый шаг разговора с сервером. На разборе это бесценно, в постоянной работе — файл, растущий быстрее спула, и ротация, съедающая историю за часы вместо дней. Включать такие следы стоит адресно и с намерением выключить.
Что делает Хаб. Журнал не читает — вся его картина строится на учёте, который узел отдаёт потоком.

Это осознанное разделение: учёт отвечает на вопросы о письмах, журнал — о самом MTA. Но у него есть цена: отказ, случившийся до того, как письмо попало в учёт, Хабу не виден. Например, разбор конфигурации при перезагрузке настроек — он попадает в журнал, а в учёт не попадает ничего.

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

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

Что искать в журнале и когда:

Событие Когда смотреть
запуск и остановка узел не поднялся или перезапустился сам
ошибка разбора конфигурации перезагрузка настроек не прошла
предупреждения резолвера доставка не идёт к части доменов
следы соединений и команд разбор конкретного приёмника — включать адресно

Глубина истории — настройка. Число хранимых файлов задаётся директивами журналирования; умолчание разумно для спокойного узла и мало для того, где включены подробные следы.

Разбор начинается отсюда, а не с системного журнала. В системный попадает только то, что MTA не смог записать себе.

Таблица «что искать и когда» наша. Из руководства здесь приоритет своего журнала над системным, состав записываемого, автоматическая ротация и то, что её параметры живут в конфигурации.
Пример в конфигурации
# разбор начинается с двух вопросов к журналу
tail -n 200 /var/log/pmta/loggrep -i 'error\|warn' /var/log/pmta/log | tail -50
Выделенная строка отвечает на вопрос «что случилось только что» — там же будут и сообщения о запуске, и отказ разбора конфигурации, если он был. Вторая отбирает ошибки и предупреждения за всё время файла.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Ищут ошибки MTA в системном журнале

§ 4.1.2

Чем чреватоРуководство ставит приоритет обратный: свои ошибки MTA пишет в собственный файл, а системный — запасной вариант для случая, когда писать себе он не может. Разбор по системному журналу почти всегда даёт пустоту.
Как заметитьВ системном журнале о MTA ничего, при том что он явно работает неправильно.
Как правильноНачинать разбор со своего журнала узла. В системный смотреть тогда, когда свой пуст или недоступен.

Оставляют включёнными подробные следы

§ 4.1.2

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

Ждут от журнала данных о письмах

§ 4

Чем чреватоЖурнал про MTA, а не про письма. Вопросы «сколько ушло» и «кому не дошло» отвечает учёт, и подменить один другим не получится: у них разные директивы и разное содержимое.
Как заметитьПоиск по журналу не находит следов конкретного получателя.
Как правильноСпрашивать учёт. Журнал беречь для вопросов о самом узле.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
Построчный текст, у каждой записи — дата и время.
Всё здесь — из руководства, с разделом.
Наследование
Наследования у файла нет. Наследуются директивы, решающие, что в него попадёт: журналирование команд и соединений задаётся в блоке источника или приёмника и сливается по обычному правилу — узкий блок перекрывает широкий. Значит, подробные следы можно включить для одного приёмника, не трогая остальные.
⇄

Связанные записи

3 связи

Как проверить на узле
Проверить, что журнал пишется и что в нём нет накопленных ошибок:
ls -lh /var/log/pmta/
tail -n 100 /var/log/pmta/log
grep -c -i 'error' /var/log/pmta/log
Первая покажет размер файлов и глубину истории — по числу файлов видно, как настроена ротация. Файл, растущий заметно быстрее прочих, обычно означает забытые подробные следы.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Разобрать зависшую очередь · Собрать телеметрию