GNU/Linux >> LINUX-Kenntnisse >  >> Debian

So installieren Sie Spamassassin mit Postfix und Dovecot auf Ubuntu/Debian Server

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 ein

Spamassassin 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-statistics

Schlussfolgerung

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


Debian
  1. So installieren Sie Puppet 6.x auf Ubuntu 18.04 / Ubuntu 16.04 und Debian 9

  2. So installieren und richten Sie Gerbera Media Server in Ubuntu / Debian ein

  3. Postfix Mailserver und Dovecot auf Ubuntu oder Debian installieren

  4. So installieren Sie den SSH-Server auf Ubuntu / Debian mit OpenSSH

  5. So installieren und integrieren Sie SpamAssassin mit Postfix auf einem CentOS 6 VPS

So installieren und konfigurieren Sie den Apache-Webserver mit virtuellem Host unter Debian 10

So installieren Sie Tomcat 7 Server auf Ubuntu, Debian und LinuxMint

So installieren Sie SpamAssassin unter Ubuntu/Debian

So installieren Sie Nginx mit PHP-FPM unter Debian 11

So installieren Sie Drupal mit Apache auf Debian und Ubuntu

So installieren und aktivieren Sie den SSH-Server unter Debian 10