Spamfreie E-Mail mit SpamAssassin
Wenn Sie Ihr eigenes Postfach auf einem Server mit Postfix und Dovecot betreiben, ist es zwingend erforderlich, eine Anti-Spam-Software zu installieren, um Ihr Postfach vor einer Bombardierung mit eingehenden Spam-Mails zu schützen.
Und dafür ist SpamAssassin eine der besten verfügbaren Lösungen. Es ist sehr effektiv und eines der beliebtesten.
In diesem Beitrag werden wir sehen, wie man Spamassassin mit Postfix und Dovecot zum Schutz vor Spam einrichtet.
Wir gehen davon aus, dass Sie bereits Postfix und Dovecot auf Ihrem Server zur Bearbeitung eingehender Mails eingerichtet haben.
Und dass Sie Dovecot LMTP zum Zustellen von Mails für Benutzerkonten verwenden. Der Prozess wurde in einem früheren Beitrag hier beschrieben -
Richten Sie einen Mailserver mit Postfix und Dovecot auf Ubuntu / Debian einSpamassassin scannt eingehende E-Mails, um Spam zu identifizieren, und wenn sich herausstellt, dass eine E-Mail möglicherweise eine Spam-Mail ist, fügt Spamassassin dieser E-Mail Header hinzu, um sie als Spam zu kennzeichnen.
Die Spam-Überprüfung erfolgt auf Postfix-Ebene. Postfix ist so konfiguriert, dass es als content_filter mit Spamassassin kommuniziert.
Im nächsten Schritt analysiert Dovecot diese Header, um Spam-Nachrichten zu identifizieren, und legt sie wie Gmail in einem separaten Spam-Ordner ab.
1. Installieren Sie Spamassassin
Als erstes müssten Spamassassin-Pakete installiert werden.
$ apt-get install spamassassin spamc
2. Richten Sie ein Benutzerkonto und eine Gruppe für den spamd-Dienst ein
# groupadd spamd # useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd # mkdir /var/log/spamassassin # chown spamd:spamd /var/log/spamassassin
3. Konfigurieren Sie Spamassassin
Bearbeiten Sie /etc/default/spamassassin so, dass diese Optionen gesetzt sind:
# Change to one to enable spamd ENABLED=1 SAHOME="/var/log/spamassassin/" # Options # See man spamd for possible options. The -d option is automatically added. # SpamAssassin uses a preforking model, so be careful! You need to # make sure --max-children is not set to anything higher than 5, # unless you know what you're doing. OPTIONS="--create-prefs --max-children 5 --helper-home-dir --username spamd \ -H ${SAHOME} -s ${SAHOME}spamd.log"
Suchen Sie auch die Option namens CRON unten und ändern Sie sie auf 1. Dies aktiviert die automatische Aktualisierung von Spamassassin-Regeln, sobald sie veröffentlicht werden.
# Cronjob # Set to anything but 0 to enable the cron job to automatically update # spamassassin's rules on a nightly basis CRON=1
4. Starten Sie den Spamassassin-Daemon (spamd)
# service spamassassin start Starting SpamAssassin Mail Filter Daemon: spamd. [email protected]:/etc/default# [email protected]:/etc/default# service spamassassin status * spamd is running [email protected]:/etc/default#
Spamassassin startet einen Hintergrunddienst, verwenden Sie also den netstat-Befehl, um sicherzustellen, dass spamassassin gut läuft oder nicht.
# netstat -nlp4 | grep spam tcp 0 0 127.0.0.1:783 0.0.0.0:* LISTEN 1123/spamd.pid
4. Konfigurieren Sie Postfix so, dass Spamassassin als Filter verwendet wird
Postfix muss so konfiguriert werden, dass es den Spamassassin-Dienst verwendet, um alle eingehenden Mails zu filtern
Die Postfix-Konfigurationsdatei master.cf muss bearbeitet werden, um den Spamassassin-Filter hinzuzufügen. Öffnen Sie die Datei.
# cat /etc/postfix/master.cf
Fügen Sie am Ende der Datei Folgendes hinzu
spamassassin unix - n n - - pipe user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Nachdem Sie die obigen Zeilen zu master.cf hinzugefügt haben, besteht die nächste Aufgabe darin, Postfix neu zu starten und sicherzustellen, dass es einwandfrei funktioniert.
$ service postfix restart
5. Konfigurieren Sie Spamassassin zum Markieren von Spam-Nachrichten
Nachdem Sie Postfix für die Verwendung von Spamassassin konfiguriert haben, ist es an der Zeit, Spamassassin so zu konfigurieren, dass E-Mails gemäß Spam-Prüfungen geändert werden. Die Konfigurationsdatei ist - /etc/spamassassin/local.cf
$ nano /etc/spamassassin/local.cf
Kommentieren Sie die Zeile rewrite_header aus, um die Betreffzeilen von E-Mails zu ändern, die als Spam identifiziert wurden.
# Add *****SPAM***** to the Subject header of spam e-mails # # rewrite_header Subject *****SPAM***** rewrite_header Subject [***** SPAM _SCORE_ *****]
Die obige Zeile würde den Spam-Score mit den Sternchen hinzufügen, um anzuzeigen, dass die Nachricht wie Spam aussieht. Höhere Werte weisen auf eine höhere Wahrscheinlichkeit hin, dass es sich bei der Nachricht um Spam handelt.
Spam-Score
Die erforderliche Mindestpunktzahl, um die Nachricht als Spam zu markieren. Der Standardwert ist 5,0, aber heutzutage benötigen Sie möglicherweise eine strengere Bewertungsstufe. 4.0 funktioniert also gut.
# Set the threshold at which a message is considered spam (default: 5.0) # required_score 4.0
Überprüfen Sie die anderen Optionen in der Datei und bearbeiten Sie sie nach Bedarf.
Spamassassin neu starten - Nachdem Sie alle Parameter in der Datei konfiguriert haben, speichern Sie die Datei und starten Sie spamassassin neu.
# service spamassassin restart Restarting SpamAssassin Mail Filter Daemon: spamd.
6. Überprüfen Sie das Spamassassin-Protokoll
Wenn Sie zu irgendeinem Zeitpunkt etwas debuggen oder sehen müssen, was im Hintergrund von spamassassin vor sich geht, sehen Sie sich die Look-Datei an.
# tail -f /var/log/spamassassin/spamd.log Fri Feb 5 20:11:43 2016 [1123] info: prefork: child states: II Fri Feb 5 20:23:02 2016 [1123] info: spamd: server killed by SIGTERM, shutting down Fri Feb 5 20:23:02 2016 [1404] info: logger: removing stderr method Fri Feb 5 20:23:03 2016 [1406] info: zoom: able to use 360/360 'body_0' compiled rules (100%) Fri Feb 5 20:23:03 2016 [1406] info: spamd: server started on IO::Socket::INET6 [127.0.0.1]:783, IO::Socket::INET6 [::1]:783 (running version 3.4.0) Fri Feb 5 20:23:03 2016 [1406] info: spamd: server pid: 1406 Fri Feb 5 20:23:03 2016 [1406] info: spamd: server successfully spawned child process, pid 1407 Fri Feb 5 20:23:03 2016 [1406] info: spamd: server successfully spawned child process, pid 1408 Fri Feb 5 20:23:03 2016 [1406] info: prefork: child states: IS Fri Feb 5 20:23:03 2016 [1406] info: prefork: child states: II
7. Testen Sie eine Spam-Mail
Senden Sie von extern eine E-Mail an Ihr Mailsystem. Fügen Sie den folgenden Textabschnitt in den Textkörper der E-Mail ein
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
Es heißt GTUBE - Generic Test for Unsolicited Bulk Email. Es ist eine einfache Möglichkeit zu testen, ob Ihr Mailserver Spamassassin zum Filtern von Mails verwendet oder nicht.
Erfahren Sie hier mehr darüber -
http://spamassassin.apache.org/gtube/
SpamAssassin fügt Header zu allen E-Mails mit Spam-Scores> 0 hinzu
E-Mail mit Spam-Punktzahl 12,9 Dies wird gemäß unserer Konfiguration mit einer Mindestpunktzahl von 3 als Spam angesehen
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on localhost X-Spam-Flag: YES X-Spam-Level: ************ X-Spam-Status: Yes, score=12.9 required=3.0 tests=FROM_LOCAL_NOVOWEL, HTML_FONT_LOW_CONTRAST,HTML_FONT_SIZE_LARGE,HTML_MESSAGE,HTML_OBFUSCATE_05_10, MIME_HTML_ONLY,MISSING_MID,RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_BRBL_LASTEXT, RCVD_IN_PBL,RCVD_IN_PSBL,RCVD_IN_XBL,RDNS_NONE autolearn=no autolearn_force=no version=3.4.0
Spam Score 1.7, Nicht als Spam betrachtet
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on localhost X-Spam-Level: * X-Spam-Status: No, score=1.7 required=3.0 tests=DEAR_SOMETHING,FREEMAIL_FROM, HTML_MESSAGE,RCVD_IN_MSPIKE_H2,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0
Diese Header werden verwendet, um E-Mails über Dovecot LMTP-Transport in einen separaten Spam-Ordner zu senden.
Dovecot mit separatem Spam-Ordner konfigurieren
Dovecot ist das E-Mail-Lese- und Verwaltungssystem, POP3- und IMAP-Server. Dovecot organisiert E-Mails je nach Kriterien in separaten Ordnern.
Dovecot kann so konfiguriert werden, dass es Mail-Header liest und Spam-Mails in einen separaten Ordner namens Spam verschiebt. Ähnlich wie bei kostenlosen E-Mail-Diensten wie Gmail und Outlook.
Installieren und konfigurieren Sie das Sieve-Plugin
Dovecot benötigt das Sieve-Interpreter-Plugin, um Sieve zum Lesen von Mails zu verwenden. Installieren Sie die Sieve-Pakete
# apt-get install dovecot-sieve dovecot-managesieved
Bearbeiten Sie
/etc/dovecot/conf.d/20-lmtp.conf
Dovecot konfigurieren, um das Sieve-Plugin zu aktivieren
protocol lmtp { # Space separated list of plugins to load (default is global mail_plugins). mail_plugins = $mail_plugins sieve }
Endlich ist es an der Zeit, dovecot neu zu starten
# service dovecot restart
Überprüfen Sie nun, ob der Sieve-Server auf Port 4190 läuft. Verwenden Sie den Befehl netstat. Der Dienst wird als Taubenschlag bezeichnet.
# netstat -nltp | grep 4190 tcp 0 0 0.0.0.0:4190 0.0.0.0:* LISTEN 9843/dovecot tcp6 0 0 :::4190 :::* LISTEN 9843/dovecot
Siebfilterung einrichten
Um mehr über Siebfilter zu erfahren, besuchen Sie die folgende Seite - http://wiki2.dovecot.org/Pigeonhole/Sieve/Examples
# mkdir /var/lib/dovecot/sieve/
Erstellen Sie eine Datei namens default.sieve und füllen Sie sie mit den folgenden Regelsätzen
require ["fileinto", "mailbox"]; if header :contains "X-Spam-Flag" "YES" { fileinto :create "Spam"; }
Kompilieren Sie nun die .sieve-Skriptdatei mit dem sievec-Befehl.
# sievec default.sieve
Wenn Sie mehrere .sieve-Dateien im Verzeichnis haben, können Sie alle auf einmal so kompilieren -
# sievec sieve/
Ändern Sie nun den Besitz der Sieb-Dateien auf den dovecot-spezifischen Benutzer, damit dovecot sie lesen kann. In diesem Fall lautet der Benutzername vmail.
/var/lib/dovecot# chown -R vmail:vmail sieve/*
Starten Sie Dovecot erneut.
# service dovecot restart
Dovecot-Protokolle prüfen
Dovecot-Protokolldateien sollen Ihnen dabei helfen, Probleme zu diagnostizieren, die auftreten könnten.
Finden Sie den Speicherort der Dovecot-Protokolldateien mit dem folgenden Befehl
# doveadm log find Debug: /var/log/dovecot.log Info: /var/log/dovecot.log Warning: /var/log/dovecot.log Error: /var/log/dovecot.log Fatal: /var/log/dovecot.log
Öffnen Sie dann die Datei mit dem tail-Befehl
# tail -f /var/log/dovecot.log
Feb 06 11:17:16 imap-login: Info: Login: user=<[email protected]>, method=PLAIN, rip=122.163.23.27, lip=173.255.230.5, mpid=10370, TLS, session=<RfgSgBMr1QB6oxcb> Feb 06 11:17:37 lmtp(10379): Info: Connect from local Feb 06 11:17:37 lmtp(10379, [email protected]): Error: uMMvHPmItVaLKAAA0J78UA: sieve: main script: failed to stat sieve script: stat(/var/lib/dovecot/sieve/default.sieve) failed: Permission denied (euid=5000(vmail) egid=5000(vmail) missing +x perm: /var/lib/dovecot, dir owned by 0:0 mode=0750) Feb 06 11:17:37 lmtp(10379, [email protected]): Error: uMMvHPmItVaLKAAA0J78UA: sieve: failed to access default user script /var/lib/dovecot/sieve/default.sieve Feb 06 11:17:37 lmtp(10379, [email protected]): Info: uMMvHPmItVaLKAAA0J78UA: msgid=<[email protected]>: saved mail to INBOX Feb 06 11:17:37 lmtp(10379): Info: Disconnect from local: Successful quit Feb 06 11:18:31 lmtp(10379): Info: Connect from local Feb 06 11:18:31 lmtp(10379, [email protected]): Error: vMMvHPmItVaLKAAA0J78UA: sieve: msgid=<[email protected]>: failed to store into mailbox 'Spam': Mailbox doesn't exist: Spam Feb 06 11:18:31 lmtp(10379, [email protected]): Info: vMMvHPmItVaLKAAA0J78UA: sieve: msgid=<[email protected]>: stored mail into mailbox 'INBOX' Feb 06 11:18:31 lmtp(10379, [email protected]): Error: vMMvHPmItVaLKAAA0J78UA: sieve: execution of script /var/lib/dovecot/sieve/default.sieve;name=main script failed, but implicit keep was successful Feb 06 11:18:31 lmtp(10379): Info: Disconnect from local: Successful quit Feb 06 11:26:27 lmtp(10479): Info: Connect from local Feb 06 11:26:27 lmtp(10479, [email protected]): Info: 3h4eBwuLtVbvKAAA0J78UA: sieve: msgid=<[email protected]>: stored mail into mailbox 'Spam' Feb 06 11:26:27 lmtp(10479): Info: Disconnect from local: Successful quit Feb 06 11:26:57 imap-login: Info: Login: user=<[email protected]>, method=PLAIN, rip=122.163.23.27, lip=173.255.230.5, mpid=10483, TLS, session=<OreuohMrXgB6oxcb> Feb 06 11:26:58 imap-login: Info: Login: user=<[email protected]>, method=PLAIN, rip=122.163.23.27, lip=173.255.230.5, mpid=10484, TLS, session=<xr6+ohMrXwB6oxcb> Feb 06 11:28:30 imap-login: Info: Login: user=<[email protected]>, method=PLAIN, rip=122.163.23.27, lip=173.255.230.5, mpid=10499, TLS, session=<n7Q2qBMrCwB6oxcb>
Ändern Sie die Berechtigungen des dovecot-Verzeichnisses
/var/lib/dovecot# chmod a+x .
Erhöhen Sie die Spamassassin-Spamfilterung mit Pyzor
Pyzor verhält sich genauso wie andere Regeln.
https://wiki.apache.org/spamassassin/Rules/PYZOR_CHECK
Gemäß der Testtabelle unter http://spamassassin.apache.org/tests_3_3_x.html
wird ein zusätzlicher Spam-Score von etwa 1,985 hinzugefügt# sudo apt-get install pyzor
Entdecken Sie die Pyzor-Server
# pyzor --homedir /etc/mail/spamassassin/pyzor discover
Machen Sie die Serverdatei für alle lesbar
/etc/spamassassin/pyzor# chmod a+r servers
Prüfung durchführen -
# echo "test" | spamassassin -D pyzor 2>&1 | less
Sie sollten eine Ausgabe wie diese sehen
Feb 9 16:24:58.824 [23979] dbg: pyzor: network tests on, attempting Pyzor Feb 9 16:24:59.787 [23979] dbg: pyzor: pyzor is available: /usr/bin/pyzor Feb 9 16:24:59.788 [23979] dbg: pyzor: opening pipe: /usr/bin/pyzor check < /tmp/.spamassassin23979z26KDDtmp Feb 9 16:24:59.841 [23979] dbg: pyzor: [23981] finished: exit 1 Feb 9 16:24:59.842 [23979] dbg: pyzor: check failed: no response
Fügen Sie die folgenden Zeilen am Ende von /etc/spamassassin/local.cf hinzu
pyzor_options --homedir /etc/mail/spamassassin/pyzor
Und spamassassin-Daemon neu starten
# service spamassassin restart
Installieren Sie Razor
sudo apt-get install razor
/etc/spamassassin# mkdir razor
Führen Sie nun die folgenden Befehle aus, um sich beim Razor Distributed Network zu registrieren.
# razor-admin -home=/etc/spamassassin/razor -register Register successful. Identity stored in /etc/mail/spamassassin/razor/identity-rudkVFCIxs # razor-admin -home=/etc/spamassassin/razor -create # razor-admin -home=/etc/spamassassin/razor -discover
Fügen Sie die folgende Zeile am Ende der Datei /etc/spamassassin/local.cf hinzu
razor_config /etc/spamassassin/razor/razor-agent.conf
Abschließend spamassassin neu starten
Überprüfen Sie, ob Razor mit diesem Befehl funktioniert
# echo "test" | spamassassin -D razor2 2>&1 | less
so etwas sollte angezeigt werden
Feb 9 17:11:34.701 [26028] dbg: razor2: razor2 is available, version 2.84 Razor-Log: read_file: 15 items read from /etc/mail/spamassassin/razor/razor-agent.conf
Benutzerdefinierte Punktzahlen für höhere Punktzahlen
Dies ist ein etwas fortgeschrittener Weg, um die Genauigkeit von spamassassin zu erhöhen, um Spam besser abzufangen. Es geht darum, die Punktzahl für bestimmte Spam-Tests innerhalb von spamassassin zu erhöhen. Dies sind die Spam-Tests, von denen bekannt ist, dass sie Spam sehr genau erkennen.
Wenn also einige dieser hochpräzisen Tests eine E-Mail als Spam anzeigen, sollten wir uns mehr darauf konzentrieren.
http://toao.net/566-improving-spamassassin-accuracy-with-statisticsSchlussfolgerung
Das war der Prozess, um SpamAssassin auf Ihrem Mailserver einzurichten, um Spam-Mails zu erkennen und Ihr Postfach sauber zu halten.
Der Prozess ist etwas langwierig, aber er funktioniert hervorragend, wenn Sie Ihren eigenen Mailserver mit Anti-Spam-System benötigen.
Wenn Sie Feedback oder Fragen haben, teilen Sie uns dies bitte in den Kommentaren unten mit.
Referenzen und Ressourcen
Einfaches Spamassassin-Setup mit Postfix und Dovecot auf Ubuntu Breezy
http://www.townx.org/index.php?q=blog/elliot/simple_spamassassin_setup_with_postfix_and_dovecot_on_ubuntu_breezy
So installieren und konfigurieren Sie Spamassassin unter Ubuntu 12.04
https://www.digitalocean.com/community/tutorials/how-to-install-and-setup-spamassassin-on-ubuntu-12-04
Anweisungen zur Installation von Pyzor und Razor mit Spamassassin
https://kura.io/2011/09/22/spamassassin-razor-pyzor/
Einrichten der Sieve-Filterung mit Dovecot
https://easyengine.io/tutorials/mail/server/sieve-filtering/
Spamassassin-Tipps:Ultimate Setup Guide
http://www.spamtips.org/p/ultimate-setup-guide.html
So verbessern Sie die Genauigkeit von SpamAssassin
https://wiki.apache.org/spamassassin/ImproveAccuracy
Über die Auswirkungen der Senkung Ihres SpamAssassin-Schwellenwerts
http://taint.org/2008/02/29/155648a.html
Verbesserung der SpamAssassin-Genauigkeit auf cPanel- (oder anderen) Mailservern – mit Statistiken
http://toao.net/566-improving-spamassassin-accuracy-with-statistics
Dieser Beitrag skizziert einfache Hacks, die Sie verwenden können, um die Punktzahl für einige der Spamassassin-Tests zu ändern und dadurch die Spam-Filterung zu verbessern.
Erweiterte Tipps zur Verwendung von SpamAssassin
https://www.andrewferrier.com/oldpages/spamassassin_tips.html