ошибка 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