Get-MessageTrackingLog: Exchange Sunucusunda Mesaj İzleme Günlüklerini Ara


Posta akışını, adli iletileri analiz etmek ve e-posta kuruluşunuzdaki belirli bir posta kutusu tarafından gönderilen veya alınan iletiler hakkında farklı bilgiler almak için Exchange Yönetim Kabuğu'ndaki Get-MessageTrackingLog cmdlet'ini kullanabilirsiniz. Bu makalede, Exchange Server 2016/2013/2010 ve Office 365'te (Exchange Online) iletileri izlemek için sıklıkla kullandığım PowerShell tek satırlık komutlarının birkaç örneğini göstereceğim.

Size Exchange taşıma günlüklerinin şu dosyada bulunduğunu hatırlatmama izin verin:

%ExchangeInstallPath%TransportRoles\Logs\MessageTracking

dosya. Exchange'de mesaj izleme günlüklerini analiz etmenin en verimli ve esnek yolu, Get-MessageTrackingLog cmdlet'ini kullanmaktır.

Her şeyden önce, günlüklerdeki olayları filtrelemek için kullanabileceğiniz ana Get-MessageTrackingLog parametrelerini göz önünde bulundurun. Aşağıdaki cmdlet parametreleri en sık kullanılır:

Sender

- gönderene göre arama;

Recipients

— alıcıya göre arama;

Server

- belirli aktarım sunucusunda arama yapın;

Start “11/30/2019 08:00:00” -End “12/18/2019 21:00:00”

— belirli bir süreyi arayın;

MessageSubject

— mesaj konusuna göre arama;

EventID

- Exchange olayına göre arama (kural olarak, aşağıdaki kodlar kullanılır: AL, GÖNDER, FAIL, DSN, DELIVER, BADMAIL, RESOLVE, EXPAND, REDIRECT, TRANSFER, SUBMIT, ZEHİRLİ MESAJ, ERTELE);

messageID

- bir mesaj kimliğine göre takip edin.

Get-MessageTrackingLog cmdlet'ini herhangi bir parametre olmadan çalıştırırsanız, son 30 güne ait Exchange taşıma günlüklerindeki tüm olaylar görüntülenir. Cmdlet yalnızca son 1.000 olayı görüntüler. Bu kısıtlamayı kaldırmak için,

-ResultSize Unlimited

parametre. (Aktarım sunucunuzdaki potansiyel olarak yüksek yük nedeniyle bazı ek filtre parametreleri olmadan yapmanız önerilmez.)

Bu komutu kullanarak Exchange olaylarınızla ilgili bilgileri sayfa sayfa görüntüleyebilirsiniz:

Get-MessageTrackingLog | Out-Host -Paging

Verileri tablo biçiminde görüntülemek ve sütun genişliğini ayarlamak için Format-Table cmdlet'i kullanılır:

Get-MessageTrackingLog | Format-Table -AutoSize

Exchange organizasyonunuzda birden fazla Hub Transport sunucusu kullanılıyorsa, aranacak sunucunun adını sunucunun bağımsız değişkeni olarak belirtmeniz gerekecektir.

-Server

parametre . Veya Hub Transport sunucularınızın her biri için kanalla mesaj izleme komutunu çalıştırın:

Get-TransportServer | Get-MessageTrackingLog

Son 24 saate ait tüm e-postaları görüntüleyelim (

(Get-Date).AddHours(-24)

@gmail.com etki alanından bir alıcının belirtildiği:

Get-MessageTrackingLog -Start (Get-Date).AddHours(-24) -ResultSize unlimited | where {[string]$_.recipients -like "*@gmail.com"}

Belirli bir kullanıcı tarafından belirli bir sunucu aracılığıyla belirli bir süre içinde gönderilen tüm e-postaları görüntülemek için aşağıdaki komutu kullanın (raporda yalnızca belirli izleme alanları görüntülenecektir):

Get-MessageTrackingLog -ResultSize unlimited -Sender "cmansion@a-d.site” -server rome-hub-01 -Start "11/30/2019 06:00:00" -End "12/13/2019 22:00:00" |select-object Timestamp,Sender,Recipients,MessageSubject,EventId|ft

Bir kullanıcının diğerine gönderdiği tüm e-postaları bulalım ve arama sonuçlarını bir CSV dosyasına aktaralım:

Get-MessageTrackingLog -Sender "cmansion@a-d.site" -Recipients "amorato@a-d.site" -ResultSize unlimited -server rome-hub-01| Select-Object Timestamp,Sender,{$_.recipients},MessageSubject | Export-Csv -Path "C:\Export\exchange\exchange_tracking_logs.csv" -Encoding Default -Delimiter ";"

Mesaj konusuna göre arama yapabilirsiniz. Konu alanında “test” kelimesi olan tüm e-postaları görüntülemek için aşağıdaki komutu çalıştırın. (Sonuçları uygun sıralama, filtreleme ve arama özelliklerine sahip bir tablo olarak ayrı bir grafik penceresinde görüntülemek için Out-gridview cmdlet'ini kullanabilirsiniz.)

Get-MessageTrackingLog -MessageSubject "test" -ResultSize unlimited -server rome-hub-01| Select-Object Timestamp,Sender, {$_.recipients}, MessageSubject | out-gridview

Belirli mesaj kimliğine göre arama yapabilirsiniz (bunu Outlook'taki mesaj başlığından alabilirsiniz):

Get-MessageTrackingLog -messageID "41A4321C3543314FFFFF23122F2BDB7ABD00342@rome-hub-01.a-d.site" -ResultSize unlimited -server rome-hub-01| Select-Object Timestamp,Sender, {$_.recipients}, MessageSubject

Son 7 günde belirli bir posta kutusuna gelen e-posta mesajlarının sayısını saymak için aşağıdaki komutu çalıştırın:

(Get-MessageTrackingLog -EventID "RECEIVE" -Recipients "amorato@a-d.site" -ResultSize unlimited).Count

Daha ilgi çekici mesaj istatistiklerini görüntüleyebilirsiniz. Örneğin, farklı gönderenlerden kaç tane e-posta geldiğini görmek istiyorsunuz.

gmail.com

son 5 gün içinde şirketinizin kullanıcıları tarafından alındı (her harici gönderen tarafından gönderilen toplam e-posta sayısını görüntüleyeceğiz):

Get-MessageTrackingLog -EventId "Receive" -Start (Get-Date).AddDays(-5) -ResultSize Unlimited | Where-Object {$_.Sender -like "*@gmail.com"} | Group-Object Sender | Sort-Object Count -Descending | Format-Table *

Exchange kullanıcı posta kutularında saklanan e-postaları bulmak için Search-Mailbox cmdlet'ini kullanın.

Office 365, Exchange Yönetim Merkezi'nden (EAC) ileti izleme günlükleri araması yapmanıza olanak tanır. Posta Akışı -> İleti İzleme'ye gidin. Arama alanlarını doldurun. Bu aslında, kullanıcının basit bir web formunda PowerShell izleme komutu oluşturmasını sağlayan Get-MessageTrackingLog cmdlet'inin web arayüzüdür.

Yukarıda ele alınan yöntemler, Exchange sisteminizde gönderilen ve alınan iletilerin istatistiklerini almanıza ve farklı e-posta aktarım sorunlarını teşhis etmenize yardımcı olacaktır.

İlgili makaleler