Massenlöschung von Posteingangsmails, die von POSTFIX verwaltet werden

1144
shroom

Hatte vor einigen Stunden ein Problem mit einem Client-E-Mail-Konto, das kompromittiert wurde. Infolgedessen hatte er Hunderttausende von Spam in Postfix, die zu mehreren Problemen führten. Alles ist behoben und die Sicherheit ist gebunden, abgesehen von einem "kleinen" Problem: Der Kunde hat jetzt fast 100.000 Spam-E-Mails in seinem Posteingang. Und natürlich suche ich nach einer Massenoperation mit einigem Filtern, da alles nicht Junk ist. PF läuft auf dem Ubuntu-Server v10.x mit maildir.

Ich habe diesen Befehl in einem gesicherten Ordner mit den gleichen Dateien ausprobiert:

grep -l -r 'Undelivered' | xargs rm 

Aber abgesehen vom Laufen scheint es nichts zu tun.

Kann dies dadurch entstehen, dass alle "Mails" in Dateien mit dem folgenden Namen gespeichert werden:

1395063807.V902Ib2081dM533672.ip.ip.ip: 2,

2
Was ist Ihr Mailbox-Typ? "mbox", "maildir" oder anderes? Welchen "Pop / Imap" -Server verwenden Sie? clement vor 10 Jahren 0
Maildir verwendet, aber das Problem wurde behoben: Es wurde nur eine ältere Version von grep verwendet, für die ein Verzeichnis erforderlich ist. shroom vor 10 Jahren 0

1 Antwort auf die Frage

1
Andreas Wiese

Abhängig von Ihrer Version grepkann dies immer warten, da Sie keinen Dateinamen (oder Verzeichnisnamen) als Argument angegeben haben. grepDas Verhalten beim Verwenden des aktuellen Arbeitsverzeichnisses, wenn -rangegeben, ist eine eher neue Funktion. Wenn Ihre Version also eine ältere Version ist, wartet Ihr Aufruf möglicherweise für immer auf die Eingabe stdin. Fügen Sie einfach .als letztes Argument hinzu grep, um diesen Fall zu vermeiden.

Um Probleme mit Dateinamen zu vermeiden (was in diesem Fall kein Problem sein sollte), ist es am sichersten, anzurufen

grep -Zl -r 'Undelivered' . | xargs -0 rm -- 

Auf diese Weise werden grepdie übereinstimmenden Dateinamen mit einem Abstand von null Byte ( '\0') ausgegeben, wodurch Probleme mit Leerzeichen und ähnlichem in Dateinamen vermieden werden. --weist rman, die folgenden Argumente nicht als Optionen zu behandeln, dh, wenn ein Dateiname mit einem beginnt -, wird er nicht unterbrochen.

Um zu sehen, ob dieser Befehl überhaupt etwas bewirkt, können Sie die -vOption hinzufügen rm, um zu sehen, ob rmtatsächlich etwas entfernt wird ( --natürlich vor).

Vielen Dank, ich fühle mich irgendwie dumm, diesen Punkt vergessen zu haben, denn es war tatsächlich der Grund für das Auflegen. shroom vor 10 Jahren 0
Ich musste diese Antwort bearbeiten, um sie auch zu bekommen, also fühle mich nicht schlecht. ;) Ich benutze Gentoo / Testing, also unterstützt mein "grep" auch das ommited ".", Und ich falle regelmäßig auf anderen Maschinen darüber. Andreas Wiese vor 10 Jahren 0