smtp-port

Globalустарела

Порт приёма почты — устаревшая половина пары
в конфигурации это строкаsmtp-portвнутри блока Global
Вторая половина той же пары

Строка задавала порт, на котором узел принимает почтовые соединения. Адрес задавался соседней строкой — smtp-ip, — и настройка была разложена на две. Раздел руководства состоит из одной фразы: «устарела, используйте smtp-listener».

Сам механизм разобран на странице smtp-ip — обе строки устарели одной парой разделов и переводятся только вдвоём. Здесь — то, что относится именно к порту.

Порт был один на весь узел. Это и есть главное ограничение старой формы: одна пара строк описывала одну точку приёма, а подача кампаний и приём жалоб обычно живут на разных портах. Замена снимает ограничение — строк smtp-listener в файле может быть сколько угодно, и 0.0.0.0 разрешено повторять.

Неявное умолчание принадлежит замене, а не этой строке. Если в файле нет ни одной строки smtp-listener, MTA сам запускает слушателя на 0.0.0.0:25 — двадцать пятый порт открывается без всякой строки в конфигурации.

Главная ловушка — считать, что порт задан, потому что строка есть. Одна строка smtp-listener где угодно в файле — и MTA перестаёт читать обе строки старой пары. Порт при этом откроется тот, что написан в замене; строка с портом останется в файле и будет вводить в заблуждение каждого, кто её прочтёт.
Что делает Хаб. Устаревшую пару не пишет. Портов у него два, и оба задаются заменой: 2525 для подачи кампаний и 25 для приёма жалоб и отказов. Старой формой это не выражается вовсе — она умеет описать только один порт.

Именно поэтому перевод пары не косметический: два порта и есть причина, по которой пару заменили одной повторяемой строкой.

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

Что ставить. Ничего: пару следует заменить.

Значение Когда
не писать всегда: порт задаётся заменой
номер порта только в старой конфигурации, которую ещё не перевели

Перевод. Порт из этой строки и адрес из соседней складываются через двоеточие. Если портов нужно несколько — а нужно почти всегда, — строк замены пишут столько же: старая форма второй порт описать не умела.

Пометка об устаревании и имя замены — из руководства, § 3.3.1.26. Повторяемость строки замены, неявный слушатель 0.0.0.0:25 и правило «есть smtp-listener — пара игнорируется» — из § 3.3.1.27. Порядок перевода наш.
Пример в конфигурации
# так писали раньше — один порт на весь узел
smtp-ip 0.0.0.0
smtp-port 25
# так пишут сейчас — по строке на каждую точку приёма
smtp-listener 0/0:2525
smtp-listener 0/0:25
Два порта старой парой не описываются: строка была одна на узел. Нижние две строки — то, что Хаб пишет на каждом узле: подача кампаний и приём жалоб разведены по портам.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Пытаются описать второй порт второй строкой

§ 3.3.1.27

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

Читают порт из файла, не проверяя, слушается ли он

§ 3.3.1.27

Чем чреватоСтрока остаётся в файле и после того, как её обесценила замена. Разбирая проблему с приёмом, по ней делают неверный вывод о том, куда узел ждёт соединений.
Как заметитьПодающая система стучится на порт из конфигурации и не получает ответа.
Как правильноНачинать разбор со списка открытых портов, а не с файла. Устаревшие строки убирать сразу, как только появилась замена.

Переводят порт, оставляя адрес

§ 3.3.1.26

Чем чреватоСтроки пары устарели вместе и вместе же обесцениваются заменой. Оставшийся smtp-ip не задаёт ничего, но выглядит настройкой адреса приёма — и противоречит адресу, написанному в строке замены.
Как заметитьВ файле два разных адреса приёма, и ни один читатель не может сказать, какой действует.
Как правильноУбирать пару целиком. Искать оба имени одним поиском — порознь они не встречаются.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
smtp-port <port>
Значения
номер порта; полной грамматики руководство для этого имени не приводит
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
Global
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Пишется в корне файла и действует на экземпляр целиком; ни блоков, ни наследования. У замены область та же, но строк может быть несколько — и это единственная разница, которая имеет значение при переводе.
Как проверить на узле
Проверять надо не файл, а то, что узел слушает на самом деле:
grep -rn 'smtp-port\|smtp-ip\|smtp-listener' /etc/pmta/
ss -lntp | grep pmta
Если в списке открытых портов есть порт, которого нет ни в одной строке замены, значит строк замены в файле нет вовсе и MTA открыл двадцать пятый сам. Если наоборот, порт из старой пары не слушается — пара уже обесценена заменой.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Жизненный цикл конфигурации