Exchange: Delete mails from mailboxes

Bad mails happen in the best of families. Sometimes it's a virus, or an email that shouldn't have been sent.

Exchange Server offers the possibility to delete mails from mailboxes. It can be very useful to know how to do this, especially in the event of SPAM or virus waves. This article applies to Exchange 2010, 2013 and 2016.

Here is a small example:

Hans has received a "nasty mail" that he now wants deleted from his inbox

image

In order to delete the mail, the corresponding authorization must first be assigned, in this case the user "Administrator" is given the rights to import and export mailboxes, this right also includes the deletion of mails within the mailbox.

New-ManagementRoleAssignment -Name "Import Export Mailbox Adminstrator" -User "Administrator" -Role "Mailbox Import Export"

image

Alternatively, a universal group from the Active Directory can also be specified, so other users only need to be assigned to the corresponding AD group:

image

image

New-ManagementRoleAssignment -Name "Import Export Mailbox Users" -SecurityGroup "Exchange Mailbox Import Export" -Role "Mailbox Import Export"

After the right has been assigned, the Exchange Managemet Shell must be restarted once, otherwise the CMDLet "Search-Mailbox" will not be available.

Now the "Bad mail" can be deleted:

get-mailbox hans | search-mailbox -SearchQuery "evil mail" -DeleteContent

image

The screenshot above is from Exchange 2016, here a small warning is displayed that only 10000 items per mailbox are delivered, Exchange 2010 does not bring this warning.

The e-mail disappears from Hans' mailbox a short time later:

Delete mails from mailboxes

If a SPAM or virus mail has been sent to many mailboxes, all mailboxes can be searched at the same time.

In this example, all mailboxes are searched for a mail with the subject "Test" and the corresponding mails are deleted:

get-mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery "subject:'test'" -DeleteContent

The search can of course be refined even further. Here, for example, all mailboxes in the "DB2016" database from administrator@frankysweb.de with the subject "Test":

get-mailbox -Database DB2016 -ResultSize unlimited | Search-Mailbox -SearchQuery "subject:'test' -and from:'administrator@frankysweb.de'" -DeleteContent

If you want to be on the safe side and don't want to delete the emails immediately, you can also display the search results first:

get-mailbox hans | search-mailbox -SearchQuery "test" -LogOnly -TargetFolder search -TargetMailbox administrator -LogLevel FULL

The command saves the search results in the "Search" folder in the "Adminsistrator" user's mailbox. A CSV file with the corresponding results is attached to the email:

image

Excel can then be used to evaluate the CSV file and, if necessary, adjust the search parameters accordingly

image

18 thoughts on “Exchange: Mails aus Postfächern löschen”

  1. 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

    Reply
  2. 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

    Reply
    • 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..

      Reply
  3. 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

    Reply
  4. 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…

    Reply
  5. 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

    Reply
  6. 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

    Reply
  7. 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

    Reply
  8. 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.

    Reply
    • 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

      Reply
  9. 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?

    Reply
  10. 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.

    Reply
    • 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.

      Reply
  11. 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.

    Reply
  12. Hallo,

    geht dies zufälligerweise auch mit fehlerhaften Kontakte-Verteilern bzw. Kalendereinträgen, die man in Outlook nicht löschen kann?

    Reply
  13. 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

    Reply

Leave a Comment