Spam-Filter · 13 min read · Dec 25, 2025

Der perfekte SpamSnake - Ubuntu Jeos 10.10 Maverick Meerkat - Seite 3

8. Baruwa

Lade das benutzerdefinierte Baruwa deb-Paket herunter:

cd /usr/src  
wget baruwa_1.0.1-2sn_all.deb Aktualisiert 021811  
wget baruwa-doc_1.0.1-2_all.deb  
gdebi baruwa*.deb

Du wirst aufgefordert, die Baruwa-Datenbank für das Logging einzurichten, einschließlich eines Benutzernamens und Passworts, die von den Baruwa-Skripten verwendet werden. Du wirst auch aufgefordert, die Admin-Benutzerinformationen für das Baruwa-Frontend einzurichten.

vi /usr/share/pyshared/baruwa/settings.py

Ändere die Quarantäne-Host-URL nach deinem Belieben:

QUARANTINE_REPORT_HOSTURL = 'http://baruwa-alpha.local'
vi /opt/MailScanner/etc/MailScanner.conf

Du musst sicherstellen, dass die folgenden Optionen gesetzt sind:

Always Looked Up Last = &BaruwaSQL
Is Definitely Not Spam = &BaruwaWhitelist
Is Definitely Spam = &BaruwaBlacklist
Required SpamAssassin Score = &BaruwaLowScore
High SpamAssassin Score = &BaruwaHighScore 

Upgrade von Baruwa

*Hinweis: Dieser Abschnitt ist nur für diejenigen, die eine ältere Version von Baruwa ausführen. Überspringe dies, wenn du eine Neuinstallation durchführst.

Lade das neueste Baruwa deb-Paket herunter:

cd /usr/src  
wget baruwa_1.0.2-4sn_all.deb Aktualisiert 052011  
wget baruwa-doc_1.0.2-4_all.deb  
gdebi baruwa*.deb

Wenn du aufgefordert wirst, die MySQL-Datenbank einzurichten, wähle “nein”. Wir werden die aktuelle Datenbank und die Einstellungen wiederverwenden.

Stelle sicher, dass /usr/share/pyshared/baruwa/settings.py mit den richtigen Datenbankinformationen eingerichtet ist, bevor du dich verbindest, andernfalls wird deine Verbindung fehlschlagen.

vi /usr/share/pyshared/baruwa/settings.py
DATABASE_ENGINE = 'mysql'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' oder 'oracle'.
DATABASE_NAME = 'baruwa'             # Oder Pfad zur Datenbankdatei, wenn sqlite3 verwendet wird.
DATABASE_USER = 'baruwa'             # Wird nicht mit sqlite3 verwendet.
DATABASE_PASSWORD = 'password'         # Wird nicht mit sqlite3 verwendet.
DATABASE_HOST = ''             # Auf leere Zeichenfolge für localhost setzen. Wird nicht mit sqlite3 verwendet.
DATABASE_PORT = ''             # Auf leere Zeichenfolge für Standard setzen. Wird nicht mit sqlite3 verwendet.

*Hinweis: Aufgrund einiger kleiner Upgrade-Konflikte müssen diese Schritte möglicherweise unternommen werden, um Baruwa korrekt zu aktualisieren.

Wenn /opt/MailScanner entfernt wurde:

ln -s /opt/MailScanner-version /opt/MailScanner  
rm -r /etc/MailScanner  
ln -s /opt/MailScanner/etc /etc/MailScanner  
ln -s /opt/MailScanner/lib/MailScanner/CustomFunctions /etc/MailScanner

Stelle sicher, dass du deine Datenbankverbindungszeichenfolge in /etc/MailScanner/CustomFunctions/*.pm-Dateien aktualisierst.

Führe schließlich aus

manage.py syncdb

Starte Uwsgi und Nginx neu

/etc/init.d/uwsgi-python2.6 restart && /etc/init.d/nginx restart

Baruwa sollte auf 102-4sn aktualisiert werden.

Upgrade von Baruwa 102-4 auf 111-3sn

Installiere Rabbitmq-Server 2.2.0 und richte db/benutzer/passwort ein:

cd /usr/src  
wget http://ppa.launchpad.net/drizzle-developers/ppa/ubuntu/pool/main/r/rabbitmq-server/rabbitmq-server_2.2.0-1~maverick0_all.deb  
gdebi rabbit*

vi /etc/rabbitmq/rabbitmq.conf, um an localhost zu binden:

export RABBITMQ_NODENAME=rabbit@localhost  
export RABBITMQ_NODE_IP_ADDRESS=127.0.0.1  
export ERL_EPMD_ADDRESS=127.0.0.1

Füge die Datenbankanmeldeinformationen hinzu:

rabbitmqctl add_user baruwa password  
rabbitmqctl add_vhost baruwa  
rabbitmqctl set_permissions -p baruwa baruwa ".*" ".*" ".*"

Starte rabbitmq-server neu:

/etc/init.d/rabbitmq-server restart

Füge Quellen für Baruwa 1.1.1-3 hinzu und installiere Abhängigkeiten:

wget -O - http://apt.baruwa.org/baruwa-apt-keys.gpg | apt-key add -

vi /etc/apt/sources.list

#baruwa  
deb http://apt.baruwa.org/ubuntu maverick main

Installiere Abhängigkeiten:

apt-get update  
apt-get install python-django-celery python-importlib

*Hinweis: Der obige Befehl sollte alle Abhängigkeiten für Baruwa installieren.

Lade und installiere Baruwa1.1.1-3sn:

mkdir /usr/src/baruwa1113 && cd /usr/src/baruwa1113  
wget https://docs.google.com/open?id=0B9cN15Q3pKnwY2YyMmMwOTQtNGJkMi00ZDc2LWFjMjMtY2UxMzFlYWY5Mzk2  
mv open* baruwa_1.1.1-3sn_all.deb  
wget https://docs.google.com/open?id=0B9cN15Q3pKnwODk2OGViYmMtMGZmYS00NmJjLTkwZWUtNTJjYTQ1YzAzOTg1  
mv open* baruwa-doc_1.1.1-3sn_all.deb  
gdebi baruwa_1.1.1-3sn_all.deb  
gdebi baruwa-doc_1.1.1-3sn_all.deb

*Hinweis: Installiere die Version der Dateien des Paketbetreuers, wenn du gefragt wirst. Wähle “nein”, um MySQL einzurichten, da wir von einer vorherigen Version aktualisieren.

Behebe den Symlink für settings.py:

rm –r /usr/share/pyshared/baruwa/settings.py && ln –s /etc/baruwa/settings.py /usr/share/pyshared/baruwa/

vi /etc/baruwa/settings.py und behebe die Baruwa-Datenbankkonfiguration:

DATABASES = {
    'default': {
        # Füge 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3'
        # oder 'oracle' hinzu.
        'ENGINE': 'django.db.backends.mysql',
        # Oder Pfad zur Datenbankdatei, wenn sqlite3 verwendet wird.
        'NAME': 'baruwa',
        # Wird nicht mit sqlite3 verwendet.
        'USER': 'baruwa',
        # Wird nicht mit sqlite3 verwendet.
        'PASSWORD': 'password',
        # Auf leere Zeichenfolge für localhost setzen. Wird nicht mit sqlite3 verwendet.
        'HOST': '',
        # Auf leere Zeichenfolge für Standard setzen. Wird nicht mit sqlite3 verwendet.
        'PORT': '',
    }
}

Aktualisiere die Baruwa-Datenbankstruktur:

baruwa-admin syncdb --noinput

Führe eine falsche Migration durch, um ein Upgrade zu initiieren:

for name in $(echo "accounts messages lists reports status config"); do  
baruwa-admin migrate $name 0001 --fake;  
done

Führe die normale Migration durch:

for name in $(echo "accounts messages lists reports status fixups config"); do  
baruwa-admin migrate $name;  
done

vi /etc/MailScanner/MailScanner.conf ändere Folgendes:

Run As Group = celeryd  
Quarantine User = celeryd  
Quarantine Group = celeryd

vi /etc/MailScanner/conf.d/baruwa.conf:

Quarantine User = postfix #(Oder was auch immer dein `Run As User` eingestellt ist)  
DB DSN = DBI:mysql:database=baruwa;host=localhost;port=3306 #setze auf gültigen DSN  
DB Username = baruwa # dein DB-Benutzername  
DB Password = password # dein DB-Passwort

vi /etc/init.d/mailscanner und ändere die Gruppeneinträge von www-data auf celeryd:

check_dir /var/spool/MailScanner ${user:-postfix} ${group:-celeryd}  
check_dir /var/lib/MailScanner ${user:-postfix} ${group:-celeryd}  
check_dir /var/run/MailScanner ${user:-postfix} ${group:-celeryd}  
check_dir /var/lock/subsys ${user:-root} ${group:-root} #Erforderlich zum Erstellen des Ordners  
check_dir /var/lock/subsys/MailScanner ${user:-postfix} ${group:-celeryd}  
start-stop-daemon --start --quiet --nicelevel $run_nice --chuid postfix:celeryd --exec $DAEMON --name $NAME -- $DAEMON_ARGS \

Füge den Benutzer celeryd zur Gruppe clamav hinzu:

usermod -a -G celeryd clamav

Ändere den Gruppenbesitz des Quarantäneordners und des Inhalts:

chgrp -R celeryd /var/spool/MailScanner/quarantine

Wenn du Signaturen verwenden möchtest, initialisiere sie, indem du Folgendes ausführst:

baruwa-admin initconfig

Andernfalls deaktiviere die Optionen in /etc/MailScanner/conf.d/baruwa.conf:

#Inline HTML Signature = htmlsigs.customize  
#Inline Text Signature = textsigs.customize  
#Signature Image Filename = sigimgfiles.customize  
#Signature Image ![](/files/f1a3d4ae-b9dd-4d8d-bef0-ce32003c43c2) Filename = sigimgs.customize

Starte dein System neu und genieße Baruwa 111-3sn.

9. Nginx mit Uwsgi

Lade Nginx und Uwsgi von Chris Leas Launchpad herunter und installiere beide:

wget https://launchpad.net/~chris-lea/+archive/nginx-devel/+files/nginx_1.0.0-1chl1%7Emaverick1_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/i686/i386/').deb  
wget https://launchpad.net/~chris-lea/+archive/uwsgi/+files/uwsgi-common_0.9.6.6-1chl1%7Emaverick1_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/i686/i386/').deb  
wget https://launchpad.net/~chris-lea/+archive/uwsgi/+files/uwsgi-extra_0.9.6.6-1chl1%7Emaverick1_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/i686/i386/').deb  
wget https://launchpad.net/~chris-lea/+archive/uwsgi/+files/uwsgi-python2.6_0.9.6.6-1chl1%7Emaverick1_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/i686/i386/').deb  
wget https://launchpad.net/~chris-lea/+archive/uwsgi/+files/uwsgi_0.9.6.6-1chl1%7Emaverick1_all.deb  
apt-get install libsctp1  
dpkg -i nginx*  
dpkg -i uwsgi*

Verwende die folgenden Konfigurationsdateien für uwsgi und nginx:

vi /etc/uwsgi/uwsgi-python2.6/baruwa.ini
[uwsgi]
   socket = /var/run/uwsgi/uwsgi-python2.6/baruwa/baruwa.sock
   pythonpath = /usr/share/pyshared/baruwa/
   master = true
   processes = 2
   env = DJANGO_SETTINGS_MODULE=baruwa.settings
   module = django.core.handlers.wsgi:WSGIHandler()
vi /etc/nginx/sites-available/baruwa.conf
   server {
      listen 80;
      server_name example.com;
      root /usr/share/pyshared/baruwa;
      #Hauptzugriffsprotokoll
      access_log  /var/log/nginx/access.log;
      #Hauptfehlerprotokoll
      error_log /var/log/nginx/error.log;
   location /static {
      root  /usr/share/pyshared/baruwa/static/;
      }
   # Statische Ressourcen
   location ~* ^.+\.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$
      {
      expires 30d;
      break;
      }
   location / {
      uwsgi_pass unix:///var/run/uwsgi/uwsgi-python2.6/baruwa/baruwa.sock;
      include uwsgi_params;
      }
   }

*Hinweis: Stelle sicher, dass du example.com in einen FQDN änderst, der zu deiner Einrichtung passt.

Entferne den Standard-virtuellen Host und kopiere uwsgi_params:

rm -r /etc/nginx/sites-enabled/default  
cp /usr/share/doc/uwsgi-extra/nginx/uwsgi_params /etc/nginx/uwsgi_params  
ln -s /etc/nginx/sites-available/baruwa.conf /etc/nginx/sites-enabled/baruwa.conf

Starte die Dienste neu:

/etc/init.d/uwsgi-python2.6 restart && /etc/init.d/nginx restart

Du solltest bereit sein.

Richte Cron-Jobs ein

Erstelle einen Symlink zu manage.py:

ln -s /usr/share/pyshared/baruwa/manage.py /usr/bin/manage.py  
chmod +x /usr/bin/manage.py

Füge Cron-Jobs hinzu:

@daily  manage.py cleanquarantine &> /dev/null  #Quarantäne bereinigen
@daily  manage.py sendquarantinereports &> /dev/null  #Quarantäneberichte senden
@monthly manage.py  dbclean &> /dev/null  #Maillog bereinigen
@weekly  manage.py updatesarules &> /dev/null  #Spamassassin-Regeln aktualisieren
@daily  manage.py sendpdfreports &> /dev/null #PDF-Berichte senden

Starte MailScanner:

/etc/init.d/mailscanner start

Rufe deinen Browser auf http://hostname_used, melde dich mit dem Admin-Benutzer und Passwort an und beginne zu arbeiten. Du kannst jetzt die Schnittstelle verwenden, um Benutzer hinzuzufügen und Nachrichten zu verarbeiten usw.

Einrichtungsanweisungen für Baruwa

Melde dich bei Baruwa als Admin an –> Einstellungen –> Konten –> Konto erstellen

Sobald du das Benutzerkonto erstellt hast, erhältst du zwei neue Registerkarten auf dieser Seite, Profileinstellungen und Zugeordnete Adressen.

Fülle die Profileinstellungen aus, wähle Domain-Admin und setze einen niedrigen Score von 6 und einen hohen Score von 9 und aktiviere die E-Mail-Scans.

Klicke auf das +-Zeichen unter Zugeordnete Adressen und gib eine Domain ein, für die der Benutzer der Admin ist, z. B. domain.com. domain.com wird unter Zugeordnete Adressen angezeigt.

Klicke auf domain.com und du wirst in die Domaininformationen weitergeleitet, wo du die SMTP-Zustellinformationen einrichten kannst. Füge den empfangenden SMTP-Server oder die IP des empfangenden SMTP-Servers hinzu. Wähle aktivieren und wenn du einen nicht standardmäßigen Port verwendest, setze ihn, andernfalls verwende 25. Sobald du das getan hast, kannst du auf die Testtaste neben dem Bleistift klicken, um zu sehen, ob dein empfangender Server die Verbindung akzeptiert.

Jetzt kannst du dich als Admin abmelden und dich als den Benutzer anmelden, den du gerade eingerichtet hast, und die E-Mails sollten zu fließen beginnen.

Die Einstellungen relay_recipients, relay_domains und transports in /etc/postfix/main.cf verwenden die Einträge, die du in Baruwa bereitgestellt hast. Daher ist keine Hash-Datei erforderlich.
Die zugehörigen Abfragen in den MySQL cf-Dateien ziehen das Ergebnis im richtigen Format und füttern es an Postfix zur Verwendung.

Wenn du jedoch einen Hash für eine deiner Konfigurationsdateien verwenden möchtest, verwende das folgende Beispiel, um /etc/postfix/main.cf einzurichten:

relay_recipient_maps = hash:/etc/postfix/relay_recipients

Natürlich müsstest du die Hash-Datei(en) erstellen, sie befüllen und postmap für Postfix verwenden.

*Hinweis: Wenn du am Ende einen Hash für relay_recipients für bestimmte Domains verwendest, musst du diese Domain aus /etc/postfix/access entfernen. Alle anderen Domänenbenutzer können weiterhin mit look_ahead überprüft werden.

Außerdem, wenn du MX-Abfragen durchführen musst, musst du /etc/postfix/mysql-transports.cf so bearbeiten, dass es aussieht:

concat('smtp:', mail_hosts.address, ':', port) 'transport'

Die [ und ] wurden entfernt, um MX-Abfragen zu ermöglichen.

Genieße Baruwa!

10. Installiere und konfiguriere SPF

Das Paket postfix-policyd-spf-perl hängt von den Perl-Modulen Mail::SPF und NetAddr::IP ab.

Wir müssen postfix-policyd-spf-perl von http://www.openspf.org/Software in das Verzeichnis /usr/src/ herunterladen und es in das Verzeichnis /usr/lib/postfix/ installieren:

cd /usr/src  
wget http://www.openspf.org/blobs/postfix-policyd-spf-perl-2.007.tar.gz  
tar xvfz postfix-policyd-spf-perl-2.007.tar.gz  
cd postfix-policyd-spf-perl-2.007  
cp postfix-policyd-spf-perl /usr/lib/postfix/policyd-spf-perl

Dann bearbeiten wir /etc/postfix/master.cf und fügen das folgende Stanza am Ende hinzu:

vi /etc/postfix/master.cf
policy unix - n n - - spawn
  user=nobody argv=/usr/bin/perl /usr/lib/postfix/policyd-spf-perl

(Die führenden Leerzeichen vor user=nobody sind wichtig, damit Postfix weiß, dass diese Zeile zur vorherigen gehört!)

*Hinweis: Wir haben bereits den Eintrag für main.cf mit dem Postfix-Setup-Skript hinzugefügt.

Starte dann Postfix neu:

/etc/init.d/postfix restart

Das war’s schon.

11. Installiere und konfiguriere FuzzyOcr

FuzzyOCR hat einige Voraussetzungen wie ocrad und gocr, die wir so installieren können:

apt-get install fuzzyocr netpbm gifsicle libungif-bin gocr ocrad libstring-approx-perl libmldbm-sync-perl libdigest-md5-perl libdbd-mysql-perl imagemagick tesseract-ocr  
wget http://users.own-hero.net/~decoder/fuzzyocr/fuzzyocr-3.6.0.tar.gz  
tar xvfz fuzzyocr-3.6.0.tar.gz  
cd FuzzyOcr-3.6.0/

FuzzyOCR ist jetzt installiert, jetzt müssen wir es konfigurieren. Die Konfigurationsdatei von FuzzyOCR ist /etc/spamassassin/FuzzyOcr.cf. In dieser Datei ist fast alles auskommentiert. Wir öffnen diese Datei jetzt und nehmen einige Änderungen vor:

vi /etc/spamassassin/FuzzyOcr.cf

Kommentiere die folgenden Zeilen aus:

focr_global_wordlist /etc/spamassassin/FuzzyOcr.words
focr_preprocessor_file /etc/spamassassin/FuzzyOcr.preps
focr_scanset_file /etc/spamassassin/FuzzyOcr.scansets<
focr_enable_image_hashing 3
focr_digest_db /etc/spamassassin/FuzzyOcr.hashdb
focr_db_hash /etc/spamassassin/FuzzyOcr.db
focr_db_safe /etc/spamassassin/FuzzyOcr.safe.db
focr_bin_helper convert, tesseract

Kommentiere den Pfad aus:

#focr_path_bin /usr/local/netpbm/bin:/usr/local/bin:/usr/bin

Wir werden die Bild-Hashes in einer MySQL-Datenbank speichern, um die Leistung zu verbessern, sodass Bilder, die wir bereits gescannt haben, nicht erneut gescannt werden, da OCR eine ressourcenintensive Aktivität ist.

Erstelle die MySQL-Datenbank:

Das SQL-Skript erstellt die Datenbank für FuzzyOCR:

mysql -p <  FuzzyOcr.mysql

Gewähre Berechtigungen:

mysql –u root –p  
GRANT ALL ON FuzzyOcr.* TO fuzzyocr@localhost IDENTIFIED BY 'password';

Aktualisiere FuzzyOcr.cf

vi /etc/spamassassin/FuzzyOcr.cf

Aktiviere die folgenden Zeilen:

focr_mysql_db FuzzyOcr  
focr_mysql_hash Hash  
focr_mysql_safe Safe  
focr_mysql_user fuzzyocr  
focr_mysql_pass fuzzyocr  
focr_mysql_host localhost  
focr_mysql_port 3306  
focr_mysql_socket /var/run/mysqld/mysqld.sock

*Hinweis: Stelle sicher, dass du die Zeilen in Rot änderst.

Richte den FuzzyOcr-Datenbankreiniger ein

vi /usr/sbin/fuzzy-cleanmysql
#!/usr/bin/perl
#Script zum Bereinigen von MySQL-Tabellen. Standardmäßig werden Daten in Safe für 1 Tag und in Hash für 10 Tage aufbewahrt.
#Fuzzyocr-cleanmysql
use Getopt::Long;
use DBI;
use MLDBM qw(DB_File Storable);
my %Files = (
    db_hash => '/var/lib/fuzzyocr/FuzzyOcr.db',
    db_safe => '/var/lib/fuzzyocr/FuzzyOcr.safe.db',
);
use DBI;
$database = "FuzzyOcr";
$hostname = "localhost";
$socket = "/var/run/mysqld/mysqld.sock";
$port = "3306";
$username = "fuzzyocr";
$password = 'password';
# Standardwerte
my $cfgfile = "/etc/spamassassin/FuzzyOcr.cf";
my %App;
my %age;
$age{'age'} = 10*24;  # 10 Tage
$age{'hash'} = $age{'age'};
$age{'safe'} = 0;
my $help = 0;
my $verbose = 0;
GetOptions( \%age,
    'age=i',
    'config=s' => \$cfgfile,
    'hash=i',
    'help' => \$help,
    'safe=i',
    'verbose' => \$verbose,
);
if ($help) {
    print "Verwendung: fuzzy-cleanmysql [Optionen]\n";
    print "\n";
    print "Verfügbare Optionen:\n";
    print "--age=i      Globale Alter in Stunden, die in der DB aufbewahrt werden sollen\n";
    print "--config=s   Gebe den Speicherort von FuzzyOcr.cf an\n";
    print "             Standard: /etc/spamassassin/FuzzyOcr.cf\n";
    print "--hash=i     Anzahl der Stunden, die in der Hash-DB aufbewahrt werden sollen\n";
    print "--safe=i     Anzahl der Stunden, die in der Safe-DB aufbewahrt werden sollen\n";
    print "--verbose    Zeige mehr Informationen an\n";
    print "\n";
    exit 1;
}
# Stunden in Sekunden umwandeln
$age{'age'} *= 60 * 60;
$age{'hash'} *= 60 * 60;
$age{'safe'} *= 60 * 60;
$age{'safe'} = $age{'safe'} ? $age{'safe'} : $age{'age'};
# Lese benutzerdefinierte Pfade aus FuzzyOcr.cf
my $app_path = q(/usr/local/netpbm/bin:/usr/local/bin:/usr/bin);
open CONFIG, "< $cfgfile" or warn "Kann Konfigurationsdatei nicht lesen, verwende Standardwerte...\n";
while () {
    chomp;
    if ($_ =~ m/^focr_bin_(\w+) (.+)/) {
        $App{$1} = $2;
        printf "Gefundener benutzerdefinierter Pfad \"$2\" für Anwendung \"$1\"\n" if $verbose;
    }
    if ($_ =~ m/^focr_path_bin (.+)/) {
        $app_path = $1;
        printf "Gefundener neuer Pfad: \"$1\"\n" if $verbose;
    }
    if ($_ =~ m/^focr_enable_image_hashing (\d)/) {
        $App{hashing_type} = $1;
        printf "Gefundene DB-Hashing\n" if ($verbose and $1 == 2);
        printf "Gefundene MySQL-Hashing\n" if ($verbose and $1 == 3);
    }
    if ($_ =~ m/^focr_mysql_(\w+) (.+)/) {
        $MySQL{$1} = $2;
        printf "Gefundene MySQL-Option $1 => '$2'\n" if $verbose;
    }
    if ($_ =~ m/^focr_threshold_max_hash (.+)/) {
        $App{max_hash} = $1;
        printf "Aktualisierter Thresold{max_hash} = $1\n" if $verbose;
    }
}
close CONFIG;
# Stelle sicher, dass wir diesen Schwellenwert gesetzt haben
$App{max_hash} = 5 unless defined $App{max_hash};
# Suche nach dem Pfad für bin_util, es sei denn, er wurde bereits in der Konfigurationsdatei angegeben
foreach my $app (@bin_utils) {
    next if defined $App{$app};
    foreach my $d (split(':',$app_path)) {
        if (-x "$d/$app") {
            $App{$app} = "$d/$app";
            last;
        }
    }
}
sub get_ddb {
    my %dopts = ( AutoCommit => 1 );
    my $dsn = "DBI:mysql:database=$database";
    if (defined $socket) {
        $dsn .= ";mysql_socket=$socket";
    } else {
        $dsn .= ";host=$hostname";
        $dns .= ";port=$port" unless $port == 3306;
    }
    printf "Verbinde zu: $dsn\n" if $verbose;
    return DBI->connect($dsn, $username, $password,\%dopts) or die("Konnte nicht verbinden!");
}
if ($App{hashing_type} == 3) {
 my $ddb = get_ddb();
  if ($ddb) {
    my $sql;
    foreach my $ff (sort keys %Files) {
      $ff =~ s/db_//;
      $sqlbase = "FROM $MySQL{$ff} WHERE $MySQL{$ff}.\`check\` < ?";
      my $timestamp = time;
      $timestamp = $timestamp - $age{$ff};
      $sql = "DELETE $sqlbase";
      if ( $verbose ) {
        printf "Lösche aus Tabelle $MySQL{$ff}\n";
        print "$sql,  $timestamp\n";
        print "Zeitstempel ist ", scalar(localtime($timestamp)), "\n";
        print "Das sind $age{$ff} Sekunden früher als jetzt.\n";
        print "\n";
      }
      $ddb->do($sql,undef,$timestamp);
    }
    $ddb->disconnect;
  }
}
chmod +x /usr/sbin/fuzzy-cleanmysql

Füge es zu Cron hinzu

crontab -e
@weekly /usr/sbin/fuzzy-cleanmysql &> /dev/null  #FuzzyOcr DB-Reiniger

Das war’s schon für die FuzzyOCR-Konfiguration. Lass uns sehen, ob es wie erwartet funktioniert.

Wir können jede dieser E-Mails jetzt SpamAssassin zuführen, um zu sehen, ob FuzzyOCR korrekt in SpamAssassin integriert ist.

spamassassin --debug FuzzyOcr < /usr/src/FuzzyOcr-3.6.0/samples/ocr-gif.eml > /dev/null

Du solltest jetzt eine Menge Ausgaben sehen, das Ende sollte so aussehen:

[...]  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: Freitag, 4. August, 16:01 Uhr ET  
[10025] dbg: FuzzyOcr: LAS VEGAS, NEVADA--(MARKET WIRE)--4. August 2006 -- auantum Energy, lnc. (OTC  
[10025] dbg: FuzzyOcr: BB:aEGY.oB-_-  
[10025] dbg: FuzzyOcr: auantum Energy, lnc. freut sich bekannt zu geben, dass es beantragt hat, seine Aktien an der Frankfurter Börse notieren zu lassen. Das Unternehmen hat die Dienste der Baltic  
[10025] dbg: FuzzyOcr: lnvestment Group aus Hamburg, Deutschland, in Anspruch genommen, um bei der Bewerbung zu helfen.  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: _ qEGY,OB "

12. Filterung von PDF, XLS und Phishing-Spam mit ClamAV (Sanesecurity-Signaturen)

Derzeit gibt es viele Spam-Nachrichten, bei denen die Spam-“Informationen” als .pdf- oder .xls-Dateien angehängt sind, manchmal auch in einer .zip-Datei versteckt. Während diese Spam-E-Mails nicht leicht mit z. B. SpamAssassin oder einem Bayes-Filter zu fangen sind, kann der ClamAV-Virenscanner sie leicht erfassen, wenn er mit den richtigen Signaturen gefüttert wird, da ClamAV zum Scannen von E-Mail-Anhängen entwickelt wurde.

Erstelle einen Ordner für Sanesecurity und lade herunter und gib dem Skript die richtigen Berechtigungen.

apt-get install curl rsync
mkdir /usr/src/sanesecurity && cd /usr/src/sanesecurity
wget http://www.inetmsg.com/pub/clamav-unofficial-sigs.tar.gz
tar -zxf clamav-unofficial-sigs.tar.gz && cd clamav-unofficial-sigs-3.7.1
mv clamav-unofficial-sigs.sh /usr/sbin
mv clamav-unofficial-sigs.conf /etc/
chmod +x /usr/sbin/clamav-unofficial-sigs.sh

vi clamav-unofficial-sigs.conf

und ändere die folgenden Variablen, um sie an deine Installation anzupassen:

clam_dbs="/var/lib/clamav"

Die Variable clamav_dbs enthält den Pfad zum Verzeichnis, in dem deine ClamAV-Signaturen gespeichert sind.

Pfad zu clamd.pid:

clamd_pid="/var/run/clamav/clamd.pid"

Neu laden nach dem Update:

reload_dbs="ja"
reload_opt="kill -USR2 `cat $clamd_pid`" #Signalisiert PID, um DBs neu zu laden

Arbeitsverzeichnis:

work_dir="/var/lib/clamav"

Und sobald du mit der Konfiguration fertig bist, setze das folgende auf ja:

user_configuration_complete="ja" 

Jetzt führen wir das Update-Skript aus, um zu überprüfen, ob der Download funktioniert:

clamav-unofficial-sigs.sh

Füge es zu Cron hinzu:

00 04 * * * /usr/sbin/clamav-unofficial-sigs.sh -c /etc/clamav-unofficial-sigs.conf &> /dev/null 

Bitte bearbeite /etc/clamav-unofficial-sigs.conf und kommentiere den Abschnitt zur MalwarePortal-Datenbank aus. Es gab viele Fehlalarme, wenn man dessen Definitionen verwendet.

13. Greylisting mit Greyfix

Greyfix ist ein winziger Greylisting-Daemon, der extrem gut funktioniert und ressourcenschonend ist.

Installiere:

cd /usr/src && wget http://www.kim-minh.com/pub/greyfix/greyfix-0.3.9.tar.gz  
tar -xf greyfix-0.3.9.tar.gz && cd greyfix-0.3.9  
./configure --localstatedir=/var  
make  
make install
vi /etc/postfix/master.cf

und füge Folgendes hinzu:

greyfix    unix  -        n       n       -        -       spawn
   user=nobody  argv=/usr/local/sbin/greyfix   --greylist-delay 60  -/ 24

Wir haben bereits den Eintrag für main.cf mit dem Postfix-Setup-Skript hinzugefügt.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.