Exchange: Gelöschtes Postfach endgültig entfernen
Löscht man ein Exchange Postfach wird dieses nicht direkt aus der Datenbank entfernt, sondern standardmäßig für eine Frist von 30 Tagen aufbewahrt. Diese Funktion dient als Sicherheitsnetz und kann vom Administrator frei konfiguriert werden. Möchte man allerdings den Speicherplatz des gelöschten Postfaches sofort freigeben, kann dies auch über die Management Shell bewerkstelligt werden. Wie das funktioniert, zeige ich dir in diesem Beitrag. Dieser Eintrag baut übrigens auf dem Theorie-Artikel „Exchange: Datenbank wird nicht kleiner, obwohl Daten gelöscht wurden“ auf. Solltest du also noch weitere Informationen benötigen, schau am besten vorab dort vorbei.
Postfach endgültig löschen
Löscht man ein Postfach, wird dieses standardmäßig nur vom AD-Benutzer abgekoppelt und bleibt 30 Tage in der Datenbank erhalten. Erst nach dieser Frist löscht der Exchange das Postfach aus der Datenbank und gibt den Speicherplatz für neue Daten frei. Dieser Prozess kann allerdings beschleunigt werden und den Speicherplatz sofort freigeben. Im ersten Schritt müssen wir das abgekoppelte Postfach finden. Dazu durchsuchen wir jede Datenbank mit folgenden Befehl und halten nach dem gewünschten Ergebnis Ausschau.
[PS] C:Windowssystem32>Get-MailboxStatistics -Database MDB01 | Where-Object {$_.DisconnectDate -ne $null} | Select-Object Displayname, Database, DisconnectDate, DisconnectReason, MailboxGuid DisplayName : Test Benutzer Database : MDB01 DisconnectDate : 18.03.2021 13:23:25 DisconnectReason : Disabled MailboxGuid : d4c4854a-0be4-4c43-a7d6-9bb552103791
Hat man die gewünschte Mailbox gefunden, ist für das weitere Vorgehen die MailboxGuid relevant. Da das Postfach keinem AD-Benutzer mehr zugeordnet ist, fliegt es sozusagen nur noch als Hülle (inklusive des gesamten Inhalts) in der Datenbank herum. Mit folgendem Befehl lässt es sich aber komplett entfernen.
Remove-StoreMailbox -Identity 83f3bf32-e118-4f0a-9db9-a5491c8168de -Database MDB1 -MailboxState Disabled
Wurde dieser Befehl ersteinmal ausgeführt, sind die Daten endgültig verloren. Daher ist auch hier wieder Vorsicht geboten.
Postfach nach MoveRequest entfernen
Das Prinzip gilt übrigens auch für Postfächer, die mittels MoveRequest in eine andere Datenbank verschoben wurden. Aber lassen wir uns auch das Szenario kurz zur besseren Übersicht durchbesprechen. Angenommen wir betreiben einen Exchange mit zwei Datenbanken. Da die Datenbank MDB01 immer größer wird, möchten wir zum besseren Balancing einige Postfächer in die zweite Datenbank namens MDB02 auslagern. Daher initiieren wir einen MoveRequest für einige Postfächer von der einen Datenbank in die andere. Nachdem der MoveRequest erfolgreich abgeschlossen wurde, stellen wir fest, dass die migrierten Postfächer nun zwar in der MDB02 aufgelistet werden, der „AvailableMailboxSpace“ in MDB01 allerdings nicht angestiegen ist.
Das liegt daran, dass nach dem Abschluss des MoveRequests die Postfächer in der Source-Datenbank als „SoftDeleted“ markiert und erst nach der Frist von 30 Tagen tatsächlich gelöscht werden. Daher führen wir auch hier wieder den gleichen Befehl aus.
[PS] C:\Windows\system32>Get-MailboxStatistics -Database MDB01 | Where-Object {$_.DisconnectDate -ne $null} | Select-Object Displayname, Database, DisconnectDate, DisconnectReason, MailboxGuid DisplayName : Migrierter Benutzer Database : MDB01 DisconnectDate : 07.04.2021 19:42:14 DisconnectReason : SoftDeleted MailboxGuid : cbcf1876-d888-4d65-852d-0e2667c54ae4
Der einzige Unterschied ist, dass als DisconnectReason „SoftDeleted“ und nicht wie zuvor „Disabled“ aufgeführt wird. Um das Postfach aus der alten Datenbank zu entfernen, gehen wir allerdings gleich vor und passen einfach den „MailboxState“ entsprechend an. Bitte seid auch hier wieder sehr vorsichtig. Die aktive Mailbox in der MDB02 trägt die gleiche MailboxGuid. Aus diesem Grund bestünde die Gefahr, das falsche Postfach zu löschen.