nginx ESMTP - проблема (?)
Всем доброго дня! Столкнулся с проблемой, которая *может быть* связана с использованием nginx в качестве ESMTP proxy (не уверен, что дело в nginx). Предыстория: Провайдер почты конторы, где я работаю, судя по всему, использует nginx ESMTP proxy на серверах входящей почты. Письма от одного из заказчиков нам не доставляются, "отлуп" выглядит так: 500 5.5.1 Invalid command. Отлуп получается в ответ на HELO <имя_сервера>. Заказчик использует свой почтовый сервер, работающий на Windows Server. Общение с техподдержкой провайдера никаких результатов не даёт. Симптомы проблемы: Подключаюсь к почтовому серверу провайдера с помощью телнета, пытаюсь "вручную" написать себе письмо, передавая серверу стандартные SMTP команды. Из линукс - всё работает, как и должно, проблем не вижу. Из Винды - с помощью telnet.exe - вижу 500 5.5.1 Invalid command в ответ на любую команду, а также на нажатие клавиши [пробел] и [точка]. T.e. введя [enter] вижу: helo 500 5.5.1 Invalid command mx.500 5.5.1 Invalid command test.500 5.5.1 Invalid command com 500 5.5.1 Invalid command (на [пробел] "отлуп", на каждую точку "отлуп", и на нажатие [enter] -- контрольный в голову, видимо ;-) Делаю то же самое с помощью putty -- ситуация получше, и тестовое письмо отправить удаётся, но всё равно есть странности. Вот я подключился, ввёл "helo" (специально без имени сервера-отправителя), затем ввёл quit: helo 500 5.5.1 Invalid command quit 500 5.5.1 Invalid command Делаю то же из линукс: helo 501 5.5.4 Invalid argument quit 221 2.0.0 Bye Connection closed by foreign host. Почувствуйте разницу, что называется. Предполагаю, что при попытке отправить письмо с почтового сервера заказчика (который живёт на Винде) происходит примерно то же самое, что я наблюдаю в телнет-сессии. Кривизна Винды вообще и telnet.exe тут не при чём, потому как телнет-сессии при помощи telnet.exe с mail.ru, yandex.ru (не знаю, что за ПО они используют), с серверами Postfix и Exim и вообще со всеми, кого я только ни пробовал -- проходят без проблем. Предполагаю, что дело именно в настройках серверов входящей почты (в nginx или нижележащей ОС - не знаю). А вот rambler.ru, по-видимому, использует ту же схему, что и мой хостер -- и с теми же самыми симптомами. Ещё предполагаю, что используемая ОС в обоих случаях -- FreeBSD (точно не знаю). Сервера, на которых можно увидеть вышеописанное поведение: моего хостера: mxs.ht-systems.ru (78.110.50.88, 78.110.50.89) рамблера: imx1.rambler.ru, imx2.rambler.ru (81.19.66.234, 81.19.66.235) Поиск в Интернете по описанной проблеме (с самыми различными вариантами запросов) ответа не дал, зато сложилось впечатление, что использование nginx в качестве ESMTP proxy -- это некая экзотика. Так ли это, уважаемые пользователи nginx? Использует ли кто-то nginx в названном качестве, и если да, воспроизводима ли проблема на вашем сервере? С уважением, Алексей Posted at Nginx Forum: http://forum.nginx.org/read.php?21,241708,241708#msg-241708 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginx ESMTP - проблема (?)
Никакой разницы в поведении с HELO: подключаюсь из Линукс - получаю нормальные ответы, подключаюсь из Винды: вижу в ответ Invalid Command Роман Москвитин Wrote: --- > В качестве предложения: а если попробовать использовать EHLO? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,241708,241725#msg-241725 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginx ESMTP - проблема (?)
И в винде, и в Линукс в конце строки \r\n В wireshark Виндовой сессии бросается в глаза, что каждый пакет от меня имеет неверную контрольную сумму: Header checksum: 0x [incorrect, should be 0x68b3 (may be caused by "IP checksum offload"?)] Daniel Podolsky Wrote: --- > а поглядите, действительно, на сессию в снифере. наверняка дело в > конце строки, винда шлет \r\n, а положено \n. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,241708,241727#msg-241727 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginx ESMTP - проблема (?)
> 1. Посмотрите для начала с помощью tcpump/wireshark что реально > передает > по сети этот telnet.exe Как написал в ответ на другой пост, первое, что бросается в глаза -- большая фрагментация и неправильная контрольная сумма у каждого пакета из Винды: Header checksum: 0x [incorrect, should be 0x68ae (may be caused by "IP checksum offload"?)] Если поделюсь соответствующими кусочками дампов - это поможет? Сам не большой специалист. > 2. Есть подозрение, что helo и mx. отправляются в разных ip-пакетах, а > данная реализация smtp получив данные из syscall read() сразу пытается > их обработать как команду, не дожидаясь CR LF. И вряд ли так делает > nginx. Вот это очень похоже на правду (нажал пробел, точку или цифру - тут же увидел в ответ Invalid Command), ещё до нажатия enter (и генерации cr lf). Насчёт реализации smtp. Если nginx используется в качестве ESMTP - ответы на мои smtp команды я получаю от него -- или от того, что "ниже", так сказать? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,241708,241728#msg-241728 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginx ESMTP - проблема (?)
Anton Yuzhaninov Wrote: --- > Отличие линуксового телнета от виндового похоже в то, что линуксовый > шлет команду через один syscall и как следствие это уходит в одном IP > пакете. > Но если удаленная сторона не понимает команду пришедшую в нескольких > пакетах, то это баг. Может там и правда Cisco PIX или что то > аналогичное по функциям. Техподдержка ответила на вопрос о том, какой софт используется. О/с - freebsd 7 MTA - exim 4.69 nginx и в самом деле используется в качестве ESMTP proxy (т. е. описанное поведение *может* оказаться багом именно nginx). Именно PIX они не используют, попросил уточнить про аналоги, ответят - отпишусь. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,241708,241771#msg-241771 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginx ESMTP - проблема (?)
Спасибо за идею/информацию. Спросил, именно PIX они не используют, уточню насчёт аналогов. Доступа к дебагу у меня нет, т. к. сервак провайдера, а они не хотят этим заниматься, отписываются, что у них всё хорошо, а проблема на нашей стороне)) kornel Wrote: --- > У меня была очень похожая проблема была при использовании PIX > файрвола. > Он вмешивался в сессию и резал всё, что хоть немного отличалось, в > его > понимании, от идеальной smtp сессии. Разобраться смог только дебажа > входящий на tcp/25 на сервере. > > ~~~ > wbr, Alexander Uskov Posted at Nginx Forum: http://forum.nginx.org/read.php?21,241708,241772#msg-241772 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru