Подготовить машину под MTA

критично

Minimum Requirements
Шесть проверок до установки, а не после

Всё, что руководство требует до установки MTA. Ни одно из требований не выглядит серьёзным по отдельности, и каждое, не выполненное, проявляется позже и не там, где его ищут.

Поддерживаемая система и архитектура. Список конечен, и попытка поставить MTA на что-то за его пределами не даёт внятной ошибки.

Статический адрес и доменное имя. Адрес отправки — основа репутации: сменившийся адрес означает репутацию с нуля. Имя нужно не меньше — им узел представляется приёмнику.

Доступный резолвер. Может стоять и на другой машине, но должен быть рекурсивным: MTA сам по цепочке серверов имён не ходит.

Синхронное время по NTP. Расхождение часов ломает не отправку, а разбор: события в учёте и журнале перестают сходиться с тем, что видят приёмники и Хаб.

Посчитанное железо. Не «побольше», а по двум правилам: память от числа получателей в очереди, диск от объёма писем (capacity-sizing).

Ключ лицензии запрашивается у поддержки вендора заранее — без него MTA не заработает.

Главная ловушка — статический адрес, который статичен не совсем. У облачного провайдера адрес обычно закрепляется отдельной настройкой, а без неё меняется при пересоздании машины. Узел, поднятый «на попробовать» и оставленный в работе, однажды просыпается с новым адресом: репутация, записи SPF и DKIM, обратная запись имени — всё разом перестаёт соответствовать. Проверять это надо до того, как на адресе появится репутация.
Что делает Хаб. Проверяет часть требований сам, перед вводом узла в работу: NodePreflightRunner смотрит поддерживаемость системы и ресурсы — меньше гигабайта памяти или десяти гигабайт диска даёт отказ, меньше двух гигабайт или сорока — предупреждение.

Чего проверка не покрывает: статичность адреса, рекурсивность резолвера, синхронность часов и наличие ключа лицензии. Это остаётся на том, кто заводит узел.

Пороги у нас — «вообще пригоден», а не расчёт под план: посчитать железо от планируемого объёма Хаб мог бы, данных хватает, но профиля отправки пока нет.

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

Шесть требований и что проверяет каждое:

Требование Чем грозит невыполнение Проверяется
поддерживаемая система установка без внятной ошибки до установки
статический адрес и имя смена адреса обнуляет репутацию у провайдера, не на узле
рекурсивный резолвер отказы доставки, похожие на проблемы приёмника запросом к нему
синхронное время расхождение учёта с реальностью сравнением с внешним источником
посчитанное железо упор в память или диск под нагрузкой двумя правилами прикидки
ключ лицензии MTA не запустится заранее, у поддержки

Порядок проверки — от необратимого к поправимому. Адрес и имя менять после того, как на них появилась репутация, дороже всего; память и диск на большинстве площадок добавляются на ходу.

Резолвер проверять запросом, а не наличием строки в настройках. Прописанный, но нерекурсивный резолвер выглядит настроенным и не работает.

Порядок проверки и разбор последствий наши. Из руководства здесь сам список шести требований и то, что резолвер может стоять на другой машине.
Пример в конфигурации
# шесть проверок одной страницей
hostnamectl && ip -4 addr show
dig +short @127.0.0.1 gmail.com MX    # резолвер отвечает и рекурсивенtimedatectl | grep -i 'synchronized'
nproc && free -m && df -h /var
Выделенная строка проверяет то, что чаще всего оказывается настроенным лишь на бумаге. Пустой ответ означает, что резолвер либо недоступен, либо не рекурсивен, — и отказы доставки потом будут выглядеть как проблемы приёмников.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Считают адрес статическим, не закрепив его у провайдера

§ 1.7

Чем чреватоУ облачного провайдера адрес закрепляется отдельной настройкой. Без неё он меняется при пересоздании машины — и вместе с ним обнуляется репутация, перестают соответствовать записи SPF и DKIM, ломается обратная запись имени.
Как заметитьПосле перезапуска или переноса машины доставляемость упала до уровня нового адреса.
Как правильноЗакреплять адрес у провайдера до того, как на нём появится репутация, и проверять это отдельно от настроек самой машины.

Прописывают резолвер, не проверив, что он рекурсивный

§ 1.7

Чем чреватоMTA сам по цепочке серверов имён не ходит и ждёт готового ответа. Нерекурсивный резолвер выглядит настроенным, а имена не разрешаются — отказы доставки при этом похожи на проблемы у приёмников.
Как заметитьДоставка не идёт к части доменов, у приёмников при этом всё в порядке.
Как правильноПроверять резолвер запросом, а после установки — командой самого MTA.

Откладывают синхронизацию часов

§ 1.7

Чем чреватоРасхождение часов не ломает отправку, поэтому его замечают поздно. Ломается разбор: время событий в учёте не сходится с тем, что видят приёмники и Хаб, и любое сопоставление по времени становится ненадёжным.
Как заметитьСобытия в учёте и телеметрии расходятся по времени на постоянную величину.
Как правильноСинхронизировать часы до установки. Проверять расхождение так же, как и прочие требования, — с самой машины.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Как проверить на узле
После установки те же требования проверяются уже средствами MTA:
pmta show status
pmta show license
pmta resolve gmail.com MX
Первая покажет, что MTA запустился. Вторая — что лицензия принята и до какой даты. Третья проверяет резолвер глазами самого MTA: она и есть окончательный ответ на вопрос, разрешает ли узел имена.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Планирование мощности · Подготовить узел к отправке
Важность
критично