centos:mailserver:erweiterte_gewichtete_pruefungen_mittels_policyd-weight

erweiterte gewichtete Prüfungen mittels policyd-weight

Da wir mit greylisting_mit_postgrey nur die Botnetze erschlagen, setzen wir noch einen weiteren Hebel an, um uns vor ungeliebten Botschaften zu schützen.
Dazu nutzen wir den Policy-Dämon policyd-weight.

Da es noch kein vorgefertigtes RPM in den einschlägigen RPM-Quellen gibt, welchen wir vertrauen, installieren wir den daemon selbst per Hand.
Wir holen uns also das besagte Perl-Script in der aktuellen Version und speichern es unter /usr/local/sbin und passen die Dateirechte entsprechend an:

wget http://www.policyd-weight.org/policyd-weight
chmod u+rx policyd-weight
mv policyd-weight /usr/local/sbin/

Anschließend ändern wir noch wie auf der policyd-weight homepage angegeben die Variable $LOCKPATH ab.

vim /usr/local/sbin/policyd-weight

...
## cache stuff
my $LOCKPATH          = '/var/run/policyd-weight/'; # must be a directory (add
                                                    # trailing slash)

my $SPATH             = $LOCKPATH.'/polw.sock';     # socket path for the cache
                                                    # daemon. 
...

Für den Betrieb benötigen wir noch einen User polw, den wir mit

useradd -r -s /sbin/false polw
groupadd -r polw

anlegen.
Den ersten Programmstart nehmen wir nun mittels

policyd-weight start

vor. Im Maillog wird uns der Start entsprechend quittiert:

Oct 13 22:41:48 nss postfix/policyd-weight[23123]: policyd-weight 0.1.14 beta-17 started and daemonized. conf:default settings; GID:105 105 EGID:105 105 UID:102 EUID:102; taint mode: 0 

In der Prozessliste finden wir zwei Prozesse, die gestartet wurden:

# ps auxw | grep policyd-weight
polw      3234  0.0  0.6  12756  1652 ?        Ss   Oct06   0:00 policyd-weight (cache)
polw     23123  0.0  3.0  12616  7908 ?        Ss   22:41   0:00 policyd-weight (master)

Mittels lsof können wir nun noch überprüfen, welcher Port von policyd-weight verwendet wird.

# lsof -i :12525
COMMAND     PID USER   FD   TYPE  DEVICE SIZE NODE NAME
policyd-w 23123 polw    4u  IPv4 3539466       TCP localhost.localdomain:12525 (LISTEN)

Wie auch bei postgrey konfigurieren wir für policyd-weight postfix.
Wir fügen also in unsere /etc/postfix/main.cf folgende Option nach # RBL überprüfen (Kapitel 10.11 Realtime Blackhole Lists) mit ein:

# Policyd-Weight                                        (Kapitel 9.3 policyd-weigt)
        check_client_access hash:/etc/postfix/policyd_weight_client_whitelist
        check_policy_service inet:127.0.0.1:12525,

Da bei dem Archiv kein startup-script mit dabei ist, legen wir dies kurzer Hand selbst an:

# vim /etc/init.d/policyd-weight
policyd-weight
#!/bin/sh
#
# chkconfig: 2345 79 31
# description: Postfix Policy Weight Server
#
# processname: policyd-weight
#
 
# Source function library.
. /etc/rc.d/init.d/functions
 
# Source networking configuration.
. /etc/sysconfig/network
 
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
 
prog=policyd-weight
policydweight=/usr/local/sbin/$prog
 
# Source an auxiliary options file if we have one, and pick up OPTIONS,                                                                                                     
if [ -r /etc/sysconfig/$prog ]; then
    . /etc/sysconfig/$prog
fi
 
start() {
    echo -n $"Starting $prog: "
    $policydweight start
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
}
stop() {
    echo -n $"Stopping $prog: "
    $policydweight stop
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
}
 
restart() {
    stop
    start
}
 
reload() {
    echo -n $"Reloading $prog: "
    $policydweight reload
    RETVAL=$?
    echo
}
 
# See how we were called.
case "$1" in
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart)
        restart
    ;;
    reload)
        reload
    ;;
    *)
        echo $"Usage: $0 {start|stop|restart|reload|}"
        exit 1
esac
 
exit $RETVAL

Damit der postgrey-Daemon automatisch bei jedem Systemstart startet, denn ohne laufenden policyd-weight-daemon verweigert nun unser postfix die Annahme der Nachrichten, kann die Einrichtung des Start-Scripte über folgenden Befehle erreicht werden:

# chkconfig policyd-weight on

Die Überprüfungung ob die beiden Dienste (Daemons) postfix und postgrey wirklich bei jedem Systemstart automatisch mit gestartet werden, kann durch folgenden Befehle erreicht werden:

# chkconfig --list | grep post*
postfix         0:Aus   1:Aus   2:Ein   3:Ein   4:Ein   5:Ein   6:Aus
postgrey        0:Aus   1:Aus   2:Ein   3:Ein   4:Ein   5:Ein   6:Aus

# chkconfig --list | grep poli*
policyd-weight  0:Aus   1:Aus   2:Ein   3:Ein   4:Ein   5:Ein   6:Aus

Wichtig sind jeweils die Schalter on bei den Runleveln - 2 3 4 5.

Leider kommt es auch vor, dass vor allem große Provider hinter ihren MX ein cluster betreiben, die mit wechselnden IP-Adrressen aus einem Pool aufschlagen. Damit können unter Umständen Probleme bei der Bewertung entstehen. Diese schalten wir dann bei Bedarf in der policyd_weight_client_whitelist frei.

vim /etc/postfix/policyd_weight_client_whitelist

# 2008-10-08: 1und1.com (big pool, inserted by Django)
kundenserver.de         OK

Nach dem Verändern der Textdatei müssen wir noch die Informationen in das binäre Datenbankformat überführen. Hierzu nutzen wir postmap:

postmap /etc/postfix/policyd_weight_client_whitelist

Am nachfolgenden Beispiel sehen wir, den erfolgreichen Mailversand nach der Bewertung durch policyd-weight.

Oct 14 22:31:30 nss postfix/smtpd[14044]: connect from www.linuxtv.org[212.227.166.180]
Oct 14 22:31:34 nss postfix/policyd-weight[2715]: decided action=PREPEND X-policyd-weight: using cached result; rate: -7.6; <client=212.227.166.180> <helo=www.linuxtv.org> <from=vdr-bounces+michl=naush.org@linuxtv.org> <to=grossermeister@naush.org>; delay: 1s 
Oct 14 22:31:34 nss postgrey[21879]: action=pass, reason=triplet found, client_name=www.linuxtv.org, client_address=212.227.166.180, sender=vdr-bounces+michl=naush.org@linuxtv.org, recipient=michl@naush.org 
Oct 14 22:31:34 nss postgrey[21879]: cleaning up old logs... 
Oct 14 22:31:34 nss postfix/smtpd[14044]: 31F5E76022D: client=www.linuxtv.org[212.227.166.180]
Oct 14 22:31:34 nss postfix/cleanup[14048]: 31F5E76022D: message-id=<Pine.LNX.4.64.0810142329220.5339@shogun.pilppa.org>
Oct 14 22:31:34 nss postfix/qmgr[1304]: 31F5E76022D: from=<vdr-bounces+michl=naush.org@linuxtv.org>, size=3523, nrcpt=1 (queue active)
Oct 14 22:31:34 nss postfix/smtpd[14044]: disconnect from www.linuxtv.org[212.227.166.180]
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
  • centos/mailserver/erweiterte_gewichtete_pruefungen_mittels_policyd-weight.txt
  • Zuletzt geändert: 02.03.2012 13:10.
  • von django