Archive for the ‘ postfix ’ Category

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

Postgrey: Empfänger Adresse whitelisten

Greylisting ist eine feine Sache um die Zustellung von E-Mails zu verzögern. Es kann aber sein, dass gewisse Empfänger Adresse/Domains davon ausgenommen werden sollen.

Um dies zu realisieren, kann postgrey ein Parameter fürs whitelisting übergeben werden.

/etc/default/postgrey
# postgrey startup options, created for Debian
# (c)2004 Adrian von Bidder <avbidder@fortytwo.ch>
# Distribute and/or modify at will.

# you may want to set
#   --delay=N   how long to greylist, seconds (default: 300)
#   --max-age=N delete old entries after N days (default: 35)
# see also the postgrey(8) manpage

POSTGREY_OPTS="--inet=127.0.0.1:60000 --delay=420 --whitelist-recipients=/etc/postgrey/whitelist_recipients"

Nun können die zu whitelistenden Adressen eingetragen werden

/etc/postgrey/whitelist_recipients
# postgrey whitelist for mail recipients
# --------------------------------------
# put this file in /etc/postgrey or specify its path
# with --whitelist-recipients=xxx
postmaster@
abuse@

Abschließend muss der Daemon noch neu gestartet werden

Postfix: pfqueue als qshape Frontend

pfqueue ist ein grafisches Frontend für qshape. Installieren kann man das Programm durch apt-get. Ist das Tool gestartet, kann man über die Tasten 1-4 die queues deferred, active, incoming, hold durchwählen. Eine Ausgewählte E-Mail kann anschließend mit der Taste d gelöscht oder r requeued werden.

Sehr gut gefällt mir auch die Möglichkeit sich den header einer E-Mail direkt anschauen zu können.

Der Screenshot ist übrigens auf einem System entstanden, dass von Spammern gehackt wurde. Keine Angst, die E-Mail Adresse sind alle nicht gültig ;-)

pfqueue

Linux: postfix backup

Postfix ist von seiner Verzeichniss Struktur relativ einfach gehalten und lässt sich daher auch gut sichern. Für die tägliche Sicherung bietet sich ein script an. ich benutzte dafür folgendes:

#!/bin/sh
BACKUP_DIR="/backup/"
set $(date)
str_Tag=$(date +%A);
 echo "postfix backup"
 echo -n "   creating directories"
   rm -rf $BACKUP_DIR/postfix
   mkdir -p $BACKUP_DIR/var/spool
   mkdir -p $BACKUP_DIR/etc
 echo -e "\033[40;1;32m OK \033[0m"
 echo -n "   first rsync pass"
   rsync -rq /var/spool/postfix $BACKUP_DIR/var/spool
   rsync -rq /etc/postfix $BACKUP_DIR/etc/
  echo -e "\033[40;1;32m OK \033[0m"
 echo -n "   stop postfix"
   postfix stop > /dev/null 2>&1
 echo -e "\033[40;1;32m OK \033[0m"
 echo -n "   second rsync pass"
   rsync -rq /var/spool/postfix $BACKUP_DIR/var/spool
   rsync -rq /etc/postfix $BACKUP_DIR/etc
 echo -e "\033[40;1;32m OK \033[0m"
 echo -n "   start postfix again"
   postfix start  > /dev/null 2>&1
 echo -e "\033[40;1;32m OK \033[0m"
 echo -n "   compressing backup"
   tar cfvz $BACKUP_DIR/$6.$3.$2_postfix.tar.gz $BACKUP_DIR/etc/postfix $BACKUP_DIR/var/spool/postfix > /dev/null 2>&1
   rm -r $BACKUP_DIR/etc $BACKUP_DIR/var
 echo -e "\033[40;1;32m OK \033[0"

Debian: postfix smtp auth

Soll Postfix eMails über einen andere eMail Server verschicken (Relay mit Versand über den Provider) muss postfix sich genauso an dem entsprechenden eMail-Server authentifizieren wie jeder Outlook Client.

Um dies zu erreichen müssen folgende Pakete installiert werden:

apt-get install libsasl2-modules postfix-tls

Anschließend sind folgende Änderungen/Ergänzugen notwendig.

/etc/postfix/main.cf
relayhost = smtp.provider.de
.....
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_auth
smtp_sasl_security_options = noanonymous

 

/etc/postfix/sasl_auth
smtp.provider.de      username:kennwort

Nun muss die sasl_auth noch für Postfix lesbar umgewandelt werden.

postmap sasl_auth

Nun postfix neu starten. Anschließend sollten die eMails authentifiziert versand werden.

/etc/init.d/postfix restart