Spam- und Virenschutz mit Postfix (Debian)

Alle ausklappen Alle einklappen

Einleitung

Dieser Artikel beschreibt, wie Postfix mit einem Spam- und Virenfilter ausgestattet
werden kann. Als Virenscanner wird ClamAV verwendet, für die Spamerkennung
SpamAssassin. Damit diese beiden Programme mit Postfix kommunizieren können, wird
AMaViS verwendet. Die Anleitung ist geprüft unter Debian.

Voraussetzungen

Diese Anleitung setzt voraus, dass Postfix installiert ist. Eine Anleitung zur Installation von Postfix erhalten Sie auf der Seite "Mailsystem installieren (Debian, Ubuntu)". Einige Informationen zur Grundkonfiguration erhalten Sie außerdem auf der Seite "Postfix konfigurieren".

Dokumentation

Die Dokumentationen zu ClamAV, AMaViS und SpamAssassin erhalten Sie unter den folgenden Links:

Pakete installieren

1. Da sich die Dienste mit den Hostnamen melden, sollte zunächst der Hostname des Servers angepasst werden – z.B. auf Ihren Domainnamen.

2. Führen Sie anschließend die folgenden Befehle aus, um die Paketquellen zu aktualisieren und Updates zu installieren:

 

# apt-get update
# apt-get dist-upgrade

 

3. Installieren Sie die benötigten Pakete dann mittels folgendem Befehl:

 

# apt-get install clamav clamav-daemon amavisd-new spamassassin 

 

4. Um die Spamerkennung zu verbessern und auch Archive scannen zu können, ist es empfehlenswert, zusätzlich die folgenden Pakete zu installieren:

 

# apt-get install arj bzip2 cabextract cpio file gzip nomarch pax unzip zoo zip zoo

ClamAV in AMaViS einbinden

1. Um ClamAV in AMaViS einzubinden, ist es notwendig die Datei /etc/amavis/conf.d/15-content_filter_mode anzupassen. Entfernen Sie das Raute-Zeichen (#) vor den folgenden Optionen, um diese zu aktivieren:

 

@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

 

2. Starten Sie AMaViS und Postfix im Anschluss mit folgenden Kommandos neu:

 

# service clamav-daemon restart
# service amavis restart

 

Da AMaViS die Installation von ClamAV automatisch erkennt und einbindet, ist die Einbindung von ClamAV in AMaViS nun abgeschlossen. Es ist lediglich noch notwendig, den Virenscan zu aktivieren.

Postfix für die Weiterleitung an AMaViS konfigurieren

1. Editieren Sie die Datei /etc/postfix/master.cf und fügen Sie den folgenden Inhalt am Ende der Datei ein:

 

smtp-amavis  unix    -    -    n    -    2    smtp
 -o smtp_data_done_timeout=1200
 -o smtp_send_xforward_command=yes
 -o disable_dns_lookups=yes

 

2. Mit folgenden Zeilen in der Datei "/etc/postfix/main.cf" machen Sie die Weiterleitung an AMaViS in Postfix bekannt:

 

#ContentFilter:
content_filter = smtp-amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings

 

3. Um die Änderung zu übernehmen, starten Sie Postfix mit folgendem Befehl neu:

 

# service postfix restart

Zweite Instanz von Postfix einrichten

1. Nun muss noch eine zweite Instanz von Postfix eingerichtet werden. Fügen Sie hierzu Folgendes in die Datei /etc/postfix/master.cf ein:

 

127.0.0.1:10025 inet    n    -    n    -    -    smtpd
 -o content_filter=
 -o local_recipient_maps=
 -o relay_recipient_maps=
 -o smtpd_restriction_classes=
 -o smtpd_helo_restrictions=
 -o smtpd_sender_restrictions=
 -o smtpd_recipient_restrictions=permit_mynetworks,reject
 -o mynetworks=127.0.0.0/8
 -o strict_rfc821_envelopes=yes
 -o smtpd_error_sleep_time=0
 -o smtpd_soft_error_limit=1001
 -o smtpd_hard_error_limit=1000
 -o receive_override_options=no_header_body_checks

 

2. Starten Sie dann Postfix neu:

 

# service postfix restart

 

3. Prüfen Sie anschließend mit dem folgenden Befehl, ob die zweite Instanz von Postfix auf Port 10025 lauscht:

 

# telnet localhost 10025

 

Die Ausgabe sollte hier folgendermaßen aussehen:

 

Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 j1278.servers.jiffybox.net ESMTP Postfix (Debian/GNU)

SpamAssassin einbinden

Zum Spamschutz können Sie z.B. SpamAssassin verwenden und diesen wieder mittels AMaViS einbinden. 

1. Bearbeiten Sie hierfür die Datei "/etc/amavis/conf.d/15-content_filter_mode". Aktivieren Sie dort die folgenden Zeilen, indem Sie die #-Zeichen am Zeilenanfang entfernen:

 

@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

 

2. Um die Konfiguration neu einzulesen, starten Sie Postfix und AMaViS mit folgenden Befehlen neu:

 

# service postfix restart
# service amavis restart

 

3. Im Logfile /var/log/mail.log können Sie nun prüfen, ob alle Dienste korrekt gestartet wurden. Folgendes sollte erscheinen:

 

amavis[6280]: ANTI-VIRUS code      loaded
amavis[6280]: ANTI-SPAM code       loaded
amavis[6280]: ANTI-SPAM-SA code    loaded

ClamAV und SpamAssassin prüfen

Mit Hilfe von Testsignaturen für Spam und Viren können Sie die Installation prüfen und somit testen, ob Viren- und Spammails korrekt erkannt werden.

Um SpamAssassin und ClamAV zu prüfen, senden Sie jeweils eine E-Mail an den Server, die eine Testsignatur für Viren bzw. Spam enthält.

Für Spammails sollten dann Folgendes im Log erscheinen:

 

amavis[6281]: (06281-02) Blocked SPAM

 

Für Virenmails sollte die Meldung folgendermaßen aussehen:

 

amavis[6282]: (06282-02) Blocked INFECTED (Eicar-Test-Signature)

 

Selbstverständlich können Sie das Verhalten für Spam- und Virenmails noch anpassen. So können Sie z.B. einstellen, dass SpamAssassin Spammails im Betreff mit ***SPAM*** markiert.

Testsignatur für Spam-E-Mails

Um die Funktionalität von SpamAssassin zu testen, können Sie z. B. den GTUBE-Teststring verwenden. Dieser String muss dann von SpamAssassin erkannt werden:

 

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Testsignatur für Viren

Als Testsignatur für Viren können Sie die EICAR-Signatur verwenden. Diese muss von ClamAV erkannt werden:

 

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Das Verhalten von AMaViS und SpamAssassin anpassen

1. In der Datei /etc/amavis/conf.d/20-debian_defaults können Sie das Verhalten von AMaViS und SpamAssassin anpassen. Der folgende Eintrag bewirkt zum Beispiel, dass Spammails mit ***SPAM** markiert und ins Postfach zugestellt werden:

 

$final_spam_destiny = D_PASS;

 

2. Möchten Sie, dass die Spamscore durch Spamassassin in alle E-Mails eingetragen wird, so können Sie den Wert der folgenden Variable beispielsweise anpassen auf:

 

$sa_tag_level_deflt  = -999;

 

3. Des Weiteren möchten wir hier noch auf einen Fehler in den Paketen von Debian hinweisen. Dieser bewirkt, dass Reports über Virenmails nicht zugestellt werden können. Um den Fehler zu beheben, fügen Sie in der Datei /etc/amavis/conf.d/50-user folgenden Eintrag hinzu:

 

$hdrfrom_notify_sender = "postmaster\@domain.tld";

 

Bitte hinterlegen Sie hier eine gültige E-Mail-Adresse.

4. Starten Sie anschließend AMaViS neu.

Verbesserung der Spamerkennung

 

Trainieren der Bayes-Datenbank des Spamassassin

Nach dem Einrichten ist die Spamerkennung der Bayes-Datenbank, die standardmäßig aktiviert ist, noch nicht sehr gut. Es ist aber möglich, für die Initialisierung Spam- und Ham-Nachrichten herunterzuladen und zu trainieren.

1. Die Nachrichten für das initiale Training können Sie unter folgender Adresse herunterladen:
http://spamassassin.apache.org/old/publiccorpus/

2. Legen Sie zum Entpacken der Archive das Verzeichnis "/home/amavis" an, damit AMaViS darauf zugreifen kann. Wechseln Sie in dieses Verzeichnis und laden Sie ein Beispiel herunter:

 

# mkdir -p /home/amavis; cd /home/amavis
# wget http://spamassassin.apache.org/old/publiccorpus/

3. Entpacken Sie das Archiv mit folgendem Befehl:

 

# tar xvf 20021010_spam.tar.bz2

4. Nun können Sie diese Nachrichten mit folgendem Befehl trainieren:

 

# su amavis -c 'sa-learn --spam /home/amavis/spam/'

Das Trainieren von Ham-Nachrichten ist mit folgendem Befehl möglich:

 

# su amavis -c 'sa-learn --ham /home/amavis/ham/'

5. Wenn Sie empfangene E-Mails trainieren möchten, empfiehlt es sich, diese in Unterordner einzusortieren, damit nur die gewünschten E-Mails trainiert werden. Unterorder lassen sich per IMAP bequem anlegen. Auf dem Server lassen sich die E-Mails mit folgenden Befehlen für das Maildir-Format als Spam trainieren:

 

# su amavis -c 'sa-learn --spam /var/mail/example.com/demo/.Junk/cur'

Für das Trainieren als Ham gilt folgender Befehl:

 

# su amavis -c 'sa-learn --ham /var/mail/example.com/demo/.Ham/cur'

6. Um die Regeln zu aktualisieren und die Datenbank neu einzulesen, wird der folgende Befehl benötigt:

 

# sa-update -D

Es ist notwendig, diesen als root auszuführen.

7. Wenn das Update regelmäßig durch einen Cronjob ausgeführt werden soll, ist es möglich, in der Datei "/etc/default/spamassassin" die folgende Option zu ändern:

 

CRON=1

Spamfilterung mit Razor und Pyzor

Es ist nicht immer zeitnah möglich, eine eigene Datenbank zu pflegen und den eigenen Spamfilter zu trainieren. Hier helfen Lösungen, wie zum Beispiel Razor und Pyzor. Sie werden von einer großen Community gepflegt, sodass Spamnachrichten innerhalb weniger Stunden korrekt erkannt werden. Wenn Sie Razor und Pyzor einsetzen, können Sie auch zusätzlich eine eigene Bayes-Datenbank pflegen. Je nach Konfiguration der Scoring-Werte ist es dann aber möglich, dass das Resultat der Bayes-Datenbank das Ergebnis von Razor und Pyzor aufhebt. 

1. Mit folgendem Befehl installieren Sie Razor und Pyzor:

 

# apt-get install pyzor razor

 

2. Es ist danach notwendig, Razor und Pyzor zu initialisieren sowie die Serverlisten zu erstellen und zu laden. Führen Sie dazu bitte die folgenden Befehle aus:

 

# su - amavis -s /bin/bash
# razor-admin -create
# razor-admin -register
# pyzor discover

 

3. Mit folgendem Befehl können Sie testen, ob die Checks funktionieren:

 

# spamassassin -D -t < /usr/share/doc/spamassassin/examples/sample-spam.txt 2>&1 | tee sa.out

 

4. An der folgenden Ausgabe erkennen Sie anschließend, ob der Check korrekt geladen wurde:

 

check_dkim_adsp: 4 (0.2%), check_spf: 23 (1.1%), check_razor2: 218 (10.5%), check_pyzor: 92 (4.4%), tests_pri_500: 73 (3.5%)

Geben sie uns Ihr Feedback

Das freut uns und wir haben Ihre positive Rückmeldung vermerkt. Wenn Sie möchten, teilen Sie uns gerne noch Details mit: Was hat Ihnen besonders gefallen? Welche Informationen waren besonders hilfreich?

Leider können wir Ihr Feedback nicht direkt beantworten, wir verwenden es jedoch, um die FAQ weiterzuentwickeln und zu verbessern. Wir freuen uns auf Ihre Antwort!

Geben sie uns Ihr Feedback

Es tut uns leid, dass Sie mit den FAQ nicht zufrieden sind. Welche Information vermissen Sie? Was können wir besser machen?

Leider können wir Ihr Feedback nicht direkt beantworten, wir verwenden es jedoch, um die FAQ weiterzuentwickeln und zu verbessern. Wir freuen uns auf Ihre Antwort!