Spamassassin+Pyzor+Razor2 (ohne Plesk Lizenz)

Version: 1.2
Getestet: Ubuntu 8.04 LTS, Plesk 9.x

Nicht jede Plesk Lizenz beinhaltet auch eine Lizenz für Spamassassin. Spamassassin und die verteilten Spamfilter Razor und Pyzor funktionieren jedoch auch hervoragend ohne die direkte Integration in Plesk. 99% der hier gelisteten Konfiguration ist jedoch auch in jedem anderen Spamassassin Szenario gültig.

Installation Spamassassin + Razor + Pyzor

Folgende Pakete installieren
spamc
spamassassin
spamd
razor
pyzor
Folgende Perl Module überprüfen und ggf. installieren
Digest::SHA1
HTML::Parser
Net::DNS
MIME::Base64
DB_File
Net::SMTP
Mail::SPF
Mail::SPF::Query
IP::Country::Fast
Razor2::Client::Agent
Net::Ident
IO::Socket::INET6
IO::Socket::SSL
Compress::Zlib
Time::HiRes
Mail::DomainKeys
Mail::DKIM
DBI
Getopt::Long
LWP::UserAgent
HTTP::Date
Archive::Tar
IO::Zlib
Encode::Detect
Qmail stoppen und die Datei qmail-queue umbenennen
/etc/init.d/qmail stop
cd /var/qmail/bin
mv qmail-queue qmail-queue.orig
Das Script qmail-queue anlegen und Qmail starten
#!/bin/sh
if [ -z $SMTPAUTHUSER ] ; then
  /usr/bin/spamc | /var/qmail/bin/qmail-queue.orig
else
  /var/qmail/bin/qmail-queue.orig
fi
chmod 2555 qmail-queue
chown mhandlers-user:popuser qmail-queue
/etc/init.d/qmail start

Pyzor konfigurieren

pyzor --homedir /etc/spamassassin discover
chmod 644 /etc/spamassassin/servers

Spamassassin konfigurieren

Diese Konfiguration gilt global für alle Domains und Mailadressen. Es ist jedoch auch möglich, für jede Mailbox spezifisch eine Konfiguration zu hinterlegen. Es wird ein Cron-Job aktiviert, welcher täglich aktuelle Spamassassin Rules herunterlädt und einbindet.

Spamassassin aktivieren

/etc/default/spamassassin

ENABLED=1
...

OPTIONS="--nouser-config --create-prefs --max-children 4 --helper-home-dir -s /var/log/spamd.log"
...
CRON=1
Logrotate anlegen

/etc/logrotate.d/spamassassin

/var/log/spamd.log {
        weekly
        missingok
        rotate 12
        compress
        delaycompress
        notifempty
        create 640 root root
        sharedscripts
        postrotate
        /etc/init.d/spamassassin reload >/dev/null
        endscript
}
Globale Spamassassin Config

/etc/spamassassin/local.cf

rewrite_header Subject *****SPAM*****
required_score 5.5
lock_method flock
use_terse_report 1
report_safe 1
trusted_networks xxx.xxx.xxx.xxx.

# Autowhitelist laeuf manchmal Amok. Erstmal aus...
use_auto_whitelist 0
auto_whitelist_path /var/spool/spamassassin/auto-whitelist

use_bayes 1
bayes_path /var/spool/spamassassin/bayes
bayes_file_mode 770
bayes_auto_learn 1
bayes_auto_learn_threshold_nonspam 0.1
bayes_auto_learn_threshold_spam 9.0
bayes_ignore_header X-Bogosity
bayes_ignore_header Return-Path
bayes_ignore_header Received
bayes_ignore_header X-Spam-Flag
bayes_ignore_header X-Spam-Status
bayes_ignore_header X-Spam-Flag
bayes_ignore_header X-Spam-Level
bayes_ignore_header X-purgate
bayes_ignore_header X-purgate-ID
bayes_ignore_header X-purgate-Ad
bayes_ignore_header X-GMX-Antispam
bayes_ignore_header X-Resent-For
bayes_ignore_header X-Resent-By
bayes_ignore_header X-Resent-To
bayes_ignore_header Resent-To
bayes_ignore_header Sender
bayes_ignore_header Precedence
bayes_ignore_header X-Antispam
bayes_ignore_header X-Sieve
bayes_ignore_header X-Spamcount
bayes_ignore_header X-Spamsensitivity
bayes_ignore_header To
bayes_ignore_header X-Sieve
bayes_ignore_header X-WEBDE-FORWARD


# Wenn der Score von Mails von Webmailern zu hoch ist
score HELO_DYNAMIC_IPADDR 1.5
score MIME_QP_LONG_LINE 1

use_razor2 1
razor_config /etc/razor/razor-agent.conf

use_pyzor 1
pyzor_options --homedir /etc/spamassassin

clear_report_template
report Diese Mail wurde von der Installation des SpamAssassin Spam-Filters als
report Spam erkannt. Sollte diese Nachricht zu Unrecht als Spam markiert worden sein,
report dann bitte diese Mail an postmaster@example.com weiterleiten (wenn moeglich
report als Anlage!). Vielen Dank!
report Die Originalnachricht ist dieser E-Mail als Anhang beigefuegt.
report
report Content analysis details: (_HITS_ points, _REQD_ required)
report
report
report " Pkt Regel Name Beschreibung"
report ---- ---------------------- --------------------------------------------------
report _SUMMARY_

clear_unsafe_report_template
unsafe_report Diese Nachricht ist nicht komplett in plain text gewesen, so dass es
unsafe_report evtl. gefaehrlich ist, sie zu oeffnen, da die Mail moeglicherweise
unsafe_report einen Virus enthalten koennte. Wer sie dennoch anschauen moechte, sollte
unsafe_report dafuer besser einen Editor verwenden!

# Whitelist Global
whitelist_from *@ebay.de
whitelist_from *@amazon.de
whitelist_from *@paypal.de

# Whitelist Mailinglisten
more_spam_to *@lists.example.com

# Whitelist from sent-mail
include /etc/spamassassin/sent-whitelist
Whitelist mit Addressen (ohne Duplikate) aus allen sent-mail Ordnern generieren
#!/bin/sh
# Extract list of email addresses from 'Sent' Folders to create
# spamassassin whitelist patterns

set +x

MBOX_DIR=/var/qmail/mailnames/
SENTMAIL=Maildir/.sent-mail/cur/*
SA_DIR=/etc/spamassassin

cd $MBOX_DIR
ls | while read DOMAIN_DIR
   do
      cd $MBOX_DIR/$DOMAIN_DIR
      ls | while read USER_DIR
         do
            cd $USER_DIR
            for x in `grep "^To:" $SENTMAIL |
               grep -o "[[:alnum:]\.\+\-\_]*@[[:alnum:]\.\-]*" |
               tr "A-Z" "a-z" |
               sort -u` ;
               do echo "whitelist_from $x" >> $SA_DIR/sent_whitelist.temp
            done
            cd ..
         done
   done
sort $SA_DIR/sent_whitelist.temp | uniq >> $SA_DIR/sent_whitelist
/etc/init.d/spamassassin reload

Spamassassin Rules

SA-Rules GPG Keys importieren
wget http://daryl.dostech.ca/sa-update/sare/GPG.KEY -O/tmp/gpg-dostech.key && sa-update --import /tmp/gpg-dostech.key
wget http://spamassassin.apache.org/updates/GPG.KEY -O/tmp/gpg-spamassassin.key && sa-update --import /tmp/gpg-spamassassin.key
SA-Rules anlegen

/etc/spamassassin/sa-update-channels.txt

updates.spamassassin.org
saupdates.openprotect.com
chickenpox.cf.sare.sa-update.dostech.net
70_sare_stocks.cf.sare.sa-update.dostech.net
70_sare_adult.cf.sare.sa-update.dostech.net
70_sare_spoof.cf.sare.sa-update.dostech.net
70_sare_bayes_poison_nxm.cf.sare.sa-update.dostech.net
70_sare_genlsubj_x30.cf.sare.sa-update.dostech.net
70_sare_oem.cf.sare.sa-update.dostech.net
70_sare_random.cf.sare.sa-update.dostech.net
70_sare_specific.cf.sare.sa-update.dostech.net
70_zmi_german.cf.zmi.sa-update.dostech.net
88_FVGT_Bayes_Poison.cf.sare.sa-update.dostech.net
88_FVGT_Tripwire.cf.sare.sa-update.dostech.net
88_FVGT_rawbody.cf.sare.sa-update.dostech.net
88_FVGT_subject.cf.sare.sa-update.dostech.net
88_FVGT_Bayes_Poison.cf.sare.sa-update.dostech.net
SA-Rules Update manuell ausführen
sa-update -D --channelfile /etc/spamassassin/sa-update-channels.txt
SA-Rules Cronjob ändern

/etc/cron.daily/spamassassin

...
# Update
sa-update --channelfile /etc/spamassassin/sa-update-channels.txt --gpgkey 856AA88A --gpgkey 5244EC45 || exit 0
...
Spamassassin starten
/etc/init.d/spamassassin restart

Spamassassin Bayes Filter anlernen

Mails, welche nicht als Spam markiert werden, können beispielsweise in einen Imap Ordner verschoben und dann zum Anlernen des Spamassassin Bayes Filter verwendet werden. Es muss der Pfad zur Mailbox, bzw. dem entsprechenden Ordner angegeben werden.

Spam anlernen
sa-learn --spam --progress /var/qmail/mailnames/<domain>/<account>/Maildir/.Spamtraining/cur/* >> /var/log/messages 2>&1
Ham (Non-Spam) anlernen
sa-learn --ham --progress /var/qmail/mailnames/<domain>/<account>/Maildir/.Hamtraining/cur/* >> /var/log/messages 2>&1
Mail aus Bayes Datenbank entfernen
sa-learn --forget --progress /var/qmail/mailnames/<domain>/<account>/Maildir/.SpamfilterReset/cur/* >> /var/log/messages 2>&1
Bayes Filter Journal und Datenbank synchronisieren
sa-learn --sync
Bayes Filter Datenbank sichern
sa-learn --backup > /backup/sa-learn.db-dump
Bayes Statistik ausgeben

Spalten: Wahrscheinlichkeit | Spam | Ham | Timestamp | Token-Hash

sa-learn --dump data | sort | more

CC-GNU GPL | CC-by

maec.de