Mein erstes PowerShellGallery Modul für Exchange Online Icewolf.EXO.SpamAnalyze

Hallo zusammen,

Als Exchange Administrator in Office 365 macht man eine Menge Message Traces. Ich habe ein PowerShell Modul geschrieben um mir das Leben etwas einfacher zu machen.

Aber erstmal die Herleitung. Ich mache ein MessageTrace der letzten 10 Tage (das ist das Maximum) und zeige ein paar Attribute an.

$MT = Get-MessageTrace -StartDate (get-date).AddDays(-10) -EndDate (get-date) -SenderAddress salehnasiru10@gmail.com

$MT | Format-Table Received, SenderAddress, RecipientAddress, Subject, Status, MessageTraceID

Man benötigt die MessageTraceID um die Details anzuzeigen

$MTD = Get-MessageTraceDetail -MessageTraceId d42c2494-dcac-4a93-4d10-08d981c7b140 -RecipientAddress a.bohren@icewolf.ch -StartDate (get-date).AddDays(-10) -EndDate (get-date)

$MTD

In diesem Fall, hat das Mail ein "Spam" Event. Das kann man noch ein bisschen genauer anschauen. Wie man sieht, ist im Data Property eigentlich eine XML Datenstruktur gespeichert.

$Spam = $MTD | where {$_.Event -eq "Spam"}

$Spam | fl

Dann machen wir doch eine XML Variable und laden die Daten dort hinein. Dazu gibt es einiges an Informationen

[xml]$xmlS = $Spam.Data

$xmls.root.MEP | fl

Um mir das Leben ein bisschen einfacher zu machen habe ich mir ein PowerShell Modul geschrieben https://www.powershellgallery.com/packages/Icewolf.EXO.SpamAnalyze/

Find-Module Icewolf.EXO.SpamAnalyze

Install-Module Icewolf.EXO.SpamAnalyze

Get-Module Icewolf.EXO.SpamAnalyze -ListAvailable

Das Modul hat nur eine einzigen Befehl: Invoke-SpamAnalyze

Get-Help Invoke-SpamAnalyze

Wie in der Hilfe zum Befehl beschrieben, werden die Emailadressen von Sender und Empfänger benötigt. Das Script benutzt im Hintergrund die obengenannten Befehle aus dem ExchangeOnlineManagement PowerShell Module.

Beim Start wird geprüft ob eine Verbindung zu Exchange Online und Security und Compliance besteht. Falls nicht, muss man sich mit den entsprechenden Rechten anmelden.

Invoke-SpamAnalyze -RecipientAddress a.bohren@icewolf.ch -SenderAddress salehnasiru10@gmail.com

Nun kopiert man sich die MessageTraceId und fügt sie unten wieder ein

Nun werden die Details angezeigt und ebenfalls folgende Informationen

  • Message Details
  • Recipient Details
  • Recipient Junkmail Configuration (Get-MailboxJunkEmailConfiguration)
  • Prüfen ob der Absender oder Domain in der Globalen Allow- oder Blocklist ist
  • Prüfen ob der Absender oder Domain in der Recipient Allow- oder Blocklist ist (Get-MailboxJunkEmailConfiguration)
  • Die Informationen aus dem extrahierten XML aus dem SPAM Event (inkl. der Beschreibungen)
  • DNS Records
    • NS (NameServer)
    • MX (MailExchanger)
    • SPF (SenderPolicyFramework)
    • DKIM (Domain Key Identified Mail - nur für die Hosts selector1 / selector2)
    • DMARC (Domain-based Message Authentication, Reporting and Conformance)

Hoffentlich hilft euch das beim einen oder anderen Fall weiter. Natürlich freue ich mich auch über Feedback oder Verbesserungsvorschläge.

Liebe Grüsse
Andres Bohren