критично
Вся настройка узла живёт в одном текстовом файле: /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. Проверки содержимого при этом нет: что прислали, то и записалось.
Файлы Хаб кладёт по SSH, а не запросом на веб-монитор: так есть куда вернуться при откате и есть что показать в предпросмотре.
⚠️ Пароли подачи Хаб пишет в файл открытым текстом — иначе MTA их не примет. Это и делает права на файл обязательными, а не желательными.
Своих значений у файла нет — есть требования к нему:
| Что | Как должно быть |
|---|---|
| владелец и права | pmta:pmta, 640 — руководство даёт эти команды прямо |
| кодировка | UTF-8; национальные домены пишутся как есть |
| подключённые файлы | те же права, особенно там, где ключи подписи |
| применение правок | pmta reload, а не перезапуск |
| перед применением | pmta test config — всегда, а особенно после правки по сети |
Секреты можно вынести из файла. Руководство предлагает хранить ключи подписи в Vault и ссылаться на них из конфигурации (vault-support) — тогда в файле остаётся ссылка, а не сам ключ.
# главный файл: общие настройки узла, адреса отправки — в подключённом host-id 5 smtp-listener 0/0:2525 smtp-listener 0/0:25 include /etc/pmta/virtualhost.txt # блоки адресов отправки
что делают не так и чем это кончается3 ошибки▶
§ 3.1
§ 1.6.3
§ 3.1
7 связей
Файл умолчанийВторой основной файл: умолчания, поверх которых ложится этот. § 1.6.3includeGlobalГлавный файл может подключать другие — по пути, по маске и по HTTP. § 3.3.1.53
Сменить ключ подписи, не прерывая отправкуОбе правки — добавление и удаление ключа — делаются в главном файле или в подключённом. § 1.6.2Перезагрузка настроек против перезапуска службыПерезагрузка действует на главный файл и на всё, что он подключает. § 3.1http-accessGlobalУровень operator и выше открывает чтение конфигурации через API, то есть весь файл со всеми секретами в нём. § 3.1Куда узел пишет, почему не запустилсяОтказ запуска чаще всего вызван правкой именно этого файла. § 4.2.1КонфигурацияФайл, к которому обращается эта выдача. § 5.6Настройка через API и файл не сходятсяФайл, которого механизм и касается. § 8.3
pmta test config ls -l /etc/pmta/config /etc/pmta/virtualhost.txt pmta reload
3 статьи
◇Как узел выбирает источник и складывает его настройкиСоединение попадает под все блоки источника, чьи адреса его накрывают, и действуют они слитно — узкий перекрывает широкий; именованные блоки подключаются только по прямой ссылке.◇Принять, направить, доставитьПуть письма внутри узла: принять, решить куда, доставить — и между этими тремя шагами живут все настройки.◇Кому разрешено сдавать почту и для кого её приниматьИз коробки узел принимает подачу только с самой машины; два разных вопроса — «кто может слать через нас» и «на чьи адреса мы принимаем» — решаются разными директивами.