Benachrichtigung bei Quarantäne in Exchange Online

Exchange Online verwendet einen ausgereiften Spamfilter, um unerwünschte Werbung, Phishing, Malware und sonstige Spamnachrichten herauszufiltern. Potenziell gefährliche E-Mails, wie Phishing und Malware werden hierbei nicht in dem Junk-Ordner der Empfängermailbox abgelegt, sondern in die Quarantäne verschoben. Da kein Spamfilter perfekt ist, kann es leider auch vorkommen, dass erwünschte Mails in der Quarantäne landen.

In diesem Fall wäre eine Benachrichtigung, dass eine Mail in der Quarantäne gelandet ist, hilfreich. Dies lässt sich sowohl für einen Endbenutzer als auch einen Administrator umsetzen.

  1. Benachrichtigung der Endnutzer

    In den Antispam-Einstellungen des Office 365 Security & Compliance Centers [1] lassen sich die Spambenachrichtigungen für Endbenutzer konfigurieren. Klicken Sie hierzu in der Standard-Spamfilterrichtlinie oder einer eigenen Richtlinie auf „Spambenachrichtigungen für Endbenutzer konfigurieren“. Hier kann definiert werden, in welchem Intervall (in Tagen) die Benachrichtigung an Endnutzer versendet werden soll.

  2. Benachrichtigung der Administratoren

    Soll die Benachrichtigung über die Quarantäne lediglich den Administratoren und nicht den Endnutzern zugestellt werden, muss ein Skript verwendet werden, da Microsoft hierfür keine Funktion bereitstellt. Das Skript kann dann auf einem Server als Scheduled Task beispielsweise jeden Morgen um 7 Uhr ausgeführt werden.

Ein Skript, das an die Administratoren die Mails in der Quarantäne zusendet, kann dabei wie folgt aussehen:

 
$password = "password als secure string"
$username = "absender@domain.com"
$mailrecepient = "admins@domain.com"
$subject = "Quarantine LOG"
$message = "Die folgenden Nachrichten befinden sich in der Quarantaene:"
$header = @"
<style>
TABLE {border-width: 1px; border-style: solid; border-color: black; border-collapse: collapse;}
TD {border-width: 1px; padding: 3px; border-style: solid; border-color: black;}
</style>
"@
#Script
$password = ConvertTo-SecureString $password
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username, $password
Connect-ExchangeOnline -Credential $credential
$quarantine = Get-QuarantineMessage
if ($quarantine -eq $null) {
    return
} 
$html = $quarantine | select SenderAddress,RecipientAddress,Subject,ReceivedTime,Size,Type | ConvertTo-Html -Body $message -Head $header
$html = [string]::Join([string]::Empty,$html)
 
$sendMailParams = @{
    From = $username
    To = $mailrecepient
    Subject = $subject
    Body = $html
    BodyAsHtml = $true
    SMTPServer = 'smtp.office365.com'
    Port = 587
    UseSsl = $true
    Credential = $credential
}
Send-MailMessage @sendMailParams
 

Hierzu bietet es sich an, für die Absenderadresse eine Shared Mailbox zu erstellen, die keinem Benutzer zugeordnet ist. Dadurch wird im Azure Active Directory ein Benutzer erstellt, dessen Passwort nun gesetzt werden kann. Es wird keine Exchange Online Lizenz für den Benutzer benötigt. Des Weiteren muss dem Benutzer die Berechtigung „Exchange Administrator“ erteilt werden, damit die Quarantäne ausgelesen werden kann. Das Passwort muss hierzu auf dem Computer und mit dem Benutzer, mit dem der Task ausgeführt werden soll, verschlüsselt werden.

Dies kann mit folgendem Powershell-Befehl erreicht werden - die Ausgabe des Befehls ist das verschlüsselte Passwort:

ConvertTo-SecureString -AsPlainText Passwort -Force | ConvertFrom-SecureString

Das obige Skript meldet sich direkt bei den SMTP-Servern von Office365. Damit dies funktioniert, muss die Funktion „Microsoft Security Defaults“ deaktiviert sein. Ist dies nicht gewünscht, so muss – wie in [2] beschrieben – ein SMTP-Relay verwendet werden. Des Weiteren muss auf dem Computer, auf dem das Skript ausgeführt werden soll, das Exchange Online Powershell v2 Modul [3] installiert sein.

[1] https://protection.office.com/antispam

[2] https://docs.microsoft.com/de-de/exchange/mail-flow-best-practices/how-to-set-up-a-multifunction-device-or-application-to-send-email-using-office-3

[3] https://www.powershellgallery.com/packages/ExchangeOnlineManagement/1.0.1