이번에는 메시지 추적에 대해서 다뤄 보겠습니다.
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
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가 구성된 경우
|
기본 명령어로 조회하면 아래와 같이 확인됩니다.
아래의 자료를 조금 더 살펴보도록 하겠습니다.
메시지 추적 로그 검색
메시지 추적 기능은 메시지가 사서함 서버 및 Edge 전송 서버의 전송 파이프라인을 통해 흐를 때 메시지 작업을 기록합니다. Exchange 관리 셸에서 Get-MessageTrackingLog cmdlet을 사용하여 특정 검색 조건에 따라 메시지 추적 로그의 항목을 검색할 수 있습니다. 예를 들면 다음과 같습니다.
|
메시지 추적 로그를 기반으로 해당 명령어는 동작되고, 그 로그의 위치를 확인해 보았습니다.
Configure message tracking 메시지 추적의 사서함 서버 및 Edge 전송 서버에서 전송 파이프라인을 통해 메일 흐름으로 메시지 작업을 기록 합니다. 문제를 해결 하고 보고, 메시지 추적 메시지 설명, 메일 흐름 분석에 대 한 로그를 사용할 수 있습니다. 구성 작업을 추적 하는 모든 메시지에 대 한 사서함 서버 및 Edge 전송 서버에서 Exchange 관리 셸에서 Set-transportservice cmdlet을 사용 합니다. 예를 들어:
Excel 로 확인해보면 필터링 하기 용이합니다.
아래와 같이 현재 설정을 조회할 수 있습니다. 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.
You can specify multiple recipient SMTP addresses simply by separating them with a comma.
ex) Get-MessageTrackingLog -Recipients onpremise1@contoso.kr, onpremise1@adatum.kr
Unfortunately wildcard searches are not allowed with the -Sender and -Recipient parameters.
그래서 where-object 를 활용하라고 나와 있습니다. Get-MessageTrackingLog | Where-Object {$_.sender -like *@adatum.kr}
로그의 세부사항에 대해서 조금 더 알아보겠습니다. 다시 로그 파일부터 보도록 하겠습니다. 아래의 표를 보면 각각의 서비스 혹은 기능을 기준으로 파일명이 다르다는 것을 알 수 있습니다.
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. |
다음 포스팅에서도 이어서 다루도록 하겠습니다.
'Exchange' 카테고리의 다른 글
Exchange Server 2019. Core 버전에서 설치하기(1) (0) | 2019.11.03 |
---|---|
Exchange Server 2016. 순환 로깅 (6) | 2019.10.02 |
Exchange. 사서함 이동에 대한 시나리오 검토 (2) | 2019.01.19 |
Exchange Server 2016. Get-FailedContentIndexDocuments 진행시 The component operation has failed 오류나타나는 증상 (0) | 2018.12.24 |
Exchange Search (0) | 2018.12.14 |