Archiv der Kategorie: Exchange Services

Exchange Service Integration unblog Technical Workarounds and Tutorials for Professionals

Exchange 2013 Logging Message Tracking

Exchange Message Tracking mit Get-MessageTrackingLog

Exchange Administratoren suchen die von Exchange 2010 bekannte Toolbox vergeblich, diese sich für Diagnose Aufgaben, wie zur Nachrichtenverfolgung nutzen lässt, für das Message Tracking oder zur Analyse der Konnektivität.

Diese gibt es jedoch auch bei Exchange 2013 und neuer, wenn auch etwas versteckt. Wie Microsoft immer wieder ankündigte, werden vermehrt Funktionen und Aufgaben in die PowerShell implementiert, so eben auch das Message Tracking.

Get-MessageTrackingLog -ResultSize Unlimited -Start "Dec 29 2015" | Out-GridView

Dazu öffnet man die Exchange Management Shell und führt folgendes cmdlet aus.

Exchange Management Shell Get-MessageTrackingLog
Exchange Management Shell

Es erscheint die Get-MessageTrackingLog Console. Die Console zur Nachrichtenverfolgung lässt sich nutzen um mit Filtern die gesetzt werden können, wie mit EventID, Sender, Empfänger, Source und MessageSubject.

Get-MessageTrackingLog
Get-MessageTrackingLog

Damit die Nachrichtenverfolgung möglich wird, muss aus dem Exchange Administration Center, EAC die Protokollierung zur Nachrichtenverfolgung aktiviert sein.

Exchange Enable Message Tracking
Exchange Enable Message Tracking

In der EAC unter Server den Exchange Server editieren und unter Transportprotokolle die Checkbox aktivieren, bei Protokoll für Nachrichtenverfolgung aktivieren.

Die Exchange Nachrichtenverfolgung wird mit export-csv aus der Exchange Management PowerShell in eine CSV-Datei exportiert.

Get-MessageTrackingLog -Server exch02 -Start "03/19/21 00:00:00" -End "03/21/21 23:59:59" -resultSize Unlimited | Select sender, {$_.recipients}, messagesubject, timestamp | Export-CSV c:\temp\maillog.csv

Weiteres Beispiel aus der Exchange Management PowerShell für ein CSV-Export.

Get-MessageTrackingLog -Server Exchange01 -Start 03/19/21 -End 03/21/21 -resultSize Unlimited | Select timestamp, sender, {$_.recipients}, messagesubject, internalmessageid, clientid, clienthostname, serverip, serverhostname, connectorid, {$_.recipientstatus}, totalbytes, recipientcount, relatedrecipientaddress, {$_.reference}, returnpath, messageinfo | export-csv c:\temp\maillog.csv

Die Exchange Nachrichtenverfolgung mit ConvertTo-Html in eine HTML-Datei konvertieren.

Get-MessageTrackingLog -Server Exchange01 -Start "04/15/2020 08:00:00" -End "04/16/2020 18:00:00" -Sender "john@foo.com" | ConvertTo-Html > "C:\temp\maillog.html"

Exchange 2013 Sizing für Logging und Diagnostic

Die Speicherplatzanforderungen von Exchange 2013 erfordert 30 GB freier Speicher auf dem Exchange-Installations Volume. Das ist eine drastische Zunahme gegenüber Exchange 2010, hier wurden lediglich 1.2 GB an Speicherplatz belegt.

Die Protokollierung und Diagnostic Performance Counters werden standardmäßig unter folgendem Pfad gespeichert:

C:\Program Files\Microsoft\Exchange Server\V15\Logging

In mehreren Unterordnern sind die entsprechenden Protokolle jeder der Komponenten des Client Access Server (CAS) zu finden.

Die exzessive Protokollierung soll dem Support Unterstützung geben bei der Fehlersuche für Mailbox Kunden, die detaillierten Aufzeichnungen in den Protokolldateien des CAS geben direkt Ausfluss, ohne das diese für ein anstehendes Troubleshooting erst aktiviert und aufgezeichnet werden müsste.

Damit die Protokollierung jedoch nicht ausartet und den freien Diskspeicher nicht voll­lau­fen lässt, kann die dauer der zurückliegenden Aufzeichnung auf Beispielweise 20 Tage beschränkt werden. Hierzu folgender Powershell-Script:

gci ‘D:\Program Files\Microsoft\Exchange Server\V15\Logging’,’C:\inetpub\logs’ -Directory | gci -Include ‘*.log’,’*.blg’ -Recurse | ? LastWriteTime -lt (Get-Date).AddDays(-20) | Remove-Item

Den Script in eine .ps1 Datei speichern und unter einem Pfad ablegen, zum Beispiel unter %SystemRoot%.

Powershell Script

Programm/Script:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Argument

-command "C:\Windows\System32\mein_script.ps1"

Damit sollen Täglich um 06.00 Uhr morgens Aufzeichnungen die älter als 20 Tage sind gelöscht werden, den Script als Job im Aufgabenplaner bei Aktion als Programm eintragen und den Trigger auf die gewünschte Zeit setzen.