Спасибо за подсказку, включил аутентификацию без ssl и заработало… но только без proxy_protocol. С включенным proxy_protocol всё та же ошибка. Аутентификация не может работать через proxy protocol? Или может это какая-то особенность postfix?
>Пятница, 2 мая 2025, 17:19 +03:00 от Maxim Dounin <mdou...@mdounin.ru>: > >Hello! > >On Fri, May 02, 2025 at 03:50:10PM +0300, Юрий Ястребов via nginx-ru wrote: > >> Добрый день, уважаемые коллеги! >> Я тестирую модуль mail и столкнулся с ситуацией некорректного проксирования >> команды AUTH в smtp сессии. >> Я хотел бы понять: это ожидаемое поведение или я что-то делаю неправильно? >> Сервер smtp: postfix 3.7.11, прокси: nginx 1.26.3 >> >> Вот мой конфиг контекста mail: >> >> mail { >> auth_http localhost/auth; >> proxy_pass_error_message on; >> xclient off; >> starttls off; >> >> server { >> listen 465 ssl; >> protocol smtp; >> smtp_auth login plain cram-md5; >> proxy_smtp_auth on; >> proxy_protocol on; >> ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem; >> ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key; >> } >> } >> >> Для аутентификации используется статическая заглушка: >> >> location = /auth { >> add_header Auth-Status OK; >> add_header Auth-Server 192.168.0.104; >> add_header Auth-Port 10025; >> return 204; >> } >> >> При взаимодействии smtp клиента через прокси возникает ошибка >> аутентификации, вот кусок лога: >> ---- >> 2025-05-02T15:33:20.716305+03:00 mail-smtp postfix/smtpd[7539]: >> match_list_match: 192.168.0.101: no match >> 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 >> 2025-05-02T15:33:20.716446+03:00 mail-smtp postfix/smtpd[7539]: > >> mail-client.yyv83[192.168.0.101]: 250-PIPELINING >> 2025-05-02T15:33:20.716496+03:00 mail-smtp postfix/smtpd[7539]: > >> mail-client.yyv83[192.168.0.101]: 250-SIZE 10240000 >> 2025-05-02T15:33:20.716551+03:00 mail-smtp postfix/smtpd[7539]: > >> mail-client.yyv83[192.168.0.101]: 250-ETRN >> 2025-05-02T15:33:20.716622+03:00 mail-smtp postfix/smtpd[7539]: > >> mail-client.yyv83[192.168.0.101]: 250-STARTTLS >> 2025-05-02T15:33:20.716682+03:00 mail-smtp postfix/smtpd[7539]: > >> mail-client.yyv83[192.168.0.101]: 250-ENHANCEDSTATUSCODES >> 2025-05-02T15:33:20.716737+03:00 mail-smtp postfix/smtpd[7539]: > >> mail-client.yyv83[192.168.0.101]: 250-8BITMIME >> 2025-05-02T15:33:20.716785+03:00 mail-smtp postfix/smtpd[7539]: > >> mail-client.yyv83[192.168.0.101]: 250-DSN >> 2025-05-02T15:33:20.716837+03:00 mail-smtp postfix/smtpd[7539]: > >> mail-client.yyv83[192.168.0.101]: 250-SMTPUTF8 >> 2025-05-02T15:33:20.716927+03:00 mail-smtp postfix/smtpd[7539]: > >> mail-client.yyv83[192.168.0.101]: 250 CHUNKING >> 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 > >[...] > >> Если клиент взаимодейтсвует с сервером напрямую, то все работает корректно, >> вот часть лога: >> --- >> 2025-05-02T14:58:39.796402+03:00 mail-smtp postfix/smtps/smtpd[6781]: >> match_list_match: 192.168.0.101: no match >> 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 >> 2025-05-02T14:58:39.796548+03:00 mail-smtp postfix/smtps/smtpd[6781]: > >> mail-client.yyv83[192.168.0.101]: 250-PIPELINING >> 2025-05-02T14:58:39.796659+03:00 mail-smtp postfix/smtps/smtpd[6781]: > >> mail-client.yyv83[192.168.0.101]: 250-SIZE 10240000 >> 2025-05-02T14:58:39.796768+03:00 mail-smtp postfix/smtps/smtpd[6781]: > >> mail-client.yyv83[192.168.0.101]: 250-ETRN >> 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 >> 2025-05-02T14:58:39.796935+03:00 mail-smtp postfix/smtps/smtpd[6781]: > >> mail-client.yyv83[192.168.0.101]: 250-ENHANCEDSTATUSCODES >> 2025-05-02T14:58:39.797086+03:00 mail-smtp postfix/smtps/smtpd[6781]: > >> mail-client.yyv83[192.168.0.101]: 250-8BITMIME >> 2025-05-02T14:58:39.797165+03:00 mail-smtp postfix/smtps/smtpd[6781]: > >> mail-client.yyv83[192.168.0.101]: 250-DSN >> 2025-05-02T14:58:39.797227+03:00 mail-smtp postfix/smtps/smtpd[6781]: > >> mail-client.yyv83[192.168.0.101]: 250-SMTPUTF8 >> 2025-05-02T14:58:39.797331+03:00 mail-smtp postfix/smtps/smtpd[6781]: > >> mail-client.yyv83[192.168.0.101]: 250 CHUNKING >> 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 > >[...] > >Судя по логам - у вас аутентификация в postfix'е разрешена только >через SSL (smtpd_tls_auth_only = yes). Клиент ходит через SSL и у >него, соответственно, работает. А поскольку nginx к почтовым >бэкендам ходит без шифрования - ему аутентификацию не разрешают. > >Лечить, соответственно, проще всего на стороне postfix'а, либо >вообще убрав запрет на аутентификацию без SSL, либо >сконфигурировав в master.cf отдельный smtpd-сервис для nginx без >такого запрета. > >Если сеть не доверенная и нужно таки шифровать соединения к >почтовым бэкендам - то можно в nginx'е сделать дополнительное >проксирование через модуль stream, и там включить шифрование >соединений к бэкенду (proxy_ssl on). > >-- >Maxim Dounin >http://mdounin.ru/ -- Юрий Ястребов