Unterabschnitte

Das Antispam-Package

Dieses Package ist als Zusatz-Paket zum Mail-Paket zu verstehen. Eingehende Nachrichten werden mit Hilfe dieses Programms, vor der Verteilung in die einzelnen Postfächer, auf Spam-Inhalt überprüft und gegebenenfalls herausgefiltert. Diese Dokumentation wurde bereits auf die nächste Version v1.4.10 abgestimmt. Nutzer vorheriger Version sollten die im jeweiligen Antispam-Paket enthaltene Dokumentation als Referenz verwenden.

Einleitung

Was ist Spam? Von Spam spricht man, wenn eine Kopie einer Nachricht das Internet überflutet, mit dem Ziel soviele Empfänger wie möglich zu erreichen, obwohl diese die Zusendung der Nachricht nicht verlangt haben. Meisstens werden über Spam dubiose Produkte kommerziell beworben, die versprechen in 14 Tagen zum Millionär zu werden, oder es werden nicht ganz legale Service angepriesen.

An dieser Stelle kommt das Antispam-Package ins Spiel!

Wenn die Überprüfung auf Spam über den Parameter EXISCAN_SPAMD_ENABLED (Mail-Package) aktiviert wurde, wird jede eingehende Nachricht nach diversen Regeln bewertet und bei der Identifikation als Spam als solche behandelt. Standardmässig wird z.B., in Abhängigkeit von dem Parameter EXISCAN_SPAMD_ACTION (Mail-Package) eine solche Nachricht an den User-Account `spam@domain.de' weitergeleitet, um es dem Mail-Administrator zu ermöglichen diese vor dem Löschen noch einmal zu verifizieren. Durch diese Prozedur werden die Mail-Nutzer vor Nachrichten geschützt, die sie normalerweise sowieso nicht empfangen wollten.

Funktionen

Das Antispam-Package besteht aus folgender Komponente:

Voraussetzungen

Diese Package benötigt zur korrekten Funktion zwingende die installierten Packages `Mail', `Perl' und andere Perl-Funktions-Packages.

Installation

Das Antispam-Package wird über das Setup-Menü installiert. Nach dem Installieren der Programmdateien wird direkt der Konfigurations-Editor gestartet um die Konfiguration anzupassen. Nach Beendigung diese Schrittes werden die Konfigurationsdateien generiert und alle benötigten Programme gestartet.

Das Menü im Setup-Programm

Das Menü im Setup-Programm wird über `Mail Services' -> `Goto mail modules' angesprochen und ist wie folgt aufgebaut:

Die Menüpunkte dürften selbsterklärend sein, da sie keinerlei weiteren Input erwarten. Deshalb wird auf deren Funktion vorerst nicht weiter eingegangen.

Änderung der Konfiguration

Die Konfiguration kann über den Menüpunkt `Edit configuration' geändert werden. Standardmäßig wird der Editor `joe' aufgerufen. Nachdem der Editor beendet wurde wird abgefragt, ob die Konfiguration aktiviert werden soll. Wird dies bestätigt, werden über ein Skript die modifizierten Änderungen umgehend wirksam gemacht.

Die Konfigurationsdatei

In der Konfigurationsdatei, die über das Menü zugänglich ist, sind folgende Parameter vorhanden; wer sie von Hand editieren will findet sie unter /etc/config.d/antispam.

Die Parameter

START_ANTISPAM
Für die Aktivierung des Antispam-Programms muss diese Variable lediglich auf den Wert `yes' gestellt werden. Die Einstellung `no' deaktiviert das Antispam-Programm.

Gültige Werte: yes, no

Standard-Einstellung: START_ANTISPAM='no'

ANTISPAM_ALLOWED_ADDRESSES
Über diesen Parameter können IP-Adressen oder Netzwerke angegeben werden, denen es zusätzlich zum lokalen Host erlaubt ist eine Verbindung zum Spam-Daemon aufzubauen. Es ist somit nicht notwendig auf allen Rechnern einen eigenen Spam-Daemon zu installieren.

Gültige Werte: IP-Adressen und/oder Netzwerke

Beipiel: ANTISPAM_ALLOWED_ADDRESSES='192.168.6.20,192.168.7.0/24'

Standard-Einstellung: ANTISPAM_ALLOWED_ADDRESSES=''

ANTISPAM_LISTEN_ADDRESSES (Optional)
Über diesen Parameter kann eine IP-Adresse angegeben werden, auf die der Spam-Daemon Verbindungsanfragen entgegen nehmen soll. Wird der Parameter auf den Wert 'all' gesetzt, so werden auf allen Netwerkanschlüssen Verbindungsanfragen entgegen genommen. Wird der Parameter nicht gesetzt oder leer gelassen, so wird standardmäßig die Adresse '127.0.0.1' verwendet.

Gültige Werte: leer, all, IP-Adresse

Beispiel: ANTISPAM_LISTEN_ADDRESSES='192.168.0.20'

Standard-Einstellung: ANTISPAM_LISTEN_ADDRESSES=''

ANTISPAM_DNS_AVAILABLE
Um die Funktionsfähigkeit von DNS zu prüfen wird standardmässig versucht die Namen einiger Hosts im Internet aufzulösen. Dies kann in einigen Fällen zu Fehlern führen, weil z.B. die Netzwerkverbindung unterbrochen wurde und so vermutet wird, dass keine DNS-Auflösung möglich ist. Über diesen Parameter wird nun bestimmt, ob eine automatische Prüfung stattfinden soll (test), generell immer davon ausgegangen werden soll, dass DNS verfügbar (yes) bzw. nicht verfügbar (no) ist.

Gültige Werte: yes, no, test[: name1 name2]

Standard-Einstellung: ANTISPAM_DNS_AVAILABLE='test'

ANTISPAM_ENABLE_RBL_CHECKS
Wird dieser Parameter auf `yes' gesetzt, so wird bei einer Überprüfung zusätzlich eine Verbindung zu RBL-Servern (realtime blackhole lists) aufgebaut und geprüft, ob der Absender der Nachricht dort bereits als Spammer bekannt ist.

Gültige Werte: yes, no

Standard-Einstellung: ANTISPAM_ENABLE_RBL_CHECKS='yes'

ANTISPAM_ENABLE_SPAMCOP
Wird dieser Parameter auf `yes' gesetzt, so wird eine als Spam eingestufte Nachricht automatisch an SpamCop (http://www.spamcop.net/) zur Analyse weitergeleitet.

Gültige Werte: yes, no

Standard-Einstellung: ANTISPAM_ENABLE_SPAMCOP='no'

ANTISPAM_MAILBOX_FILE
Dieser Parameter legt den Mailboxname und -pfad der Spam-Mailbox fest. Wird dieser Parameter nicht gefüllt, so wird der Standardname 'spam' im Verzeichnis /var/spool/mail verwendet.

Gültige Werte: Mailboxname optional incl. Pfad

Standard-Einstellung: ANTISPAM_MAILBOX_FILE=''

ANTISPAM_MAX_CHILDREN
Dieser Parameter legt fest, wieviele Kinderprozesse maximal gleichzeitig auf dem Server aktiviert werden sollen. Auf sehr langsamer Hardware ist es manchmal sinnvoll diesen Parameter anzupassen. Standardmäßig werden die systemspezifischen Einstellungen verwendet.

Gültige Werte: Zahl

Standard-Einstellung: ANTISPAM_MAX_CHILDREN='0'

ANTISPAM_BAYES_AUTO_LEARN
Wird dieser Parameter auf `yes' gesetzt, so werden Nachrichten mit einem hohen Spam-Score dem Bayes-Filter zugeführt. Dieser wertet die zugeführten Informationen aus und paßt dann dynamisch seine Spam-Bewertung an.

Gültige Werte: yes, no

Standard-Einstellung: ANTISPAM_BAYES_AUTO_LEARN='yes'

ANTISPAM_BAYES_LEARN_FROM_SPAM_x
Über diese Parameter können Mailbox-Dateien mit vollständiger Pfadangabe angegeben werden, in denen `Spam'-Nachrichten (schlecht) gesammelt werden. Falls z.B. bei jedem User die gleiche Datei verwendet werde soll, so ist der Einsatz von Wildcards möglich. Diese werden dann im vorgegebenen Zeitintervall zum Trainieren des Bayes-Filter verwendet. (Siehe ANTISPAM_BAYES_LEARN_CRON_SCHEDULE)

Gültige Werte: Zahl bzw. Mailboxname incl. Pfad

Beispiel:

ANTISPAM_BAYES_LEARN_FROM_SPAM_N='1'
ANTISPAM_BAYES_LEARN_FROM_SPAM_1='/var/spool/mail/spam'

ANTISPAM_BAYES_LEARN_FROM_HAM_x
Über diese Parameter können Mailbox-Dateien mit vollständiger Pfadangabe angegeben werden, in denen 'Ham'-Nachrichten (gut) gesammelt werden. Falls z.B. bei jedem User die gleiche Datei verwendet werde soll, so ist der Einsatz von Wildcards möglich. Diese werden dann im vorgegebenen Zeitintervall zum Trainieren des Bayes-Filter verwendet. (Siehe ANTISPAM_BAYES_LEARN_CRON_SCHEDULE)

Gültige Werte: Zahl bzw. Mailboxname incl. Pfad

Beispiel:

ANTISPAM_BAYES_LEARN_FROM_HAM_N='1'
ANTISPAM_BAYES_LEARN_FROM_HAM_1='/home/frank/.imapmail/ham-archive'

ANTISPAM_BAYES_LEARN_CRON_SCHEDULE
Hier wird festgelegt zu welchem Zeitpunkt bzw. in welchem Intervall die angegebenen Spam- bzw Ham-Mailbox-Dateien für das Training des Bayes-Filters ausgewertet werden sollen. Die fünf Teilparameter haben dabei folgende Bedeutung:
1 - Minuten, 2 - Stunden, 3 - Tag des Monats, 4 - Monat, 5 - Wochentag.
D.h. bei Verwendung der Standard-Einstellung wird jeweils am Sonntag um 03:05h der Vorgang angestoßen. Wer Näheres über die verwendete Befehlsyntax erfahren möchte, sollte über Google nach `man' und `crontab' suchen.

Gültige Werte: Crontab-spezifischer Parametereintrag

Standard-Einstellung: ANTISPAM_BAYES_LEARN_CRON_SCHEDULE='5 3 * * 0'

ANTISPAM_AUTO_WHITELIST
Wird dieser Parameter auf `yes' gesetzt, so wird versucht, anhand der von einem Absender versandten Nachrichten und deren Spam-Wertung, die Spam-Wertung der aktuell von diesem Absender empfangenen Nachricht einzustufen. D.h. wurden über einen längeren Zeitraum Nachrichten von einem Absender als 'Nicht-Spam' eingestuft, so kann mit hoher Warscheinlichkeit auch bei der aktuellen Nachricht davon ausgegangen werden, dass es sich nicht um Spam handelt, obwohl vielleicht der Spam-Schwellwert geringfügig überschritten wurde. Die Einstellung `no' deaktiviert diese Funktion.

Gültige Werte: yes, no

Standard-Einstellung: ANTISPAM_AUTO_WHITELIST='yes'

ANTISPAM_AUTO_WHITELIST_FACTOR
Wurde die automatische Whitelist-Funktion über den Parameter ANTISPAM_AUTO_WHITELIST aktiviert, so beeinflusst der hier definierte Faktor die Einstufung einer Nachricht als Spam. d.h. man hat einerseits den Durchschnittswert der Spam-Wertungen eines Absenders und andererseits den aktuell berechneten Spam-Wert. Die endgültige Wertung ergibt sich danach aus folgender Formel:

endgültige W. = aktuelle W. + (durchschnittliche W. - aktuelle W.) * Faktor

Ein Faktor von `1' bedeutet, dass immer der Durchschnittswert verwendet wird. Ein Faktor von `0' bedeutet, dass immer der aktuell berechnete Wert verwendet wird.

Gültige Werte: Zahl

Standard-Einstellung: ANTISPAM_AUTO_WHITELIST_FACTOR='0.5'

ANTISPAM_BLACKLIST_FROM_x
Über diese Parameter können Email-Adressen angegeben werden, die fälschlicherweise sehr häufig als `Nicht-Spam' klassifiziert werden, obwohl das Gegenteil der Fall ist. Über ANTISPAM_BLACKLIST_FROM_N wird die Anzahl der Einträge festgelegt und über ANTISPAM_BLACKLIST_FROM_x werden die einzelnen Einträge definiert. Eingaben wie z.B. `*@domain.de' oder `*.domain.de' sind ebenfalls zulässig.

Gültige Werte: Zahl bzw. Mail-Adresse

Beispiel:

ANTISPAM_BLACKLIST_FROM_N='1'
ANTISPAM_BLACKLIST_FROM_1='spammer@spammershome.com'

ANTISPAM_WHITELIST_FROM_x
Über diese Parameter können Email-Adressen angegeben werden, die fälschlicherweise sehr häufig als `Spam' klassifiziert werden, obwohl das Gegenteil der Fall ist. Über ANTISPAM_WHITELIST_FROM_N wird die Anzahl der Einträge festgelegt und über ANTISPAM_WHITELIST_FROM_x werden die einzelnen Einträge definiert. Eingaben wie z.B. `*@domain.de' oder `*.domain.de' sind ebenfalls zulässig.

Gültige Werte: Zahl bzw. Mail-Adresse

Beispiel:

ANTISPAM_WHITELIST_FROM_N='1'
ANTISPAM_WHITELIST_FROM_1='nospammer@whitejacket.com'

ANTISPAM_INFOMAIL
Über diesen Parameter kann der automatisierte Versand einer Mail aktiviert werden, die über den Status des Spam-Postfaches informiert. Wird der Parameter auf den Wert `no' gesetzt, so erfolgt keine Benachrichtigung.

Gültige Werte: yes, no

Standard-Einstellung: ANTISPAM_INFOMAIL='yes'

ANTISPAM_INFOMAIL_SUBJECT
Über diesen Parameter wird der Text der Betreffzeile festgelegt, die über den Status des Spam-Postfaches informiert. Dieser Parameter wird nur ausgewertet, wenn zuvor ANTISPAM_INFOMAIL='yes' gesetzt wurde.

Gültige Werte: Text

Standard-Einstellung: ANTISPAM_INFOMAIL_SUBJECT='Spam mailbox status'

ANTISPAM_INFOMAIL_BODY
Über diesen Parameter wird der Text der Nachricht festgelegt, die über den Status des Spam-Postfaches informiert. An Stelle des `|'-Zeichens wird vor dem Versand der Nachricht das Ergebnis der Postfachüberprüfung eingesetzt. Dieser Parameter wird nur ausgewertet, wenn zuvor ANTISPAM_INFOMAIL='yes' gesetzt wurde.

Gültige Werte: Text incl. `|'-Zeichen

Standard-Einstellung: ANTISPAM_INFOMAIL_BODY='Result of the spam mailbox check: \n| \nPlease delete messages after verification!'

ANTISPAM_INFOMAIL_CRON_SCHEDULE
Hier wird festgelegt zu welchem Zeitpunkt bzw. in welchem Intervall eine Überprüfung des Spam-Postfaches erfolgen soll. Dieser Parameter wird nur ausgewertet, wenn zuvor ANTISPAM_INFOMAIL='yes' gesetzt wurde. Die fünf Teilparameter haben dabei folgende Bedeutung:
1 - Minuten, 2 - Stunden, 3 - Tag des Monats, 4 - Monat, 5 - Wochentag.
D.h. bei Verwendung der Standard-Einstellung wird täglich um 07:03h eine Überprüfung durchgeführt. Wer näheres über die verwendete Befehlsyntax erfahren möchte, sollte über Google nach `man' und `crontab' suchen.

Gültige Werte: Crontab-spezifischer Parametereintrag

Standard-Einstellung: ANTISPAM_INFOMAIL_CRON_SCHEDULE='3 7 * * *'

Überprüfen von Spam Nachrichten

Um als Spam klassifizierte Nachrichten zu überprüfen wählt man den Menüpunkt `Read messages' und lässt sich die Betreffzeilen der Nachrichten anzeigen. Durch Eingabe der Nachrichtennummer kann man sich dann den Nachrichtentext anzeigen lassen und durch drücken von `d' die Nachricht gegebenenfalls löschen. Wurde eine Nachricht fälschlicherweise als Spam eingestuft, so geht man wie folgt vor um diese trotzdem dem Empfänger zuzustellen:

1
Eingeben von `m <Mail-Adresse>' um eine Nachricht weiterzuleiten.
2
Eingabe der Betreffzeile.
3
Durch Eingabe von `m<Nummer der Nachricht>' oder `~M<Nummer der Nachricht>' wird die weiterzuleitende Nachricht ausgewählt. Dabei wird mit `~m' nur der Nachrichttext und mit `~M' zusätzlich auch die Header-Zeilen eingefügt.
4
Mit STRG-D wird die Nachricht abgeschlossen, mit STRG-C abgebrochen.
5
Falls gewünscht Eingabe von CC und BCC-Empfängern, sonst nur mit RETURN bestätigen.

Test-Spam Nachricht senden

Will man testen ob der Spam-Filter korrekt funktioniert, so kann man sich selbst eine Nachricht von einem Mail-Account außerhalb des eigenen Netzes mit folgender Zeichenkette, die keine Leerzeichen oder Zeilenumbrüche enthält, zusenden:

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

Rollieren der Logdatei konfigurieren

Ab der Version 1.1.2 werden die paketspezifischen Meldungen nicht mehr in die Datei /var/log/messages geschrieben, sondern es wird eine eigene Datei /var/log/antispam.log verwendet. Um sicher zu stellen, dass die Logdatei korrekt durch das Programm Logrotate aktiviert wird, sind folgende Änderungen an der base-Konfiguration, Menü 'System admininstration -> Base configuration -> Edit base configuration', durchzuführen:

Beispiel:

START_SYSLOGD='yes'
SYSLOGD_DEST_N='2'
SYSLOGD_DEST_1='*.*;local7.none /var/log/messages'
SYSLOGD_DEST_1_LOGROTATE='/etc/init.d/syslogd restart'
SYSLOGD_DEST_2='local7.* /var/log/antispam.log'
SYSLOGD_DEST_2_LOGROTATE='/etc/init.d/antispam restart quiet'

Um die Änderungen sofort zu aktivieren gibt man folgenden Befehl an der Konsole ein '/etc/init.d/syslogd restart' oder wartet einfach die nächtliche Archivierung der Logdateien ab.

Jens Vehlhaber 2008-03-25