Получение статистики сообщений в ms exchange

Exchange 2013 message tracking – the easy way, with a powershell form

Дополнительная информация

Типы очередей

Существуют следую очереди:

  • Очереди доставки. Обычная очередь, содержащая письма для пересылки внешним и внутренним пользователям.
  • Очередь передачи. Не обработанные службой транспорта сообщения, но полученные ею.
  • Теневые очереди. Содержат копии отправляемых писем до момента подтверждения получения от mx-партнеров.
  • Очередь подозрительных сообщений. Изолированные сообщения, которые Exchange посчитал, потенциально, опасными. Это могут быть письма, содержащие зловредный код, а может быть и ложное срабатывание из-за ошибки программного обеспечения.
  • Сообщения с недостижимым местом назначения. Сообщения, которые не удалось доставить.

Где хранятся очереди Exchange

Очереди хранятся в базе данных ESE, которая находится в папке «%ExchangeInstallPath%TransportRoles\data\Queue»:

* mail.que — основной файл с базой очередей; tmp.edb — временный файл для проверки схемы самой базы; trn.chk — контрольные точки для отслеживания записи в логах.

Со временем, файл mail.que может разрастись и занимать много места. Для полной чистки базы ее можно просто создать заново. Для этого открываем службы Windows — останавливаем Microsoft Exchange Transport (перестанет работать почта) — переименовываем папку Queue, в которой находятся файлы базы и снова запускаем службу транспорта. Папка и база очереди создастся снова.

Смена пути хранения очереди

Открываем на редактирование файл %ExchangeInstallPath%\Bin\EdgeTransport.exe.config (C:\Program Files\Microsoft\Exchange Server\V14\Bin\EdgeTransport.exe.config) и меняем значения ключей QueueDatabasePath и QueueDatabaseLoggingPath, например:

    <add key=»QueueDatabasePath» value=»D:\Queue» />
    <add key=»QueueDatabaseLoggingPath» value=»D:\Queue» />

* где QueueDatabasePath — папка хранения файлов очереди; QueueDatabaseLoggingPath — папка хранения файлов журналов очереди.

Закончилось место и логи транзакций

По умолчанию Exchange хранит свою базу данных по адресу «C:\Program Files\Microsoft\Exchange Server\Mailbox\First Storage Group\», то есть на системном диске. Данные хранятся в файле базы данных: «Mailbox Database.edb» и логах транзакций, имена которых выглядят приблизительно вот так: «E0000000017.log». Лог транзакций имеет размер не более чем 1 мегабайт.  Но таких логов может быть очень много. Их имя отличается лишь порядковым номером в конце. Если пришло или отправилось письмо через Exchange, то вся информация (вместе с содержимым письма) сначала записывается в файл лога транзакций и лишь позже информация из этих логов заносится в базу данных. Также есть файл с именем «E00.chk» в котором хранится информация о том, с какого последнего лога транзакций не были записаны данные в базу данных. То есть логи с порядковым номером меньше чем этот лог уже не нужны. Очень частая проблема когда эти логи просто забивают полностью весь системный диск и ОС перестает корректно работать. Поэтому заранее рекомендую: размещайте базу данных Exchange не на системном диске. Просто так удалять эти логи нельзя. Я могу назвать три способа как очистить логи. Очистка логов вручную При помощи следующей команды смотрим какой последний лог был записан в базу данных:

eseutil /mk "C:\Program Files\Microsoft\Exchange Server\Mailbox\First Storage Group\E00.chk" | find "Checkpoint:"

В ответ команда выдаст пару строк, одна из которых будет приблизительно вот такая: Checkpoint: (0xF356,80,0) Нас интересует «F356» — это и есть номер последнего  не записанного в базу данных Exchange транзакционного лога. Все логи которые идут перед ним можно удалять. Можно это автоматизировать при помощи Powershell скрипта:

$temp = (eseutil /mk «C:\Program Files\Microsoft\Exchange Server\Mailbox\First Storage Group\E00.chk»)
$Bottom_Log_File = $temp.remove($temp.IndexOf(«,»)).remove(0,$temp.IndexOf(«x»)+1)
Get-ChildItem «C:\Program Files\Microsoft\Exchange Server\Mailbox\First Storage Group» | Where-Object { $_.Name.Length -eq 15 -AND $_.Name -like «E00*.log» -AND $_.Name.Substring(3+8-$Bottom_Log_File.length,$Bottom_Log_File.length) -lt $Bottom_Log_File } | foreach($_) {remove-item $_.fullname}

Можно прописать периодический запуск скрипта в планировщике задач. Создание резервной копии сервера встроенными средствами Windows При резервном копировании автоматически делается ровно то же, что и описано в «Ручном способе» — система смотрит в файл «E00.chk» и удаляет все логи с меньшим порядковым номером. Чтобы это работало в Exchange 2007, должен быть установлен Exchange SP2 Включение циклических логов и перемонтирование хранилища В режиме циклических логов (Circular Logging) файлы не накапливаются, а перезаписываются. Но если вдруг что-то случится с базой данных. То мы не сможем накатить все логи на базу данных восстановленную из последней резервной копии, так как их не будет, ведь они перезаписываются. То есть все письма и данные которые записывались в базу после резервного копирования до момента сбоя будут утрачены. Можно просто включить циклическое логирование, перемонтировать хранилище, подождать пока все логи запишутся в базу и удалятся и после этого отключить циклическое логирование и снова перемонтировать базу данных. Либо не отключать циклическое логирование, тут уже решать Вам. Как это делается можно посмотреть вот в этом видео: youtube.com

Get-MessageTrace

Get-MessageTrace доступен только в облаках.

Этот командлет можно использовать для поиска данных сообщений за последние 10 дней. Если этот командлет выполняется без каких-либо параметров, возвращаются только данные за последние 48 часов.

Если вы введете дату начала, которая старше 10 дней, вы получите сообщение об ошибке, и команда не вернет никаких результатов.

Для поиска данных сообщений, возраст которых превышает 10 дней, используйте командлеты Start-Historical Search и Get-Historical Search.

Этот командлет возвращает максимум 1000000 результатов и будет тайм-аут для очень больших запросов. Если ваш запрос возвращает слишком много результатов, рассмотрите возможность его разделения с использованием меньших интервалов StartDate и EndDate.

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

Searching Message Tracking Logs by Sender Email Address

Because I happen to have sent this test message within the last hour it is not very difficult for me to search for by combining the -Sender parameter with the -Start parameter to search within a time/date range.

Get-MessageTrackingLog -Sender [email protected] -Start (Get-Date).AddHours(-1)

EventId  Source   Sender                            Recipients                        MessageSubject
-------  ------   ------                            ----------                        --------------
SUBMIT   STORE... [email protected]   {}                                Payroll report for September
RECEIVE  SMTP     [email protected]   {David.Gower@exchangeserverpro... Payroll report for September
DELIVER  STORE... [email protected]   {Alex.Heyne@exchangeserverpro.... Payroll report for September
DELIVER  STORE... [email protected]   {David.Gower@exchangeserverpro... Payroll report for September

However, if I were searching over a broader time range I may see more results than I really want to see.

Get-MessageTrackingLog -Sender [email protected]

EventId  Source   Sender                            Recipients                        MessageSubject
-------  ------   ------                            ----------                        --------------
SUBMIT   STORE... [email protected]   {}                                Descry turmoil deviance
SUBMIT   STORE... [email protected]   {}                                Impending abeyance recitals ba...
SUBMIT   STORE... [email protected]   {}                                Egress
SUBMIT   STORE... [email protected]   {}                                Presage visceral penurious
SUBMIT   STORE... [email protected]   {}                                Stipple voluble blatant stymie
SUBMIT   STORE... [email protected]   {}                                Inured
SUBMIT   STORE... [email protected]   {}                                Heinous mercurial
SUBMIT   STORE... [email protected]   {}                                Relapse smolder
SUBMIT   STORE... [email protected]   {}                                Meeting minutes
SUBMIT   STORE... [email protected]   {}                                Supine poignant
 etc.

So in the case where I want to search a broader time window, but see fewer irrelevant results, I can combine the -Sender and -Recipients parameters in my search command.

Configuring Exchange Server 2016

PS > New-AcceptedDomain -Name <Name> -DomainName <Domain> -DomainType <Authoritative | InternalRelay | ExternalRelay>

1 PS>New-AcceptedDomain-Name<Name>-DomainName<Domain>-DomainType<Authoritative|InternalRelay|ExternalRelay>

We can verify that we have successfully created an accepted domain and make it the default domain.

1
2
3

PS>New-EmailAddressPolicy-Name’All External Users’-RecipientContainer’get-cmd.local/External’-IncludedRecipients’AllRecipients’-Priority’Lowest’-EnabledEmailAddressTemplates’SMTP:%g.%[email protected]

PS>New-EmailAddressPolicy-Name’All Internal Users’-RecipientContainer’get-cmd.local/Internal’-IncludedRecipients’AllRecipients’-Priority’1′-EnabledEmailAddressTemplates’SMTP:%g.%[email protected]

Connectors

You must create a send connector to route outbound mail to the Internet. I advise you to route outbound mail through a smart host (Antispam Gateway).

PS > New-SendConnector -Internet -Name SendToInternet -AddressSpaces * -FrontendProxyEnabled:$true –SmartHosts AntiSpamGW01.get-cmd.com

1 PS>New-SendConnector-Internet-Name SendToInternet-AddressSpaces *-FrontendProxyEnabled$true–SmartHosts AntiSpamGW01.get-cmd.com

Please note the following information:

  • Exchange does not automatically create a default send connector
  • A basic connector will send out to the Internet via DNS resolution

Note that if you want to test SMTP connectors on Exchange, you can run the following command:

PS > Send-MailMessage –From [email protected] –To [email protected] –Subject “Test SMTP Connector” –Body “Test mail” -SmtpServer smtp.domain.com

1 PS>Send-MailMessage–From [email protected][email protected]–Subject“Test SMTP Connector”–Body“Test mail”-SmtpServer smtp.domain.com

Exchange Server 2016 uses receive connectors to control inbound SMTP connections from messaging servers that are external to your Exchange Organization. Exchange creates a default receive connector:

But if you need to create a new one, use the following:

PS > New-ReceiveConnector -Name FromSmartHost -Usage Custom -Bindings 192.168.0.143:25 -RemoteIPRanges 192.168.0.200

1 PS>New-ReceiveConnector-Name FromSmartHost-Usage Custom-Bindings192.168.0.14325-RemoteIPRanges192.168.0.200

Source values in the message tracking log

The values in the source field in the message tracking log indicate the transport component that’s responsible for the message tracking event. The following table describes the values of the source field.

Source value Description
ADMIN The event source was human intervention. For example, an administrator used Queue Viewer to delete a message, or submitted message files using the Replay directory.
AGENT The event source was a transport agent.
APPROVAL The event source was the approval framework that’s used with moderated recipients. For more information, see Manage message approval.
BOOTLOADER The event source was unprocessed messages that exist on the server at boot time. This is related to the LOAD event type.
DNS The event source was DNS.
DSN The event source was a delivery status notification (also known as a DSN, bounce message, non-delivery report, or NDR).
GATEWAY The event source was a Foreign connector. For more information, see Foreign Connectors.
MAILBOXRULE The event source was an Inbox rule. For more information, see Inbox rules.
MEETINGMESSAGEPROCESSOR The event source was the meeting message processor, which updates calendars based on meeting updates.
ORAR The event source was an Originator Requested Alternate Recipient (ORAR). You can enable or disable support for ORAR on Receive connectors using the OrarEnabled parameter on the New-ReceiveConnector or Set-ReceiveConnector cmdlets.
PICKUP The event source was the Pickup directory. For more information, see Pickup Directory and Replay Directory.
POISONMESSAGE The event source was the poison message identifier. For more information about poison messages and the poison message queue, see Queues and messages in queues
PUBLICFOLDER The event source was a mail-enabled public folder.
QUEUE The event source was a queue.
REDUNDANCY The event source was Shadow Redundancy. For more information, see Shadow redundancy in Exchange Server.
RESOLVER The event source was the recipient resolution component of the categorizer in the Transport service. For more information, see Recipient resolution in Exchange Server.
ROUTING The event source was the routing resolution component of the categorizer in the Transport service.
SAFETYNET The event source was Safety Net. For more information, see Safety Net in Exchange Server.
SMTP The message was submitted by the SMTP send or SMTP receive component of the transport service.
STOREDRIVER The event source was a MAPI submission from a mailbox on the local server.

Working With the Search Results

Once you have a search which returns the results you need, you may want to convert those results into other formats, perhaps to use for reports or to provide information to others.  PowerShell includes built-in cmdlets for re-formatting output data, and those can be used in conjunction with the cmdlet.  For the ‘Recipients’, ‘RecipentStatus’ and ‘Reference’ properties it’s necessary to convert the data so that it appears in the output files.

To convert the results to CSV format you can pipe the search command to the Export-CSV cmdlet.  This command will create a CSV file called C:\Temp\SearchResults.csv, exporting all the available fields:

1 PSC\>Get-MessageTrackingLog-ServerEXCHANGE01-EventIDSEND-Senderjohn@[email protected]|SelectTimestamp,ClientIp,ClientHostname,ServerIp,ServerHostname,SourceContext,ConnectorId,Source,EventId,InternalMessageId,MessageId,{$_.Recipients},{$_.RecipientStatus},TotalBytes,RecipientCount,RelatedRecipientAddress,{$_.Reference},MessageSubject,Sender,ReturnPath,MessageInfo|Export-CSVC\Temp\SearchResults.csv

This command will create a CSV file including only the timestamp, event ID, sender, recipients, and subject line:

1 PSC\>Get-MessageTrackingLog-ServerEXCHANGE01-EventIDSEND-Senderjohn@[email protected]|SelectTimestamp,EventID,Sender,{$_.Recipients},MessageSubject|Export-CSVC\Temp\SearchResults.csv

Alternatively, to convert the results to HTML you can pipe the search command to the ConvertTo-HTML cmdlet.  Use this command to export the results to an HTML file showing the timestamp, event ID, sender, recipients, and subject line:

1 PSC\>Get-MessageTrackingLog-ServerEXHUB-00-UK-EventIDSEND-Senderjohn@[email protected]|ConvertTo-HtmlTimestamp,EventID,Sender,{$_.Recipients},MessageSubject|Set-ContentC\Temp\logs.html

Filtering Message Tracking Logs

You can filter Message Tracking logs by the following properties:

Property Description
Start End By default, Message Tracking logs are kept for a maximum of 30 days. If you’re trying to find a message that may have been sent or received in the last day or two, or a specific period, it’s inefficient to search 30 days worth of logs. It’s a good idea to narrow down the search by specifying a start time, and preferably the end time as well.
Event ID This is by far one of the more important parameters of Message Tracking logs that we need to understand. Whereas Exchange Server 2003/2000’s Message Tracking log was an easy-to-use application that shielded the user from this complexity, it also provided much less flexibility. Message Tracking logs have a lot of details about a message as it originates from an internal user or external sender, and makes its way through the different stages of message routing and transfer, and finally gets delivered (or not). You can now track messages based on these events.
Sender Sender’s SMTP address
Recipients SMTP address(es) of one or more recipients
MessageSubject The subject field in the message header
MessageID This is the MessageID in the header. It is constant for the lifetime of a message, and can be used to track messages across different mail systems.
InternalMessageID An integer field assigned by the Exchange 2007 server that is currently processing the message. The same message will have a different InternalMessageID on different Exchange servers.

Here’s a list of some of these EventIDs:

EventID Description
DEFER Message delivery delayed

DELIVER
Message delivered to a mailbox

DSN
A delivery status notification was generated.Messages quarantined by the Content Filter are also delivered as DSNs. the recipients field has the SMTP address of the quarantine mailbox.

EXPAND
Distribution Group expanded. The RelatedRecipientAddress field has the SMTP address of the Distribution Group.

FAIL
Delivery failed. The RecipientStatus field has more information about the failure, including the SMTP response code. You should also look at the Source and Recipients fields when inspecting messages with this event.

POISONMESSAGE
Message added to or removed from the poison queue

RECEIVE
Message received. The Source field is STOREDRIVER for messages submitted by Store Driver (from
a Mailbox server), or SMTP for messagesa) received from another Hub/Edgeb) received from an external (non-Exchange) host using SMTPc) submitted by SMTP clients such as POP/IMAP users.

REDIRECT
Message redirected to alternate recipient

RESOLVE
Generally seen when a message is received on a proxy address and resolved to the default email address. The RelatedRecipientAddress field has the proxy address the message was sent to. The recipients field has the default address it was resolved (and delivered) to.

SEND
Message sent by SMTP. The ServerIP and ServerHostName parameters have the IP address and hostname of the SMTP server.

SUBMIT
The Microsoft Exchange Mail Submission service on a Mailbox server successfully notified a Hub Transport server that a message is awaiting submission (to the Hub). These are the events you’ll see on a Mailbox server.The SourceContext property provides the MDB Guid, Mailbox Guid, Event sequence number, Message class, Creation timestamp, and Client type. Client type can be User (Outlook MAPI), RPCHTTP (Outlook Anwhere), OWA, EWS, EAS, Assistants, Transport.

TRANSFER
Message forked because of content conversion, recipient limits, or transport agents

Используемые фильтры

Чтобы сократить вывод и отсечь ненужную информацию, используем фильтры.

  • Получатели — кому были адресованы сообщения. Вводится адрес электронной почты
  • Отправитель — кто отправил электронное письмо. Email-адрес.
  • Сервер — в инфраструктуре с несколькими Exchange серверами можно выбрать конкретный. Имя сервера.
  • Код события — ограничивает вывод для сообщений с определенным кодом ответа сервера. Варианты:
    1. RECEIVE — принятые сервером сообщения.
    2. SEND — отправленные сервером сообщения.
    3. FAIL — сообщения, при доставке которых возникла ошибка.
    4. DSN — сообщения-отчеты о недоставке.
    5. DELIVER — доставленные в локальный почтовый ящик.
    6. BADMAIL — сообщения, которые не могут быть ни доставлены, ни возвращены.
    7. RESOLVE — для получателя в Active Directory найден другой адрес.
    8. EXPAND — от разрешенных групп рассылки.
    9. REDIRECT — отправленные другим получателям.
    10. TRANSFER — перемещенные в сообщения с ветвлением.
    11. SUBMIT — успешная передача службе транспорта.
    12. POISONMESSAGE — с источником события — идентификатор о сбое.
    13. DEFER — с отложенной доставкой.
  • ИД сообщения — если известен конкретный идентификатор письма.
  • Тема.
  • Ссылка — поиск сообщений по полю Reference. Чаще всего, оно пустое, но может содержаться информация, например, InternalMessageId.
  • Начало — дата и время, от которого искать письма. Если не указано, поиск от самого первого, которое есть в журнале.
  • Окончание — дата и время, до которого ищем письма. Если не указано, поиск до последнего, которое есть в журнале.

Use the Exchange Management Shell to search the message tracking logs for message entries on multiple servers

Typically, the value in the MessageID: header field remains constant as the message travels throughout the Exchange organization. This property is named InternetMessageId in queue viewing utilities, and MessageId in the message tracking log viewing utilities. After you have determined the MessageID: value of a specific message, you can search for information about that message in the message tracking logs on every Mailbox server in your Exchange organization.

To search all message tracking log entries for a specific message across all Mailbox servers and Exchange 2010 Hub Transport servers, use the following syntax.

This example searches the message tracking logs on all Mailbox servers and Exchange 2010 Hub Transport server by using the following search criteria:

  • Find any entries related to a message that has a MessageID: value of . Note that you can omit the angle bracket characters ( ). If you don’t, you need to enclose the entire MessageID: value in quotation marks.

  • For each entry, display the fields date-time, server-hostname, client-hostname, source, event-id, and recipient-address.

  • Sort the results by the date-time field.

Possible delivery statuses

There is a total of 7 values of the delivery status for a message:

  • Delivered – the message reached the recipient. If a user cannot find a message with this status, it might have been deleted, or moved by an Outlook rule.
  • Expanded – the email was sent to a distribution group. Then, Exchange Server creates separate copies to send them to each distribution group member.
  • Failed – delivery failed. Message trace for such a message should include reasons for delivery failure.
  • Pending – Exchange Online attempts to send the email.
  • Quarantined – email never reached the mailbox, as it is held in quarantine.
  • Filtered as spam – server filtered the message, which means it went to the Junk Email folder.
  • Getting status – the delivery status is not known at a time. It’s best to retry the message trace in a few minutes.

There are two ways to track messages in Office 365 – PowerShell and EAC. Let’s have a look at them.

Возможные значения поля source

Значение источника Описание

ADMIN

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

AGENT

Источником события был агент транспорта.

APPROVAL

Источником события была платформа утверждения, используемая для контролируемых получателей. Подробнее см. в разделе Управление утверждением сообщений.

BOOTLOADER

Источником события были необработанные сообщения, которые присутствовали на сервере на момент загрузки. Это относится к типу событий LOAD.

DNS

Источником события было DNS.

DSN

Источником события было уведомление о доставке (также называемое сообщением возврата или отчетом о недоставке).

GATEWAY

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

MAILBOXRULE

Источником события было правило для папки «Входящие». Дополнительные сведения см. в статье Правила для папки «Входящие» в Outlook Web App.

MEETINGMESSAGEPROCESSOR

Источником события был обработчик сообщения о собрании, который обновляет календари в соответствии с обновлениями собрания.

ORAR

Источником события был альтернативный получатель, запрошенный отправителем (ORAR). Вы можете включить или отключить поддержку ORAR на получающих соединителях, используя параметр OrarEnabled в командлете New-ReceiveConnector или Set-ReceiveConnector.

PICKUP

Источником события был каталог раскладки. Подробнее см. в разделе Каталог раскладки и каталог преобразования.

POISONMESSAGE

Источником события был идентификатор сообщения о сбое. Дополнительные сведения о сообщениях о сбое и очереди сообщений о сбое см. в разделе Queues and messages in queues

PUBLICFOLDER

Источником события была общедоступная папка, поддерживающая почту.

QUEUE

Источником события была очередь.

REDUNDANCY

Источником события было избыточное теневое копирование. Подробнее см. в разделе Теневая избыточность.

ROUTING

Источником события был компонент разрешения маршрутизации классификатора в службе транспорта.

SAFETYNET

Источником события была сеть безопасности. Подробнее см. в разделе Система безопасности.

SMTP

Сообщение было отправлено компонентом отправки или получения SMTP службы транспорта.

STOREDRIVER

Источником события была MAPI-отправка из почтового ящика на локальном сервере.

Перезапуск Exchange без перезагрузки сервера

Bat скрипт для выключения сервисов Microsoft Exchange 2003:

net stop “Microsoft Exchange Information Store” /y
net stop “Microsoft Exchange System Attendant” /y
net stop “Microsoft Exchange IMAP4″ /y
net stop “Microsoft Exchange Routing Engine” /y
net stop “Microsoft Exchange POP3″ /y
net stop “Microsoft Exchange Management” /y
net stop IISAdmin /y

Имейте в виду что IIS использует не только Exchange

Bat скрипт для включения сервисов Microsoft Exchange 2003:

net start “Microsoft Exchange Information Store”
net start “Microsoft Exchange System Attendant”
net start “Microsoft Exchange MTA Stacks”
net start “Microsoft Exchange IMAP4″
net start “Microsoft Exchange Routing Engine”
net start “Microsoft Exchange POP3″
net start “Microsoft Exchange Management”
net start IISAdmin

Скрипт выключения Microsoft Exchange 2007

net stop msexchangeadtopology /y
net stop msftesql-exchange /y
net stop msexchangeis /y
net stop msexchangesa /y
net stop iisadmin /y

Скрипт включения Microsoft Exchange 2007

net start "World Wide Web Publishing Service"
net start "Microsoft Exchange Information Store"
net start "Microsoft Exchange System Attendant"
net start "Microsoft Search (Exchange)"
net start "Microsoft Exchange Information Store"
net start "Microsoft Exchange Unified Messaging"
net start "Microsoft Exchange Transport Log Search"
net start "Microsoft Exchange Transport"
net start "Microsoft Exchange Service Host"
net start "Microsoft Exchange Search Indexer"
net start "Microsoft Exchange Replication Service"
net start "Microsoft Exchange Mail Submission"
net start "Microsoft Exchange Mailbox Assistants"
net start "Microsoft Exchange File Distribution"
net start "Microsoft Exchange EdgeSync"
net start "Microsoft Exchange Anti-spam Update"
net start “Microsoft Exchange IMAP4″
net start “Microsoft Exchange POP3″

Getting Started with Searching Message Tracking Logs Using PowerShell

Message tracking log searches are performed in the Exchange Management Shell by running the Get-MessageTrackingLog cmdlet. You can run this cmdlet with no parameters on any Edge Transport, Hub Transport or Mailbox server and it will return all of the log entries on that server.

 C:\>Get-MessageTrackingLog

EventId    Source      Sender                                 Recipients                               MessageSubject
-------    ------      ------                                 ----------                               --------------
RECEIVE    SMTP        [email protected]    {[email protected]}     Luminary asep...
DELIVER    STOREDRIVER [email protected]    {[email protected]}    Egress concor...
RECEIVE    STOREDRIVER [email protected]    {[email protected]}     Brazen
DELIVER    STOREDRIVER [email protected]    {[email protected]}     Luminary asep...
RECEIVE    SMTP        Donna.A'[email protected]     {[email protected]}       Garble expedi...
RECEIVE    SMTP        [email protected]      {[email protected]}   Enthral boorish
DELIVER    STOREDRIVER Donna.A'[email protected]     {[email protected]}       Garble expedi...
RECEIVE    SMTP        [email protected]      {[email protected]} Palate causti...
DELIVER    STOREDRIVER [email protected]    {[email protected]}     Brazen
RECEIVE    SMTP        [email protected]    {[email protected]}       Malign edible
DELIVER    STOREDRIVER [email protected]      {[email protected]}   Enthral boorish
RECEIVE    STOREDRIVER [email protected]        {[email protected]}       Obfuscate
HAREDIRECT ROUTING     [email protected]        {[email protected]}       Obfuscate
....

You can also search a remote server using the -Server parameter. This is useful when you are running the search from your own admin workstation or a separate management server.

 C:\>Get-MessageTrackingLog -Server HO-EX2010-MB2

The Get-MessageTrackingLog cmdlet also accepts input from the pipeline. This is a very convenient way to perform searches on multiple servers at once. For example to search all Hub Transport servers at once:

 C:\>Get-TransportServer | Get-MessageTrackingLog

Sometimes you may wish to search the transport servers only within a particular site. Because I might need to work with that list in a few different commands I’ll usually collect those into a variable first, for example all Hub Transport servers in the “HeadOffice” site:

 C:\>$hubs = Get-ExchangeServer | Where {$_.Site -like "*HeadOffice" -and $_.IsHubTransportServer -eq $true}

I can then pipe that array of servers into the Get-MessageTrackingLog cmdlet.

 C:\>$hubs | Get-MessageTrackingLog

Использование Powershell

Для работы из командной строки или написания скриптов, можно использовать Powershell командлет Get-MessageTrackingLog. Примеры его использования лучше всего посмотреть в графической оболочке — при формировании запроса с фильтрами, система выводит аналогичную команду на Powershell.

Простой запрос для отображения входящих сообщений:

Get-MessageTrackingLog -EventID «RECEIVE» -Start «2017/10/20 13:27:00» -End «2017/10/31 13:37:00»

* данная команда выведен сообщения за период от Start до End.

Мы можем увидеть ПРЕДУПРЕЖДЕНИЕ: Доступно больше результатов, чем показано в настоящий момент. Для их просмотра увеличьте значение параметра ResultSize. Это означает, что выведены не все результаты. Чтобы получить все данные, добавляем в конце команды -ResultSize unlimited.

1. Для входящих

Получить количество входящих сообщений:

(Get-MessageTrackingLog -EventID «RECEIVE» -ResultSize unlimited).Count

Входящие сообщения, которые пришли через определенный коннектор:

Get-MessageTrackingLog -EventID «RECEIVE» -ResultSize unlimited | Where {$_.ConnectorId -eq «Интернет»}

Поиск входящего письма для определенного получателя за определенный период, где тема сообщения содержит слово «вопрос»:

Список сообщений, с поиском отправителя по домену:

Get-MessageTrackingLog -EventID «RECEIVE» -Start «2017/10/20 00:00:00» -End «2017/10/21 00:00:00» -ResultSize unlimited | Where {$_.Sender -like «*@mail.ru»}

2. Для исходящих

Количество отправленных писем:

(Get-MessageTrackingLog -EventID «SEND» -ResultSize unlimited).Count

Для просмотра количества оправленных сообщений наружу стоит указать ConnectorId, иначе, в статистику попадут служебные письма:

(Get-MessageTrackingLog -EventID «SEND» -ResultSize unlimited | Where {$_.ConnectorId -eq «Наружу»}).Count

Список отправленных писем за определенный период:

Get-MessageTrackingLog -EventID «SEND» -Start «2017/10/20 00:00:00» -End «2017/10/21 00:00:00»  -ResultSize unlimited

Список сообщений от определенного отправителя:

Поиск сообщения, отправленного определенному получателю:

Поиск письма, отправленного на определенный домен:

Get-MessageTrackingLog -EventID «SEND» -ResultSize unlimited | where {$_.Recipients -like «*@mail.ru»}

Автоматическая рассылка произвольных отчетов по электронной почте (обычные формы)

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

3 стартмани

Подключение Outlook

  1. Вот как подключить Outlook к серверу Exchange:
  2. Зайдите в Панель управления.
  3. Откройте меню «Почта» в разделе «Учётные записи и безопасность».
  4. Кнопка «Учётные записи».
  5. Нажмите «Создать».
  6. Выберите службу и кликните «Далее».
  7. Опция «Параметры вручную».
  8. Отметьте пункт к ES.
  9. В поле «Сервер» введите exchange..
  10. В «Имя пользователя» напишите логин.
  11. Отметьте пункт «Использовать кэширование», если собираетесь заходить в почту с мобильных устройств.
  12. В открывшемся окне поставьте точку в «Автоматически определять состояние».
  13. Перейдите на вкладку «Подключение».
  14. Поставьте метку «По протоколу HTTP».
  15. Нажмите кнопку «Прокси-сервер».
  16. В поле «Адрес URL» напишите exchange..
  17. В списке «Способ проверки подлинности» выберите «Проверка NTLM».
  18. Нажмите «OK».

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

How to Use Get-MessageTrackingLog Cmdlet?

You can use the Get-MessageTrackingLog cmdlet to search for message delivery details in the message tracking log.

Note: The Get-MessageTrackingLog cmdlet is available only for on-premises Exchange Server.

You can use the Get-MessageTrackingLog cmdlet to generate custom reports by using a wide range of parameters and syntaxes. Some of these parameters are:

For demonstration, we ran the following command in our Exchange Server:

Get-MessageTrackingLog –Recipients [email protected] –Start “03/04/2021 4:00:00” –End “03/04/2021 5:00:00”

Let’s take another example of the Get-MessageTrackingLog cmdlet:

Get-MessageTrackingLog -Start (Get-Date).AddDays(-10) -ResultSize Unlimited | Where -Property Recipients -NotLike «*HealthMailbox*»

This command will fetch the entries of last 10 days from the message tracking logs. The Where -Property Recipients -NotLike «*HealthMailbox*» part leaves out the entries related to Health Mailboxes.

Понравилась статья? Поделиться с друзьями:
Быть в курсе нового
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: