Exchange Junk-E-Mail Control

()

Outlook Junk-E-Mail aus Exchange 2019 für Postfix SMTP access control

Dieser Beitrag behandelt das vorgehen, um die von Outlook Benutzer als Junk-E-Mail blockierten SPAM Absender zu sperren, und um diese auf einem Smarthost Relay unter Postfix zu verwerfen.

Es werden die zu blockierenden Absender mit der ExchangePowerShell Abfrage unter Anwendung des cmdlet Get-Mailbox und Get-MailboxJunkEmailConfiguration ausgelesen und im ASCII Format gespeichert, anschliessend wird die Liste der blockierten Absender auf dem Postfix MTA bereitgestellt. Hierdurch werden gesperrte Absender bereits auf dem Relay abgewiesen, die Nachrichten brauchen nicht erst durch die Queue verarbeitet zu werden, sollen dabei auch nicht zum Exchange Server übermittelt werden.

Outlook Junk-E-Mail Blockierte Absender
Abbildung: Outlook Junk-E-Mail Blockierte Absender

Get-MailboxJunkEmailConfiguration

Das PowerShell Script JunkEmails.ps1 soll die Junk-E-Mails auslesen und in die Datei extracted-JunkEmails.asc im ASCII Format speichern.

$Smarthost = "userid@mail.domain.com:/tmp"
$User_Path = (Get-Item env:\localappdata).Value
$Junk_Path = "$User_Path\Junk"
if(!(Test-Path -Path $Junk_Path )){
    New-Item -ItemType directory -Path $Junk_Path
}
$input_file = "$Junk_Path\JunkEmails.txt"
$output_asc = "$Junk_Path\extracted-JunkEmails.asc"
$output_txt = "$Junk_Path\extracted-JunkEmails.txt"

$AllUsers = Get-Mailbox -ResultSize unlimited -RecipientTypeDetails UserMailbox | foreach {Get-MailboxJunkEmailConfiguration -Identity $_.UserPrincipalName} | fl BlockedSendersAndDomains

$AllUsers | Out-File -FilePath $output_asc -Encoding ASCII
$AllUsers | Out-File -FilePath $input_file

$regex = "\b[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b"
Select-String -Path $input_file -Pattern $regex -AllMatches | % { $_.Matches } | % { $_.Value } > $output_txt

& "C:\Program Files\PuTTY\pscp.exe" -i C:\Windows\system32\privkey.ppk "$output_asc" "$Smarthost"

Den Platzhalter userid durch ein Benutzer ersetzen, dieser es auf dem Linux host gibt und dieser für das kopieren der Datei verwendet werden soll. Es empfiehlt sich ein Service Account zu erstellen, dieser nur zu diesem zweck genutzt wird. Bei mail.domain.com durch den tatsächlichen Smarthost ersetzen. Es wird unter %temp% ein Ordner Junk erstellt, falls dieser nicht bereits vorhanden ist, der Ordner wird lediglich für die Verarbeitung benötigt, die darin enthaltenen Dateien müssen nicht aufgehoben werden. Zum Schluss werden die Junk-E-Mail Absender mit dem zuvor installierten PuTTY pscp.exe auf den $Smarthost kopiert.

Exchange Server Aufgabenplanung

Auf dem Exchange Server 2019 wird in der Aufgabenplanung eine neue Aufgabe erstellt. Für die zyklische Script Ausführung.

Exchange Server Aufgabenplanung Neue Aufgabe erstellen

Die Option Unabhängig von der Benutzeranmeldung ausführen wählen, und Mit höchsten Privilegien ausführen aktivieren.

Im Abschnitt Trigger ein Zeitplan für alle 15 Minuten hinzufügen.

Aufgabenplanung Trigger bearbeiten

Im Abschnitt Aktion ein Eintrag für JunkEmails.ps1 bearbeiten.

Aufgabenplnung Aktion bearbeiten

Im Feld Programm/Script powershell.exe mit Pfad eintragen.

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

Im Feld Argumente die folgende Zeile mit dem Script hinzufügen.

-NonInteractive -WindowStyle Hidden -command ". 'C:\Programme\Exchange Server\V15\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; C:\Windows\System32\JunkEmails.ps1"

Es wird das Script in der PowerShell mit der Exchange Management Shell Erweiterung ausgeführt. Wurde beim Setup von Exchange ein anderes Installations Volume als C gewählt, muss der Pfad zu den Exchange binary im Script angepasst werden.

Postfix Smarthost für Exchange Server

Auf dem Linux host auf diesem Postfix als Smarthost für den Exchange Server läuft, wird /etc/postfix/main.cf editiert.

smtpd_recipient_restrictions =
    check_sender_access hash:/etc/postfix/junkbl_access,

Ein Shell Script /usr/bin/junkbl.sh wird erstellt, zur Bereitstellung von Postfix junk mail control durch junkbl_acces.

#!/bin/bash
cat -v /tmp/extracted-JunkEmails.asc | tr , '\n' | sed 's/[{}]//g;s/[\t ]//g;/^$/d;s/\.\.\.//g;s/\^M$//g;s/BlockedSendersAndDomains://g' | grep . | sort | uniq -u | sed 's/$/\t 550 message was classified as spam/'  > /etc/postfix/junkbl_access
postmap /etc/postfix/junkbl_access

Das Script entfernt Leerstellen und nicht benötigten Zeichenketten aus der PowerShell abfrage, sortiert diese und entfernt doppelte Einträge, und fügt den Suffix 550 message was classified as spam hinzu, anschliessend wird mit postmap junkbl_access.db erzeugt.

Die Datei junkbl.sh muss ausführbar sein.

$ chmod 755 /usr/bin/junkbl.sh

Ein Cronjob auf dem Smarthost für das Script junkbl.sh erstellen.

*/5 * * * * root /usr/bin/junkbl.sh >/dev/null 2>&1

Damit bei der authentifizierung mit pscp.exe der automatisierte Prozess ermöglicht wird, kann mit puttygen.exe ein Schlüsselpaar erzeugt werden, hierdurch keine Passwort Eingabe erforderlich wird. Der Private Schlüssel mit Save private key als Datei privkey.ppk kann in den Pfad C:\Windows\system32 kopiert werden, wie auch das PowerShell Script JunkEmails.ps1. Den Public Key fügt man ein mit copy & paste in die Datei .ssh\authorized_keys, unter $home von userid auf dem Linux Smarthost.

PuTTY Key Generator Public key for pasting into authorized_keys file

Set-MailboxJunkEmailConfiguration

Bei der täglichen Administration kann es erforderlich sein, die durch Junk-E-Mail blockierten Absender wieder aus der Liste BlockedSendersAndDomains entfernen zu müssen, dies geschieht mit folgendem Kommando in der Exchange Management Shell.

BlockedSendersAndDomains

Set-MailboxJunkEmailConfiguration -Identity username -BlockedSendersAndDomains @{Remove="ycdov@maxstore.biz","efor@chaingang.co.uk"}

Den Platzhalter username durch den Mailbox Benutzer ersetzen.

Ebenso ist es möglich, E-Mail-Absender diese unerwünschten SPAM versenden, abzuweisen durch Hinzufügen zur Liste BlockedSendersAndDomains. Es wird hierdurch ermöglicht, dies auch ohne Outlook vernehmen zu können.

Set-MailboxJunkEmailConfiguration -Identity username -BlockedSendersAndDomains @{Add="xyz@zoo367.it","elhuhzj@xintes.tv"}

Die blockierten Junk-E-Mail-Absender können zur Überprüfung ausgeben werden.

Get-MailboxJunkEmailConfiguration -Identity username | fl BlockedSendersAndDomains

TrustedSendersAndDomains

Mit der Whitelist können E-Mail-Absender von der Überprüfung ausgeschlossen werden, damit diese Nachrichten nicht irrtümlich als Junk-E-Mail erkannt und gesperrt werden könnten.

Set-MailboxJunkEmailConfiguration -Identity username -TrustedSendersAndDomains @{Add="john@blue-hotels.eu"}

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung / 5. Anzahl Bewertungen:

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Es tut uns leid, dass der Beitrag für dich nicht hilfreich war!

Lasse uns diesen Beitrag verbessern!

Wie können wir diesen Beitrag verbessern?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert