<HTML><BODY><div>Спасибо за подсказку, включил аутентификацию без ssl и заработало… но только без proxy_protocol. С включенным proxy_protocol всё та же ошибка. Аутентификация не может работать через proxy protocol? Или может это какая-то особенность postfix?<br><br> <blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">Пятница, 2 мая 2025, 17:19 +03:00 от Maxim Dounin <mdounin@mdounin.ru>:<br> <div id=""><div class="js-helper js-readmsg-msg"><div><div id="style_17461955571542997072_BODY">Hello!<br><br>On Fri, May 02, 2025 at 03:50:10PM +0300, Юрий Ястребов via nginx-ru wrote:<br><br>> Добрый день, уважаемые коллеги!<br>> Я тестирую модуль mail и столкнулся с ситуацией некорректного проксирования команды AUTH в smtp сессии.<br>> Я хотел бы понять: это ожидаемое поведение или я что-то делаю неправильно?<br>> Сервер smtp: postfix 3.7.11, прокси: nginx 1.26.3<br>>  <br>> Вот мой конфиг контекста mail:<br>>  <br>>   mail {<br>>       auth_http localhost/auth;<br>>       proxy_pass_error_message on;<br>>       xclient off;<br>>       starttls off;<br>>  <br>>       server {<br>>           listen           465 ssl;<br>>           protocol         smtp;<br>>           smtp_auth        login plain cram-md5;<br>>           proxy_smtp_auth  on;<br>>           proxy_protocol   on;<br>>           ssl_certificate     /etc/ssl/certs/ssl-cert-snakeoil.pem;<br>>           ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;<br>>       }<br>>   }<br>>  <br>> Для аутентификации используется статическая заглушка:<br>>  <br>>   location = /auth {<br>>       add_header Auth-Status OK;<br>>       add_header Auth-Server 192.168.0.104;<br>>       add_header Auth-Port   10025;<br>>       return 204;<br>>   }<br>>  <br>> При взаимодействии smtp клиента через прокси возникает ошибка аутентификации, вот кусок лога:<br>> ----<br>> 2025-05-02T15:33:20.716305+03:00 mail-smtp postfix/smtpd[7539]: match_list_match: 192.168.0.101: no match<br>> 2025-05-02T15:33:20.716396+03:00 mail-smtp postfix/smtpd[7539]: > mail-client.yyv83[192.168.0.101]: 250-mail.yyv83.dynv6.net<br>> 2025-05-02T15:33:20.716446+03:00 mail-smtp postfix/smtpd[7539]: > mail-client.yyv83[192.168.0.101]: 250-PIPELINING<br>> 2025-05-02T15:33:20.716496+03:00 mail-smtp postfix/smtpd[7539]: > mail-client.yyv83[192.168.0.101]: 250-SIZE 10240000<br>> 2025-05-02T15:33:20.716551+03:00 mail-smtp postfix/smtpd[7539]: > mail-client.yyv83[192.168.0.101]: 250-ETRN<br>> 2025-05-02T15:33:20.716622+03:00 mail-smtp postfix/smtpd[7539]: > mail-client.yyv83[192.168.0.101]: 250-STARTTLS<br>> 2025-05-02T15:33:20.716682+03:00 mail-smtp postfix/smtpd[7539]: > mail-client.yyv83[192.168.0.101]: 250-ENHANCEDSTATUSCODES<br>> 2025-05-02T15:33:20.716737+03:00 mail-smtp postfix/smtpd[7539]: > mail-client.yyv83[192.168.0.101]: 250-8BITMIME<br>> 2025-05-02T15:33:20.716785+03:00 mail-smtp postfix/smtpd[7539]: > mail-client.yyv83[192.168.0.101]: 250-DSN<br>> 2025-05-02T15:33:20.716837+03:00 mail-smtp postfix/smtpd[7539]: > mail-client.yyv83[192.168.0.101]: 250-SMTPUTF8<br>> 2025-05-02T15:33:20.716927+03:00 mail-smtp postfix/smtpd[7539]: > mail-client.yyv83[192.168.0.101]: 250 CHUNKING<br>> 2025-05-02T15:33:20.716985+03:00 mail-smtp postfix/smtpd[7539]: smtp_stream_setup: maxtime=300 enable_deadline=0 min_data_rate=0<br><br>[...]<br><br>> Если клиент взаимодейтсвует с сервером напрямую, то все работает корректно, вот часть лога:<br>> ---<br>> 2025-05-02T14:58:39.796402+03:00 mail-smtp postfix/smtps/smtpd[6781]: match_list_match: 192.168.0.101: no match<br>> 2025-05-02T14:58:39.796459+03:00 mail-smtp postfix/smtps/smtpd[6781]: > mail-client.yyv83[192.168.0.101]: 250-mail.yyv83.dynv6.net<br>> 2025-05-02T14:58:39.796548+03:00 mail-smtp postfix/smtps/smtpd[6781]: > mail-client.yyv83[192.168.0.101]: 250-PIPELINING<br>> 2025-05-02T14:58:39.796659+03:00 mail-smtp postfix/smtps/smtpd[6781]: > mail-client.yyv83[192.168.0.101]: 250-SIZE 10240000<br>> 2025-05-02T14:58:39.796768+03:00 mail-smtp postfix/smtps/smtpd[6781]: > mail-client.yyv83[192.168.0.101]: 250-ETRN<br>> 2025-05-02T14:58:39.796847+03:00 mail-smtp postfix/smtps/smtpd[6781]: > mail-client.yyv83[192.168.0.101]: 250-AUTH PLAIN LOGIN<br>> 2025-05-02T14:58:39.796935+03:00 mail-smtp postfix/smtps/smtpd[6781]: > mail-client.yyv83[192.168.0.101]: 250-ENHANCEDSTATUSCODES<br>> 2025-05-02T14:58:39.797086+03:00 mail-smtp postfix/smtps/smtpd[6781]: > mail-client.yyv83[192.168.0.101]: 250-8BITMIME<br>> 2025-05-02T14:58:39.797165+03:00 mail-smtp postfix/smtps/smtpd[6781]: > mail-client.yyv83[192.168.0.101]: 250-DSN<br>> 2025-05-02T14:58:39.797227+03:00 mail-smtp postfix/smtps/smtpd[6781]: > mail-client.yyv83[192.168.0.101]: 250-SMTPUTF8<br>> 2025-05-02T14:58:39.797331+03:00 mail-smtp postfix/smtps/smtpd[6781]: > mail-client.yyv83[192.168.0.101]: 250 CHUNKING<br>> 2025-05-02T14:58:39.797412+03:00 mail-smtp postfix/smtps/smtpd[6781]: smtp_stream_setup: maxtime=300 enable_deadline=0 min_data_rate=0<br><br>[...]<br><br>Судя по логам - у вас аутентификация в postfix'е разрешена только<br>через SSL (smtpd_tls_auth_only = yes). Клиент ходит через SSL и у<br>него, соответственно, работает. А поскольку nginx к почтовым<br>бэкендам ходит без шифрования - ему аутентификацию не разрешают.<br><br>Лечить, соответственно, проще всего на стороне postfix'а, либо<br>вообще убрав запрет на аутентификацию без SSL, либо<br>сконфигурировав в master.cf отдельный smtpd-сервис для nginx без<br>такого запрета.<br><br>Если сеть не доверенная и нужно таки шифровать соединения к<br>почтовым бэкендам - то можно в nginx'е сделать дополнительное<br>проксирование через модуль stream, и там включить шифрование<br>соединений к бэкенду (proxy_ssl on).<br><br>--<br>Maxim Dounin<br><a href="http://mdounin.ru/" target="_blank">http://mdounin.ru/</a></div></div></div></div></blockquote> <div> </div><div data-signature-widget="container"><div data-signature-widget="content"><div>--<br>Юрий Ястребов</div></div></div><div> </div></div></BODY></HTML>