Верстакфорум практиков
рекламаiprazon: приватные серверные адреса IPv4 и SOCKS5, безлимитный трафик, бесплатный тест до 2 часов
ФорумПочта и рассылки

STARTTLS не поднимается: разбор по шагам

netmon
netmon
Знаток
сообщений 1350
с мая
22 августа, 17:07первое сообщение

Настраиваю отправку с нового узла, и STARTTLS просто отсутствует в ответе на EHLO. Приёмник его точно умеет, с соседней машины строка на месте.

-> EHLO otpravka.example.net
<- 250-mail.example.net
<- 250-PIPELINING
<- 250-SIZE 36700160
<- 250-XXXXXXXA
<- 250 8BITMIME

Вместо STARTTLS какие-то иксы. Postfix честно говорит, что шифрование недоступно, и уходит открытым текстом. Куда смотреть?

Родион Гаев
Родион Гаев
Ветеран
сообщений 2420
с фев
1 января, 08:24#2

Иксы вместо ключевого слова это подпись старого межсетевого экрана с разбором почты. Он затирает возможность, чтобы дальше видеть содержимое.

Тимур Ш.
Тимур Ш.
Участник
сообщений 890
с июн
8 июня, 11:41#3

Да, это старая функция вида «smtp inspection» на пограничном устройстве. Ищите на выходном маршрутизаторе или у владельца канала.

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

бэкап перед правкой конфига
loginless
loginless
Новичок
сообщений 130
с мая, второй сезон
15 ноября, 14:58#4

а на 587 то же самое будет? или разбор трогает только двадцать пятый порт

netmon
netmon
Знаток
сообщений 1350
с мая
22 апреля, 17:15#5

Проверил по всем портам, картина ровно такая:

одна машина, три порта
одна машина, три порта

На двадцать пятом иксы, на 587 и 465 всё поднимается. Значит разбор висит именно на 25, как и сказал Тимур Ш.

Дальше самое интересное. Наружу отправка между серверами идёт на 25, и переставить туда 587 нельзя: чужие mx его не слушают. Получается два пути: либо просить владельца канала выключить разбор, либо выводить отправку другой дорогой.

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

grepwalker
grepwalker
Знаток
сообщений 1330
с мая
1 сентября, 08:32#6

Через отдельный узел проще. Локальный переходник помогает только если он уводит соединение в другую сеть, иначе разбор увидит тот же 25 на том же выходе. Короткий путь: поднять relay на машине в сети, где почту по дороге не трогают, и слать через него.

Родион Гаев
Родион Гаев
Ветеран
сообщений 2420
с фев
8 февраля, 11:49#7
netmon: чужие mx его не слушают

Слушают, но редко, и полагаться на это нельзя. Между серверами 25 и только 25.

Тимур Ш.
Тимур Ш.
Участник
сообщений 890
с июн
15 июля, 14:06#8

Отдельно про случай, когда STARTTLS в ответе есть, а рукопожатие всё равно падает. Тогда причина другая: разошлись версии протокола или имя в сертификате.

Postfix пишет об этом прямо в лог:

warning: TLS library problem: error:0A000102:SSL routines::unsupported protocol
warning: mail.example.net: Cannot start TLS: handshake failure

Лечится указанием версий в smtp_tls_protocols и сверкой имени: openssl s_client покажет subject и SAN, там должно стоять то имя, к которому вы подключаетесь.

бэкап перед правкой конфига
grepwalker
grepwalker
Знаток
сообщений 1330
с мая
22 декабря, 17:23#9

Имя в сертификате ловит половину случаев, особенно когда в конфиге прописан адрес цифрами.

netmon
netmon
Знаток
сообщений 1350
с мая
1 мая, 08:40#10

Итог по моей истории: разбор на пограничном устройстве, порт 25, иксы вместо STARTTLS. Владелец канала функцию выключил, строка вернулась на место, шифрование поднимается.

Пока ждал ответа, поднял запасной relay на второй машине, оставлю его как резерв. Тимур Ш., Родион Гаев, grepwalker, спасибо за наводку по иксам, сам бы ковырял postfix ещё неделю.