Отдать файл узла

критично

/getFile
Журнал и учёт по сети

Отдаёт файл журнала или учёта по имени — тот, что страница «Журналы» предлагает скачать.

Вызов — GET /getFile?file=log.txt, где log.txt — имя файла из перечня /logs. Параметра формата нет: приходит сам файл.

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

Отрезать файлы, оставив монитор, можно оговоркой deny-logs у уровня monitor в http-access.

Ключ из http-api-key в заголовке X-API-Key даёт полный доступ с любого адреса.

Главная ловушка — открыть файлы вместе с монитором. Уровень monitor без оговорки deny-logs отдаёт и журналы, и учёт: адрес, которому выдали «только посмотреть очередь», получает заодно получателей и ответы приёмников.
Что делает Хаб. Не спрашивает: события учёта приходят в Хаб потоком через вебхук, а сводки «Статистики учёта» он считает на самом узле по SSH. При этом своим адресам в http-access Хаб выдаёт уровень monitor без deny-logs — файлы им формально открыты.
Рекомендуемые значения

О чём спрашивать эту точку:

Вопрос Она ли
строки журнала без захода на машину да
письма за прошлые дни да — файлом учёта, пока он не удалён
какие файлы есть нет — /logs
Адрес вызова, параметр file и оговорка deny-logs — из руководства (§ 5.11, § 3.3.1.58.3). Разграничение вопросов и вывод про утечку — наши.
Пример в конфигурации
# скачать файл журнала по имени из перечня
curl -s 'http://127.0.0.1:8080/getFile?file=log.txt' -o log.txt
Имя log.txt — пример руководства; настоящие имена берут из ответа /logs.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Как проверить на узле
Проверить, кому открыты файлы:
curl -s -o /dev/null -w "%{http_code}\n" 'http://127.0.0.1:8080/getFile?file=log.txt'
grep -n 'http-access' /etc/pmta/config
Код 200 с постороннего адреса значит, что файлы открыты всем, кому открыт монитор; закрыть — оговоркой deny-logs.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Разобрать зависшую очередь · Собрать телеметрию
Важность
критично