Löschen Sie aus mailq, wo der Betreff übereinstimmt

7

Ich habe eine Mailq, die mit mehreren E-Mails mit derselben Betreffzeile gesichert wird. Ich möchte alle E-Mails in der MailQ löschen, die einer bestimmten Betreffzeile entsprechen, damit sie nicht gesendet werden. Irgendwelche Ideen, wie das geht? Ziemlich dringend, da es sich um Spam handelt.

David
quelle
Welchen MTA verwenden Sie?
Topdog
Ich benutze Postfix
David

Antworten:

2

Postfix verfügt nicht über ein Dienstprogramm wie exigrep. Sie müssen daher die Warteschlangendateien für den Betreff durchsuchen und dann die Warteschlangen-ID an postsuper weiterleiten, um sie zu löschen

Platzhirsch
quelle
16

Bei einer typischen Postfix-Installation befindet sich die E-Mail in / var / spool / postfix. Es gibt mehrere Warteschlangen. Sie möchten Postfix stoppen, damit Sie Postsuper sicher zum Entfernen der E-Mails verwenden können. Dieses kurze Skript entfernt alle E-Mails, die einer bestimmten Zeichenfolge entsprechen. In unserem Fall mussten wir Tausende von E-Mails finden, die alle dieselbe Betreffzeile hatten.

In diesem Fall wurden alle E-Mails zurückgestellt, da unser Remailing-Service sie abgelehnt hatte, weil wir das Limit überschritten hatten.

cd /var/spool/postfix/deferred
grep -r -i -l "This was the subject line" ./ | cut -d/ -f3 | postsuper -d -

Einige wichtige Hinweise dazu:

  • grep -l hat den Dateinamen für Übereinstimmungen zurückgegeben. Dies ist die Warteschlangen-ID der übereinstimmenden Nachricht
  • Die Nachrichten befanden sich alle in verschiedenen Unterverzeichnissen, daher sollte der Pfad von vorne abgeschnitten werden. Stellen Sie sicher, dass Sie Ihren Rückweg testen, um sicherzustellen, dass Sie nur den Namen der Warteschlange erhalten
  • postsuper -d - weist postsuper an, Nachrichten von stdin zu löschen.

Ich hoffe, dies hilft Menschen, die dies finden und nach genaueren Anweisungen suchen.

gview
quelle
Leider funktioniert dieser Ansatz nicht für Unicode-Betreffzeilen ( dh solche, die Token mit codierten Wörtern gemäß RFC2047 verwenden ). Aber selbst das Durchsuchen der postcatAusgabe funktioniert in diesen Fällen nicht.
Tanius
Nur zur Erinnerung - wenn Sie mehrere Konfigurationen verwenden, müssen Sie den Konfigurationsspeicherort mit der Option -c zum Befehl postsuper hinzufügen
Andy Beverley
1

Nur ein alternativer Befehl, um dasselbe zu tun, der von gview vorgeschlagen wurde:

find /var/spool/postfix/deferred/ -exec grep -l 'Subject: this was the subject line' {} \; | xargs -r -n1 basename | xargs -r -n1 postsuper -d
  • find + grep -l: Finde die zurückgestellten E-Mails im Dateisystem mit dem angegebenen Betreff
  • xargs + basename: Ruft die Nachrichten-ID aus dem Pfad der Mail-Datei ab
  • xargs + postsuper: Verwenden Sie die abgerufene Nachrichten-ID, um postsuper -d zu füttern und die E-Mails aus der Warteschlange zu löschen
lgaggini
quelle
0

Heutzutage kann postqueue strukturiertes json mit -j ausgeben.

Sie können die erforderlichen Informationen mit einfachem grep oder einem json-Parser in Ihrer Lieblingssprache extrahieren.

zB Warteschlangen-ID und E-Mail mit sed extrahieren:

postqueue -j | sed -rn 's/.*"queue_id": "([^"]*)".*"address": "([^"]*)".*/\1\t\2/gp'

Sie können es wie folgt fortsetzen:

| egrep "spammer.com|@otherspammer.org|rejectme@any.*com" | cut -f 1 | postsuper -d -

egrep, um die gewünschten Adressen zu filtern, zu schneiden, um das erste Feld zu erhalten, und postsuper -d -, um alle empfangenen Warteschlangen-IDs aus der Pipe zu entfernen. Sie können einen Alias ​​für eine einfache Lösung erstellen oder natürlich Python / Perl / Was auch immer verwenden, um Ihre anspruchsvolle Lösung zu erstellen.

Goteguru
quelle
-1

Sie können verwenden:

postqueue -p | grep '[email protected]' | cut -d ' ' -f1 | tr -d '*' | postsuper -d -
Jorge Petry
quelle
1
Willkommen bei Server Fault! Es sieht so aus, als ob Sie das Wissen haben, hier eine gute Antwort zu geben, aber bitte lesen Sie. Wie schreibe ich eine gute Antwort? in unserer Hilfe und überarbeiten Sie dann die Antwort. Ihre Befehle / Codes / Einstellungen mögen technisch die Lösung sein, aber einige Erklärungen und Zusammenhänge sind willkommen. Danke im Voraus.
HBruijn
Sie haben Recht, aber zu erklären, wie Ihre Pipeline funktioniert, würde viel mehr zukünftigen Suchenden zugute kommen. Erwägen Sie die Verwendung von Bearbeiten, um Ihre Antwort zu erweitern.
Criggie