none
Exchange 2013 - логирование происходящего RRS feed

  • Вопрос

  • Доброго времени суток всем.

    Вот такая история.

    Один клиент утверждает что пишет мне письма, я говорю что ничего нет.
    Начинаем рыть логи принимающего SMTP сервера (exim) и видим, что действительно письмо было.
    Exim его принял и перенаправил в Exchange и тот его принял о чем есть уведомление:
    C="250 2.6.0 <000001d141db$4f79ca40$ee6d5ec0$@xxx.com> [InternalId=16166256902225, Hostname=MBX1.com.domain.ru] Queued mail for delivery"

    Так вот, на этом все кончилось, письма так и нет нигде, куда оно делось не ясно.
    Однако в том же SMTP сервере есть следующая запись о том что MBX1.com.domain.ru ответил.
    2015-12-29 04:59:36 1aDjZX-0006po-Vy <= <> H=(MBX1.com.domain.ru)

    По логике ясно, что письмо не появилось нигде т.к. было отброшено, о чем отправлено уведомление с описанием шибки.
    Клиент спрашивает: "А в чем дело, почему от меня письма отбрасываются ?" А я не знаю что ответить потому что на Exchange вообще не нашел ни каких логов на эту тему.

    И вот теперь вопросы:1. В каких таких логах смотреть, что происходит ?
    2. Если письмо было отброшено, то где увидеть по какой причине ?
    3. InternalId выданный сервером, это собственно кто его назначил, в какой лог смотреть его и где искать ?  

    29 декабря 2015 г. 14:08

Ответы

  • А схема такая:
    Internet <- SMTP -> Exim <- SMTP -> MBX 

    т.е CAS именно CAS только для клиентов, весь транспорт на MBX. Туда и обратно.

    Последнее утверждение неверно. Весь входящий извне SMTP-поток проходит прежде всего через Frontend Transport Service, которая является частью CAS. Транспорт на серверах почтовых ящиков есть только локальный, внутри организации Exchange.

    Вот вам текст скрипта для получения списка всех писем, прошедших через Exchange:

    param([string]$hours = "1")
    Get-MessageTrackingLog -ResultSize Unlimited -Start (Get-Date).AddHours(-$hours) |  select-object Eventid,Timestamp,Sender,Recipients,Messagesubject | Out-GridView

    Он принимает на вход числовой параметр N (по умолчанию 1) и выдает информацию о всех сообщениях за последние N часов. Информация выдается в окне GridView, где очень удобно искать. Проверяйте с его помощью статусы сообщений. Запускать следует на всех серверах почтовых ящиков, на одном из них у сообщения должен быть финальный статус Delivered (помещено в ящик).

    Мне известна только одна причина, когда дошедшее до Exchange письмо может "пропасть бесследно" - работа антиспама. Проверьте папку нежелательной почты в ящике. Если у вас настроен карантинный ящик, проверьте также его содержимое. Если такого ящика нет, проверяйте журнал Content Filter agent на предмет присвоенного SCL, а дальше смотрите параметры агентов на предмет того, что происходит с сообщениями с таким SCL.

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


    Evgeniy Lotosh // MCSE: Server infrastructure, MCSE: Messaging

    30 декабря 2015 г. 6:28

Все ответы

  • Здравствуйте!

    Судя по названию Вашего вопроса, можно догадаться, что у Вас Exchange 2013 ну и далее узнаем что есть Exim, думайте этого достаточно что бы можно было размышлять?

    Пожалуйста, опишите используемую среду Exchange подробнее.

    Проверьте настройки логирования на уровне соединителя получения.

    Просто так письма пропасть не могут.

    Использовали Отслеживание сообщений?

    EMS командлет:
    Get-MessageTrackingLog -resultsize unlimited -Start "26/12/2015" -End "29/12/2015" |where {$_.MessageSubject -like "пропало письмо"} | FL Sender, Recipients, MessageSubject, ReturnPath, EventID





    • Изменено Zaza Abramov 29 декабря 2015 г. 15:51
    29 декабря 2015 г. 15:22
  • Логирование на уровне соединения включил, посмотрим что туда навалится.

    На счет отслеживания сообщений спасибо за ссылку, попробую применить.

    А схема такая:
    Internet <- SMTP -> Exim <- SMTP -> MBX 

    т.е CAS именно CAS только для клиентов, весь транспорт на MBX. Туда и обратно.
    29 декабря 2015 г. 19:06
  • Здравствуйте!

    Судя по названию Вашего вопроса, можно догадаться, что у Вас Exchange 2013 ну и далее узнаем что есть Exim, думайте этого достаточно что бы можно было размышлять?

    Пожалуйста, опишите используемую среду Exchange подробнее.

    Проверьте настройки логирования на уровне соединителя получения.

    Просто так письма пропасть не могут.

    Использовали Отслеживание сообщений?

    EMS командлет:
    Get-MessageTrackingLog -resultsize unlimited -Start "26/12/2015" -End "29/12/2015" |where {$_.MessageSubject -like "пропало письмо"} | FL Sender, Recipients, MessageSubject, ReturnPath, EventID





    Вот конкретный пример Exim:
    2015-12-29 22:35:48 1aE03f-0005o3-Ee => user@domain.ru R=exchange T=remote_exchange H=10.0.0.1 [10.0.0.1] X=TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256 C="250 2.6.0 <5682E06D.8030306@home.ru> [InternalId=16243566313491, Hostname=MBX1.com.domain.ru] Queued mail for delivery"
    2015-12-29 22:35:48 1aE03f-0005o3-Ee Completed

    Почему поиск по MessageID пустой ?
    [PS] C:\>Get-MessageTrackingLog -Server MBX1 -Messageid "5682E06D.8030306@home.ru"

    29 декабря 2015 г. 20:08
  • Вы лучше по заголовку фильтруйте или просто по временному интервалу.

    Сазонов Илья

    https://isazonov.wordpress.com/

    30 декабря 2015 г. 5:56
    Модератор
  • А схема такая:
    Internet <- SMTP -> Exim <- SMTP -> MBX 

    т.е CAS именно CAS только для клиентов, весь транспорт на MBX. Туда и обратно.

    Последнее утверждение неверно. Весь входящий извне SMTP-поток проходит прежде всего через Frontend Transport Service, которая является частью CAS. Транспорт на серверах почтовых ящиков есть только локальный, внутри организации Exchange.

    Вот вам текст скрипта для получения списка всех писем, прошедших через Exchange:

    param([string]$hours = "1")
    Get-MessageTrackingLog -ResultSize Unlimited -Start (Get-Date).AddHours(-$hours) |  select-object Eventid,Timestamp,Sender,Recipients,Messagesubject | Out-GridView

    Он принимает на вход числовой параметр N (по умолчанию 1) и выдает информацию о всех сообщениях за последние N часов. Информация выдается в окне GridView, где очень удобно искать. Проверяйте с его помощью статусы сообщений. Запускать следует на всех серверах почтовых ящиков, на одном из них у сообщения должен быть финальный статус Delivered (помещено в ящик).

    Мне известна только одна причина, когда дошедшее до Exchange письмо может "пропасть бесследно" - работа антиспама. Проверьте папку нежелательной почты в ящике. Если у вас настроен карантинный ящик, проверьте также его содержимое. Если такого ящика нет, проверяйте журнал Content Filter agent на предмет присвоенного SCL, а дальше смотрите параметры агентов на предмет того, что происходит с сообщениями с таким SCL.

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


    Evgeniy Lotosh // MCSE: Server infrastructure, MCSE: Messaging

    30 декабря 2015 г. 6:28