Re: Re: connection is broken - держаться больше нету сил!

От: Vladimir A. Butenko <CGatePro_at_mx_ru>
Дата: Fri 23 Dec 2005 - 21:13:25 MSK

On Fri, 23 Dec 2005 10:45:28 +0300
  "Maxim Cherniavsky" <CGatePro@mx.ru> wrote:
> Vladimir A. Butenko wrote:
>

>>
>> Очень хорошо ответил - то есть мы опять же в качестве гуманитарной 
>> помощи выдаем RSET в подобных ситуациях. На него вообще то-то надо 
>> отвечать 250, но если ответили 421 - мы понимаем, что серверу очень 
>> плохо, он нас не любит (нас, а не письмо - письмо уже обработалось, 
>> про него тут нигде речи нет), и мы САМИ тут закрываем соединение. А 
>> обрабатывается такая (в общем-то нестандартная) ситуация как и любой 
>> другой подобный "сбой того конца" - то есть как обрыв связи.
>>
>>

> Вот на счет гуманитарной помощи я не понял :) Вот как это выглядит в
>telnet сессии

> ......
> RCPT TO: skuzn@comail.ru
> 450 <skuzn@comail.ru>: Recipient address rejected: Account skuzn is
>temporary blocked, please visit http://noc.comstar.ru/mail_blocked.html

> 421 mx1.comstar.ru Error: too many errors
> Connection closed by foreign host.
>
> Т.е приходит подряд два ответа, что на мой вгляд ничему не противоречит
>(rfc 2821)

>
> An SMTP server MUST NOT intentionally close the connection except:
>
> - After receiving a QUIT command and responding with a 221 reply.
>
> - After detecting the need to shut down the SMTP service and
> returning a 421 response code. This response code can be issued
> after the server receives any command or, if necessary,
> asynchronously from command receipt (on the assumption that the
> client will receive it after the next command is issued).
> ключевое слово asynchronously что на самом деле и происходит, и по логам
>CGP мы видим как будто 421 вернулся на RSET, что на самом деле не так. Вчитайтесь внимательнее. Это как раз тот самый пример, мягко говоря, неквалифицировнности - у авторов всяко разных "расширений протоколов".

НИКАКОЙ асинхронности в SMTP НЕТУ: "on the assumption that the client will receive it after the next command is issued". То есть что происходит если кто-то, переболев менингитом и выжив, будет следовать этому правилу: мне захотелось что-то клиенту сказать. Понятия "асинхронного ответа" у меня в протоколе нет. Но я очень хочу. Поэтому я ему посылаю - "on the assumption". Вот такой получается диалог:

C: Хочешь пряник?
S: Да.
S - пробует, не нравится
S: нет!
С: Хочешь жить?
С - пиф-паф.

Разговор на уровне того мальчика-тормоза. Выдача RSET НЕМНОЖНО приводит в себя таких заторможенных. Потому что появляется шанс, что их яростное "421 НЕТ Кстплуатации народных ресурсов" попадёт туда, куда они хотели, а не на следующий запрос MAIL FROM, например. Собственно, протокол (настоящий, а не "улучшенный красной профессурой") настоятельно рекомендует выдавать RSET - именно поэтому. А можно было бы и бритовкой-та: выдать просто QUIT, а получив на QUIT 421 - отложить подобных творцов "assumptions" на весьма конкретное время (Retry Every), потому как писать им явно надо медленно, быстро оне не читают.

>>> В логах ничего про broken не вижу, но в Monitors он broken
>>
>>
>> Это эмуляция такой ошибки. То есть любая ошибка протокола - 
>> обрабатывается так же, как и брошенное соединение.
>>
>> Всё было бы много хуже, если бы оно выдавало этот свой 421 не на RSET, 
>> а на MAIL FROM - CGatePro бы это не остановило, но мессаж был бы 
>> реально отложен на время Delay Message. Я не знаю, как этот 
>> фриваре-Postfix обрабатывает ситауации, когда RSET не выдается, если 
>> он просто выдает на любую команду после какого-то числа ошибок (и с 
>> RSET тут просто повезло) - то плохо. Надо бы несколько больше 
>> статистки набрать. Поэтому гораздо надежнее просто бросать соединение, 
>> если уж очень не хочется с кем-то разговаривать.

>
>
> " after the server receives any command" говорит так же что 421 может быть
>на любую команду, если я конечно все правильно понимаю

ВЫ - понимаете правильно. То, что написано. А оне - писатели - не понимали  (вааще никак) - к чему подобные "советы" могут приводить. Я вот и пытаюсь Вам это об"яснить (им об"яснять бесполезно, иных уж нет).

>> А если Вам не хочется, чтобы Вас отшивали таким образом надолго - то 
>> Retry Every Вам в помощь (уменьшение его значения).

>
> Как ни странно не помогло, видимо там зацикливание получается, т.к. как
>были письма до которых выемка из очереди не дошла, так и есть.

Правильно. У Вам же, наверное, стоит откладывание Recipient на 5 секунд - вот через 5 секунд оно и рвется туда это всё доставить.   

>> Единственное предложение, которое из этого всего вытекает - IMHO - это 
>> ввести 2 опции по откладыванию очередей хостов: одну - если "не 
>> удалось вааще", а вторую - если мы смогли "пропихнуть" хотя бы одно 
>> письмо, а потом "оно упало". Тут, правда, возникает вопрос, что 
>> считать за "пропихнуть" - позитивный ответ на DATA, ".", или ЛЮБОЙ 
>> разумный ответ на команды MAIL FROM, RCPT TO, DATA, "." - включая и 
>> негативный. Вопрос, однако, непростой - и, как видите, не совсем прямо 
>> связан с тем, с чего начался разговор (см. Субж).

>
> Мне кажется что будет достаточно еще одной опции, отключить сериализацию
>по домену и позволить дать каждому письму жить своей жизнью, это самое ж >простое

И открывать на каждое письмо по соединению? То есть упал в очередной раз hotmail.com. И скопилось у вас на него 100,000 писем - очень частая ситуация. После чего бросаем всё и открывает 100000 соединений в hotmail.com, да? У них хоть и нету CGatePro там - но даже их самоделка это дело пресечет быстро - "connections per host", думаю, там стоит - и будут у вас письма болтаться еще больше.

> А по поводу "Субж" - это первый раз когда мы получили развернутый ответ

>что же есть на самом деле "connection broken", последний ответ который мы 
>получали на данный вопрос это "играйтесь с временными настройками", так что 
>я приятно удвилен :)

Чем чаще Вы будете приводить выдержки из логов, тем более глубоким и частым будет Ваше удивление.

Далее - уже сугубо личное мнение (пользуясь непробиваемым гостеприимством владельца списка). Борьба с доставками писем на всякие hotmail.com, yahoo.zu и прочие подобные службы - это выполнение работ этих служб по обслуживанию ИХ клиентов. Если кто-то заводит себе аккаунт на чем-то подобном для целей, отличных от сбора спама (Internet-продавцу отдать в качестве адреса, молодому человечку - вместо "телефончика"), то он[а] сам[а] ищет приключение на свою косую сажень. Зачем мешать е[й|му] в этом увлекательнейшем занятии?

Вы же, увидев мужичонку, корчащегося в муках страсти от выпитого бесплатного денатурата - не кидаетесь перепланировать свой под"езд, увеличивая число углов, в которых ему, болезному, было бы сподручнее расставаться с радостно потреблённым? А вот задержками в доходе почты до него, халявшика-денатуратчика - Вы обеспокоены безмерно...

> Спасибо

> Best regards,
> Maxim Cherniavsky
> Comstar-UTS, Internet Division
> mailto: maxim (at) comstar.ru

Sincerely,
Vladimir Получено Fri Dec 23 18:13:23 2005

Этот архив был сгенерирован hypermail 2.1.8 : Fri 24 Apr 2015 - 16:14:39 MSK