Spam-Filter · 17 min read · Sep 24, 2025
SpamAssassin-ClamAV-Procmail-Howto
SpamAssassin-ClamAV-Procmail-Howto
Version 1.0
Autor: Falko Timme
Dieses Dokument beschreibt, wie man SpamAssassin (zum Filtern von SPAM) und ClamAV (zum Filtern von Viren, Trojanern, Würmern usw.) installiert und wie man sie mit Procmail-Rezepten aufruft. Es ist geeignet für Szenarien, in denen Sendmail oder Postfix E-Mails an lokale Benutzer zustellen. Es sollte (vielleicht mit leichten Änderungen bezüglich der Pfade usw.) auf allen *nix-Betriebssystemen funktionieren. Ich habe es bisher auf Debian Woody getestet.
Am Ende haben Sie ein System, bei dem Sendmail oder Postfix E-Mails an einen lokalen Benutzer zustellen; die E-Mails werden an Procmail weitergeleitet, das SpamAssassin und ClamAV aufruft, um die E-Mails zu filtern, bevor sie im Posteingang des Benutzers ankommen. Die Installation von Sendmail und Postfix wird in diesem Dokument jedoch nicht behandelt.
Dieses Howto ist als praktische Anleitung gedacht; es behandelt nicht die theoretischen Hintergründe. Diese werden in vielen anderen Dokumenten im Web behandelt.
Dieses Dokument kommt ohne Gewährleistung jeglicher Art!
Bitte beachten Sie: Wenn Sie das Server-Control-Panel 42go ISP-Manager verwenden, müssen Sie dieses Tutorial nicht befolgen, da der 42go ISP-Manager mit SpamAssassin und ClamAV geliefert wird, und beide über den 42go ISP-Manager konfiguriert werden können!
1 Installieren von SpamAssassin
Es gibt mehrere Möglichkeiten, SpamAssassin zu installieren. Ich werde hier drei davon beschreiben:
| 1. | Installation über die Perl-Shell Melden Sie sich als root in Ihrer Kommandozeile an und führen Sie den folgenden Befehl aus, um die Perl-Shell zu starten: perl -MCPAN -e shell Wenn Sie die Perl-Shell zum ersten Mal ausführen, werden Ihnen einige Fragen gestellt. In den meisten Fällen sind die Standardantworten in Ordnung. Bitte beachten Sie: Wenn Sie eine Firewall auf Ihrem System haben, müssen Sie sie möglicherweise ausschalten, während Sie an der Perl-Shell arbeiten, damit die Perl-Shell die benötigten Module ohne große Verzögerung abrufen kann. Sie können sie danach wieder einschalten. Der große Vorteil der Perl-Shell im Vergleich zu den beiden anderen hier beschriebenen Methoden ist, dass sie sich um Abhängigkeiten kümmert, wenn neue Module installiert werden. D.h., wenn sich herausstellt, dass ein erforderliches Perl-Modul fehlt, wenn Sie ein anderes Modul installieren, fragt die Perl-Shell, ob sie das erforderliche Modul für Sie installieren soll. Sie sollten diese Frage mit „Ja“ beantworten. Führen Sie die folgenden Befehle aus, um SpamAssassin und einige andere benötigte Module zu installieren: install HTML::Parser
install DB_File
install Net::DNS (wenn Sie aufgefordert werden, Tests zu aktivieren, wählen Sie nein)
install Digest::SHA1
install Mail::SpamAssassin
q (um die Perl-Shell zu verlassen) Wenn ein Modul bereits auf Ihrem System installiert ist, erhalten Sie eine Nachricht, die ähnlich wie folgt aussieht: HTML::Parser ist auf dem neuesten Stand. Eine erfolgreiche Installation eines Moduls sieht so aus: /usr/bin/make install – OK | | 2. | Installation aus den Quellen ( Bitte beachten Sie: Die erforderlichen Perl-Module (mindestens HTML::Parser) müssen installiert sein, bevor Sie SpamAssassin aus den Quellen kompilieren. Wenn sie nicht installiert sind, installieren Sie sie mit einer der anderen beiden hier beschriebenen Methoden oder laden Sie die Quellen von http://www.cpan.org herunter und kompilieren Sie sie. Dies ähnelt den hier beschriebenen Schritten für SpamAssassin.) cd /tmp
wget http://www.mirror.ac.uk/sites/spamassassin.taint.org/spamassassin.org
/released/Mail-SpamAssassin-2.63.tar.gz (1 Zeile)
tar xvfz Mail-SpamAssassin-2.63.tar.gz
cd Mail-SpamAssassin-2.63
perl Makefile.PL
make
make install | | 3. | Installation über Webmin Wenn Sie Webmin ( http://www.webmin.com) auf Ihrem System installiert haben, können Sie es verwenden, um Perl-Module zu installieren. Melden Sie sich bei Webmin an, gehen Sie zu Others -> Perl Modules und installieren Sie SpamAssassin:
Wenn Sie Fehlermeldungen erhalten, liegt dies meistens daran, dass einige erforderliche Module auf Ihrem System fehlen. Installieren Sie diese (mindestens HTML::Parser ist erforderlich) und versuchen Sie dann erneut, das Modul zu installieren, das Sie zuerst installieren wollten. |
SpamAssassin wird in /usr/local/share/spamassassin/ installiert.
2 Installieren von ClamAV
cd /tmp
groupadd clamav
useradd -g clamav -s /bin/false -c “Clam AntiVirus” clamav
wget http://heanet.dl.sourceforge.net/sourceforge/clamav/clamav-0.67.tar.gz
tar xvfz clamav-0.67.tar.gz
cd clamav-0.67
./configure –sysconfdir=/etc
( Bitte beachten Sie: ./configure –help gibt eine Liste aller verfügbaren Konfigurationsoptionen.)
make
su -c “make install”
Wenn Sie jetzt clamd ausführen, erhalten Sie eine Fehlermeldung:
ERROR: Bitte bearbeiten Sie die Beispielkonfigurationsdatei /etc/clamav.conf.
Sie müssen mindestens die Example-Direktive entfernen. Meine /etc/clamav.conf sieht so aus:
| ## ## Beispielkonfigurationsdatei für den Clam AV-Daemon ## Bitte lesen Sie das clamav.conf(5)-Handbuch, bevor Sie diese Datei bearbeiten. ## # Kommentieren Sie die folgende Zeile aus oder entfernen Sie sie. #Example # Kommentieren Sie diese Option aus, um das Logging zu aktivieren. # LogFile muss für den Benutzer, der den Daemon ausführt, beschreibbar sein. # Vollständiger Pfad ist erforderlich. #LogFile /tmp/clamd.log # Standardmäßig ist die Protokolldatei für das Schreiben gesperrt - das Sperren schützt vor # mehrfacher Ausführung von clamd (wenn Sie einen weiteren clamd ausführen möchten, bitte # kopieren Sie die Konfigurationsdatei, ändern Sie die LogFile-Variable und führen Sie # den Daemon mit der --config-file-Option aus). Deshalb sollten Sie diese Option nicht auskommentieren. #LogFileUnlock # Maximale Größe der Protokolldatei. Standard ist 1 Mb. # Wert von 0 deaktiviert das Limit. # Sie können 'M' oder 'm' für Megabyte (1M = 1m = 1048576 Bytes) # und 'K' oder 'k' für Kilobyte (1K = 1k = 1024 Bytes) verwenden. Um die Größe # in Bytes anzugeben, verwenden Sie einfach keine Modifikatoren. #LogFileMaxSize 2M # Protokollzeit mit jeder Nachricht. #LogTime # Verwenden Sie den Systemlogger (kann zusammen mit LogFile arbeiten). #LogSyslog # Aktivieren Sie das ausführliche Logging. #LogVerbose # Diese Option ermöglicht es Ihnen, die Prozess-ID des lauschenden # Daemons (Haupt-Thread) zu speichern. #PidFile /var/run/clamd.pid # Pfad zu einem Verzeichnis, das .db-Dateien enthält. # Standard ist das fest codierte Verzeichnis (meistens /usr/local/share/clamav, # es hängt von den Installationsoptionen ab). #DatabaseDirectory /var/lib/clamav # Der Daemon arbeitet im lokalen oder Netzwerkmodus. Der lokale Modus wird # aus Sicherheitsgründen empfohlen. # Pfad zum lokalen Socket. Der Daemon ändert nicht den Modus der # erstellten Datei (aus Portabilitätsgründen). Sie möchten es möglicherweise in einem Verzeichnis erstellen, # das nur für einen Benutzer zugänglich ist, der den Daemon ausführt. LocalSocket /tmp/clamd # Entfernen Sie das veraltete Socket nach unsauberem Herunterfahren. #FixStaleSocket # TCP-Portadresse. #TCPSocket 3310 # TCP-Adresse. # Standardmäßig binden wir an INADDR_ANY, wahrscheinlich nicht weise. # Aktivieren Sie das Folgende, um einen gewissen Schutz # vor der Außenwelt zu bieten. #TCPAddr 127.0.0.1 # Maximale Länge, die die Warteschlange der ausstehenden Verbindungen wachsen kann. # Standard ist 15. #MaxConnectionQueueLength 30 # Wenn aktiviert, wird der Eingabestrom (siehe STREAM-Befehl) vor dem # Scannen auf die Festplatte gespeichert - dies ermöglicht das Scannen innerhalb von Archiven. #StreamSaveToDisk # Schließen Sie die Verbindung, wenn dieses Limit überschritten wird. #StreamMaxLength 10M # Maximale Anzahl von Threads, die gleichzeitig ausgeführt werden. # Standard ist 5, und es sollte für einen typischen Arbeitsplatz ausreichen. # Möglicherweise müssen Sie die Anzahl der Threads für einen Server erhöhen. #MaxThreads 10 # Thread (Scanner - Einzelaufgabe) wird nach dieser Zeit (Sekunden) gestoppt. # Standard ist 180. Wert von 0 deaktiviert den Timeout. SICHERHEITSHINWEIS: Erhöhen Sie den # Timeout, anstatt ihn zu deaktivieren. #ThreadTimeout 500 # Maximale Tiefe, in der die Verzeichnisse gescannt werden. MaxDirectoryRecursion 15 # Folgen Sie einem Verzeichnis-Symlink. # SICHERHEITSHINWEIS: Sie sollten das Verzeichnis-Rekursionslimit aktiviert haben, um # potenzielle Probleme zu vermeiden. #FollowDirectorySymlinks # Folgen Sie regulären Datei-Symlinks. #FollowFileSymlinks # Führen Sie interne Überprüfungen durch (z.B. überprüfen Sie die Integrität der Datenbankstrukturen) # Standardmäßig überprüft sich clamd alle 3600 Sekunden (1 Stunde). #SelfCheck 600 # Führen Sie einen Befehl aus, wenn ein Virus gefunden wird. Im Befehlsstring werden %v und %f # durch den Virusnamen und den infizierten Dateinamen ersetzt. # # SICHERHEITSHINWEIS: Stellen Sie sicher, dass der Virusereignisbefehl nicht ausgenutzt werden kann, # z.B. durch die Verwendung eines speziellen Dateinamens, wenn %f verwendet wird. # Verwenden Sie immer einen vollständigen Pfad zum Befehl. # Löschen/verschieben Sie niemals Dateien mit dieser Direktive ! #VirusEvent /usr/local/bin/send_sms 123456789 "VIRUS ALERT: %f: %v" # Führen Sie als ausgewählter Benutzer aus (clamd muss von root gestartet werden). # Standardmäßig werden keine Berechtigungen entzogen. User clamav # Initialisieren Sie den Zugriff auf die zusätzlichen Gruppen (für alle Gruppen in /etc/group # wird der Benutzer hinzugefügt. clamd muss von root gestartet werden). #AllowSupplementaryGroups # Gehen Sie nicht in den Hintergrund. Nützlich beim Debuggen. #Foreground # Aktivieren Sie Debug-Nachrichten in libclamav. #Debug ## ## Mail-Unterstützung ## # Kommentieren Sie diese Option aus, wenn Sie planen, Mail-Dateien zu scannen. ScanMail ## ## Archiv-Unterstützung ## # Kommentieren Sie diese Zeile aus, um das Scannen der Archive zu deaktivieren. ScanArchive # Standardmäßig ist der integrierte RAR-Dekompressor deaktiviert, da der Code # schrecklich leckt, es ist jedoch wahrscheinlich eine gute Idee, ihn zu aktivieren. #ScanRAR # Optionen unten schützen Ihr System vor Denial-of-Service-Angriffen # mit Archivbomben. # Dateien in Archiven, die größer als dieses Limit sind, werden nicht gescannt. # Wert von 0 deaktiviert das Limit. # WARNUNG: Aufgrund der unrarlib-Implementierung werden ganze Dateien (eine nach der anderen) in RAR # Archiven in den Speicher dekomprimiert. Deshalb deaktivieren Sie niemals # dieses Limit (aber Sie können es natürlich erhöhen!) ArchiveMaxFileSize 10M # Archive werden rekursiv gescannt - z.B. wenn ein Zip-Archiv eine RAR-Datei enthält, # wird die RAR-Datei ebenfalls dekomprimiert (aber nur, wenn das Rekursionslimit auf # mindestens 1 gesetzt ist). Mit dieser Option können Sie die Rekursionsebene festlegen. # Wert von 0 deaktiviert das Limit. ArchiveMaxRecursion 5 # Anzahl der Dateien, die innerhalb des Archivs gescannt werden sollen. # Wert von 0 deaktiviert das Limit. ArchiveMaxFiles 1000 # Verwenden Sie einen langsameren Dekomprimierungsalgorithmus, der weniger Speicher benötigt. Diese Option # betrifft nur den bzip2-Dekompressor. #ArchiveLimitMemoryUsage ## ## Clamuko-Einstellungen ## WARNUNG: Dies ist experimentelle Software. Es ist sehr wahrscheinlich, dass sie ## Ihr System zum Absturz bringt !!! ## # Aktivieren Sie Clamuko. Dazuko (/dev/dazuko) muss konfiguriert und ausgeführt werden. #ClamukoScanOnLine # Setzen Sie die Zugriffsmaske für Clamuko. ClamukoScanOnOpen ClamukoScanOnClose ClamukoScanOnExec # Legen Sie die Include-Pfade fest (alle Dateien in ihnen werden gescannt). Sie können mehrere # ClamukoIncludePath-Optionen haben, aber jedes Verzeichnis muss in einer separaten Option hinzugefügt werden. # Alle Unterverzeichnisse werden ebenfalls gescannt. ClamukoIncludePath /home #ClamukoIncludePath /students # Legen Sie die Ausschluss-Pfade fest. Alle Unterverzeichnisse sind ebenfalls ausgeschlossen. #ClamukoExcludePath /home/guru # Begrenzen Sie die Dateigröße, die gescannt werden soll (wahrscheinlich möchten Sie Ihre Filmdateien nicht scannen ;)) # Wert von 0 deaktiviert das Limit. 1 Mb sollte in Ordnung sein. ClamukoMaxFileSize 1M # Aktivieren Sie die Archivunterstützung. Es verwendet die Limits aus dem clamd-Abschnitt. # (Diese Option hängt nicht von ScanArchive ab, Sie können die Archivunterstützung # in clamd deaktiviert haben). # ClamukoScanArchive |
Jetzt müssen wir ein Init-Skript für ClamAV erstellen ( /etc/init.d/clamd):
| #!/bin/bash TMPDIR=/tmp PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin case "$1" in start) echo "Starte ClamAV..." if [ -S /tmp/clamd ]; then echo "ClamAV läuft bereits!" else /usr/local/bin/freshclam -d -c 10 --datadir=/usr/local/share/clamav /usr/local/sbin/clamd fi echo "ClamAV läuft jetzt!" ;; stop) echo "Fahre ClamAV herunter..." array=(`ps ax | grep -iw '/usr/local/bin/freshclam' | grep -iv 'grep' \ | awk '{print $1}' | cut -f1 -d/ | tr ' ' ' '`) element_count=${#array[@]} index=0 while [ "$index" -lt "$element_count" ] do kill -9 ${array[$index]} let "index = $index + 1" done array=(`ps ax | grep -iw '/usr/local/sbin/clamd' | grep -iv 'grep' \ | awk '{print $1}' | cut -f1 -d/ | tr ' ' ' '`) element_count=${#array[@]} index=0 while [ "$index" -lt "$element_count" ] do kill -9 ${array[$index]} let "index = $index + 1" done if [ -S /tmp/clamd ]; then rm -f /tmp/clamd fi echo "ClamAV gestoppt!" ;; restart) $0 stop && sleep 3 $0 start ;; *) echo "Verwendung: $0 {start|stop|restart}" exit 1 esac exit 0 |
chmod 755 /etc/init.d/clamd
Jetzt starten wir ClamAV:
/etc/init.d/clamd start
Wenn Sie ps aux ausführen, werden Sie jetzt einige clamd-Prozesse (die das Socket /tmp/clamd verwenden) und einen freshclam-Prozess bemerken, der für das Abrufen der neuesten Virensignatur-Updates verantwortlich ist. Sie befinden sich unter /usr/local/share/clamav. Der Befehl **
/usr/local/bin/freshclam -d -c 10 –datadir=/usr/local/share/clamav
in unserem clamd-Init-Skript stellt sicher, dass freshclam 10 Mal pro Tag nach neuen Signaturen sucht.
Um ClamAV beim Booten zu starten, führen Sie Folgendes aus:
ln -s /etc/init.d/clamd /etc/rc2.d/S20clamd
ln -s /etc/init.d/clamd /etc/rc3.d/S20clamd
ln -s /etc/init.d/clamd /etc/rc4.d/S20clamd
ln -s /etc/init.d/clamd /etc/rc5.d/S20clamd
ln -s /etc/init.d/clamd /etc/rc0.d/K20clamd
ln -s /etc/init.d/clamd /etc/rc1.d/K20clamd
ln -s /etc/init.d/clamd /etc/rc6.d/K20clamd
3 Installieren von trashscan
trashscan ist ein Shell-Skript, das die Verbindung zwischen procmail und ClamAV herstellt (d.h. wenn eine E-Mail eintrifft, wird procmail aufgerufen, das selbst trashscan aufruft, um die E-Mail von ClamAV auf Viren scannen zu lassen). Es wird mit ClamAV geliefert.
*cd /tmp/clamav-0.67/contrib/trashscan
tar xvfz trashscan-0.08.tar.gz
cd trashscan-0.08
- cp -pf trashscan /usr/local/sbin/
Jetzt müssen wir einige Variablen im Abschnitt „Settinx“ von /usr/local/sbin/trashscan anpassen. Meine Einstellungen sind wie folgt:
| #!/bin/bash # # TrashScan v0.08; Scannen Sie E-Mails auf Viren # ZapCoded von Trashware; 13.10.2002 # E-Mail: [email protected] # Web: http://trashware.mirrorz.com # PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin # --------------------------------------- Begin Settinx ---------------------------------------- # SCANDIR=$HOME/tmp # Temp-Verzeichnis für Virenscans. # Sicherheit: Definieren Sie hier keine öffentlich # zugänglichen Verzeichnisse !!! # $HOME/tmp sollte in Ordnung sein. #DECODER=metamail # Decoder: "metamail" oder "uudeview" #DECODPRG=metamail # Absoluter Pfad zum Decoder: metamail DECODER=uudeview # Decoder: "metamail" oder "uudeview" DECODPRG=/usr/local/bin/uudeview # Absoluter Pfad zum Decoder: uudeview VSCANPRG=/usr/local/bin/clamscan # Absoluter Pfad zum Virenscanner VSCANOPT="--quiet --tempdir=$HOME/tmp --recursive --max-files=500 \ --max-space=30M --unzip=/usr/bin/unzip --unrar=/usr/bin/unrar \ --unarj=/usr/bin/unarj --zoo=/usr/bin/zoo --lha=/usr/bin/lha \ --jar=/usr/bin/unzip --tar=/bin/tar --tgz=/bin/tar" # Parameter für den Virenscanner. # Sicherheit: Wählen Sie keine öffentlich # zugänglichen Verzeichnisse für die # --tempdir-Definition !!! # --tempdir=$HOME/tmp sollte in Ordnung sein. VSCANVEX=1 # Exitcode des Virenscanners, wenn ein # Virus gefunden wurde VSCANSUSP=mail.virus # Datei zum Speichern verdächtiger E-Mails (siehe # procmail.trashscan) FORMAIL=formail # Absoluter Pfad zu formail PROCMAIL=procmail # Absoluter Pfad zu procmail SENDMAIL=sendmail # Absoluter Pfad zu sendmail CAT=cat # Absoluter Pfad zu cat GREP=grep # Absoluter Pfad zu grep LOGGER=logger # Absoluter Pfad zu logger LOGPRIO=mail.warn # Protokollebene für Logger MKDIR=mkdir # Absoluter Pfad zu mkdir RM=rm # Absoluter Pfad zu rm SED=sed # Absoluter Pfad zu sed [email protected] # Empfänger von Viruswarnmeldungen [email protected] # Absender von Viruswarnmeldungen [email protected] # Person, die kontaktiert werden soll (erscheint im # E-Mail-Text der Viruswarnung) # ---------------------------------------- End Settinx ---------------------------------------- # |
Bitte beachten Sie, dass ich die PATH-Variable am Anfang des Skripts gesetzt habe:
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
Dies ermöglicht es mir, den absoluten Pfad der meisten Programme, die von trashscan benötigt werden (z.B. formail, procmail, sendmail), nicht anzugeben, solange sie im PATH sind.
VSCANOPT gibt die Pfade zu einigen Programmen an, die benötigt werden, um Dateien in verschiedenen Kompressionsformaten zu entpacken (wenn eine E-Mail mit einem komprimierten Anhang eintrifft, z.B. zip, tar.gz). Sie benötigen nicht alle Programme dort, aber ich empfehle, dass Sie mindestens unzip und tar installiert haben (wenn nicht, verwenden Sie http://www.rpmfind.net, um nach unzip und tar zu suchen, wenn Sie eine rpm-basierte Distribution verwenden, und installieren Sie die entsprechenden Pakete mit
rpm -ivh name-of-package.rpm
Wenn Sie Debian verwenden, müssen Sie nur
apt-get install unzip tar
).
Stellen Sie sicher, dass Sie die richtige E-Mail-Adresse der Person angeben, die eine Benachrichtigung erhält, wenn ein Virus gefunden wird.
4 Installieren von uudeview
trashscan benötigt ein Programm, um E-Mail-Nachrichten zu dekodieren. In den obigen trashscan-Einstellungen habe ich angegeben, dass trashscan uudeview verwenden soll, das wir jetzt installieren werden.
cd /tmp
wget http://www.fpx.de/fp/Software/UUDeview/download/uudeview-0.5.19.tar.gz
tar xvfz uudeview-0.5.19.tar.gz
cd uudeview-0.5.19
./configure
make
make install
5 Konfigurieren von Procmail
procmail ist normalerweise in den meisten Distributionen standardmäßig installiert, daher werde ich die Installation von procmail hier nicht behandeln. Führen Sie aus
which procmail
um herauszufinden, wo sich Ihr procmail befindet (in meinem Fall ist es /usr/bin/procmail).
Ich werde jetzt zeigen, wie man procmail für den Benutzer testuser konfiguriert, der sein Home-Verzeichnis unter /home/www/web1/user/testuser hat. Stellen Sie sicher, dass keines der Verzeichnisse in diesem Pfad ( /home, /home/www, /home/www/web1, /home/www/web1/user, /home/www/web1/user/testuser) für Gruppen oder die Öffentlichkeit beschreibbar ist. Sie sollten die Berechtigungen rwxr-xr-x (oder 755) haben. Andernfalls könnte procmail sich weigern, richtig zu arbeiten!
Zuerst müssen wir die Datei /home/www/web1/user/testuser/.forward erstellen, damit procmail aufgerufen wird, wenn eine E-Mail für testuser eintrifft. Sie hat den folgenden Inhalt:
| "|/usr/bin/procmail -f-" |
chown testuser /home/www/web1/user/testuser/.forward
chmod 600 /home/www/web1/user/testuser/.forward
Jetzt erstellen wir die Datei /home/www/web1/user/testuser/.procmailrc. Dies ist die Datei, in der procmail nach Rezepten (d.h. Befehlen, die ausgeführt werden sollen) sucht. Aus Gründen der Klarheit fügen wir einfach unsere Hauptrezepte in diese Datei ein:
| ## MAILDIR=$HOME/Maildir/ ## DEFAULT=$MAILDIR INCLUDERC=/home/www/web1/user/testuser/.antivirus.rc INCLUDERC=/home/www/web1/user/testuser/.html-trap.rc INCLUDERC=/home/www/web1/user/testuser/.spamassassin.rc |
( Bitte beachten Sie: Kommentieren Sie die ersten beiden Zeilen aus, wenn Sie Maildir für Ihre E-Mails verwenden, d.h. Ihre E-Mails werden unter /home/www/web1/user/testuser/Maildir/ anstelle von /var/spool/mail gespeichert.)
Unser erstes Rezept ist /home/www/web1/user/testuser/.antivirus.rc:
| # # Procmail-Konfiguration für TrashScan: ZapCoded von Trashware; 13.10.2002 # # [ ... ] # ------------------------------------------------------------------------------------- # # Virus-Scan-Bereich ... # # ------------------------------------------------------------------------------------- # # 1. Führen Sie TrashScan aus :0 * multipart * !^X-Virus-Scan: | /usr/local/sbin/trashscan # 2. Filtern Sie markierte Virus-E-Mails :0: * ^X-Virus-Scan: Verdächtig /dev/null |
/home/www/web1/user/testuser/.html-trap.rc wird weiter unten behandelt, sodass unser zweites Rezept /home/www/web1/user/testuser/.spamassassin.rc ist:
| # SpamAssassin-Beispiel-procmailrc # # Leiten Sie die E-Mail durch spamassassin (ersetzen Sie 'spamassassin' durch 'spamc', # wenn Sie die spamc/spamd-Kombination verwenden) # Die Bedingungszeile stellt sicher, dass nur Nachrichten kleiner als 250 kB # (250 * 1024 = 256000 Bytes) von SpamAssassin verarbeitet werden. Die meisten Spam # ist nicht größer als ein paar k und mit großen Nachrichten zu arbeiten kann # SpamAssassin in die Knie zwingen. :0fw * < 256000 | /usr/local/bin/spamassassin --prefs-file=/home/www/web1/user/testuser/.user_prefs # Alle E-Mails, die als Spam gekennzeichnet sind (z.B. mit einem Punktestand höher als der festgelegte Schwellenwert) # werden nach "/dev/null" verschoben. #:0: #* ^X-Spam-Status: Ja #/dev/null # Umgehen Sie den Procmail-Fehler: Jede Ausgabe auf stderr führt dazu, dass das "F" in "From" # verloren geht. Dies wird wieder hinzugefügt. :0 * ^^rom[ ] { LOG="*** Dropped F off From_ header! Fixing up. " :0 fhw | sed -e '1s/^/F/' } |
Dies führt dazu, dass alle E-Mails akzeptiert werden, selbst SPAM (der als SPAM markiert wird und vom E-Mail-Client des Benutzers sortiert werden kann). Diese Strategie wird in der ersten Phase empfohlen, bis Sie sicher sind, dass SpamAssassin Ihre E-Mails korrekt identifiziert. Wenn Sie SPAM löschen möchten, verwenden Sie diese .spamassassin.rc stattdessen:
| # SpamAssassin-Beispiel-procmailrc # # Leiten Sie die E-Mail durch spamassassin (ersetzen Sie 'spamassassin' durch 'spamc', # wenn Sie die spamc/spamd-Kombination verwenden) # Die Bedingungszeile stellt sicher, dass nur Nachrichten kleiner als 250 kB # (250 * 1024 = 256000 Bytes) von SpamAssassin verarbeitet werden. Die meisten Spam # ist nicht größer als ein paar k und mit großen Nachrichten zu arbeiten kann # SpamAssassin in die Knie zwingen. :0fw * < 256000 | /usr/local/bin/spamassassin --prefs-file=/home/www/web1/user/testuser/.user_prefs # Alle E-Mails, die als Spam gekennzeichnet sind (z.B. mit einem Punktestand höher als der festgelegte Schwellenwert) # werden nach "/dev/null" verschoben. :0: * ^X-Spam-Status: Ja /dev/null # Umgehen Sie den Procmail-Fehler: Jede Ausgabe auf stderr führt dazu, dass das "F" in "From" # verloren geht. Dies wird wieder hinzugefügt. :0 * ^^rom[ ] { LOG="*** Dropped F off From_ header! Fixing up. " :0 fhw | sed -e '1s/^/F/' } |
Als nächstes erstellen wir die Datei /home/www/web1/user/testuser/.user_prefs, die die SpamAssassin-Einstellungen von testuser enthalten wird:
| # SpamAssassin-Benutzereinstellungsdatei. Siehe 'perldoc Mail::SpamAssassin::Conf' # für Details, was angepasst werden kann. #* #* Hinweis: Diese Datei wird von SpamAssassin nicht gelesen, bis sie in das Benutzerverzeichnis #* kopiert wird. Zur Laufzeit, wenn ein Benutzer noch keine Einstellungen in seinem Home-Verzeichnis hat, #* wird sie für ihn kopiert, sodass er eine personalisierte #* Anpassung vornehmen kann. Wenn Sie Änderungen an den siteweiten Standardwerten vornehmen möchten, #* erstellen Sie stattdessen eine Datei in /etc/spamassassin oder /etc/mail/spamassassin. ########################################################################### # Wie viele Treffer, bevor eine E-Mail als Spam betrachtet wird. required_hits 5.0 rewrite_subject 1 subject_tag *SPAM* |
SpamAssassin führt eine Reihe von Tests für jede E-Mail durch, um zu bestimmen, ob sie SPAM ist oder nicht. Jeder Test weist dieser E-Mail (wenn der Test positiv ist) eine bestimmte Anzahl von Punkten zu. Die Punkte werden addiert. required_hits ist die Anzahl der Punkte, ab der die E-Mail als SPAM betrachtet wird. 5.0 ist ein angemessener Wert, um zu beginnen.
Wenn rewrite_subject 1 ist, wird der Betreff der E-Mail mit dem Wert von subject_tag gekennzeichnet, wenn die E-Mail als SPAM betrachtet wird, sodass die E-Mail vom E-Mail-Client von testuser sortiert werden kann, wenn er die entsprechende .spamassassin.rc oben gewählt hat.
6 Konfigurieren des E-Mail-Sanitizers
Der E-Mail-Sanitizer ( http://www.impsec.org/email-tools/procmail-security.html) ist eine Sammlung von Procmail-Rezepten, die eine Art Inhaltsfilter bilden. Z.B. kann er bösartigen Javascript-Code in HTML-E-Mails deaktivieren und verdächtige Anhänge umbenennen (z.B. example.exe wird in example.12345DEFANGED-exe umbenannt, sodass sie nicht durch einfaches Doppelklicken unter Windows geöffnet werden kann. Sie muss zuerst auf die Festplatte gespeichert und dann bewusst umbenannt werden. So wird der Empfänger gezwungen, darüber nachzudenken, ob er den Anhang öffnen sollte.).
cd /tmp
wget http://www.impsec.org/email-tools/html-trap.procmail.gz
gunzip html-trap.procmail.gz
echo ‘PATH=”/usr/bin:$PATH:/usr/local/bin”‘ > /home/www/web1/user/testuser/.html-trap.rc
echo ‘SHELL=/bin/sh’ >> /home/www/web1/user/testuser/.html-trap.rc
cat html-trap.procmail >> /home/www/web1/user/testuser/.html-trap.rc
7 Testen Sie Ihre Konfiguration
Sie können jetzt Ihre Konfiguration testen, indem Sie .exe-Anhänge, Beispiel-SPAM und Beispielviren (wenn Sie welche haben) an testuser senden.
Sehen Sie sich die Kopfzeile der empfangenen E-Mails an. Sie sollte die folgenden Zeilen enthalten:
X-Security: MIME-Header auf server1.example.com bereinigt. Siehe http://www.impsec.org/email-tools/sanitizer-intro.html für Details. $Revision: 1.140 $Date: 2004-02-11 20:47:43-08
X-Virus-Scan: Gescannt von TrashScan v0.08, das auf server1.example.com läuft
X-Spam-Checker-Version: SpamAssassin 2.63 (2004-01-11) auf server1.example.com
Links
SpamAssassin: http://www.spamassassin.org/
ClamAV: http://www.clamav.net/
Procmail: http://www.procmail.org/
E-Mail-Sanitizer: http://www.impsec.org/email-tools/procmail-security.html
Ursprünglicher Standort dieses Dokuments:
http://www.falkotimme.com/howtos/spamassassin_clamav_procmail/
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.