Automatisch die gelöschten Elemente in den Benutzer-Postfächern über Exchange Aufbewahrungsrichtlinie leeren.
Inhaltsverzeichnis
Die Ausgangssituation
Leider kommt es immer wieder vor, dass Benutzer zwar Mails löschen (also in die gelöschten Elemente verschieben), diese aber nie endgültig gelöscht werden. Wird Outlook benutzt, kann in den Einstellungen „Ordner Gelöschte Elemente beim Beenden leeren“ aktiviert werden. Die Einstellung lässt sich vielleicht auch über eine Gruppenrichtlinie setzen (habe ich nicht geprüft). Da in meinem Fall aber viele Benutzer entweder Outlook auf domänenfremden Geräten oder Outlook on the Web (OWA, Outlook Web App/Access) verwenden, war das für mich ohnehin keine Option. Exchange ermöglicht mit den Aufbewahrungsrichtlinien eine viel schönere Lösung. Aus meiner Sicht müsste das auch so ungefähr im Office 365 funktionieren.
Exchange Admin Center
Gelöschte Elemente aufbewahren
Neben der Aufbewahrungsrichtlinie sollte auch „Gelöschte Elemente aufbewahren für (Tage):“ unter Server → Datenbanken → Datenbank-Einstellungen öffnen (z.B. Doppelklick) beachtet werden:
Quelle: Microsoft.com
Diese Einstellung steuert die Wiederherstellungsmöglichkeiten im Outlook der BenutzerInnen, die in Gelöschte Elemente → „Zuletzt aus diesem Ordner entfernte Elemente wiederherstellen“ aufgerufen werden können:
Elemente die wiederhergestellt werden können:
Quelle: Microsoft.com
Aufbewahrungstag erstellen
Verwaltung der Compliance → Aufbewahrungstags → + → „Automatisch auf einen Standardordner angewendet“ aufrufen:
Nun können die gewünschten Einstellungen gesetzt werden:
- Name: Gelöschte Elemente endgültig löschen
- Dieses Tag auf folgenden Standardordner anwenden: Gelöschte Elemente
- Aufbewahrungsaktion: „Endgültig löschen“ oder „Löschen und Wiederherstellung zulassen“
- Aufbewahrungszeitraum: z.B. 90 (Tage)
- Speichern
Quelle: Microsoft.com
Aufbewahrungsrichtlinie erstellen
Verwaltung der Compliance → Aufbewahrungsrichtlinie → + aufrufen:
Da später vielleicht noch andere Aufbewahrungsrichtlinien hinzu kommen können, pro Postfach aber nur eine Aufbewahrungsrichtlinie gesetzt werden kann, sollte ein allgemeiner Name für die Aufbewahrungsrichtlinie verwendet werden:
Name: z.B. „Organisationsrichtlinie“ eingeben → + → zuvor erstellten Aufbewahrungstag hinzufügen:
Quelle: Microsoft.com
Aufbewahrungsrichtlinie zuweisen
Im letzten Schritt muss die Aufbewahrungsrichtlinie den jeweiligen Postfächern zugewiesen werden. Dafür müssen die Einstellungen des jeweiligen Postfachs unter Empfänger → Postfächer geöffnet werden und unter Postfachfunktionen die zuvor erstellte Aufbewahrungsrichtlinie ausgewählt und über Speichern zugewiesen werden:
Quelle: Microsoft.com
Aufbewahrungsrichtlinie mit PowerShell zuweisen
Allen Postfächern zuweisen
Wenn viele Postfächer vorhanden sind, lässt sich die Aufbewahrungsrichtlinie auch über PowerShell (in der Exchange Management Shell) zuweisen. Mit folgendem Befehl wird die Aufbewahrungsrichtlinie „Organisationsrichtlinie“ allen Postfächern innerhalb der Exchange-Organisation zugewiesen:
Get-Mailbox -ResultSize Unlimited | Set-Mailbox -RetentionPolicy "Organisationsrichtlinie"
Code-Sprache: JavaScript (javascript)
Quelle: Get-Mailbox, Set-Mailbox
Active Directory Benutzern einer Organisationseinheit zuweisen
Falls die Aufbewahrungsrichtlinie nicht allen zugewiesen werden soll, kann mit dem folgenden Script gearbeitet werden. In dem Script werden zunächst die Active-Directory-Benutzer der Organisationseinheit „Benutzer“ ermittelt. Innerhalb der foreach kann dann entweder die Aufbewahrungsrichtlinie mit Set-Mailbox gesetzt oder mit Get-Mailbox angezeigt werden. Active Directory Domain, Organisationseinheit, Name der Aufbewahrungsrichtlinie und gewünschte Aktion müssen natürlich entsprechend adaptiert werden:
# Exchange Management Shell einbinden
$CallEMS = ". '$env:ExchangeInstallPath\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto -ClientApplication:ManagementShell "
Invoke-Expression $CallEMS
# Benutzerkonten aus AD abfragen
$adUsers = Get-ADUser -Filter "Mail -like '*@domain.at'" -SearchBase "OU=Benutzer,DC=domain,DC=at" -Properties samaccountname,description,mail | Sort Name
# Prüfen ob Postfach existiert
foreach($user in $adUsers){
# Aufbewahrungsrichtlinie setzen
# Set-Mailbox $user.samaccountname -RetentionPolicy "Organisationsrichtlinie"
# Aufbewahrungsrichtlinie anzeigen
# Get-Mailbox $user.samaccountname | Select Name,Alias,RetentionPolicy
}
Code-Sprache: PHP (php)
Quelle: Get-ADUser, Get-Mailbox, Set-Mailbox