Re: ошибка аутентификации при проксировании smtp
Юрий Ястребов
yyv83 на mail.ru
Пт Май 2 17:15:43 UTC 2025
Спасибо за подсказку, включил аутентификацию без ssl и заработало… но только без proxy_protocol. С включенным proxy_protocol всё та же ошибка. Аутентификация не может работать через proxy protocol? Или может это какая-то особенность postfix?
>Пятница, 2 мая 2025, 17:19 +03:00 от Maxim Dounin <mdounin на 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/
--
Юрий Ястребов
----------- следующая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://freenginx.org/pipermail/nginx-ru/attachments/20250502/89b48542/attachment-0001.htm>
Подробная информация о списке рассылки nginx-ru