Регистрация...

Eserv Forum / E3 / Eserv 3 Mail Server Support / Исходящая очередь

imported // (v1)
Продукты и услуги Скачать Документация Купить Поддержка Форумы Партнёрам Статьи О компании
Новости
12.10.2009
Переезд завершен
Есть в очереди несколько писем в разные почтовые домены. SMTPSEND усердно пытается их отправить. Смотрим лог: ошибка 10061. Ручками в nslookup пробиваем mx записи по этим доменам, все порядке, в DNS запись есть, SMTPSEND тут же начинает отправку без проблем.
SendMailApp={SMTP[SmtpSend]} -ln 200 -r 1 -helo {Server[HostName]} -o {Dirs[Temp]}\smtpsend-{RANDOM-ID}.log -f {SMTP[Out]}\ {SMTP[Return]} {SMTP[DNSServer]} по дефолту.

Прописывая IP в DNSServer результата не дает.
Что не так?
 
Комментарии к этой версии (11.01.2008 11:04) [~DSmile] 32297471
АвторДатаТекстtags
pig11.01.2008 11:21
Во-первых, надо посмотреть, куда именно агент пытается отправлять письма — на те же самые MX или куда-то в другое место. Во-вторых, при такой командной строке параметр DNSServer агента не интересует. Хотите, чтобы интересовал — добавьте -s {SMTP[DNSServer]}
imported
DSmile11.01.2008 13:03
да, на те же самые MX вот пример темпа:
<?xml version='1.0' encoding='windows-1251'?> <?xml-stylesheet href='atom.xsl' type='text/xsl'?> <feed version='0.3' xmlns='http://purl.org/atom/ns#' xmlns:s='http://www.eserv.ru/smtpsend/log'> <title>SMTPSEND v4.30 log</title> <modified>2008-01-11T16:01:49Z</modified> <author><name>smtpsend4 at my.domain</name></author> <s:dns>Checking DNS settings. Server: 111.111.111.111 DNS settings seems OK</s:dns> <entry> <link rel='alternate' type='message/rfc822' href='Dauren@my.domain!224!14948328!3.eml' /> <id>1992892772.20080111120939@my.domain</id> <author><name>=?Windows-1251?Q?=CC=F3=ED=EA=E5=E1=E0=E5=E2_=C4=2E=C1=2E?=</name><email>Dauren@my.domain</email></author> <summary>To: Marketing@vkmz.ru</summary> <title></title> <s:to>Marketing@vkmz.ru</s:to> <s:host>Send to host directly: vkmz.ru</s:host> <content type='text/plain'><![CDATA[ ]]></content> <s:ior>Error: 10061 </s:ior> <s:err>ERR:10061 </s:err> <s:result>FAILED. Error code: 10061 </s:result>


пробиваю в nslookup MX запись для vkmz.ru тут же письмо уходит

параметр -s пробовал, результат то же
imported
pig11.01.2008 13:27
В данном случае как раз никакой не MX, а хост. То есть, DNS-сервер 111.111.111.111 не добыл список MX для домена vkmz.ru. В ключе -s его указывали? А nslookup какой сервер опрашивает?

Лог успешной отправки хорошо бы посмотреть.
imported
DSmile14.01.2008 06:31
nslookup опрашивает тот же самый DNS сервер. Его адрес прописан в системе, параметром -s не указан
вот лог неудачи:
<link rel='alternate' type='message/rfc822' href='sale@my.domain!1756!163452015!3.eml' /> <id>1379303975.20080114084157@my.domain</id> <author><name>=?windows-1251?B?w/Do9uDl4uAgzi7ALg==?=</name><email>sale@my.domain</email></author> <summary>To: Mail_user user1@efmc.kz </summary> <title>L 14.01.08.</title> <s:to>user2@efmc.kz</s:to> <s:host>Send to host directly: efmc.kz</s:host> <content type='text/plain'><![CDATA[ ]]></content> <s:ior>Error: 10061 </s:ior> <s:err>ERR:10061 </s:err> <s:to>user3@efmc.kz</s:to> <s:host>Send to host directly: efmc.kz</s:host> <content type='text/plain'><![CDATA[ ]]></content> <s:ior>Error: 10061 </s:ior> <s:err>ERR:10061 </s:err> <s:to>user1@efmc.kz</s:to> <s:host>Send to host directly: efmc.kz</s:host> <content type='text/plain'><![CDATA[ ]]></content> <s:ior>Error: 10061 </s:ior> <s:err>ERR:10061 </s:err> <s:result>FAILED. Error code: 10061 </s:result> </entry><entry>
делаеем nslookup для efmc.kz, устанавливаем set type=mx и вот лог удачи
<link rel='alternate' type='message/rfc822' href='sale@my.domain!1770!164894750!3.eml' /> <id>136898174.20080114090552@my.domain</id> <author><name>=?windows-1251?B?w/Do9uDl4uAgzi7ALg==?=</name><email>sale@my.domain</email></author> <summary>To: Mail_user user1@efmc.kz </summary> <title>Tv.+ 14.01.08</title> <s:to>user2@efmc.kz</s:to> <s:mx>MX: mail.efmc.kz</s:mx> <content type='text/plain'><![CDATA[ 220 mail.efmc.kz ESMTP SMTPProxy HELO my.domain 250 efmc.kz MAIL FROM:<sale@my.domain> 250 OK RCPT TO:<user2@efmc.kz> 250 OK DATA 354 End data with <CR><LF>.<CR><LF>
imported
pig14.01.2008 12:44
Тогда непонятно. Чем различаются запросы двух приложений? По идее, ничем...
Это DNS ваш или провайдерский?

На личном опыте пришёл к выводу, что надо ставить локальный кэширующий DNS, назначив ему десяток надёжных проверенных форвардеров.
imported
DSmile14.01.2008 13:08
Вот и я тоже в непонятках. а DNS прова.. может с ними пообщатся?
imported
pig14.01.2008 15:49
Вряд ли что вразумительное скажут. Поставьте свой DNS, пусть кэширует. Плюс этого решения в том, что можно не один провайдерский DNS в качестве источника использовать, а обследовать всё близлежащее (да и не только близ, у меня в списке московские и питерские серверы есть) и назначить аж десяток надёжных серверов. Возможно, у провайдера какие-то свои заморочки, а неподалёку есть более надёжная альтернатива.

Кстати, в последних логах отрезано начало с IP выбранного DNS-сервера. Поскольку вы его всё равно редактируете, то верю на слово, что сервер один и тот же. Подтвердите мою веру.
imported
DSmile15.01.2008 06:02
да, действительно сервер один и тот же вот неотредактированная часть
<?xml version='1.0' encoding='windows-1251'?> <?xml-stylesheet href='atom.xsl' type='text/xsl'?> <feed version='0.3' xmlns='http://purl.org/atom/ns#' xmlns:s='http://www.eserv.ru/smtpsend/log'> <title>SMTPSEND v4.30 log</title> <modified>2008-01-15T08:26:15Z</modified> <author><name>smtpsend4 at my.domain</name></author> <s:dns>Checking DNS settings. Server: 212.19.149.53 DNS settings seems OK</s:dns> <entry>
imported
pig15.01.2008 10:40
Значит, что-то не так с самим сервером, и надо поискать что-нибудь понадёжнее.
imported
tech027.03.2008 12:07
Здравствуйте, я соадмин на том же самом предприятии что и DSmile. В связи с его временным отсутствием теперь мне приходится все время лазать в nslookup, чтобы "пропихивать" почту. Я провел некоторые исследования данной проблемы и хочу их описать. Сам я в частности в Eserv'е очень не шибко разбираюсь.

Версия: SMTPSEND v4.38 for Eserv © 1997-2008 A.Cherezov Etype Co.

Описание проблемы.
Если домен получателя (пример: sandy.ru) не соответствует MAIL EXCHANGER'у (relay1.sandy.ru, relay2.sandy.ru), т.е. "A" и "MX" записи для домена ссылаются на разные адреса, то попытки отправить почту обычно заканчиваются какими-либо из следующих winsock ошибок: 10051, 10060, 11004.

Временное используемое решение.
Для того чтобы "протолкнуть" такую почту, приходится выполнять в nslookup следующие шаги: set type=mx sandy.ru

В результате мы получаем подробный положительный ответ. Почта на этот домен начинает уходить без проблем. DNS информация кешируется провайдерским DNS на указанный ttl в DNS ответе. Однако, временное решение перестает удовлетворять, когда письма на такие домены, достаточно много и часто отправляются. По понятным причинам Администратор не может весь день сидеть и следить за логами.

Исследование ситуации
Как я уже помечал, в самом Eserv я практически начинающий, поэтому исследовал проблему с другой стороны. Все действия и домены реальны.

Итак у нас в очереди письмо на домен @sandy.ru. С помощью анализатора сетевых пакетов CommView я проследил процесс разрешения имени для отправки почты на указанный выше домен. Для этого SMTPSEND предпринял 8 попыток. Я буду указывать только необходимые (по моему мнению) поля запросов/ответов. В качестве DNS серверов используются провайдерские 212.19.149.53 и 212.19.149.54.

1 запрос
Question Section record:0x1
Name: sandy.ru
Type: 0x000F(15) — MX
Class: 0x00FF(255) — *

1 ответ
Result Code:0x02(2) — Server Failure

2 запрос
Question Section record:0x1
Name: sandy.ru
Type: 0x0001(1) — A
Class: 0x00FF(255) — *

2 ответ
Result Code:0x02(2) — Server Failure

Далее 3,4,5 запросы и ответы на них идентичны 1-му.
6 запрос и ответ идентичны первому но послан уже на второй DNS (54)
7 запрос и ответ идентичны первому и посланы на первый DNS (53)

8 запрос
Question Section record:0x1
Name: sandy.ru
Type: 0x0001(1) — A
Class: 0x001(1) — IN

8 ответ
Answer Section record:0x1
Name: sandy.ru
Type: 0x0001(1) — A
Class: 0x001(1) — IN
TTL: 7200 — 2 Hour
IP address: 195.122.226.36

Процесс разрешения имени закончен. Идет попытка отправки почты на 195.122.226.36, в логе ошибка 10060, т.к. указанный хост не является mail exchanger'ом для домена sandy.ru

Далее пытаемся разрешить MX запись через nslookup. Команды:
set type=mx sandy.ru

Логи CommView:

1 запрос
Question Section record:0x1
Name: sandy.ru
Type: 0x000F(15) — MX
Class: 0x001(1) — IN

1 ответ
Answer Section record:0x1
Name: sandy.ru
Type: 0x000F(15) — MX
Class: 0x001(1) — IN
TTL: 7200 — 2 Hour
Preference: 0x000A(10)
Exchange: relay1.sandy.ru

record:0x2
Name: sandy.ru
Type: 0x000F(15) — MX
Class: 0x001(1) — IN
TTL: 7200 — 2 Hour
Preference: 0x0014(20)
Exchange: relay2.sandy.ru

После этой операции SMTPSEND успешно получает ответ на 1 запрос указанный выше, далее он разрешает имя relay1.sandy.ru и начинается отправка почты.

Субъективные выводы
DNS сервер отказался в начале обрабатывать запросы с типом MX и A, поле Class в которых равно "0x00FF(255)" или по другому "*". Читая http://www.ietf.org/rfc/rfc2929.txt (Domain Name System (DNS) IANA Considerations) на седьмой странице одним из возможных значений поля Class видим:
255
0x00FF — QCLASS Any [RFC 1035].


Читаем http://www.ietf.org/rfc/rfc1035.txt (DOMAIN NAMES — IMPLEMENTATION AND SPECIFICATION), 12 страница, глава "3.2.5. QCLASS values":
QCLASS fields appear in the question section of a query. QCLASS values are a superset of CLASS values; every CLASS is a valid QCLASS. In addition to CLASS values, the following QCLASSes are defined:

  • 255 any class
Получается на первый взгляд, что с одной стороны запрос с классом 255 валидный, с другой стороны DNS сервер сразу его не принимает. nslookup же для разрешения MX записи использует класс IN (INTERNET), что как показала практика успешно проходит.

Только после того как провайдерский DNS закеширует ответ на запрос type=MX, class=IN, он начинает отвечать на запросы типа type=MX, class=*.

Возможно решение данной проблемы SMTPSEND — это сменить либо добавить способ разрешения MX записи так, чтобы запросы шли с классом IN.

PS
Если бы таких случаев было еденицы, то вопрос бы даже не поднимался, но их количество увеличивается, начальство соответственно недовольно, и мы как обычно крайние. Попрошу что-нибудь предпринять для решения данной проблемы.
imported
pig27.03.2008 14:39
В качестве workaround — поставить локально кэширующий DNS и прописать ему в качестве форвардера провайдерский сервер (можно не только его, но и ещё пару — тройку надёжных из ближайшего окружения). Как показывает опыт, BIND к запросам с class=* относится благосклонно. Заодно и трафик чуть-чуть сэкономите.

А фикс, конечно же, будет.
imported
ac27.03.2008 17:21
Проблема не в ANY, а в том, что DNS-сервер возвращает ошибку server failure (2), из-за чего DNS-клиент в smtpsend'е законно считает этот сервер нерабочим (в этой итерации) и переходит к другому. Это специальное исправление, сделанное 4 апреля прошлого года, и его отмена вызовет больше проблем (тех, из-за которых фикс был введен).

Хорошо, попробуем покрутить класс запроса, вышлю вам тестовую версию сегодня чуть позже. А пока поставьте -sm для отправки через провайдера (того, чей DNS такой привередливый).
imported
ac27.03.2008 17:27
Вот с IN вместо ANY:
http://www.eserv.ru/download/smtpsend443b.rar
(и с другими изменениями, которые были после вашей 4.38 )
imported
DSmile28.03.2008 05:39
Поставили smtpsend. Сегодня протестируем. Результаты отпишем
imported
tech028.03.2008 16:39
На данный момент все работает как надо. Утром при установке указанной вами версии у нас как раз было около 7-ми "проблемных" писем, все они успешно были отправлены новой версией smtpsend.

В течении дня пользователи с такой проблемой больше не обращались.

Если возникнут проблемы, обязательно напишем, спасибо за быстрое исправление
imported
Работает на Eserv/5.05555 (05.06.2016)