Exchange Server – Search Message Tracking Logs


Posta akışı hakkında ya da belirli bir posta kutusu tarafından gönderilen veya alınan iletiler hakkında farklı bilgiler almak için Exchange Management Shell özelliklerinden birisi olan Get-MessageTrackingLog cmdlet’ini kullanabilirsiniz. Bu makalede, Exchange Server 2016/2013/2010 ve Office 365’te (Exchange Online) iletileri izlemek için kullanılan PowerShell komutlarının birkaç örneğini göstereceğim.

Exchange transport loglarının %ExchangeInstallPath%TransportRoles\Logs\MessageTracking klasöründe bulunduğunu hatırlatalım.

En sık aşağıdaki cmdlet parametreleri kullanılır.

  • Sender – gönderene göre arama
  • Recipients – alıcıya göre arama
  • Server – belirli bir transport server göre arama
  • Start “2019/11/30 08:00:00” -End “2019/12/18 21:00:00” – zamanı belirli bir dönem için arama
  • MessageSubject – mesajın konusuna göre arama
  • EventID – Exchange event’ine göre arama (kural olarak şu kodlar kullanılır. RECEIVE, SEND, FAIL, DSN, DELIVER, BADMAIL, RESOLVE, EXPAND, REDIRECT, TRANSFER, SUBMIT, POISONMESSAGE, DEFER)
  • messageID – ileti kimliğine göre arama

Get-MessageTrackingLog cmdlet’ini herhangi bir parametre olmadan çalıştırırsanız, son 30 gün için Exchange transport loglarında bulunan tüm olaylar görüntülenir. Cmdlet yalnızca son 1000 olayı görüntüler. Bu kısıtlamayı kaldırmak için –ResultSize Unlimited parametresini kullanabilirsiniz. Transport serverda potansiyel olarak yüksek yük nedeniyle bazı ek filtre parametreleri olmadan arama yapılması önerilmez.

Aşağıdaki komutu kullanarak Exchange etkinlikleriniz hakkındaki 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 organizasyonunuz birkaç Hub Transport sunucusu kullanılıyorsa, –Server parametresini kullanarak sunucunun adını belirtmeniz gerekir ya da Hub Transport sunucularınızın her biri için message tracking komutunu çalıştırabilirsiniz.

Get-TransportServer | Get-MessageTrackingLog

@Gmail.com kullanan bir alıcının son 24 saat için tüm e-postaları görüntüleyelim.

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

Belirli bir kullanıcı tarafından belirli bir süre içinde belirli bir sunucu tarafından gönderilen tüm e-postaları görüntülemek için aşağıdaki komutu kullanabilirsiniz.

Get-MessageTrackingLog -ResultSize unlimited –Sender “ozgur@teknolojikadam.com” –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ı tarafından başka birine gönderilen tüm e-postaları bulalım ve arama sonuçlarını bir CSV dosyasına aktaralım.

Get-MessageTrackingLog -Sender “john@contoso.com” -Recipients “amara@contoso.com” -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ın konusuna göre arama yapabilirsiniz. Konu alanında “test” kelimesi bulunan tüm e-postaları görüntülemek için aşağıdaki komutu çalıştırın. Sonuçları ayrı bir grafik penceresinde tablo olarak 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 bir message ID’ye göre arama yapabilirsiniz. Message ID’yi Outlook’taki message header bölümünden alabilirsiniz.

Get-MessageTrackingLog -messageID “41A4321C3543314FFFFF23122F2BDB7ABD00342@rome-hub-01.contoso.com” -ResultSize unlimited –server rome-hub-01| Select-Object Timestamp,Sender, {$_.recipients}, MessageSubject

Son 7 güne ait belirli bir posta kutusu için gelen e-posta ileti sayısını almak için aşağıdaki komutu çalıştırın.

(Get-MessageTrackingLog -EventID “RECEIVE” -Recipients “ozgur@teknolojikadam.com” -ResultSize unlimited).Count

Daha fazla email istatistiklerini görüntüleyebilirsiniz. Örneğin gmail.com uzantılı eposta adreslerinden son 5 gün içinde şirketinizin kullanıcılarına kaç tane e-posta geldiğini görmek isteyebilirsiniz. Her external eposta adresi üzerinden gönderilen toplam e-posta sayısını göstereceğim.

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 *

Office 365, Exchange Admin Center (EAC) üzerinden ileti izleme günlükleri araması yapmanızı sağlar. Mail Flow -> Message Trace sayfasını açın. İlgili alanları doldurun. Bu sayfa aslında, kullanıcının basit bir web formunda PowerShell tracking komutu oluşturmasına izin veren Get-MessageTrackingLog cmdlet’in web arayüzüdür.

Yukarıda ele alınan yöntemler, Exchange sisteminizde gönderilen ve alınan mesajlarla ilgili istatistikleri almanıza ve farklı e-posta transport sorunlarını çözmenize yardımcı olacaktır.

KAYNAKEXCHANGE