ошибка ssl сессии при проксировании smtp
Maxim Dounin
mdounin на mdounin.ru
Чт Дек 4 07:58:07 UTC 2025
Hello!
On Wed, Dec 03, 2025 at 10:59:09PM +0300, Юрий Ястребов via nginx-ru wrote:
> Я столкнулся с неожиданной проблемой, может кто-то подскажет...
> У меня в контексте mail проксируется smtp-сесcии на бэкенд (postfix).
> Все клиенты работают за исключением МФУ, которые выполняют сканирование
> и отправляют сканы в сообщениях по smtp. И вроде бы всё у них в настройках есть,
> и сертификат на сервере full chain.
>
> При попытке через 465 ssl такая ошибка (чувствительные данные изменены):
> 2025/12/03 22:33:50 [error] 2246179#2246179: *5952848 no password available while sending AUTH to upstream, client: 192.168.0.101, server: 0.0.0.0:465, login: "postmaster на example.org", upstream: 172.16.0.10:8465
>
> Часть конфига:
>
> mail {
> auth_http localhost:8081/auth;
> smtp_auth login plain cram-md5;
> proxy_smtp_auth on;
[...]
> При этом localhost:8081/auth - это статическая web-заглушка и всегда отдает нужные заголовки.
У вас включена аутентификация CRAM-MD5, то есть nginx не знает
пароль пользователя - однако для аутентификации на бэкенде пароль
нужен. Его должен вернуть сервер аутентификации, auth_http, в
заголовке ответа Auth-Pass, но, судя по ошибке, не вернул.
Подробнее см. в описании протокола:
http://freenginx.org/ru/docs/mail/ngx_mail_auth_http_module.html#protocol
Нужно либо поправить сервер аутентификации так, чтобы он для
CRAM-MD5 возвращал пароль, либо отключить CRAM-MD5.
Ну или, поскольку речь про smtp, можно просто отключить
аутентификацию на бэкенде, "proxy_smtp_auth off" (по умолчанию,
так что директиву можно просто убрать). Полученное от клиента имя
пользователя при этом будет передаваться на бэкенд в рамках XCLIENT
(http://freenginx.org/r/xclient).
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru