Главный файл конфигурации узла

критично

PowerMTA main configuration file
Обычный текстовый файл — и хранилище секретов заодно

Вся настройка узла живёт в одном текстовом файле: /etc/pmta/config на Linux, c:\pmta\config.dat на Windows. Формат — UTF-8, строка на директиву, # начинает комментарий до конца строки. Кодировка выбрана не случайно: домены и адреса на национальных алфавитах пишутся в файл как есть, без экранирования.

Читается при старте и по команде перезагрузки. Руководство прямо советует перезагружать, а не перезапускать: перезагрузка эффективнее и не прерывает доставку. Большинство правок она подхватывает; те немногие директивы, что требуют перезапуска, помечены в своих разделах — их у нас двадцать восемь.

Файл не один. Второй основной — /etc/pmta/config-defaults, с умолчаниями, поверх которых ложится главный. Плюс главный может подключать другие файлы строкой include — по пути, по маске и даже по HTTP.

Это хранилище секретов. Руководство говорит об этом отдельным разделом: в файле лежат пароли, ключи API и закрытые ключи подписи — открытым текстом. Права на него не пожелание, а требование: chown pmta:pmta и chmod 640. Подключённые файлы — тоже, и особенно те, где лежат ключи.

Файл можно заменить по сети. Веб-монитор принимает его запросом POST на /configFile, полем file, — при праве admin. Проверки содержимого при этом нет: что прислали, то и записалось.

Главная ловушка — замена по сети без проверки. Загрузка через веб-монитор пишет файл напрямую и содержимое не проверяет. Ошибка в присланном тексте обнаружится не при записи, а при следующей перезагрузке настроек — то есть тогда, когда исправлять её будет уже негде, кроме как на самом узле. Правило простое: сначала pmta test config, потом применение.
Что делает Хаб. Собирает файл целиком из состояния парка, показывает предпросмотр, применяет и умеет откатить. Главный файл — общие настройки узла, блоки адресов отправки вынесены в /etc/pmta/virtualhost.txt, а адреса отправки через прокси — в /etc/pmta/proxy.txt; оба подключаются строками include. На этих строках и держится вся раскладка; формат файла адресов общий с Protosender, он читается обоими.

Файлы Хаб кладёт по SSH, а не запросом на веб-монитор: так есть куда вернуться при откате и есть что показать в предпросмотре.

⚠️ Пароли подачи Хаб пишет в файл открытым текстом — иначе MTA их не примет. Это и делает права на файл обязательными, а не желательными.

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

Своих значений у файла нет — есть требования к нему:

Что Как должно быть
владелец и права pmta:pmta, 640 — руководство даёт эти команды прямо
кодировка UTF-8; национальные домены пишутся как есть
подключённые файлы те же права, особенно там, где ключи подписи
применение правок pmta reload, а не перезапуск
перед применением pmta test config — всегда, а особенно после правки по сети

Секреты можно вынести из файла. Руководство предлагает хранить ключи подписи в Vault и ссылаться на них из конфигурации (vault-support) — тогда в файле остаётся ссылка, а не сам ключ.

Порядок применения правок и совет о предварительной проверке — наши. Из руководства здесь пути обоих основных файлов, кодировка, команды выставления прав, состав секретов и то, что загрузка по HTTP пишет файл без проверки.
Пример в конфигурации
# главный файл: общие настройки узла, адреса отправки — в подключённом
host-id 5
smtp-listener 0/0:2525
smtp-listener 0/0:25
include /etc/pmta/virtualhost.txt   # блоки адресов отправки
Выделенная строка и есть двухфайловая раскладка: узловые настройки в главном файле, адреса отправки — отдельно. Файл, подключаемый этой строкой, требует таких же прав: в блоках адресов лежат ключи подписи.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Применяют файл, не проверив разбор

§ 3.1

Чем чреватоОшибка в тексте обнаружится при перезагрузке настроек. Если файл пришёл по сети, исправлять его придётся уже на самом узле — того, что было раньше, нигде не осталось.
Как заметитьПерезагрузка настроек не проходит, в журнале запуска строка с номером строки файла.
Как правильноСтавить pmta test config перед каждым применением. При правке по сети — тем более: загрузка содержимое не проверяет.

Выставляют права главному файлу и забывают подключённые

§ 1.6.3

Чем чреватоРуководство называет подключённые файлы отдельно: в них лежат закрытые ключи подписи. Защищённый главный файл при открытом подключённом не защищает ничего.
Как заметитьУ главного файла права 640, у файла с блоками адресов — 644 или владелец root.
Как правильноВыставлять права всей связке разом, включая каталог с ключами. Проверять списком файлов, а не по памяти.

Перезапускают службу вместо перезагрузки настроек

§ 3.1

Чем чреватоПерезапуск прерывает доставку, а перезагрузка нет — руководство прямо называет её более эффективной. Перезапуск нужен для немногих директив, и каждая такая помечена в своём разделе.
Как заметитьПосле каждой правки конфигурации в отчётах провал доставки длиной в перезапуск.
Как правильноПрименять pmta reload. Перезапускать только тогда, когда правленая директива этого прямо требует.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
В этой главе не описан — синтаксис директив и блоков дан в главе 3. Здесь — только где лежит файл, насколько он чувствителен и какие права ему нужны.
Всё здесь — из руководства, с разделом.
Наследование
Наследования у файла нет, есть порядок чтения: сначала config-defaults с умолчаниями, затем главный файл поверх них, а строка include вклеивает содержимое подключённого файла в то место, где она стоит. Слияние настроек внутри — уже дело блоков и их правил.
⇄

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

7 связей

Как проверить на узле
Проверять надо два разных свойства: разбирается ли файл и защищён ли он:
pmta test config
ls -l /etc/pmta/config /etc/pmta/virtualhost.txt
pmta reload
Первая команда разбирает файл, не применяя его, — её место перед каждым применением. Вторая покажет владельца и права: ожидается pmta:pmta и 640, и у подключённых файлов тоже. Третья применяет настройки без остановки доставки.
В Хабе
Цена ошибки
с перерывом: применение прерывает работу узла
Сценарии
Жизненный цикл конфигурации · Безопасность узла
Важность
критично