log-file

GlobalХаб задаёт сам

Где лежит журнал MTA
в конфигурации это строкаlog-fileвнутри блока Global
Единственная обязательная строка журнала

Строка задаёт путь к файлу журнала. Руководство называет её обязательной: она должна присутствовать в конфигурации всегда. На Unix путь только абсолютный.

Одна строка задаёт три файла. Кроме журнала самого MTA она определяет расположение журнала веб-монитора (pmtahttp.log) и журнала SNMP. Это стоит помнить, когда ищут, куда делись записи монитора: они рядом, но в другом файле.

Журнал и учёт — разные вещи, и разделение сделано намеренно (§ 4.1.2). Журнал отвечает на вопрос «что делал узел»: запуск, остановка, ошибки, трассировки соединений. Учёт — «что стало с письмами». Первое место, куда смотрят при любой неисправности, — журнал.

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

Главная ловушка — искать в журнале MTA записи веб-монитора. Отказы доступа, ход рукопожатия и обращения к интерфейсам HTTP лежат в pmtahttp.log рядом. Строка задаёт им общий каталог, но не общий файл.
Что делает Хаб. Пишет — /var/log/pmta/log, и рядом в шаблоне стоит комментарий «ротация — logrotate».

🔎 То есть встроенную ротацию MTA мы не используем. Ни log-rotate, ни log-auto-rotation в нашей конфигурации нет, и файлом занимается системный logrotate. Это рабочее решение, но у него есть цена: MTA держит файл открытым, и правило ротации должно либо копировать с обрезанием, либо посылать MTA сигнал — иначе он продолжит писать в удалённый файл.

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

Путь выбирают там же, где остальные журналы системы:

Значение Замечание
/var/log/pmta/log наш выбор; рядом лягут журналы монитора и SNMP
относительный путь только на Windows

Умолчания у строки нет — руководство требует задавать её всегда.

Обязательность строки, требование абсолютного пути на Unix и то, что она задаёт заодно журналы монитора и SNMP, — из руководства (§ 3.3.1.59.2). Разделение журнала и учёта — из § 4.1.2. Разбор нашей ротации — по шаблону Хаба.
Пример в конфигурации
# одна строка задаёт три файла: MTA, монитора и SNMP
log-file /var/log/pmta/loglog-rotate 8
Вторая строка не обязательна, но без неё за размером файла надо следить чем-то ещё — например, системной ротацией, как делаем мы.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Ищут в журнале MTA сведения о письмах

§ 4.1.2

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

Настраивают ротацию системой, не сказав MTA

наш опыт

Чем чреватоMTA держит файл открытым. Если правило ротации просто переименует и удалит файл, MTA продолжит писать в исчезнувший — и записей не будет ни в старом, ни в новом.
Как заметитьПосле ротации журнал пуст и не растёт, а место на диске занято.
Как правильноЛибо копировать с обрезанием (copytruncate), либо посылать MTA сигнал в правиле ротации, либо пользоваться встроенной ротацией log-rotate.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
log-file FILENAME
Значения
абсолютный путь к файлу
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
Global
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Наследования нет: строка пишется в корне файла, раздел Global, и задаёт единственный журнал узла. Разделить его по источникам или блокам нельзя — подробность настраивается переключателями вроде log-connections, а файл один.
⇄

Связанные директивы

3 связи

Как проверить на узле
Смотрим, куда MTA пишет на самом деле, и что там появляется:
grep -n '^log-file' /etc/pmta/config
ls -l /var/log/pmta/
Если файла нет или он не пишется, причину надо искать в журнале операционной системы — MTA сообщает туда именно о таких случаях. Рядом должен лежать pmtahttp.log: он про монитор.
В Хабе
Управляется
Аналитика → Учёт узла
Значение
Хаб подбирает сам — темп, стадия прогрева, метрики
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Подготовить узел к отправке · Разобрать зависшую очередь