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.


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


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.


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

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.


-1

Sie können verwenden:

postqueue -p | grep 'user@example.com' | cut -d ' ' -f1 | tr -d '*' | postsuper -d -

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.