Office 365에서 PowerShell Get-MessageTrace 명령어 사용 방법

PowerShell Get-MessageTrace 명령은 Office 365 관리자가 사용자의 메일함에 들어가지 않을 수도 있는 이메일 메시지의 전달 및 처리를 추적하는 데 도움이 될 수 있습니다. 이 기사에서는 Get-MessageTrace 명령을 사용하여 Office 365에서 이메일 메시지 추적을 관리하고 분석하는 방법을 안내하겠습니다.

Exchange Online에서 PowerShell Get-MessageTrace 사용하기

Get-MessageTrace cmdlet은 Exchange Online 내에서 이메일 트래픽을 분석하고 관리하는 기본 방법입니다. 그러나 이 PowerShell 명령은 Office 365 환경의 Exchange Online에서만 사용할 수 있습니다.

광고

Exchange 사내 환경에서는 Get-MessageTrace PowerShell 명령어가 사용 불가하며, 대체 方案으로 Get-MessageTrackingLog cmdlet을 사용할 수 있습니다. Get-MessageTrace PowerShell 명령어는 사내 환경의 COUNTERPART과 유사한 기능을 제공하지만, 이 cmdlet은 특히 云计算 기반의 Office 365 환경을 대응하기 위해 設計되었습니다.

Exchange on-premises과 Exchange Online 메시지 추적의 주요 차이

  1. 環境: Exchange on-premises는 조직의 자신의 서버와 직접 deal하면서, Exchange Online는 Microsoft에서 제공하는 云计算 기반의 서비스입니다.
  2. 통합: Exchange Online에서는 Get-MessageTrace 명령어가 Office 365의 보안과 合规성 기능과 无缝으로 통합되며, 사내 환경에서는 Get-MessageTrackingLog cmdlet을 사용해야 합니다.
  3. 인증: Exchange Online의 云计算 특성으로 인해 인증 方法과 PowerShell 세션은 다르게 관리되며,
  4. 可扩展성: Exchange Online의 확장性는 사내 硬件 升级이 필요 없이 대량의 이메일 작업 負荷를 처리하는 목적으로 설계되었습니다.

Exchange Online에 연결하기

간단히 말하자면, Exchange Online cmdlet을 사용하려면 Office 365 환경과 원격 PowerShell 세션을 설정해야 합니다. Windows PowerShell을 열고 다음 명령을 실행하세요.

Connect-ExchangeOnline
Using Connect-ExchangeOnline to get connected to your tenant (Image credit: Petri/Michael Reinders)

이제 익숙해진 거죠? 연결할 수 있는 사전 요구 사항에 대해 더 많은 도움이 필요하면 이전 게시물인 Exchange Online에 연결하는 방법을 읽어보세요.

지정된 날짜 범위로 Get-MessageTrace 사용하기

특정 날짜 범위 내의 이메일 트래픽을 분석하는 것은 일반적인 관리 작업입니다. Get-MessageTrace cmdlet을 사용하면 생성 또는 전달 날짜에 따라 이메일 메시지를 필터링하고 검토할 수 있습니다. 이 PowerShell 명령은 최대 10일치의 히스토리만 액세스할 수 있다는 점을 유의해야 합니다. 10일 이전의 이메일 흐름을 조사해야할 경우, 더 긴 시간 범위에 대해 메시지 추적을 실행하는 Exchange 관리 센터 웹 사이트를 사용해야 합니다.

광고

특정 날짜 범위 내의 메시지를 검색하기 위해 Get-MessageTrace cmdlet을 사용하는 단계별 안내서입니다.

지난 x분

‘StartDate’ 매개변수는 검색할 시간 범위를 지정하는 데 사용됩니다. 날짜 (최대 10일까지)를 입력할 수 있습니다. 그러나 시간도 포함할 수 있습니다. 날짜/시간 범위를 반드시 따옴표 (“”)로 감싸야 합니다.

이제 ‘Get-MessageTrace’ cmdlet을 사용하여 지난 90분 이내의 이메일을 검색해 보겠습니다:

Get-MessageTrace -StartDate "08/15/2023 10:45 AM" -EndDate "08/15/2023 12:15 PM"
Using the Get-MessageTrace cmdlet to trace email message flow (Image credit: Petri/Michael Reinders)

I’ll remind you that I am using my Microsoft 365 Developer tenant, so there’s not a lot of email activity occurring. If you get no output, it simply means that no email traffic records were returned. This can be completely normal.

광고

더 고급 PowerShell 명령을 사용하여 45분 전으로 돌아가는 방법도 있습니다:

Get-MessageTrace -StartDate (Get-Date).AddMinutes(-45) -EndDate (Get-Date)

환경에서 출력이 어떻게 작동하는지 확인하기 위해 몇 통의 이메일을 보내드릴게요.

지난 x시간

이제 중요한 점입니다 – Exchange Online은 거의 확실히 UTC 시간대에 이메일 전달 시간을 기록할 것입니다! 따라서 종료 일시를 조정해야 합니다. 이를 위해 방법을 알려드리겠습니다.

지난 8시간 또는 9시간 전까지 검색해 보겠습니다:

Get-MessageTrace -StartDate "08/15/2023 10:45 AM" -EndDate "08/15/2023 7:00 PM"
We need to use UTC times when computing our search window! (Image credit: Petri/Michael Reinders)

여기에 있습니다! 이는 다른 계정에서 주 메인 관리자 계정으로 보낸 이메일을 보여줍니다. 현재 이 글을 작성하는 동안 이메일을 오후 12시 15분 (CDT)경에 보냈습니다. 그러나 UTC는 5시간 앞서 있습니다. 이것이 이메일 행에서 5시 16분 (UTC)에 전달되었다고 보고된 이유입니다. 이 시간 차이를 염두에 두세요!

지난 x일

이메일 전달 기록이 없더라도 명령을 보여드릴 수 있습니다. Exchange Online을 통해 처리된 모든 이메일을 표시하려면 단순히 날짜를 포함하면 됩니다.

Get-MessageTrace -StartDate 08/05/2023 -EndDate 08/15/2023
We can go back a maximum of 10 days with PowerShell! (Image credit: Petri/Michael Reinders)

여기 있습니다. 이 테넌트에서 Azure AD Connect Cloud Sync을(를) 구성했기 때문에 주간 이메일 상태 업데이트를 받습니다. 해당 이메일은 2023년 8월 8일에 보냈습니다.

다시 한 번, 최대 10일까지만 검색할 수 있습니다. 시간을 더 거슬러 올라가려면 Exchange 관리 센터 웹사이트의 메시지 추적 기능을 사용해야 합니다. 거기서 최대 90일까지 거슬러 올라가는 요청을 생성할 수 있습니다.

발신자 이메일 주소로 Get-MessageTrace 사용하여 검색하기

특정 발신자가 보낸 메시지를 식별하는 것은 통신 패턴 조사나 보안 문제 해결과 같은 여러 목적에 중요할 수 있습니다. Get-MessageTrace cmdlet을 사용하면 특정 이메일 주소에서 메시지 추적을 검색할 수 있습니다.

여기 ‘-SenderAddress’ 매개변수를 사용하여 특정 발신자의 메시지 추적을 검색하는 방법입니다:

Get-MessageTrace -SenderAddress "[email protected]"
We can use ‘SenderAddress’ to narrow things down (Image credit: Petri/Michael Reinders)

酷,还有一个。简洁直观,而且非常实用的小贴士——如果你将结果通过管道传输到`Format-List` cmdlet,你将得到包括投递状态、消息ID、消息追踪ID、发件人地址、收件人地址等等的详细结果摘要。`

We can use Format-List to get even more details (Image credit: Petri/Michael Reinders)

使用Get-MessageTrace通过收件人电子邮件地址搜索

对特定收件人发送的电子邮件进行追踪是管理员们的另一项基本任务。无论是管理邮件投递还是确保敏感信息能够发送给正确的人,通过收件人电子邮件地址进行搜索的能力都无比宝贵。`

让我们举一个例子,这里我们将搜索所有发送给…我的电子邮件:`

Get-MessageTrace -RecipientAddress "[email protected]"
We can also narrow things down by recipients of email (Image credit: Petri/Michael Reinders)

这显示了租户中发送给我电子邮件地址的3封电子邮件消息。顺便说一下,如果你没有包括任何与时间相关的参数,它会报告过去48小时内的信息。`

你能使用Get-MessageTrace通过电子邮件主题搜索吗?`

안타깝게도 Get-MessageTrace 명령을 사용하여 주제로 검색할 수는 없습니다. 이 경우에는 Microsoft Purview를 활용하여 eDiscovery(콘텐츠) 검색을 생성해야합니다. 이에 대한 자세한 정보는 이전 eDiscovery에 관한 기사에서 확인할 수 있습니다.

소스 및 대상 IP 주소로 Get-MessageTrace 사용하기

또한 Get-MessageTrace 명령을 사용하여 소스 및 대상 IP 주소로 검색할 수도 있습니다. 이를 통해 전송 및 수신 서버의 IP 주소를 기반으로 이메일 메시지를 추적할 수 있습니다. 이는 전달 문제 진단, 수상한 활동 식별 및 이메일 인프라를 통해 메시지가 이동하는 경로 이해에 특히 유용할 수 있습니다.

여기서도 ‘ToIP’ 및 ‘FromIP’ 매개변수를 사용할 수 있습니다. 예를 들어, 소스 IP인 44.42.2.55에서 오는 모든 이메일과 엣지 방화벽의 공용 IP인 101.3.2.88로 이메일을 수신하는 경우 다음과 같은 명령을 사용할 수 있습니다.

Get-MessageTrace -ToIP "4.42.2.55" -FromIP "101.3.2.88"
You can also search by IP addresses amongst the SMTP servers in question (Image credit: Petri/Michael Reinders)

다시 말하지만, 여기에는 정말 멋진 내용이 없지만 작동합니다. 정말로요.

와일드카드 및 부분 일치 사용 방법

와일드카드 문자를 사용하여 결과를 효율적으로 좁힐 수도 있습니다. 예를 들어, 보안이나 규정 준수와 관련하여, 규정 준수 담당자가 지난 48시간 동안 Gmail에서 처리된 모든 이메일 기록을 보고 싶다고 가정해 봅시다. 쉽죠!

Get-MessageTrace -SenderAddress *@gmail.com

보시다시피, 이건 아주 쉽게 할 수 있습니다. 수신자에 대해서도 동일한 방법을 사용할 수 있습니다. “m”으로 시작하는 이메일 주소를 가진 모든 사람들에게 전달된 이메일을 보려면 다음 명령을 사용해 보세요:

Get-MessageTrace -RecipientAddress m*@x3v6p.onmicrosoft.com

다시 말하지만, 매우 간단합니다.

Get-MessageTraceDetail로 더 자세한 결과 얻기

Get-MessageTrace 명령어의 출력을 확장하고자 한다면, Get-MessageTraceDetail cmdlet이 그런 기능을 제공하며, 이메일 거래에 대한 개별 처리 및 전달 이벤트를 보여줍니다. 보여드릴게요.

먼저, Get-MessageTrace cmdlet을 실행하고 ‘Format-List’ (fl) 명령으로 일부 세부 정보를 얻겠습니다.

Get-MessageTrace | fl
We can get more detail with the ‘Format-List’ (fl) cmdlet (Image credit: Petri/Michael Reinders)

여기에서 지난 48시간 동안 4개의 이메일 메시지에 대한 자세한 내용을 볼 수 있습니다. 따라서 우리가 할 수 있는 것은 두 번째 이메일에서 메시지 추적 ID와 수신자 주소를 가져와 다음 명령을 사용하는 것입니다.

Get-MessageTraceDetail -MessageTraceID e4f33ded-b67f-49b8-9a00-08db9dbb953a -RecipientAddress [email protected]
Using Get-MessageTraceDetail to get line-by-line detail for specific email messages (Image credit: Petri/Michael Reinders)

여기에서는 메건의 실제 익스체인지 메일박스로의 이메일 메시지 수신 및 전달을 구성하는 3가지 이벤트를 볼 수 있습니다. 매우 상세한 내용입니다. 이를 통해 메시지가 사용자의 스팸 이메일 폴더로 직접 전달되었는지 또는 내부(또는 외부) 메일박스로 자동 전달되었는지 확인할 수 있습니다. 전반적으로 IT 전문가 및 익스체인지 관리자에게 매우 유용한 정보입니다.

CSV 파일로 결과 내보내기하는 방법

대부분의 경우 많은 레코드를 보고하는 검색을 실행할 것입니다. 결과를 분석하고 필터링하기 위해 엑셀을 사용하고 싶을 것입니다. 이를 위해 다음과 같이 결과를 Export-CSV 명령을 통해 파이핑하면 됩니다.

Get-MessageTrace | Export-CSV AllEmailsInLast48Hours.csv
Exporting output to a CSV file (Image credit: Petri/Michael Reinders)

이 작업은 몇 초만에 완료되었습니다. 아주 좋네요!

Group-Object로 고급 검색 수행하는 방법

그룹-오브젝트 cmdlet을 사용하여 우리의 이메일 投递 상황을 더 상위 수준의 보기로 만들 수 있습니다.

가장 활동적인 이메일 발송자

지近7일 내에 가장 많은 이메일을 발송한 사용자를 찾는 것은 어떻게 되나요? 명령어를 보여주고 그 后的에 설명할게요.

Get-MessageTrace -StartDate (Get-Date).AddDays(-10) -EndDate (Get-Date) | Group-Object -Property SenderAddress | Select Name,Count | Sort Count -Descending
We can find the most active senders with some more PowerShell piping! (Image credit: Petri/Michael Reinders)

여기서는 지近10일 내에 처리 된 이메일 목록을 일괄 수집합니다. 그 다음, 그 표출 정보를 이용하여 그룹-오브젝트 명령어를 사용하여 ‘SenderAddress’ 속성을 사용하여 카운트(이메일 수)를 구하고, 가장 많은 값을 기준으로 정렬합니다.

가장 많은 이메일을 받은 수신자

동일한 명령어를 실행하고 ‘SenderAddress’ 속성을 ‘RecipientAddress’로 대체하여 지近10일 내에 가장 많은 이메일을 받은 사용자를 빨리 수집할 수 있습니다. 어떻게 되는지 봐봐요:

Get-MessageTrace -StartDate (Get-Date).AddDays(-10) -EndDate (Get-Date) | Group-Object -Property RecipientAddress | Select Name,Count | Sort Count -Descending
Similarly, we can find the users receiving the most email (Image credit: Petri/Michael Reinders)

I do love how powerful and simple PowerShell can be. Now, we have the information. Again, the data in this tenant is VERY low. You will undoubtedly see more robust results when you run these commands in your tenant.

Get-MessageTrace cmdlet은 유연性和 제어를 제공합니다.

특정 날짜 범위 내에서 검색해야하는지, 특정 발신자의 메시지 트레이스를 식별해야하는지, 또는 특정 수신자에게 전송된 메시지 트레이스를 추적해야하는지 여부에 관계없이, Get-MessageTrace cmdlet은 필요한 유연성과 제어를 제공합니다. 또한 결과를 CSV 파일로 내보낼 수 있는 기능을 통해 전자 메일 통신 패턴을 분석하고 문서화하는 능력이 향상됩니다. Get-MessageTrace cmdlet의 사용을 완전히 숙달함으로써 전자 메일 트래픽을 효과적으로 관리하고 조직의 커뮤니케이션 활동에 대한 유용한 통찰력을 얻을 수 있습니다.

Source:
https://petri.com/powershell-get-messagetrace/