Archive for the ‘ Linux ’ Category

Linux: Netzwerkkarte MAC adresse simulieren/ändern

ifconfig eth0 down
ifconfig eth0 hw ether 00:1A:4B:7F:65:2C
ifconfig eth0 up

Zeilenumbruch mittels sed ersetzten

Stand gerade vor dem Problem eine Liste von IP Adressen in eine Zeile umzusortieren. Nur für den Fall das ich es später noch mal brauche ;-)

cat <file> | sed -n ‘H;${g;s/\n/\ /g;p}’

SA failed: Can’t locate object method “READ” via package “Amavis::IO::FileHandle

Ich habe gestern Abend Spamassassin von Version 3.2.5-2+lenny2 auf 3.3.1-1. Beim anschließenden testen habe ich im Header der festgestellt, dass eingehende E-Mails nicht mehr durch den Spam-Filter laufen.

X-Spam-Flag: NO
X-Spam-Score: 0
X-Spam-Level:
X-Spam-Status: No, score=x tagged_above=-100 required=14.31 tests=[]

Eine erhöhung das Amavis Log Levels auf 4 brachte den Fehler zu Tage.

Aug 26 10:02:04 mx02.o-o-s.de prequeue_filter[28157]: (28157-01) (!!)SA failed: Can't locate object method "READ" via package "Amavis::IO::FileHandle" at /usr/local/share/perl/5.10.0/Mail/SpamAssassin/Message.pm line 143, <GEN71> line 169. at (eval 104) line 420, <GEN71> line 169.

Dre Grund dafür ist

package Amavis::IO::FileHandle now supports a method READ (i.e. invoked
by a perl functions sysread through a tied hash), which is needed by
SpamAssassin revisions since 2008-09-25 (3.3), bringing a little speedup
to transferring a message from amavisd to SpamAssassin, and avoiding a
Perl I/O bug (perl bug 39060; SA: bug 5985) on some installations;

Dieser Fehler ist in amavisd-new 2.6.2+ behoben, jedoch lässt sich amavisd-new nicht ohne Konflikte aus dem sid Zweig installieren, daher muss die Datei /usr/sbin/amavisd-new manuell  angepasst werden. Dazu muss die Zeile nach SA prepare von

my($data_representation) = 'GLOB';  # pass data to SA as ARRAY or a GLOB

auf

my($data_representation) = 'ARRAY';  # pass data to SA as ARRAY or a GLOB

geändert werden.

Aufbau einer eigenen SBL (Spam Blacklist)

Ich habe mich rein aus interesse die Tage mit dem Aufbau einer eigenen SBL beschäftigt. Eine SBL ist eine DNS-Zone, in der IP Adressen von Spammern imReverse Format eingetragen werden. Dies ermöglich Postfix, policyd-weight und Spamassassin anschließend die Sender IP Adressen bei eingehenden Mails gegen diese DNS-Zone zu prüfen. Wurde ein entsprechender Eintrag gefunden, kann die E-Mail als Spam behandelt werden.

Beispiel: Meldet sich ein Server mit der IP Adresse 192.168.0.1 und möchte eine E-Mails bei uns los werden, so prüft das ensprechende Programm (Postfix, policyd-weight oder Spamassassin) ob diese IP Adresse in der SBL sbl.o-o-s.de eingetragen ist.

nslookup 1.0.168.192.sbl.o-o-s.de

Ist dies der Fall, wird eine IP aus dem 127.0.0.x Netz zurück geliefert, die jedoch nicht 127.0.0.1 sein darf. Ist dies der Fall, weiß das Programm, dass diese IP Adresse auf der Blackliste steht und behandelt die E-Mails entsprechend.

Im Internet gibt es schon zig SBLs, von denen einige besser als andere Funktionieren. Wie gesagt, ich wollte rein aus Interesse eine eigene SBL aufbauen.

das Script

Um eine SBL füttern zu können, benötigt man zu aller erst Spam Mails. Ich hab schon länger zum testen zwei Domains, die nur genau dem Zweck dienen, Spam Mails ein zu sammeln.

Sobald Spam Mails vorhanden sind, müssen die IP Adressen aus den Mails extrahiert werden. Dazu habe ich ein reaöltiv simples Script geschrieben, dass nur die im header vorhandenen IPs heraus filtert. Ursprünglich war mein Gedanke, die Hostnamen aus dem Header per dig aufzulösen, jedoch ist dies relativ schwierig, da die Header Zeilen nicht immer identisch aussehen. Da ich jedoch keine Professionelle SBL aufbauen wollte, reichte es mir die vorhandenen IP Adressen zu filtern.

Das Script kann hier herunter  geladen werden. Im Kopfbereich des Scriptes muss der Pfad zum Mailverzeichniss mit dem Spam Mails sowie der Pfad zum sbl zone file angegeben werden.

die DNS-Zone

Da meine sbl eine Dubdomain der Domain o-o-s.de ist, muss zuerst in der Zone o-o-s.de.zone ein Eintrag für die Subomain hinzugefügt werden.

sbl                     10800   IN      NS      ns.o-o-s.de.

Anschließend kann die Subdomain sbl.o-o-s.de eingerichtet werden.

$TTL 10800
@                       2560    IN      SOA     ns.o-o-s.de.       postmaster.o-o-s.de. (
 2010082404   ; serial YYYYMMDDnn
 3600         ; refresh ( 1 h)
 900          ; retry   ( 15 min)
 1209600      ; expire  ( 14 day)
 10800 )      ; minimum ( 3 hours)

@                       10800   IN      NS      ns.o-o-s.de.
@                       10800   IN      A       83.169.42.112

Wird nun das Script ausgeführt, so werden die IP Adressen aus dem Header der Spam Mails wiefolgt in der Zone eingetragen.

100.124.78.80   IN      A       127.0.0.10

Wenn alles richtig funktioniert, ist es nun an der Zeit, die SBL auszuwerten. Es gibt dafür mehrere Möglichkeiten.

  • policyd-weight
  • Spamassassin
  • Postfix

Auswertung mittels policyd-weight

Um die SBL mittels policyd-weight abzufragen, muss in der Datei /etc/policyd-weight.conf die SBL aktiviert werden.

[...]
@dnsbl_score = (
#    HOST,                    HIT SCORE,  MISS SCORE,  LOG NAME
'pbl.spamhaus.org',       3.25,          0,        'DYN_PBL_SPAMHAUS',
'sbl-xbl.spamhaus.org',   4.35,       -1.5,        'SBL_XBL_SPAMHAUS',
'bl.spamcop.net',         3.75,       -1.5,        'SPAMCOP',
'dnsbl.njabl.org',        4.25,       -1.5,        'BL_NJABL',
'ix.dnsbl.manitu.net',    4.35,          0,        'IX_MANITU',
'sbl.o-o-s.de',           3.35,          0,        'OOS_DE'
);
[...]

Sollte die Konfigurationsdatei nicht exisiteren, kann diese mittels

policyd-weight defaults > /etc/policyd-weight.conf

angelegt werden.

Auswertung durch postfix

Postfix kann die SBL ebenfalls auswerten. Jedoch ist dabei zu beachten, dass Postfix die E-Mails anhand der SBL nicht bewertet, sondern direkt rejected.

/etc/postfix/main.cf

smtpd_recipient_restrictions =
[...]
                 reject_rbl_client sbl.o-o-s.de
[...]

Auswertung durch Spamassassin

Zu guter letzt noch die Auswertung durch Spamassassin. Hierzu muss eine neue Konfigurationsdatei angelegt werden, in der die Regeln definiert werden.

/etc/mail/spamassassin/99_local_bl.cf

header   RCVD_IN_OOSBL      eval:check_rbl('oos', 'sbl.o-o-s.de.')
describe RCVD_IN_OOSBL      Received via IP listed by sbl.o-o-s.de
tflags   RCVD_IN_OOSBL      net
score    RCVD_IN_OOSBL      2.5

Links

Linux: Speed Test der Netzwerkkarte mittels FTP Transfer

Den effektiven Datendurchsatz eines remote Servers zu messen gestaltet sich oft schwierig, da eine entsprechende Gegenstelle fehlt um den wirklichen Datendurchsatz testen zu können. Bei gemieteten Servern gibt es aber häufig einen FTP-Server auf dem ein Backup abgelegt werden kann. Dieser eignet sich auch zum testen.

#!/bin/bash
#ifconfig eth0 mtu 1500
/usr/bin/ftp -inv <FTP-Server> <<ENDFTP
user <username> <kennwort>
put "|dd if=/dev/zero bs=1M count=100" test
bye
ENDFTP

ALternativ ist netcat eine Lösung, aber hierbei muss man auf beide Maschinen Zugriff haben.