ProcmailRC-Regel für "In-Repry-to-Header entspricht zuvor gesehener Nachrichten-ID-Header"

StackOverflow https://stackoverflow.com/questions/7342218

  •  27-10-2019
  •  | 
  •  

Frage

Versuchen Sie herauszufinden, wie Sie eine .ProcmailRC -Regel haben, die alle E -Mails, die auf zuvor gesehene E -Mails antworten, werfen. Verwenden von MailDir und möchte, dass die Regel Nachrichten in CUR/ oder NEW/ ...

Sollte ich die Procmailrc alle Dateien analysieren lassen? Oder sollte ich eine Regel haben, die Nachrichten -ID -Header extrahiert, diese in eine Datei fallen lassen und diese analysieren?

Ich kann nicht einfach nach dem In-Repry-to-Header nachsehen und etwas werfen, als ob es eine Antwort auf etwas wäre, das diese Adresse noch nicht gesehen hat, sie muss akzeptiert werden.

War es hilfreich?

Lösung

Sie müssen einen Cache mit Nachrichten-ID: S aus eingehenden Nachrichten sammeln:

:0c:
| formail -zxMessage-Id: >>msgid.txt

Überprüfen Sie dann das in Repry: gegen diesen Cache (wahrscheinlich früher in Ihrem .procmailrc Sie können also Spam filtern, bevor Sie dem Cache eine Nachricht hinzufügen).

:0
* ? formail -zxIn-Reply-To: | fgrep -f msgid.txt -
./whitelisted

Siehe auch die Beispiele von formail -D zum Vergleich. Vielleicht könnten Sie Dinge in eine Form massieren, in der Sie tatsächlich verwenden könnten formail -D Als Back-End (Ersetzen Sie Nachrichten-ID: mit: vor: Vorher Hinzufügen zum Cache; teilen Sie die in Reply to: und führen Sie eine ähnliche Substitution auf jedem Nachrichten-ID aus) auf. formail kann einen LRU-Cache mit konstanter Größe beibehalten, während die fgrep Die Datei wächst einfach auf unbestimmte Zeit (obwohl in diesem Fall vielleicht genau das, was Sie wollen).

Wenn Sie dies ursprünglich einrichten, möchten Sie wahrscheinlich einen Cache aus Nachrichten sammeln cur und new Bereits, aber danach sollten Sie sich nicht auf diese Nachrichten aus Ihrem Rezept beziehen. (Wenn Ihr Posteingang so etwas wie meins ist, wäre Echtzeit-Grepping des gesamten Posteingangs ziemlich unmöglich.)

Wenn Sie einen großen Cache wünschen, lohnt es sich wahrscheinlich, eine einfache Textdatei durch SQLite zu ersetzen. Wenn eine ordnungsgemäße Datenbank wirklich die Mühe wert ist, möchten Sie möglicherweise eher eine echte Datenbank als SQLite, aber ich habe nur vage Vorstellungen über die Skalierbarkeit verschiedener Datenbankmotoren für solche Dinge und keine praktische Erfahrung.

Beachten Sie, dass Ihre ausgehende Nachricht-es sei denn, Sie haben eine ungewöhnliche Einrichtung-zum Cache werden nicht hinzugefügt. Damit dies tatsächlich nützlich ist, sollten Sie vielleicht irgendwie arrangieren, und/oder ein Muster festlegen, das mit Ihrer ausgehenden Nachrichten übereinstimmt: s (idealerweise ohne falsche positive und sicherlich ohne falsche Negative. Wenn Sie MUAs gewechselt haben In der Vergangenheit sollten Sie vielleicht nach Mustern für alte Nachrichten suchen, wenn Sie die volle Abdeckung wünschen.

Vorsicht: ungetestet, und ich bin wahrscheinlich ziemlich verrostet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top