Exchange Online MessageTrace - How i created my own PowerShell Module
Hallo zusammen,
Jeder Exchange Online Admin verbringt hie und da Zeit mit Message Traces. Dabei gibt es ein paar Tricks, welche ich euch hier zeigen möchte. Zum Schluss habe ich das ganze dann in ein eigenes PowerShell Modul gepackt und auf der PowerShell Gallery veröffentlicht.
Ich mache ein Messagetrace der letzten 10 Tage (das ist das maximum) und lasse mir die Resultate anzeigen
$MT = Get-MessageTrace -StartDate (get-date).AddDays(-10) -EndDate (get-date) -SenderAddress andres.bohren@gmail.com
$MT | Format-Table Received, SenderAddress, RecipientAddress, Subject, Status, MessageTraceID
Ich schnappe mir eine MessageTraceID von einer Mail, welche in die Quarantäne verschoben wurde
$MTD = Get-MessageTraceDetail -MessageTraceId 5b018c12-df4a-4300-df60-08d90bca587d -RecipientAddress a.bohren@icewolf.ch -StartDate (get-date).AddDays(-10) -EndDate (get-date)
$MTD
Nun picke ich mir das "Spam" event heraus. Wie man sieht, hat das ein XML Format.
$Spam = $MTD | where {$_.Event -eq "Spam"}
$Spam | fl
Dieses XML lässt sich extrahieren
[xml]$xmlS = $Spam.Data
$xmls.root.MEP | fl
Aus dem ganzen habe ich mir ein eigenes PowerShell Modul geschrieben. Ein PowerShell Modul besteht aus einem Ordner (der Name des PowerShell Moduls) und einem Script Module *.psm1 und einem Module Manifest *.psd1
Writing a Windows PowerShell Module
How to write a PowerShell module manifest
Ein Manifest kann man sich mit folgendem Befehl anlegen
New-ModuleManifest -Path C:\myModuleName.psd1 -ModuleVersion "2.0" -Author "YourNameHere"
Im Manifest legt man Version und einige andere Dinge fest, wie zum Beispiel, welche Funktionen exportiert (sprich für den Anwender aufrufbar) gemacht werden sollen.
Anschliesend habe ich mir auf der PowerShell Gallery ein Konto eröffnet und einen API Key generiert
Publish-Module -Name Icewolf.EXO.SpamAnalyze -NuGetApiKey <YourPsGalleryApiKey>
Wie man sieht ist das Modul lokal nicht installiert. Das kann mit dem Befehl "Get-Module" überprüft werden. Sucht man mit "Find-Module" in der PowerShell Gallery wird man fündig und kann das Modul mit "Install-Module" installieren
Get-Module Icewolf.EXO.SpamAnalyze -ListAvailable
Find-Module Icewolf.EXO.SpamAnalyze
Install-Module Icewolf.EXO.SpamAnalyze
Die Commands vom Module kann man sich mit folgendem Befehl anzeigen lassen
Get-Command -Module Icewolf.EXO.SpamAnalyze
Die integrierte Hilfe der PowerShell kann man sich mit folgendem Befehl anzeigen lassen
Get-Help Invoke-SpamAnalyze -Full
Und so sieht dann die Anwendung des Moduls aus. Das Modul sucht automatisch in den letzten 10 Tagen.
Nun kann man sich eine Message Trace ID kopieren um ein Mail genauer zu untersuchen.
Nun werden verschiedene Dinge geprüft wie:
- Ist der Absender in der globalen Allow/Blocklist
- Ist die Absender Domain in der globalen Allow/Blocklist