Узел, который вправду работает без прав root

Мало написать «не root» — надо ещё, чтобы он смог читать своё

Задача. Узел отправки, на котором MTA не должен работать от root, — а замеры на парке показали, что он работает от root.

Из чего складывается:

  • run-as-root — false выбирает пользователя pmta; действует только после перезапуска;
  • smtp-listener — для непривилегированного пользователя каждый слушатель должен стоять выше порта 1024;
  • log-file — путь журнала, доступный пользователю pmta на запись.

Области у составляющих разные. Все три — уровня узла. Файловая сторона — владелец /etc/pmta, /var/lib/pmta, /var/log/pmta и других каталогов узла — вне конфигурации и относится к порядку действий.

Как они взаимодействуют. Требование к портам и требование к перезапуску руководство излагает в разных разделах, и ни один не упоминает другой. Вместе они объясняют, почему одна строка ничего не меняет. Вдобавок руководство советует поднять лимиты открытых файлов и процессов для пользователя pmta.

Главная ловушка — написать run-as-root false и перечитать конфигурацию. Строка действует только после перезапуска, а на портах 25 и 587 непривилегированный MTA слушатель не поднимет: узел либо останется под root, либо перестанет принимать почту.
Что делает Хаб. Не применяет. Строку run-as-root из шаблонов убрали 29.08.2026: без остальных частей схемы она ничего не меняла, а приёмник жалоб и отказов стоит на 25-м порту. Замеры 27.08 и 29.08 показали, что MTA на узлах работает от root.
Рекомендуемые значения

Три условия и проверка каждого:

Условие Строка или действие Как убедиться
пользователь pmta run-as-root false и перезапуск ps -o user= -C pmtad
порты выше 1024 smtp-listener ss -ltnp
права на файлы владелец каталогов узла — pmta ls -ld /etc/pmta /var/lib/pmta /var/log/pmta
Условия запуска без root, перезапуск и лимиты — из руководства (§ 2.2.1, § 3.3.1.9, § 3.3.1.27). Сама схема — наша гипотеза.
Пример в конфигурации
run-as-root false
smtp-listener 0/0:2525log-file /var/log/pmta/pmta.log
Порт 2525 — для примера; после правки нужен перезапуск службы, а не pmta reload.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Как проверить на узле
Проверить, от кого на самом деле работает MTA:
ps -o user=,comm= -C pmtad
root в первом столбце — строка не подействовала или узел не перезапускали.