
Spam von einer bekannten Organisation, die große Mengen von Nachahmungen von Drohnen bis Roombas verkauft, verwendet zufällige Domänen in den Feldern
From:
, Message-ID:
, und ,Reply-To:
alle anders, ohne dass auch nur ein gemeinsames abschließendes xyz.com
.
(Nichtspam-Mails neigen dazu, Domänennamen für mindestens Message-ID:
und gemeinsam zu nutzen Reply-To:
.)
Kann ein Rezept in ~/.procmailrc solchen Spam erkennen und ihn dann an einen Spam-Ordner weiterleiten?
Lust auf reguläre Ausdrücke mit benannten Erfassungsgruppen?
Etwas über das Verketten von Aktionen mit ‚A‘ oder ‚a‘?
Procmail rekursiv aufrufen, wie in der Manpage vorgeschlagen?
Ein „Filter“, um den E-Mail-Header an ein Skript zu übergeben, das in einer Sprache mit besserer Zeichenfolgenverarbeitung geschrieben ist?
Ein Beispiel: namebrandwigs.com, mysuburbankitchen.com, aliyun.com.
From [email protected] Wed Mar 17 09:27:54 2021
Return-Path: <[email protected]>
X-Original-To: ---
Delivered-To: ---
Received: from mysuburbankitchen.com (unknown [5.253.84.113])
by --- (Postfix) with ESMTP id 332025E236
for <--->; Wed, 17 Mar 2021 09:27:53 -0500 (CDT)
To: ---
Subject: drone with new features
Message-ID: <[email protected]>
Date: Wed, 17 Mar 2021 08:13:03 +0100
From: "Jake Allen" <[email protected]>
Reply-To: [email protected]
MIME-Version: 1.0
X-Mailer-Sent-By: 1
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Status: RO
<html>
<head>
</head>
<body>
<span style="display: block; text-align: left;"><span style="display:
block; text-align: left;">Hi,<br /><br /><span>Hope all is well.</span><br
/>We are contacting you today to let you know that we have got the
following new drone, ready to ship to worldwide customers.<span><span><br
/><br /></span></span></span></span><span style="display: block;
text-align: left;"><span style="display: block; text-align:
left;"></span></span><span style="display: block; text-align: left;"><span
style="display: block; text-align: left;"><span style="display: block;
text-align: left;"></span></span></span><span style="display: block;
text-align: left;">Explore new places and amp up your videography skills
with the our F9 4K HD camera drone.
...
Weitere Beispiele mit ähnlichem Format, aber ohne markierbaren Text im Nachrichtentext:
- ein Ledermassagesessel von momentumwatch.com / musicalley.com
- ein Roomba von mtndewkid.com / myhondafitev.com / constructiongear.com
- ein Videoprojektor von hairrehablondon.com / hairocean.com / hotmail.com
Antwort1
Hier ist ein Procmail-Rezept, das implementiert, was ichdenkenfragen Sie sich vielleicht.
Es benutztWertungDies ist eine etwas obskure, aber gelegentlich nützliche Funktion. Kurz gesagt, wir vergeben eine Punktzahl von 1, wenn ein From:
Header mit einem Domänennamen vorhanden ist (was immer der Fall wäre), und ziehen dann eins von der Punktzahl ab, wenn der Reply-To:
oder Message-Id:
Header nach dem dieselbe Zeichenfolge enthält @
.
:0:
* 1^0 ^From:.*@\/[^@<> ]+
* $ -1^0 ^Message-Id:.*@$\MATCH\>
* $ -1^0 ^Reply-To:.*@$\MATCH\>
suspicious
Ich gehe davon aus, dass dies zu einer ziemlich hohen Rate an Fehlalarmen führen wird, aber vielleicht ist es für Sie von Nutzen, wenn Sie viel Spam mit diesem bestimmten Muster erhalten, insbesondere, wenn Sie es mit einer Whitelist kombinieren können.
Ich empfehle Ihnen dennoch, den suspicious
Ordner regelmäßig zu überprüfen und etwaige Fehlalarme wieder in Ihren normalen Posteingang zu fischen.
Hier sehen Sie einen Demolauf mit dem von Ihnen bereitgestellten Beispiel, mit Lieferung an /dev/null
stattdessen nur für die Demo.
bash$ procmail -m VERBOSE=yes /tmp/procmailrc </tmp/sample
procmail: [16] Fri Mar 19 09:06:29 2021
procmail: Rcfile: "/tmp/procmailrc"
procmail: Assigning "MAILDIR=/home/tripleee"
procmail: Assigning "MATCH="
procmail: Matched "namebrandwigs.com"
procmail: Score: 1 1 "^From:.*@\/[^@<> ]+"
procmail: Score: 0 1 "^Message-Id:.*@()namebrandwigs\.com\>"
procmail: Score: 0 1 "^Reply-To:.*@()namebrandwigs\.com\>"
procmail: Assigning "LASTFOLDER=/dev/null"
procmail: Opening "/dev/null"
Subject: drone with new features
Folder: /dev/null 1373
Eine besondere Komplikation besteht darin, dass keine Subdomänentreffer zugelassen werden. Es wäre nicht allzu schwierig, einen Absender zuzulassen , aber das umgekehrte Szenario ist viel schwieriger, da Sie im Allgemeinen nicht wirklich wissen können, ob der Domänenname (wie beispielsweise in den TLDs und ) oder (wie in den TLDs usw. ) oder sogar noch länger ist (wie dies möglicherweise in und einigen Präfekturen in Japan usw. der Fall ist).Message-id: <[email protected]>
From: real name <[email protected]>
From: sender <[email protected]>
labels.here
.com
.fr
many.labels.here
.co.uk
.com.au
k12.place.name.us
Genauer gesagt weist es dem ersten Treffer in der ersten Rezeptzeile 1^0
eine Punktzahl zu, und für weitere Treffer keine zusätzliche Punktzahl. Das Token erfasst die Zeichenfolge nach ihm aus der übereinstimmenden Zeichenfolge, also alles nach dem letzten Zeichen im Header. Die Variable wird dann in den folgenden Rezeptzeilen verwendet, um auf diese erfasste Zeichenfolge zu verweisen; die Syntax erzeugt ein mit Regex maskiertes Muster, das mit der wörtlichen Zeichenfolge übereinstimmt. Die nachfolgenden Rezepte haben ein Flag, das Procmail anweist, alle Variablen (also ) in die Rezeptbedingung zu interpolieren , und eine Bewertungsanweisung, um für den ersten Treffer der Bedingung eins abzuziehen, und dann nichts, wenn es erneut übereinstimmt.1
\/
@
MATCH
$\MATCH
$
$MATCH
-1^0
Die Manpages erklären alle diese Konstrukte, können aber recht umfangreich sein; siehe vielleicht auch dieProcmail-Kurzreferenzdas noch dichter, aber vielleicht auch schneller zu lesen und zu verstehen ist.
Ich habe dies als separate Antwort gepostet, um den Inhalt hier nicht mit meiner anderen Antwort zu vermischen, die im Wesentlichen versucht, Sie davon abzubringen, nur mit Procmail eigene Spamfilter zu erstellen.
Antwort2
Basierend auf ein paar wenigen Beispielen ist es schwer, etwas Konkretes zu finden, das heute und auch morgen noch funktionieren würde. Wenn IhrtatsächlichDie eigentliche Frage lautet: „Wie kann ich Spam von Procmail verhindern?“ Die offensichtliche, einfache und gut dokumentierte Antwort darauf lautet: „Führen Sie einen Vollspektrum-Spamfilter wie SpamAssassin aus und prüfen Sie das Ergebnis.“ Selbst dann wird Ihre Genauigkeit wahrscheinlich nie 100 % betragen; aber SpamAssassin leistet für ein Tool, das Sie im Grunde einfach konfigurieren und dann vergessen, gute Arbeit. Es stützt sich in hohem Maße auf externe Dienste, die dynamische Reputationsinformationen für IP-Adressen, URLs und andere von Spammern verwendete Netzwerkressourcen bereitstellen, sodass tatsächlich ziemlich viel hinter den Kulissen passiert.
UsedViaProcmail im SpamAssassin-Wikihat weitere Anweisungen. Kurz gesagt, sobald Sie SpamAssassin installiert und konfiguriert haben, versuchen Sie etwas wie
:0fw
* < 512000
| spamassassin
:0:
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
almost-certainly-spam
:0:
* ^X-Spam-Status: Yes
probably-spam
Der zweite Doppelpunkt :0:
ist nur dann korrekt, wenn Sie an ein Postfach senden, das gesperrt werden muss (z. B. eine Mbox-Datei, aber definitiv kein Maildir-Verzeichnis; aber basierend auf dem Beispiel in Ihrer Frage scheinen Sie Mbox zu verwenden). Wenn Sie regelmäßig große Spam-Nachrichten erhalten, entfernen Sie vielleicht die Größenbedingung * < 512000
oder passen Sie die Zahl an. Der SpamAssassin-Standard-Procmail-Boilerplate enthält eine Sperrdatei, die auf Ihrem persönlichen System unnötig und auf gemeinsam genutzten Hosts möglicherweise fragwürdig ist, sowie ein seltsames Cargo-Kult-Voodoo um unterbrochene From
Zeilen, das meines Erachtens nie wirklich korrekt war.
Wenn Sie Ratschläge wünschen, die sich speziell auf die von Ihnen bereitgestellten Beispiele beziehen, müssen Sie sich darüber im Klaren sein, dass selbst gründlich recherchierte und absolut wahrheitsgetreue Fakten, die es Ihnen ermöglichen könnten, diese spezifischen Nachrichten mit der vollen Gewissheit zu verwerfen, dass es keine Fehlalarme gibt, für die Bearbeitung aller anderen Nachrichten so gut wie nutzlos sind und/oder morgen oder nächste Woche schon wieder veraltet sind.