From yyv83 на mail.ru Wed Dec 3 19:59:09 2025 From: yyv83 на mail.ru (=?UTF-8?B?0K7RgNC40Lkg0K/RgdGC0YDQtdCx0L7Qsg==?=) Date: Wed, 03 Dec 2025 22:59:09 +0300 Subject: =?UTF-8?B?0L7RiNC40LHQutCwIHNzbCDRgdC10YHRgdC40Lgg0L/RgNC4INC/0YDQvtC6?= =?UTF-8?B?0YHQuNGA0L7QstCw0L3QuNC4IHNtdHA=?= Message-ID: <1764791949.961700601@f211.i.mail.ru> Всем доброго времени суток.   Я столкнулся с неожиданной проблемой, может кто-то подскажет... У меня в контексте 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;     error_log             /var/log/angie/debug.log debug;       ssl_protocols        TLSv1.1 TLSv1.2 TLSv1.3;     ssl_certificate      /opt/www/example.pem;     ssl_certificate_key  /opt/www/example.key;       server {         listen               465 ssl so_keepalive=1m;         protocol             smtp;         starttls             off;     }       server {         listen               587 so_keepalive=1m;         protocol             smtp;         starttls             on;     } }   При этом localhost:8081/auth - это статическая web-заглушка и всегда отдает нужные заголовки.     -- Юрий Ястребов ----------- следующая часть ----------- Вложение в формате HTML было извлечено… URL: From mdounin на mdounin.ru Thu Dec 4 07:58:07 2025 From: mdounin на mdounin.ru (Maxim Dounin) Date: Thu, 4 Dec 2025 10:58:07 +0300 Subject: =?koi8-r?B?z9vJwsvBIHNzbCDTxdPTyckg?= =?koi8-r?B?0NLJINDSz8vTydLP18HOyck=?= smtp In-Reply-To: <1764791949.961700601@f211.i.mail.ru> References: <1764791949.961700601@f211.i.mail.ru> Message-ID: 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/