Böse Mails kommen in den besten Familien vor. Mal ist es ein Virus, oder eine Mail die so nicht hätte abgeschickt werden sollen.
Exchange Server bietet die Möglichkeit Mails aus Postfächern zu löschen. Gerade bei SPAM oder Virenwellen, kann es sehr nützlich sein, zu wissen wie es geht. Dieser Artikel trifft auf Exchange 2010, 2013 und 2016 zu.
Hier mal ein kleines Beispiel:
Hans hat eine „böse Mail“ bekommen die nun aus seinem Postfach gelöscht werden soll
Um die Mail zu löschen, muss als Erstes die entsprechende Berechtigung vergeben werden, in diesem Fall bekommt der Benutzer „Administrator“ die Rechte Postfächer zu importieren und exportieren, dieses Recht umfasst auch das Löschen von Mails innerhalb des Postfachs.
New-ManagementRoleAssignment -Name "Import Export Mailbox Adminstrator" -User "Administrator" -Role "Mailbox Import Export"
Alternativ lässt sich auch eine Universelle Gruppe aus dem Active Directory angeben, so müssen andere Benutzer nur der entsprechenden AD Gruppe zugeordnet werden:
New-ManagementRoleAssignment -Name "Import Export Mailbox Users" -SecurityGroup "Exchange Mailbox Import Export" -Role "Mailbox Import Export"
Nachdem das Recht zugewiesen wurde, muss die Exchange Managemet Shell einmal neu gestartet werden, da sonst das CMDLet „Search-Mailbox“ nicht zur Verfügung steht.
Jetzt kann die „Böse Mail“ gelöscht werden:
get-mailbox hans | search-mailbox -SearchQuery "böse mail" -DeleteContent
Der Screenshot oben stammt von Exchange 2016, hier wird eine kleine Warnung angezeigt, dass nur 10000 Elemente pro Postfach geliefert werden, Exchange 2010 bringt diese Warnung nicht.
Die Mail verschwindet kurze Zeit später aus dem Postfach von Hans:
Bei einer SPAM- oder Virenmail die an viele Postfächer geschickt wurde, können auch gleich alle Postfächer durchsucht werden.
In diesem Beispiel werden alle Postfächer nach einer Mail mit dem Betreff „Test“ durchsucht und entsprechende Mails gelöscht:
get-mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery "subject:'test'" -DeleteContent
Die Such lässt sich natürlich auch noch weiter verfeinern. Hier zum Beispiel alle Postfächer in der Datenbank „DB2016“ von administrator@frankysweb.de mit dem Betreff „Test“:
get-mailbox -Database DB2016 -ResultSize unlimited | Search-Mailbox -SearchQuery "subject:'test' -and from:'administrator@frankysweb.de'" -DeleteContent
Wer auf Nummer sicher gehen will und die Mails nicht sofort löschen will, kann sich auch die Ergebnisse der Suche erst einmal anzeigen lassen:
get-mailbox hans | search-mailbox -SearchQuery "test" -LogOnly -TargetFolder Suche -TargetMailbox administrator -LogLevel FULL
Mit dem Befehl werden die Suchergebnisse im Postfach des Benutzers „Adminsistrator“ im Ordner „Suche“ gespeichert. Im Anhang der Mail findet sich eine CSV-Datei mit den entsprechenden Ergebnissen:
Mit Excel lässt sich die CSV-Datei dann auswerten und gegebenenfalls Parameter der Suche entsprechend anpassen
Hallo
Ich versuche Mails die von einer bestimmten Person bzw an eine bestimmte Person gesendet wurden in allen Postfächern (Exchange 2016 deutsch) zu löschen.
der befehl:
get-mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery „von:’Gesuchter'“ -LogOnly -TargetFolder Suche -TargetMailbox Sucher -LogLevel FULL
funktioniert und liefert ein Ergebnis als csv Datei.
wenn ich das Ganze mit „an:’Gesuchter'“ versuche, bekomme ich folgende Fehlermeldung:
Fehler bei der Suche für Postfach ‚domain\Gesuchter\GUID‘. Verwenden Sie weniger
Schlüsselwörter auf einmal, reduzieren Sie die Anzahl von Benutzern in den Feldern „Von“, „An“, „Cc“ und „Bcc“, und
reduzieren Sie die Anzahl gleichzeitig durchsuchter Postfächer. usw….
ich habe auch schon versucht weniger Postfächer bzw sogar nur eines zu durchsuchen. immer der selbe Fehler…
hat jemand eine Idee was ich falsch mache?
vielen Dank
lg
Tom
Hallo!
Ich versuche auf einem Exchange 2019 eine einzelne E-Mail aus den gesendeten Elementen zu löschen.
Leider erhalte ich immer wieder folgenden Fehler:
Das Zielpostfach oder der PST-Dateipfad ist erforderlich.
+ CategoryInfo : InvalidArgument: (:) [], ArgumentException
+ FullyQualifiedErrorId : [Server=S-MX03,RequestId=623c87aa-de86-42c2-bc6d-7abdc1b778a4,TimeStamp=19.01.2022 09:35
:29] [FailureCategory=Cmdlet-ArgumentException] 5A3B5892
+ PSComputerName : s-mx03.intern.domain.de
bereits schon bei der einfach Abfrage
get-mailbox | Search-Mailbox -SearchQuery „“
Vielleicht haben Sie eine Idee?
Gruß
Christian
Hallo Christian,
auch wenn der Thread schon etwas älter ist, will ich hier meine Erkenntnis teilen, die ich mit dem gleichen Problem hatte. Wenn du nicht den Parameter „EstimateResultsOnly“ oder „DeleteContent“ angibst, nimmt er an, dass du die gefundenen Mails verschieben willst und verlang nach Zielpostfach und -Ordner.
Ich habe mehrere Anleitungen dazu aufgesucht und nirgends wird das explizit erwähnt. Vielleicht ist ein neues „Feature“ von Micro$oft..
Hallo Frank
Gibt es auch einen Befehlt um in einem Postfach alle eMails zu löschen die in einem bestimmten Zeitraum kreiert (Ein oder ausgegangen sind) wurden?
Hintergrund:
Ein Leitender Angestellter hat bei uns manuell von einer PST einen Haufen eMails in das Exchange-Postfach „rüberkopiert“.
Diese verteilen sich nun über unglaublich viele Ordner…
Da alle eMails aber in einem bestimmten Zeitraum entstanden sind „created date“, könnte ein Suchfilter diese eMails finden und löschen.
Leider sind meine PowerShell/Scripting-Kentnisse bei weitem nicht ausreichend für die Anforderung dieses Niederlassungsleiters.
Gruß
Max
Hallo Frank,
Ja es ist ein deutscher Exchange.
Habe das auch schon versucht, führt leider auch zu keinen Ergebnissen…
ich danke, es liegt irgendwie an den Sonderzeichen…
Erstmal vielen Dank für die tolle Beschreibung hier.
Ich möchte auf eine Exchange 2013 in allen Postfächern nach dem Betreff „Re: 2,000,000.00 Euro“ suchen.
Dazu habe ich zum testen erstmal folgende Abfrage versucht:
get-mailbox | search-mailbox -SearchQuery „subject:’Re: 2,000,000.00 Euro'“ -LogOnly -TargetFolder Suche -TargetMailbox „Administrator“ -LogLevel FULL
Leider liefert das ganze keine Ergebnisse, kann es sein, dass ich bei den „Sonderzeichen“ etwas beachten muss ?
Habe auch schon folgendes, leider auch erfolglos versucht:
-SearchQuery „subject:’Re`: 2`,000`,000`.00 Euro'“
Gruß
Florian
Hallo Florian,
wenn es ein Exchange Server in deutscher Sprache ist, dann versuch mal „Thema:’Re: 2,000,000.00 Euro'“
Gruß,
Frank
Hallo Frank,
ich habe die Datenbank und somit alle Postfächer nach der betroffenen E-Mail durchsucht und gelöscht. Direkt danach ist die E-Mail auch nicht mehr per Suche in der Datenbank nicht mehr auffindbar. Nach einer gewissen Zeit tauchen die Mails jedoch wieder auf, obwohl ich direkt den Weg über die Datenbank gegangen bin. Gibt es hier noch einen Ansatz, wo ich weiter machen kann?
Vielen Dank und mach weiter so.
Gruß Tim
Hallo Frank und Mitleser :-)
Hast Du (Ihr) auch zufällig eine Lösung für folgendes parat:
Nach Umzug von Postfächern (EX2010) in eine neue DB festgestellt, daß die Postfächer fast die gleiche Größe haben.
Outlook über VPN eingerichtet und Ordnergrößen auf Server kontrolliert -> 25 GB in Synchronisierungsprobleme -> Konflikte (der Chef dort bastelt selbst viel).
Jetzt lädt mir das Outlook ja nur die eigenen Konflikte aber nicht die, die im Exchange in der DB drin sind.
Gibt es eine Möglichkeit (Powershell?) die ganzen, alten Konflikte zu löschen?
Danach sollen die PF bereinigt in eine neue DB.
Danke & Gruß
Mario
Kleiner Nachtrag, weil es mich heute eine Stunde meines Lebens gekostet hat:
Auf einem „deutschen“ Exchangeserver auf einem „deutschen“ Windowsserver müssen im searchquery deutsche Begriffe benutzt werden.
Aus -searchquery „Subject: Test“ wird dann -searchquery „Thema: Test“.
Außerdem werden abschließende Sonderzeichen als Whitespaces verworfen. Wir hatten einen Fall, dass ca. 500 Mails mit „bösen“ Links durchgerutscht sind. Die Mails hatten einen Betreff in der Form „Bill-nnnnnn“, Wir konnten nur dann alle Mails löschen, als wir
(Bill-0* OR Bill-1* OR [to be contiued by you :-)] OR Bill-9*)
als searchquery benutzt haben.
Damit keine historischen Mails gelöscht werden, empfiehlt es sich als zusätzliches Kriterium ein „AND Empfangen:“ mit dem Tagesdatum der durchgerutschten Mails hinten dranzuhängen.
Hallo, vielleicht für die Nachwelt interessant. Wenn die obige Fehlermeldung kommt bedeutet das, dass Exchange nicht weiß was es mit den mails machen soll. Sollen diese also nur angezeigt werden dann -estimateResultOnly führt zum Erfolg
Hallo Frank,
hat funktioniert. Das Mail ist nach dem Aktualisieren verschwunden aber jedoch kurze Zeit später wieder da?!
Bei mir handelt es sich um eine Mail in welcher man im Anzeigefenster (rechts) nichts sieht außer dem Vermerk „Kein Betreff“. Links in der Auflistung steht jedoch im Betreff: „wedding dresses“ und als Empfänger „Stoian Radichev“. Es wird auch die Klammer für einen Anhang angezeigt.
Haben Sie hierfür eine Lösung?
Hallo!
Du schreibst bei Punkt 1:
In diesem Beispiel werden alle Postfächer nach einer Mail mit dem Betreff „Test“ gelöscht:
get-mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery „subject:’test'“ -DeleteContent
jetzt meine Frage: Hast du dich verschrieben oder werden wirklich „alle Postfächer“ gelöscht? Das wäre ja der Supergau! Ich bräuchte den Befehl jetzt, traue mich dadurch aber nicht ihn auszuführen.
Hi Tim,
hier handelt es sich natürlich um einen Schreibfehler meinerseits. Nicht die Postfächer werden gelöscht, sondern die Mails innerhalb der Postfächer :-)
Gruß, Frank
PS: Habe es korrigiert.
Wenn ich eine E-Mail global anhand eines Absenders löschen möchte, erhalte ich immer „Das Eigenschaftsschlüsselwort wird nicht unterstützt“. Ist hier ein subject auch Pflicht? Das Ganze tritt unter Exchange 2010 SP3 mit dem aktuellem UR auf.
Hallo,
geht dies zufälligerweise auch mit fehlerhaften Kontakte-Verteilern bzw. Kalendereinträgen, die man in Outlook nicht löschen kann?
Erhalte unter Exchange 2010 folgende Fehlermeldung beim Befehl New-ManagementRoleAssignment -Name „Import Export Mailbox Users“ -SecurityGroup „Exchange Mailbox Import Export“ -Role „Mailbox Import Export“:
Es wurde keine Sicherheitsgruppe mit dieser Identität gefunden: „Exchange Mailbox Import Export“.
+ CategoryInfo : NotSpecified: (0:Int32) [New-ManagementRoleAssignment], ManagementObjectNotFoundExceptio
n
+ FullyQualifiedErrorId : 223C0142,Microsoft.Exchange.Management.RbacTasks.NewManagementRoleAssignment
+ PSComputerName : servername-exchange2010