GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Richten Sie SpamAssassin auf CentOS/RHEL ein, um E-Mail-Spam zu blockieren

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.


Cent OS
  1. So legen Sie den Hostnamen in CentOS 7 / RHEL 7 fest oder ändern ihn

  2. So legen Sie children-max für den udev-Dienst in CentOS/RHEL 7 fest

  3. So legen Sie die ethtool-Einstellungen in CentOS/RHEL 6 dauerhaft fest

  4. Kennwort für den Einzelbenutzermodus unter Linux (CentOS/RHEL) festlegen

  5. CentOS / RHEL 7:So legen Sie das Standardziel fest (Standard-Runlevel)

Samba-Server auf CentOS 8/RHEL 8 für die Dateifreigabe einrichten

Richten Sie SpamAssassin auf CentOS/RHEL ein, um E-Mail-Spam zu blockieren

Richten Sie OpenDMARC mit Postfix auf CentOS/RHEL ein, um E-Mail-Spoofing zu blockieren

7 effektive Tipps zum Blockieren von E-Mail-Spam mit Postfix auf CentOS/RHEL

So richten Sie ein IPsec-basiertes VPN mit Strongswan unter CentOS/RHEL 8 ein

So richten Sie SSH unter CentOS und RHEL ein