Zuvor haben wir 7 effektive Methoden zum Blockieren von E-Mail-Spam mit Postfix auf CentOS/RHEL besprochen. In diesem Tutorial lernen wir, wie Sie SpamAssassin (SA) verwenden, um Spam auf dem CentOS/RHEL-Mailserver zu erkennen. SpamAssassin ist ein kostenloses, flexibles und leistungsstarkes Open-Source-Tool zur Spam-Bekämpfung.
SpamAssassin ist ein punktebasiertes System. Es prüft E-Mail-Nachrichten anhand einer Vielzahl von Regeln. Jede Regel fügt Punkte in der Punktzahl der Nachricht hinzu oder entfernt sie. Wenn die Punktzahl hoch genug ist (standardmäßig 5,0), wird die Nachricht als Spam betrachtet.
SpamAssassin auf CentOS/RHEL installieren
Führen Sie den folgenden Befehl aus, um SpamAssassin aus dem standardmäßigen CentOS/RHEL-Software-Repository zu installieren.
sudo dnf install spamassassin
Die vom spamassassin
installierte Server-Binärdatei Paket heißt spamd
, die TCP-Port 783 auf localhost überwacht. Spamc
ist der Client für den Spam-Filter-Daemon von SpamAssassin. Standardmäßig ist das spamassassin
Der systemd-Dienst ist deaktiviert, Sie können den automatischen Start beim Booten aktivieren mit:
sudo systemctl enable spamassassin
Starten Sie dann SpamAssassin.
sudo systemctl start spamassassin
Integrieren Sie SpamAssassin mit Postfix SMTP Server als Milter
Es gibt mehrere Möglichkeiten, wie Sie SpamAssassin mit Postfix integrieren können. Ich ziehe es vor, SpamAssassin über die Sendmail-Milter-Schnittstelle zu verwenden, weil es mir ermöglicht, eine E-Mail abzulehnen, wenn sie eine sehr hohe Punktzahl wie 8 erreicht, sodass sie vom Empfänger niemals gesehen wird.
Installieren Sie den spamass-filter
Pakete auf CentOS/RHEL aus dem EPEL-Software-Repository.
sudo dnf install epel-release sudo dnf install spamass-milter
Starten Sie den Dienst.
sudo systemctl start spamass-milter
Autostart beim Booten aktivieren.
sudo systemctl enable spamass-milter
Als nächstes bearbeiten Sie /etc/postfix/main.cf
Datei und fügen Sie die folgenden Zeilen am Ende der Datei hinzu.
# Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = unix:/run/spamass-milter/spamass-milter.sock non_smtpd_milters = $smtpd_milters
Wenn Sie OpenDKIM und OpenDMARC auf CentOS/RHEL konfiguriert haben, sollten diese Zeilen wie unten aussehen. Die Milterordnung ist wichtig.
# Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:127.0.0.1:8891,inet:127.0.0.1:8893,unix:/run/spamass-milter/spamass-milter.sock non_smtpd_milters = $smtpd_milters
Wenn Sie OpenDMARC nicht konfiguriert haben, sollten Sie local:opendmarc/opendmarc.sock,
entfernen von smtpd_milters
.
Speichern und schließen Sie die Datei. Öffnen Sie nun die /etc/sysconfig/spamass-milter
Datei und suchen Sie die folgende Zeile.
#EXTRA_FLAGS="-m -r 15"
Entkommentieren Sie diese Zeile und ändern Sie 15 in Ihre bevorzugte Ablehnungsbewertung, z. B. 8.
EXTRA_FLAGS="-m -r 8"
Wenn die Punktzahl einer bestimmten E-Mail über 8 liegt, würde Spamassassin sie ablehnen und Sie würden eine Nachricht wie unten in /var/log/maillog
finden Datei, die anzeigt, dass sie abgelehnt wurde.
milter-reject: END-OF-MESSAGE 5.7.1 Blocked by SpamAssassin
Wenn Sie möchten, dass der Absender einen anderen Ablehnungstext sieht, fügen Sie das -R
hinzu (Text ablehnen) Option wie unten.
EXTRA_FLAGS="-m -r 8 -R SPAM_ARE_NOT_ALLOWED_HERE"
Es empfiehlt sich, E-Mails zu ignorieren, die von localhost stammen, indem Sie den -i 127.0.0.1
hinzufügen Option.
EXTRA_FLAGS="-m -r 8 -R SPAM_ARE_NOT_ALLOWED_HERE -i 127.0.0.1"
Wir müssen auch den -g sa-milt
hinzufügen Option, um den spamass-milter-Socket für die sa-milt-Gruppe beschreibbar zu machen.
EXTRA_FLAGS="-m -r 8 -R SPAM_ARE_NOT_ALLOWED_HERE -i 127.0.0.1 -g sa-milt"
Speichern und schließen Sie die Datei. Fügen Sie dann postfix
hinzu Benutzer zum sa-milt
Gruppe, damit Postfix mit spamass-milter kommunizieren kann.
sudo gpasswd -a postfix sa-milt
Starten Sie Postfix und Spamass Milter neu, damit die Änderungen wirksam werden.
sudo systemctl restart postfix spamass-milter
Überprüfen Sie den Status und stellen Sie sicher, dass sie ausgeführt werden.
sudo systemctl status postfix spamass-milter
E-Mail-Header und -Text mit SpamAssassin prüfen
SpamAssassin wird mit vielen Spam-Erkennungsregeln in /usr/share/spamassassin/ ausgeliefert Verzeichnis. Erlauben Sie mir, einige der Regeln zu erklären.
In /usr/share/spamassassin/20_head_tests.cf Datei finden Sie die folgenden zwei Zeilen.
header MISSING_HEADERS eval:check_for_missing_to_header() describe MISSING_HEADERS Missing To: header
Die erste Zeile testet, ob An: Kopfzeile in einer E-Mail-Nachricht vorhanden ist. Die zweite Zeile, die optional ist, erklärt, was die erste Zeile tut. Die Großbuchstaben sind der Name dieses Tests.
Die folgenden 3 Zeilen dienen zum Testen, ob ein Datum: vorhanden ist Header in der E-Mail-Nachricht.
header __HAS_DATE exists:Date meta MISSING_DATE !__HAS_DATE describe MISSING_DATE Missing Date: header
Und diese 3 Zeilen dienen zum Testen, ob es ein From: gibt Header in der E-Mail-Nachricht.
header __HAS_FROM exists:From meta MISSING_FROM !__HAS_FROM describe MISSING_FROM Missing From: header
Benutzerdefinierte Punktzahl für vorhandene Regeln festlegen
In der 50_scores.cf
und 72_scores.cf
Datei können Sie die Standardergebnisse für verschiedene Tests sehen. Wenn Sie der Meinung sind, dass die Standardpunktzahl für einen bestimmten Test zu niedrig oder zu hoch ist, können Sie in /etc/mail/spamassassin/local.cf
eine benutzerdefinierte Punktzahl festlegen Datei.
sudo nano /etc/mail/spamassassin/local.cf
Beispielsweise verlangt RFC 5322, dass jede E-Mail-Nachricht From: enthalten muss und Datum: Header-Felder, sodass ich eine sehr hohe Punktzahl erzielen kann, wenn eines von ihnen in einer E-Mail-Nachricht fehlt, indem ich die folgenden zwei Zeilen in local.cf
anhänge Datei.
score MISSING_FROM 5.0 score MISSING_DATE 5.0
Obwohl das An: Das Header-Feld ist in RFC 5322 nicht obligatorisch. Ich ziehe es vor, einen Highscore festzulegen, wenn es in einer E-Mail-Nachricht fehlt, da ich noch nie eine legitime E-Mail gesehen habe, in der dieses Header-Feld fehlt.
score MISSING_HEADERS 3.0
Einige Spammer verwenden zwei E-Mail-Adressen im Von: Header-Feld wie unten.
From: "[email protected]" <[email protected]>
Ich denke, die Standardpunktzahl für diese Art von E-Mail ist niedrig, ich ziehe es vor, sie auf 3,0 festzulegen.
score PDS_FROM_2_EMAILS 3.0
Es gibt Spammer, die leere Nachrichten ohne Betreff und ohne Textteile im Hauptteil senden. Ich habe die Punktzahl für diese Art von E-Mail auf 5,0 gesetzt, sodass sie im Spam-Ordner abgelegt wird. Warum lesen, wenn es leer ist?
score EMPTY_MESSAGE 5.0
Und andere Spammer bitten Sie oft, eine Lesebestätigung zu senden. Ich setze die Punktzahl für diese Art von E-Mail auf 2,0.
score FREEMAIL_DISPTO 2.0
Es gibt einige Spammer, die unterschiedliche Domänennamen in Von: verwenden und Antwort an: Kopfzeile gebe ich ihnen eine 3,5-Punktzahl.
score FREEMAIL_FORGED_REPLYTO 3.5
Ich habe auch einige Spammer gesehen, die einen nicht existierenden Domänennamen in Von: verwendet haben Header-Feld. Ich habe eine Bewertung von 5,0 für diese Art von E-Mail festgelegt.
score DKIM_ADSP_NXDOMAIN 5.0
Nicht zuletzt fälschen viele Spammer gmail.com
Domäne in Von: Header-Feld. Ich habe diese Art von E-Mail mit 2,5 Punkten bewertet.
score FORGED_GMAIL_RCVD 2.5
Eigene Regeln hinzufügen
Sie können benutzerdefinierte SpamAssassin-Regeln in /etc/mail/spamassassin/local.cf hinzufügen Datei.
sudo nano /etc/mail/spamassassin/local.cf
Kopfzeilenregeln
Beispielsweise verwenden einige Spammer dieselbe E-Mail-Adresse in Von: und An: Header. Sie können die folgenden Zeilen am Ende der Datei hinzufügen, um solchen E-Mails Punkte hinzuzufügen.
header FROM_SAME_AS_TO ALL=~/\nFrom: ([^\n]+)\nTo: \1/sm describe FROM_SAME_AS_TO From address is the same as To address. score FROM_SAME_AS_TO 2.0
Einige Spammer verwenden eine leere Adresse für die Envelope From-Adresse (auch bekannt als Return Path-Header). Obwohl dies für das Versenden von Bounce-Nachrichten legitim ist, gebe ich dieser Art von E-Mail lieber eine Punktzahl.
header EMPTY_RETURN_PATH ALL =~ /<>/i describe EMPTY_RETURN_PATH empty address in the Return Path header. score EMPTY_RETURN_PATH 3.0
Wenn Sie OpenDMARC auf Ihrem Mailserver konfiguriert haben, können Sie jetzt die folgenden Zeilen hinzufügen, um E-Mails, die die DMARC-Prüfung nicht bestehen, Punkte hinzuzufügen.
header CUSTOM_DMARC_FAIL Authentication-Results =~ /dmarc=fail/ describe CUSTOM_DMARC_FAIL This email failed DMARC check score CUSTOM_DMARC_FAIL 3.0
Der obige Code weist SpamAssassin an, zu prüfen, ob die Authentication-Results Header enthält den String „dmarc=fail“. Falls gefunden, erhöhen Sie die Punktzahl um 3,0.
Grundsatzregeln
Sie können SpamAssassin anweisen, die Punktzahl einer E-Mail zu erhöhen, wenn eine bestimmte Phrase im Text gefunden wird. Beispielsweise verwenden viele Spammer die E-Mail-Adresse des Empfängers in der ersten Textzeile wie unten.
Hi [email protected] Hello [email protected] Dear [email protected]
Ich möchte nicht mit Leuten sprechen, die sich nicht die Mühe machen, meinen Namen in die erste Zeile einer E-Mail zu schreiben. Also habe ich in SpamAssassin eine Regel erstellt, um diese Art von E-Mails zu filtern.
body BE_POLITE /(hi|hello|dear) xiao\@linuxbabe\.com/i describe BE_POLITE This email doesn't use a proper name for the recipient score BE_POLITE 5.0
Bei regulären Ausdrücken in SpamAssassin wird standardmäßig zwischen Groß- und Kleinschreibung unterschieden, Sie können das i
hinzufügen Option am Ende, um die Groß-/Kleinschreibung zu ignorieren.
Negative Bewertungen hinzufügen
Sie können guten E-Mails auch eine negative Punktzahl hinzufügen, damit es weniger Fehlalarme gibt. Zum Beispiel stellen mir viele meiner Blog-Leser Linux-Fragen und ich glaube nicht, dass Spammer Wörter wie Debian
einfügen würden , Ubuntu
, Linux Mint
im E-Mail-Text, also habe ich die folgende Regel erstellt.
body GOOD_EMAIL /(debian|ubuntu|linux mint|centos|red hat|RHEL|OpenSUSE|Fedora|Arch Linux|Raspberry Pi|Kali Linux)/i describe GOOD_EMAIL I don't think spammer would include these words in the email body. score GOOD_EMAIL -4.0
Wenn der E-Mail-Text den Namen einer Linux-Distribution enthält, fügen Sie eine negative Punktzahl hinzu (-4,0).
Es gibt einige gängige Ausdrücke, die in legitimen Bounce-Nachrichten enthalten sind, sodass ich diesen E-Mail-Nachrichten Negativbewertungen hinzufügen kann.
body BOUNCE_MSG /(Undelivered Mail Returned to Sender|Undeliverable|Auto-Reply|Automatic reply)/i describe BOUNCE_MSG Undelivered mail notifications or auto-reply messages score BOUNCE_MSG -1.5
Beachten Sie, dass die Textregeln auch den Betreff als erste Zeile des Textinhalts enthalten.
Meta-Regeln
Neben Header- und Body-Regeln gibt es auch Meta-Regeln. Metaregeln sind Kombinationen anderer Regeln. Sie können eine Metaregel erstellen, die ausgelöst wird, wenn zwei oder mehr andere Regeln zutreffen. Ich bekomme zum Beispiel gelegentlich E-Mails, in denen steht, dass sich der Absender auf eine Stelle bewerben möchte und ein Lebenslauf angehängt ist. Ich habe auf meiner Website nie gesagt, dass ich Leute einstellen muss. Der Anhang wird verwendet, um Viren zu verbreiten. Ich habe die folgende Metaregel erstellt, um diese Art von E-Mails zu filtern.
body __RESUME /(C.V|Resume)/i meta RESUME_VIRUS (__RESUME && __MIME_BASE64) describe RESUME_VIRUS The attachment contains virus. score RESUME_VIRUS 5.5
Die erste Unterregel __RESUME
testet, ob der E-Mail-Text das Wort C.V.
enthält oder resume
. Die zweite Unterregel __MIME_BASE64
ist bereits in /usr/share/spamassassin/20_body_tests.cf
definiert Datei wie folgt, sodass ich sie nicht erneut in der Datei local.cf definieren muss. Diese Regel testet, ob die E-Mail-Nachricht einen base64-Anhang enthält.
rawbody __MIME_BASE64 eval:check_for_mime('mime_base64_count') describe __MIME_BASE64 Includes a base64 attachment
Meine Metaregel RESUME_VIRUS
wird ausgelöst, wenn beide Unterregeln wahr sind, und fügt der E-Mail-Nachricht eine Punktzahl von 5,5 hinzu. Beachten Sie, dass die Unterregel oft mit einem doppelten Unterstrich beginnt, also keine eigene Wertung hat.
Jetzt haben Sie gelernt, wie Sie Punkte hinzufügen, wenn eine Zeichenfolge gefunden wird. Was ist, wenn Sie eine Punktzahl hinzufügen möchten, wenn eine Zeichenfolge nicht in den E-Mail-Headern vorhanden ist? Nun, Sie können den !
verwenden Operator. Zum Beispiel habe ich Spammer gesehen, die ein einzelnes Wort in der Von:-Adresse verwendet haben. Ich habe die folgenden Zeilen hinzugefügt, um diese Art von E-Mail zu bewerten.
header __AT_IN_FROM From =~ /\@/ meta NO_AT_IN_FROM !__AT_IN_FROM score NO_AT_IN_FROM 4.0
Die erste Zeile prüft, ob der @
-Zeichen im From:-Header vorhanden ist. Die zweite Zeile definiert eine Metaregel, die ausgelöst wird, wenn !__AT_IN_FROM
ist wahr. !__AT_IN_FROM
Regel ist das Gegenteil der ersten Header-Regel, was bedeutet, dass es kein @
gibt Melden Sie sich mit der Von:Adresse an, die Metaregel wird ausgelöst.
Sie können auch die folgenden Zeilen hinzufügen, um zu prüfen, ob ein Punkt in der From:-Adresse vorhanden ist.
header __DOT_IN_FROM From =~ /\./ meta NO_DOT_IN_FROM !__DOT_IN_FROM score NO_DOT_IN_FROM 4.0
Weiße Liste
Sie können die whitelist_from
verwenden -Parameter, um eine bestimmte E-Mail-Adresse oder Domäne zu Ihrer Spamassassin-Whitelist hinzuzufügen. Fügen Sie beispielsweise die folgenden zwei Zeilen am Ende von local.cf
hinzu Datei.
whitelist_from [email protected] whitelist_from *@canonical.com
Ein Absender auf der weißen Liste hat einen -100
Standardpunktzahl. Sie werden immer noch nach den SpamAssassin-Regeln getestet, aber es ist sehr schwer für sie, eine Punktzahl von 5,0 zu erreichen.
Schwarze Liste
Um einen Absender auf die schwarze Liste zu setzen, verwenden Sie blacklist_from
-Parameter, der das gleiche Format wie whitelist_from
hat .
blacklist_from [email protected] blacklist_from *@example.org
Überprüfung der Syntax und Neustart
Nach dem Speichern der local.cf
Datei. Sie sollten spamassassin
ausführen Befehl im Lint-Modus, um zu prüfen, ob Syntaxfehler vorliegen.
sudo spamassassin --lint
Starten Sie dann SpamAssassin neu, damit die Änderungen wirksam werden.
sudo systemctl restart spamassassin
Die eingebaute Whitelist von SpamAssassin
Es ist erwähnenswert, dass SpamAssassin mit einer eigenen Whitelist ausgeliefert wird. Es gibt mehrere Dateien unter /usr/share/spamassassin/
Verzeichnis, das 60_whitelist
enthält im Dateinamen. Diese Dateien enthalten die eingebaute Whitelist von SpamAssassin. Zum Beispiel die 60_whitelist_spf.cf
Datei enthält eine Liste von Adressen, die E-Mails versenden, die oft (fälschlicherweise) als Spam gekennzeichnet sind.
Spam in den Junk-Ordner verschieben
Ich werde Ihnen zeigen, wie Sie Spam mit dem Dovecot-IMAP-Server und dem Sieve-Plugin in den Junk-Ordner verschieben. Diese Methode erfordert, dass eingehende E-Mails über den „Delivery“-LDA (Local Delivery Agent) von Dovecot an den Nachrichtenspeicher übermittelt werden. Wenn Sie den folgenden Text in /var/log/maillog
finden können Datei, dann ist diese Anforderung erfüllt.
postfix/lmtp
oder
delivered via dovecot service
Führen Sie den folgenden Befehl aus install dovecot-pigeonhole Paket aus dem CentOS/RHEL-Software-Repository.
sudo dnf install dovecot-pigeonhole
Dieses Paket installiert zwei Konfigurationsdateien unter /etc/dovecot/conf.d/
Verzeichnis:90-sieve.conf
und 90-sieve-extprograms.conf
. Öffnen Sie die 15-lda.conf
Datei.
sudo nano /etc/dovecot/conf.d/15-lda.conf
Fügen Sie das Sieve-Plugin zum Local Delivery Agent (LDA) hinzu.
protocol lda { # Space separated list of plugins to load (default is global mail_plugins). mail_plugins = $mail_plugins sieve }
Speichern und schließen Sie die Datei. Wenn Sie die 20-lmtp.conf
finden können Datei unter /etc/dovecot/conf.d/
Verzeichnis, dann sollten Sie auch das Sieve-Plugin in dieser Datei wie unten aktivieren.
protocol lmtp { mail_plugins = quota sieve }
Öffnen Sie dann die 90-sieve.conf
Datei.
sudo nano /etc/dovecot/conf.d/90-sieve.conf
Gehen Sie zu Zeile 79 und fügen Sie die folgende Zeile hinzu, die Sieve anweist, immer SpamToJunk.sieve auszuführen Skript vor allen benutzerspezifischen Skripten.
sieve_before = /var/mail/SpamToJunk.sieve
Speichern und schließen Sie die Datei. Erstellen Sie dann das Sieve-Skript.
sudo nano /var/mail/SpamToJunk.sieve
Fügen Sie die folgenden Zeilen hinzu, die Dovecot anweisen, alle E-Mail-Nachrichten mit dem X-Spam-Flag: YES
zu verschieben Kopfzeile in den Junk-Ordner.
require "fileinto"; if header :contains "X-Spam-Flag" "YES" { fileinto "Junk"; stop; }
Speichern und schließen Sie die Datei. Wir können dieses Skript kompilieren, damit es schneller läuft.
sudo sievec /var/mail/SpamToJunk.sieve
Jetzt gibt es eine Binärdatei, die als /var/mail/SpamToJunk.svbin gespeichert ist . Bearbeiten Sie die Datei 10-mail.conf.
/etc/dovecot/conf.d/10-mail.conf
Fügen Sie die folgende Zeile in der Datei hinzu, damit die Sieb-Skripte einzelner Benutzer in ihrem Home-Verzeichnis gespeichert werden können.
mail_home = /var/vmail/%d/%n
Starten Sie abschließend dovecot neu, damit die Änderungen wirksam werden.
sudo systemctl restart dovecot
Maximale Nachrichtengröße festlegen
Standardmäßig prüft SpamAssassin keine Nachrichten mit Anhängen, die größer als 500 KB sind, wie die folgende Zeile in /var/log/mail.log
zeigt Datei.
spamc[18922]: skipped message, greater than max message size (512000 bytes)
Die Standard-max-size
ist auf 512000 (Bytes) eingestellt. Ein hoher Wert könnte die Serverlast erhöhen, aber ich denke, die Standardgröße ist ein bisschen klein. Um die maximale Größe zu erhöhen, bearbeiten Sie /etc/sysconfig/spamass-milter
Datei und suchen Sie die folgende Zeile.
EXTRA_FLAGS="-m -r 8 -R SPAM_ARE_NOT_ALLOWED_HERE -i 127.0.0.1 -g sa-milt"
Fügen Sie -- --max-size=5120000
hinzu Option am Ende.
EXTRA_FLAGS="-m -r 8 -R SPAM_ARE_NOT_ALLOWED_HERE -i 127.0.0.1 -g sa-milt -- --max-size=5120000"
Der leere --
Option teilt spamass-milter mit um alle verbleibenden Optionen an spamc weiterzugeben , das den --max-size
versteht Möglichkeit. Ich habe die Größe auf 5000 KB erhöht. Speichern und schließen Sie die Datei. Starten Sie dann spamass-milter neu.
sudo systemctl restart spamass-milter
So konfigurieren Sie individuelle Benutzereinstellungen
Möglicherweise möchten Sie benutzerdefinierte Regeln für E-Mails festlegen, die an eine bestimmte Adresse auf dem Mailserver gesendet werden. Ich mag diese Funktion sehr. Ich habe eine Kontakt-E-Mail-Adresse für diesen Blog, die nur dazu verwendet wird, mit den Lesern in Kontakt zu bleiben. Ich verwende die Kontakt-E-Mail-Adresse nicht anderweitig , damit ich spezielle Spam-Filterregeln erstellen kann, die nur für diese Kontakt-E-Mail-Adresse gelten.
Bearbeiten Sie zunächst die Hauptkonfigurationsdatei von SpamAssassin.
sudo nano /etc/mail/spamassassin/local.cf
Fügen Sie die folgende Zeile hinzu, um Benutzerregeln zuzulassen.
allow_user_rules 1
Speichern und schließen Sie die Datei. Als nächstes bearbeiten Sie die Umgebungsdatei von SpamAssassin.
sudo nano /etc/sysconfig/spamassassin
Suchen Sie die folgende Zeile.
SPAMDOPTIONS="-c -m5 -H --razor-home-dir='/var/lib/razor/' --razor-log-file='sys-syslog'"
Wir müssen mehrere zusätzliche Optionen hinzufügen.
SPAMDOPTIONS="-c -m5 -H --razor-home-dir='/var/lib/razor/' --razor-log-file='sys-syslog' --nouser-config --virtual-config-dir=/var/vmail/%d/%l/spamassassin --username=vmail"
Wo:
--nouser-config
:Konfigurationsdatei pro Benutzer für lokale Unix-Benutzer deaktivieren.--virtual-config-dir
:Geben Sie das benutzerspezifische Konfigurationsverzeichnis für virtuelle Benutzer an. Der%d
Der Platzhalter repräsentiert den Domänenteil der E-Mail-Adresse und%l
stellt den lokalen Teil der E-Mail-Adresse dar.--username
:spamd als vmail-Benutzer ausführen.
Speichern und schließen Sie die Datei. Starten Sie dann SpamAssassin neu.
sudo systemctl restart spamassassin
Standardmäßig gibt spamass-milter die Empfängeradresse nicht an SpamAssassin weiter. Wir müssen dafür sorgen, dass die vollständige E-Mail-Adresse an SpamAssassin gesendet wird. Bearbeiten Sie die spamass-milter Konfigurationsdatei.
sudo nano /etc/sysconfig/spamass-milter
Fügen Sie die folgende Option hinzu.
-e yourdomain.com -u sa-milt
So:
EXTRA_FLAGS="-e yourdomain.com -u sa-milt -m -r 8 -R SPAM_ARE_NOT_ALLOWED_HERE -i 127.0.0.1 -g sa-milt -- --max-size=5120000"
Das -e
Option bewirkt, dass spamass-milter die vollständige E-Mail-Adresse an SpamAssassin weitergibt. Ersetzen Sie yourdomain.com durch Ihren echten Domainnamen. Speichern und schließen Sie die Datei. Starten Sie dann spamass-milter neu.
sudo systemctl restart spamass-milter
Senden Sie jetzt eine E-Mail von Gmail, Hotmail usw. an Ihre Domain-E-Mail-Adresse. Das spamassassin-Verzeichnis wird automatisch unter /var/vmail/yourdomain.com/username/
erstellt Verzeichnis.
cd /var/vmail/yourdomain.com/username/spamassassin/
Sie können hier einen Befehlszeilen-Texteditor verwenden, um die Einstellungsdatei pro Benutzer zu erstellen. Diese Datei muss als user_prefs
benannt werden .
sudo nano user_prefs
Sie können dieser Datei benutzerdefinierte Regeln hinzufügen, genau wie Sie es in /etc/spamassassin/local.cf
tun würden Datei.
Ich habe zum Beispiel festgestellt, dass viele Spammer ihren E-Mail-Text mit einem Link zum Abbestellen beenden, damit Sie zukünftige Kontakte entfernen können. Ich habe ihren Spam nicht abonniert und ich glaube nicht, dass der Link zum Abbestellen meine E-Mail-Adresse aus ihrer Kontaktdatenbank entfernt. Also verwende ich SpamAssassin, um diese Art von E-Mail zu bewerten. Die folgende Regel fügt 3,0 Punkte zu E-Mails hinzu, die das Wort „unsubscribe“ oder seine Variationen im Text enthalten. (Ich verwende die Kontakt-E-Mail-Adresse dieses Blogs nicht, um irgendetwas online zu abonnieren.)
body SUBSCRIPTION_SPAM /(unsubscribe|u n s u b s c r i b e|Un-subscribe)/i describe SUBSCRIPTION_SPAM I didn't subscribe to your spam. score SUBSCRIPTION_SPAM 3.0
Manchmal enthält der E-Mail-Text nicht das Wort „unsubscribe“, aber es gibt einen List-Unsubscribe
Header, was bedeutet, dass der Spammer meine Kontakt-E-Mail-Adresse ohne meine Zustimmung zu seiner Mailingliste hinzugefügt hat. Ich kann diese Art von E-Mail auch mit der folgenden Regel bewerten.
header LIST_UNSUBSCRIBE ALL =~ /List-Unsubscribe/i describe LIST_UNSUBSCRIBE I didn't join your mailing list. score LIST_UNSUBSCRIBE 2.0
Ich habe ein Mailjet-Konto mit einer anderen E-Mail-Adresse erstellt. Einige Spammer gehen davon aus, dass ich meine Kontakt-E-Mail-Adresse verwendet habe, um ein Mailjet-Konto zu erstellen, und versuchen daher, sich als Mailjet-Kundendienst auszugeben, um mich dazu zu verleiten, mein Passwort auf einer gefälschten Mailjet-Anmeldeseite einzugeben. Ich kann diese Art von E-Mail wie unten bewerten.
header MAILJET_IMPOSTER From =~ /mailjet/i describe MAILJET_IMPOSTER I don't have a mailjet account for this email address. score MAILJET_IMPOSTER 2.5
Die obigen Zeilen prüfen, ob der From:
Header enthält das Wort mailjet
. Wenn es gefunden wird, geben Sie ihm eine Punktzahl von 2,5.
Gelegentlich erhalte ich E-Mails von chinesischen Spammern, deren From:
Domainname hat keine Vokalbuchstaben (a, e, i, o, u). Der Spammer hat den cdjcbzclyxgs.xyz
verwendet Domänenname. Es ist für eine normale Person/Organisation fast unmöglich, Domainnamen ohne Vokalbuchstaben zu verwenden, wenn man bedenkt, dass viele Top-Level-Domains bereits Vokalbuchstaben enthalten (.com, .net, .org, .co, .io, .shop, .dev , usw.), also gebe ich dieser Art von E-Mail eine sehr hohe Punktzahl wie unten. Die Standardpunktzahl ist 0,5.
score FROM_DOMAIN_NOVOWEL 4.0
Einige Spam-E-Mails verwenden viele Bilder im Textkörper, enthalten aber nur sehr wenig Text. Die Standardpunktzahl für diese Art von E-Mail ist 1,9, aber ich ziehe es vor, eine hohe Punktzahl für meine Kontakt-E-Mail-Adresse festzulegen.
score HTML_IMAGE_RATIO_02 4.0
Ich habe auch eine Spam-E-Mail mit meiner E-Mail-Adresse im Betreff erhalten, damit ich ihr einen Highscore hinzufügen kann.
header SUBJECT_SPAM Subject =~ /xiao\@linuxbabe.com/i describe SUBJECT_SPAM Subject contains my email address. score SUBJECT_SPAM 4.0
Einige Spammer verwenden BCC (Blind Carbon Copy), um andere Empfänger zu verbergen. Ich möchte solche E-Mails nicht erhalten. Also habe ich folgende Regel aufgestellt. Wenn mein Domainname nicht im To:-Header enthalten ist, fügen Sie der E-Mail 3.0 hinzu.
header __DOMAIN_IN_TO To =~ /linuxbabe.com/ meta DOMAIN_NOT_IN_TO !__DOMAIN_IN_TO score DOMAIN_NOT_IN_TO 3.0
Nachdem Sie benutzerdefinierte Regeln hinzugefügt haben, schließen Sie die Datei und führen Sie den folgenden Befehl aus, um die Syntax zu überprüfen. Stille Ausgabe bedeutet, dass kein Syntaxfehler vorliegt.
sudo spamassassin --lint
Starten Sie SpamAssassin abschließend neu, damit die Änderungen wirksam werden.
sudo systemctl restart spamassassin
Jetzt können Sie die Benutzereinstellungen testen, indem Sie Test-E-Mails von anderen E-Mail-Diensten an Ihre eigene Domänen-E-Mail-Adresse senden.
Ablehnen oder Zurückweisen
Wenn ein empfangender SMTP-Server während der SMTP-Konversation feststellt, dass er die Nachricht nicht akzeptiert, lehnt er die Nachricht ab. Manchmal akzeptiert der SMTP-Server eine Nachricht und stellt später fest, dass sie nicht zugestellt werden kann, vielleicht existiert der beabsichtigte Empfänger nicht oder es gibt ein Problem bei der endgültigen Zustellung. In diesem Fall leitet der SMTP-Server, der die Nachricht akzeptiert hat, sie an den ursprünglichen Absender zurück, indem er einen Fehlerbericht sendet, der normalerweise den Grund enthält, warum die ursprüngliche Nachricht nicht zugestellt werden konnte.
Sie sollten Spam nicht zurückweisen, da die E-Mail-Adresse im Return-path:
Header oder From:
Der Header existiert wahrscheinlich nicht oder ist die E-Mail-Adresse einer unschuldigen Person, sodass die Bounce-Nachricht wahrscheinlich an die E-Mail-Adresse einer unschuldigen Person gesendet wird, wodurch das Backscatter-Problem entsteht. Anstatt Spam abzulehnen, sollten Sie Spam während des SMTP-Dialogs ablehnen, bevor die E-Mail akzeptiert wird. Dieser Artikel hat nicht gezeigt, dass Sie eine Spam-Nachricht zurücksenden. Sie sollten sich diese Regel merken, falls Sie selbst Spam-Filter-Regeln erstellen. Testen Sie im Zweifelsfall Ihre Spam-Filterregeln, um zu sehen, ob sie unzustellbare Nachrichten erstellen.
URIBL_BLOCKED
Standardmäßig aktiviert SpamAssassin die URIBL-Regel, die überprüft, ob eine E-Mail-Nachricht Links enthält, die von URIBL als Spam identifiziert werden. Dies ist eine sehr effektive Anti-Spam-Maßnahme. Möglicherweise werden Sie jedoch daran gehindert, URIBL abzufragen. Überprüfen Sie die Roh-E-Mail-Header einer eingehenden E-Mail-Nachricht, finden Sie den X-Spam-Status
Kopfzeile.
X-Spam-Status: No, score=-92.2 required=5.0 tests=DATING_SPAM,DKIM_SIGNED, DKIM_VALID,HTML_FONT_LOW_CONTRAST,HTML_MESSAGE,SPF_PASS, SUBSCRIPTION_SPAM,UNPARSEABLE_RELAY,URIBL_BLOCKED,USER_IN_WHITELIST autolearn=no autolearn_force=no version=3.4.2
Wenn Sie in diesem Header URIBL_BLOCKED finden, bedeutet dies, dass Sie daran gehindert sind, URIBL abzufragen. Meistens liegt es daran, dass Sie keinen eigenen lokalen DNS-Resolver verwenden. Sie können den folgenden Befehl auf Ihrem Mailserver ausführen, um zu testen, welchen DNS-Server Sie zum Abfragen von URIBL verwenden.
host -tTXT 2.0.0.127.multi.uribl.com
Beispielausgabe:
2.0.0.127.multi.uribl.com descriptive text "127.0.0.1 -> Query Refused. See http://uribl.com/refused.shtml for more information [Your DNS IP: xx.xx.xx.xx]"
Um diesen Fehler zu beheben, müssen Sie Ihren eigenen lokalen DNS-Resolver auf Ihrem Mailserver ausführen.
- Führen Sie Ihren eigenen BIND-DNS-Resolver auf CentOS/RHEL aus
Sobald Ihr lokaler DNS-Resolver betriebsbereit ist, testen Sie URIBL erneut.
host -tTXT 2.0.0.127.multi.uribl.com
Wenn Sie die folgende Ausgabe sehen, bedeutet dies, dass Sie jetzt URIBL abfragen dürfen.
2.0.0.127.multi.uribl.com descriptive text "permanent testpoint"
Ab jetzt haben eingehende E-Mail-Nachrichten nicht mehr das URIBL_BLOCKED-Tag im X-Spam-Status
Kopfzeile.
Andere Leckerbissen
SpamAssassin 4.0 enthält ein HashBL-Plugin, das überprüfen kann, ob eine Bitcoin-Adresse im E-Mail-Text von Betrügern verwendet wurde. Und es gibt auch ein neues Plugin namens „Ole Macro“, das überprüfen kann, ob eine E-Mail einen Office-Anhang mit einem Makro enthält. Dieses Plugin würde versuchen zu erkennen, ob das angehängte Makro bösartig ist oder nicht.