이번에는 메시지 추적에 대해서 다뤄 보겠습니다.

Exchange Server 2013, 2016 기준으로 보면 ECP 에서 Mail flow - delivery reports 에서 기본적인 추적이 가능합니다.

 

예를 들면 onpremise1@contoso.kr -> onpremise1@adatum.kr 메일을 발송한 , 추적결과를 보도록 하겠습니다.

 

 

검색을 진행하면 발송 기록을 있습니다.

 

배달보고서에는 아래와 같이 나왔는데

 

 

수신측 헤더를 보면 아래와 같이 확인됩니다. EX16MBX3 -> EX16MBX2 -> 발송

 

 

헤더와 비교해 보면 발송 기록 처럼 해당 사서함은 EX16MBX3 에서 출발한 것으로 보입니다.

 

수신시의 기록을 보도록 하겠습니다.

 

헤더 기록으로 보면, EX10MBX(Mailbox) -> EX10CASHT -> Exchange Online (hybrid) -> EX16MBX1 (CAS) -> EX16MBX3(Mailbox) 흐름을 있습니다.

 

 이제 부터는 Powershell 로 조금 더 자세히 Messsage Tracking 을 진행해 보겠습니다.

 

Get-MessageTrackingLog

https://docs.microsoft.com/en-us/powershell/module/exchange/mail-flow/get-messagetrackinglog?view=exchange-ps

 

This cmdlet is available only in on-premises Exchange.

Use the Get-MessageTrackingLog cmdlet to search for message delivery information stored in the message tracking log.

Description

A unique message tracking log exists for the Transport service on a Mailbox server, for the Mailbox Transport service on a Mailbox server, and on an Edge Transport server. The message tracking log is a comma-separated value (CSV) file that contains detailed information about the history of each email message as it travels through an Exchange server.

Edge 없을 경우 초록 표시 부분

 

Edge 구성된 경우

 

 

 

 

기본 명령어로 조회하면 아래와 같이 확인됩니다.

아래의 자료를 조금 살펴보도록 하겠습니다.

    메시지 추적 로그 검색

    https://docs.microsoft.com/ko-kr/exchange/mail-flow/transport-logs/search-message-tracking-logs?view=exchserver-2019

     

    메시지 추적 기능은 메시지가 사서함 서버 및 Edge 전송 서버의 전송 파이프라인을 통해 흐를 때 메시지 작업을 기록합니다. Exchange 관리 셸에서 Get-MessageTrackingLog cmdlet을 사용하여 특정 검색 조건에 따라 메시지 추적 로그의 항목을 검색할 수 있습니다. 예를 들면 다음과 같습니다.

    • 사용자가 특정 받는 사람에게 보낸 메시지에서 어떤 작업이 수행되었는지 알아봅니다.
    • 메시지에 전송 규칙이 적용되었는지 여부를 확인합니다.
    • 인터넷 보낸 사람이 보낸 메시지가 사용자의 Exchange 조직으로 전송되는지 여부를 확인합니다.
    • 지정된 기간 중에 지정된 사용자가 보낸 모든 메시지를 찾습니다.

     

 

 

메시지 추적 로그를 기반으로 해당 명령어는 동작되고, 로그의 위치를 확인해 보았습니다.

Configure message tracking

https://docs.microsoft.com/ko-kr/exchange/mail-flow/transport-logs/configure-message-tracking?view=exchserver-2019

메시지 추적의 사서함 서버 및 Edge 전송 서버에서 전송 파이프라인을 통해 메일 흐름으로 메시지 작업을 기록 합니다. 문제를 해결 하고 보고, 메시지 추적 메시지 설명, 메일 흐름 분석에 대 한 로그를 사용할 수 있습니다.

구성 작업을 추적 하는 모든 메시지에 대 한 사서함 서버 및 Edge 전송 서버에서 Exchange 관리 셸에서 Set-transportservice cmdlet을 사용 합니다. 예를 들어:

  1. Enable or disable message tracking. The default is enabled.
  2. Specify the location of the message tracking log files. The default location is %ExchangeInstallPath%TransportRoles\Logs\MessageTracking.

 

 

Excel 확인해보면 필터링 하기 용이합니다.

  1. Specify a maximum size for the individual message tracking log files. The default is 10 MB.
  2. Specify a maximum size for the directory that contains the message tracking log files: The default is 1000 MB.
  3. Specify maximum age for the message tracking log files: The default is 30 days.
  4. Enable or disable message subject logging in the message tracking logs. The default is enabled.

 

    시작하기 전에 알아야 할 내용

    • 메시지 추적 로그를 검색하려면 Microsoft Exchange Transport Log Search 서비스가 실행 중이어야 합니다. 이 서비스를 사용하지 않도록 설정하거나 중지하면 메시지 추적 로그를 검색하거나 배달 보고서를 실행할 수 없습니다. 그러나 이 서비스를 중지해도 Exchange의 다른 기능에는 영향을 주지 않습니다.

     

    CSV 파일을 보면 아래의 내용을 쉽게 이해 있습니다.

    • Get-MessageTrackingLog cmdlet의 결과에 표시된 필드 이름은 메시지 추적 로그 파일에 사용되는 실제 필드 이름과 유사합니다. 가장 큰 차이점은 다음과 같습니다.

     

     

 

아래와 같이 현재 설정을 조회할 있습니다.

Get-TransportService -Identity ex16mbx1 |fl Name, MessageTrackingLog*

 

ECP 상의 Message Trace Get-MessageTrackinglog 목적은 각각의 나뉘어 있는 기록들을 병합하는 효과가 있다고 있습니다.

1 서버와 2 서버의 로그가 다르다는 것은 육안상으로 쉽게 있습니다.

 

그렇다면 명령어로 한번에 쉽게 CSV 파일로 보는 방법이 없을까? 라는 생각이 듭니다.

Get-MessageTrackingLog -ResultSize unlimited |export-csv C:\trace\trace1.csv -Encoding UTF8 추출해 보았습니다.

 

다양한 데이터를 있어서 좋았는데.. 문제는 Recipients Recipient Status 몇가지가 System.String 으로 출력됩니다.

 

해당 부분 Export-CSV 때문에 발생되는 것으로 보입니다.

아래의 자료를 참고하여 Powershell 명령어를 변형하였습니다.

Searching Exchange Server Message Tracking Logs with PowerShell

Get-TransportService|Get-MessageTrackingLog -ResultSize unlimited | Select-Object Timestamp,ClientIp,ClientHostname,ServerIp,ServerHostname,SourceContext,ConnectorId,Source,EventId,InternalMessageId,MessageId,NetworkMessageId,@{Name="Recipients";Expression={$_.recipients}},@{Name="RecipientStatus";Expression={$_.recipientstatus}},TotalBytes,RecipientCount,RelatedRecipientAddress,@{Name="Reference";Expression={$_.Reference}},MessageSubject,Sender,ReturnPath,Directionality,TenantId,OriginalClientIp,MessageInfo,MessageLatency,MessageLatencyType,@{Name="EventData";Expression={$_.EventData}},TransportTrafficType | export-csv C:\trace\trace2.csv -Encoding UTF8 

 

 

 

Get-MessageTrackingLog 응용하기 나름입니다. 아래의 자료도 몇가지만 살펴보겠습니다.

Searching Message Tracking Logs by Sender or Recipient Email Address

It doesn't matter whether the recipient was in the To, CC, or BCC of the message, the search will return any match regardless.

  • To, CC, BCC 구분할 없음을 있습니다.

You can specify multiple recipient SMTP addresses simply by separating them with a comma.

  • 쉼표를 통해서 여러 개의 SMTP 주소를 입력할 있습니다.

ex) Get-MessageTrackingLog -Recipients onpremise1@contoso.kr, onpremise1@adatum.kr

 

 

Unfortunately wildcard searches are not allowed with the -Sender and -Recipient parameters.

  • Wildcard 문자는 사용할 없습니다.

그래서 where-object 활용하라고 나와 있습니다.

Get-MessageTrackingLog | Where-Object {$_.sender -like *@adatum.kr}

 

로그의 세부사항에 대해서 조금 알아보겠습니다.

Message tracking

다시 로그 파일부터 보도록 하겠습니다.

아래의 표를 보면 각각의 서비스 혹은 기능을 기준으로 파일명이 다르다는 것을 알 수 있습니다.

 

Message Tracking 의 약자 MSGTRK 로 전부 시작하며,

MSGTRK – Transport Service 로그로 가장 많습니다.

 

MSGTRKMA – Arbtration A로 승인 및 거절 기능을 사용하는 중재사서함에 대한 로그파일입니다.

아래와 같이 메일 그룹에 중재기능을 활성화 하였습니다.

 

 

 

아래와 같이 테스트 메일 발송

 

 

승인진행

 

바로 로그가 생겼습니다.

 

아래와 같이 Approval 로그를 확인할 수 있습니다.

MSGTRKMD -Log files for messages delivered to mailboxes by the Mailbox Transport Delivery service. 

MSGTRKMS -Log files for messages sent from mailboxes by the Mailbox Transport Submission service.

 

다음 포스팅에서도 이어서 다루도록 하겠습니다.

+ Recent posts