?

Log in

No account? Create an account

Заметки админа

Суров и справедлив

Previous Entry Share Next Entry
Как разобраться с NDR, коды ошибок отправки писем
Отдыхаю
hroft_clone3
Временами, мы получаем по e-mail такую страшную штуку, как NDR (Non-Delivery Report) Не буду о нем расписывать много, желающие прочитают об этом по ссылке на википедию. Скажу кратко, что это письмо приходит в ответ на Ваше, если при доставке адресату, произошла ошибка.
В тексте письма указывается текст ошибки, адрес почтового ящика, список кодов ошибок (RFC 3463) и причина, по которой письмо не могло быть доставлено. Чаще всего NDR генерируется от имени MAILER-DAEMON@example.net (где example.net — имя домена, сервер которого не может выполнить доставку), однако некоторые почтовые системы могут использовать в качестве адреса-отправителя NDR почтовый адрес администратора почтовой службы.

Для желающих, в спойлер кину расшифровки, некую сводную выжимку. За полным описанием, все же надо обратится к полному тексту RFC-3463. Описание на английском.


[Коды ошибок]
2.XXX.XXX   Success
4.XXX.XXX   Persistent Transient Failure
5.XXX.XXX   Permanent Failure


      X.0.XXX   Other or Undefined Status
         X.0.0   Other undefined Status
      X.1.XXX Addressing Status
         X.1.0     Other address status
         X.1.1     Bad destination mailbox address
         X.1.2     Bad destination system address
         X.1.3     Bad destination mailbox address syntax
         X.1.4     Destination mailbox address ambiguous
         X.1.5     Destination mailbox address valid
         X.1.6     Mailbox has moved
         X.1.7     Bad sender's mailbox address syntax
         X.1.8     Bad sender's system address
      X.2.XXX Mailbox Status
         X.2.0     Other or undefined mailbox status
         X.2.1     Mailbox disabled, not accepting messages
         X.2.2     Mailbox full
         X.2.3     Message length exceeds administrative limit.
         X.2.4     Mailing list expansion problem
      X.3.XXX Mail System Status
         X.3.0     Other or undefined mail system status
         X.3.1     Mail system full
         X.3.2     System not accepting network messages
         X.3.3     System not capable of selected features
         X.3.4     Message too big for system
      X.4.XXX Network and Routing Status
         X.4.0     Other or undefined network or routing status
         X.4.1     No answer from host
         X.4.2     Bad connection
         X.4.3     Routing server failure
         X.4.4     Unable to route
         X.4.5     Network congestion
         X.4.6     Routing loop detected
         X.4.7     Delivery time expired
      X.5.XXX Mail Delivery Protocol Status
         X.5.0     Other or undefined protocol status
         X.5.1     Invalid command
         X.5.2     Syntax error
         X.5.3     Too many recipients
         X.5.4     Invalid command arguments
         X.5.5     Wrong protocol version
      X.6.XXX Message Content or Media Status
         X.6.0     Other or undefined media error
         X.6.1     Media not supported
         X.6.2     Conversion required and prohibited
         X.6.3     Conversion required but not supported
         X.6.4     Conversion with loss performed
         X.6.5     Conversion failed
      X.7.XXX Security or Policy Status
         X.7.0     Other or undefined security status
         X.7.1     Delivery not authorized, message refused
         X.7.2     Mailing list expansion prohibited
         X.7.3     Security conversion required but not possible
         X.7.4     Security features not supported
         X.7.5     Cryptographic failure
         X.7.6     Cryptographic algorithm not supported
         X.7.7     Message integrity failure




[Пример начала NDR]

From: MAILER-DAEMON@MAILER-DAEMON [mailto:MAILER-DAEMON@MAILER-DAEMON] 
Sent: Wednesday, October 03, 2012 3:13 PM
To: *******
Subject: Не удается доставить: test
 
 
Delivery has failed to these recipients or groups:
***@***.**

A problem occurred during the delivery of this message to this e-mail address. Try sending this message again. If the problem continues, please contact your helpdesk.
 
The following organization rejected your message: ***.***.**
  
 
Diagnostic information for administrators:
 
Generating server: ***.**
***@***.**
***.***.** #<***.***.** #5.0.0 smtp;550 "Access denied. This is spam sender."> #SMTP#



Что мы тут видим?

Правильно. Видим e-mail - кому не доставлено
Delivery has failed to these recipients or groups: ***@***.**

Видим какой сервер сгенерировал сообщение.
Generating server: ***.**

Видим какой сервер отказал в приеме почты, по какой причине и по какому протоколу шел обмен данных.
***.***.** #<***.***.** #5.0.0 smtp;550 "Access denied. This is spam sender."> #SMTP#

Вот именно тут мы и видим код ошибки в виде 5.0.0
Начинаем расшифровку, в соответствии с RFC
5.XXX.XXX Постоянная ошибка
X.0.0 Какая-то неопределенная ошибка
Расшифровка ошибки. То, что вернул при обмене данных сервер, отказавший в приеме сообщения.
smtp;550 "Access denied. This is spam sender."
Ну, тут уже не нужно быть семи пядей во лбу. Наше письмо посчитали спамом.
Если бы была другая причина ... например - нет такого адресата, мы бы получили


[Другие варианты ошибок]
  gsdf@mail.ru
  mx96.mail.ru #550 Message was not accepted -- invalid mailbox. Local mailbox gsdf@mail.ru is unavailable: user not found ##

А здесь, с кодом ошибки 5.5.0 нам сервер говорит, что нет такого почтового ящика.

Если почтовый сервер не смог найти маршрута к нужному адресату, мы увидим
  ***@***.**
    SMTP error from remote mail server after RCPT TO:<  ***@***.**>:
    host   ***.***.** [*.*.*.*]:
    550 "Cant relay to this address."

Что здесь что.
Наш почтовый сервер начал обмен данными, но ему сказали, что до данного адресата сервер-получатель не может доставить почту.
При этом, наш сервер показал кто именно ему так ответил - указал имя и его IP адрес.
Ну и расшифровка ошибки 5.5.0 ..... смотри выше.

Насколько-же многогранна эта 5-я ошибка.



Но мы рассмотрели только заголовок NDR ... а дальше - исходный текст письма, вместе со служебными заголовками, позволяющими увидеть как и откуда письмо шло. На каком сервере застряло.
Но читать это надо снизу вверх. Рассмотрим на примере спам-письма, которое прорвалось-таки ко мне. Аналогичный заголовок приходит к нам и в тексте NDR.

Для получения заголовка кликаем в OUTLOOK по письму правойй кнопкой мыши и выбираем пункт "Параметры сообщения". Заголовки письма находятся в окошке "Заголовки интернета"
В TheBat надо открыть письмо в менню "вид" выбрать "Показывать заголовки RFS-822"

Вот пример такого заголовка


[Пример заголовков интернет]
Received: from ***.***.** (*.*.*.*) by
***.***.** (*.*.*.*) with Microsoft SMTP Server id
8.2.255.0; Wed, 3 Oct 2012 18:52:18 +0400
Received: from energomontazchorzow.net ([62.233.243.186]:38882) by
***.***.** with esmtp (Exim 4.80 (FreeBSD)) (envelope-from
) id 1TJQJ8-0000TE-9k for
***@***.**; Wed, 03 Oct 2012 18:52:18 +0400
Received: from qq ([115.82.237.48]) by energomontazchorzow.net (Lotus
Domino Release 8.5.1) with ESMTP id 2012100314234234-33330 ;
Wed, 3 Oct 2012 14:23:42 +0200
From: =?Big5?B?pbuk6y65cbx2LldpablDwLhYQk9Yc29odS5jb20=?=

Subject: =?Big5?B?pL2lRLtQrLzCearMICCnTqX6vXWvwSAgILVlpdY=?= 2
=?Big5?B?wuClzbNOICAgOk1JQqxQu9q+1MS1MyAgICC2wrx2rmGx2iAgICC0X6SzqszBcLf5?=
=?Big5?B?ICAgICC2V6/FvtTEpQ==?=
To:
MIME-Version: 1.0
Date: Wed, 3 Oct 2012 20:23:47 +0800
X-MIMETrack: Itemize by SMTP Server on Energomontaz/ENERGOMONTAZ/PL(Release 8.5.1|September
28, 2009) at 2012-10-03 14:23:43,
Serialize by Router on Energomontaz/ENERGOMONTAZ/PL(Release 8.5.1|September
28, 2009) at 2012-10-03 16:52:17,
Serialize complete at 2012-10-03 16:52:17
Message-ID:
Content-Transfer-Encoding: base64
Content-Type: text/html
X-SA-Exim-Connect-IP: 62.233.243.186
X-SA-Exim-Mail-From: qvafk@energomontazchorzow.net
X-SA-Exim-Scanned: No (on ***.***.**); SAEximRunCond expanded to false
Return-Path: qvafk@energomontazchorzow.net



Читать сложно, но можно. А есть и тулза в Интернет, позволяющая расшифровать это в более понятном виде. Анализатор заголовков.
Там есть окошко "Paste Header: " ... вставляем туда наш заголовок и изучаем все подробности перемещения данного письма по сети. Всё представлено в очень удобном виде. Путь представлен для нормального прочтения, а не снизу вверх.

Бывает, нам, как админам, сообщают, что до нас почта не идет, мол мы спамеры. Тогда нам другой инструмент в руки - MX Lookup. Вводим имя домена и начинаем процесс изучения, в какой-же из черных списков спамеров мы попали. Расписывать подробно не буду, да и незачем. Там всё предельно просто.

Удачи, коллеги.


  • 1
Линк "MX Lookup" поправь

Спасибо, поправил :)

Блин, ну достали ... даже админы получают NDR и не читают его ...

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

А меня заимели во все щели, в том числе и некоторые админы других компаний ... это, просто, крик души .... теперь смогу, просто, ссылку давать, нехай сами разгребаются :)
Да, и кому-то из товарищей может понадобиться :)

Вот, только, переводить не стал ошибки ... а в RFC они подробнее расписаны, у меня только сводка :)

Edited at 2012-10-03 05:25 pm (UTC)

У нас все шишки падают на начальника отдела ИБ, он же и постмастер:)

Вот ему и заготовка RTFM-а для юзеров :)
Вроде более-менее написал, не совсем для админов почтовых систем :)

Вот, прокручиваю в голове, как для простых пользователей попроще объяснить.

Надо научить читать строку ошибки SMTP, как минимум, она дает базовую инфу в текстовом виде :)
Адрес - кто не получил, причину и кто отказал.

Впрочем, да, это нелегко ...

Я уж учу))) Но тяжело Марванне все это объяснить...

Я знаю.
Когда ко мне пересылают NDR, я возвращаю его с выделенной информационной строкой шрифтом аж 22-24 ... и переводом :)

Кстати, некоторым уже помогло

Некоторым помогает, некоторым бесполезно рассказывать)

А кто мешает? :)

Я не буду оставлять комментария, потому что как всегда нихрена не понял.

Ага, а это просто твой дух заскочил на минутку :)

Да и понятно, текст для тех, кому приходится сталкиваться с такими проблемами, тут мне уже по асе не раз сказали спасибо за это описание решения проблемы.
Обычно, это долгий процесс по поиску проблемы :)

Спасибо.
Эта тема для меня очень интересная.
Так получилось, что у меня возникли цепочки пересылки с одного адреса на другой. Лень разбираться и минимизировать пересылки.
И вот если исходный спам начинает идти по цепочке, то какая-то почта (mail yandex) его блокирует. И от этого возникают такие MAILER-DAEMON@example.net.
Там пишут, что адреса нет, но он для обычных писем есть.
Проблема в том, что после непропуска спама обратно идут MAILER-DAEMON@example.net в большом количестве, что мешает.
А нельзя эти возвраты подавить?

Увы, выдача NDR обязательна по RFC, в отличии от выдачи подтверждения о доставке :)

Это принималось тогда, когда письмо через два дома могло идти по три дня ....
То есть получалось так.
Если сервер получил отлуп - сообщить об этом обязательно. Если сервер задержал почту - сообщить, что письмо не потеряно и всё еще доставляется, а вот когда дойдет - не обязательно. Предполагается, что вторая сторона как-то отреагирует и отправитель и так поймет всё.

Это жаль.
Получается, что у меня идет цепочка пересылок с рабочего адреса ХХХХХХ.
На этот адрес приходят нормальные письма и спам.
И вот нормальные письма идут по цепочке нормально.
А спам где-то случайно может отсеиваться при пересылках.
Но это всё - непонятно как.
И об этом идут сообщения, которые никак не остановить.

Ну, можно добавить эти сообщения, как сообщения спама во все системы цепочки :)

Попробую.

У меня была надежда, что серверы сами устанут пересылать фигню и будут её считать спамом.
С некоторыми фильтрами так само и происходит.
Проблема именно - в непотребном разнообразии:)

ага, письма, отправленные в соответствии с RFC игнорируются фильтрами, только ручные фильтры могут это подавить:)

Наверное так.
Но, наверное, не всегда.
У меня корпоративный Kerio, там стоит какой-то фильтр. Он некоторые Mailer Daemon точно отправляет в спам, а некоторые - нет.
И я не вижу по какой закономерности.

А вот заголовки посмотреть можно ... наверняка, окажется разница :)

Еще добавь коды SMTP-ошибок и вообще ))) можно не отвечать))

  • 1