Einstieg - So wird das Leben leichter

  • Webspace - Erste Schritte um mit dem Webspace zu arbeiten
  • Datenbank - Erste Schritte um mit der Datenbank zu arbeiten.
  • Protokolle - Eine Sammlung der im Internet am häufigsten verwendeten Protokolle und ihre Funktion.

Inhalt

Aktiv/Passiv - Failovercluster

Hardware-Support

Sicherheit

Globaler Spamfilter mit Amavis-new, Spamassassin und ClamAV

Benötigte Pakete

Der Spam- und Virenfilter setzt sich grundlegend aus drei größeren Softwaremodulen zusammen. Diese werden wie folgt istalliert.

apt-get install amavisd-new spamassassin clamav-daemon

Optionale Pakete

Um den Filter zu verbessern, können weitere Programme installiert werden. Es handelt sich hierbei um zwei Projekte, die sich der SPAM-Bekämpfung zuwenden.

apt-get install libnet-dns-perl pyzor razor

Zusätzliche Tools

Damit Anhänge in den Mails gefiltert werden können ist es oft nötig, die Anhänge vorher zu entpacken. Aus diesem Grund ist es sinnvoll eine Reihe von Kompressions-Tools zu installieren sofern diese noch nicht auf dem System vorhanden sind.

apt-get install arj bzip2 cabextract cpio file gzip lha nomarch pax rar unrar unzip zip zoo

Amavis-new

Im folgenden soll Amavis-new eingerichtet werden. Es stellt die zentrale Schnittstelle zu Postfix dar um diverse Tools (ClamAV, Spamassassin) anzubinden. Bei der Installation wurden für Amavis sowie ClamAV eigene User im System angelegt. Zuerst werden die User in die jeweils andere Gruppe zugefügt.

adduser clamav amavis adduser amavis clamav

Danach werden die Filterregeln aktiviert, die genutzt werden soll. In diesem Beispiel wird sowohl der Spam-Filter als auch der Virenfilter aktiviert.

/etc/amavis/conf.d/15-content_filter_mode:
use strict;
# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.
#
# Default antivirus checking mode
# Uncomment the two lines below to enable it
#
@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
#
# Default SPAM checking mode
# Uncomment the two lines below to enable it
#
@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
1; # insure a defined return

Danach kann das Verhalten von Amavis konfiguriert werden. Hierzu sollte man sich einige Gedanken machen. Bedacht werden muss, dass das Bouncen von Spam-Mails keine Lösung ist, da die Absenderadresse oft gefälscht ist und man demnach unbeteiligte Dritte selbst mit den Bounce-Mails zuspammed, sodass man im schlimmsten Fall selber auf einer Blacklist landet.

Das Verhalten von Amavis kann in /etc/amavis/conf.d/20-debian_defaults eingestellt werden. Da hier nur global gefiltert werden und die Mail markiert werden soll, lassen wir den SPAM trotzdem zustellen. Das einsortieren wird hier den Usern belassen. $final_spam_destiny = D_PASS;

Danach kann der Dienst neu gestartet werden:

/etc/init.d/amavis restart

Integration in Postfix

Um Amavis in Postfix zu integrieren ist es nötig eine weitere Instanz von Postfix zu betreiben. Der Ablauf einer Verarbeitung der Mail sieht dann wie folgt aus:

Postfix Instanz 1[pickup] -> Amavis [Filter] -> Postfix Instanz 2[Transfer] -> MDA 

Als erstes wird Amavis als Kontentfilter in der ersten Postfix Instanz konfiguriert. In der Datei main.cf werden dazu folgende Zeilen eingefügt:

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

In diesem Beispiel wurde der defalut Port für Amavis genutzt. Dies kann im eigenen Setup entsprechend angepasst werden.

Nun muss die zweite Postfix-Instanz angelegt werden. Hierzu wird die Datei master.cf ergänzt.

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

127.0.0.1:10025 inet n - - - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks

Außerdem muss die pickup-Instanz angepasst werden und sollte wie folgt aussehen:

pickup fifo n - - 60 1 pickup
-o content_filter=
-o receive_override_options=no_header_body_checks

Dies ist notwendig um zu verhindern, dass Mails die durch den Spam-Report erzeugt werden, selbst als Spam markiert werden. Nach einem Neustart des Dienstes ist der Kontentfilter einsatzbereit.

Single Domain Setup

Damit Amavis richtig arbeiten kann muss es noch die Domains kennen, für die Amavis filtern soll. Einzelne Domains können in der Datei /etc/amavis/conf.d/50-user eingetragen werden. Hierzu wird die Zeile

@local_domains_acl = ( ".$mydomain" );

angepasst.

Soll Amavis für mehrere Domains filtern wie es z.B. in einem virtuell Domain Setup der Fall ist muss jede Domain eineln eingetragen werden. Aus diesem Grund bedient man sich dann meist der Hilfe einer Datenbank.

Multiple Domain Setup mit virtual Domains

Damit Amavis alle virtuellen Domains kennt für die es arbeiten soll kann man diese aus einer Datenbank auslesen. Hier im Beispiel wird MySQL verwendet.

/etc/amavis/conf.d/50-user:
@lookup_sql_dsn = ['DBI:mysql:database=dbname;host=dbhostip;port=dbport' , 'user', 'password'];
$sql_select_policy = 'SELECT domainspalte FROM tabelle WHERE CONCAT("@",domainspalte) IN (%k)';

Performance - Mehrere Amavis Instanzen

Die Anzahl der Prozesse, die Amavis öffnen soll kann im Konfigurationsfile angepasst werden.

/etc/amavis/conf.d/50-user:
$max_servers = X;
above the line:

Außerdem muss in der master.cf von Postfix folgende Zeile geändert werden, damit Postfix mit allen Instanzen von Amavis arbeitet.

smtp-amavis unix - - - - X smtp

Danach wird Postfix und Amavis neugestartet.

/etc/init.d/amavis restart
postfix reload

Spamassassin

Um Spamassassin starten zu können muss in der datei /etc/defaults/spamassassin die folgende Zeile angepasst werden:

ENABLED=1

Danach kann der Dienst gestartet werden.

/etc/init.d/spamassassin start

Spamassassin erkennt installierte Zusatzsoftware wie zum Beispiel razor, pyzor oder dcc-client automatisch und muss nicht weiter konfiguriert werden. Außerdem kommt Spamassasin mit einer eigenen BerkleyDB, die unter [TODO: PATH] zu finden ist und durch ein einfaches Skript mit HAM und SPAM trainiert werden kann.

ClamAV

Nach der Installation von ClamAV besteht bereits ein funktionierendes Setup, mit dem Amavis arbeiten kann. ClamAV muss nicht weiter konfiguriert werden. Im Hintergrund wird automatisch ein Daemon gestartet, welcher dafür sorgt, dass ClamAV aktuell bleibt.

Zum Seitenanfang.

 

Copyright © 2018 Linetz – Hosting und IT-Dienstleistungen Hendrik Borgmeyer.