Postgrey

De FJWiki
Saltar a: navegación, buscar

Introducción

Este es un mini-howto de cómo instalar a partir de las fuetes y configurar el Postgrey.

Bajando los archivos

Bajamos y desempaquetamos:

[root@servidor ~]# wget http://postgrey.schweikert.ch/pub/postgrey-1.32.tar.gz
[root@servidor ~]# tar xvzf postgrey-1.32.tar.gz

Copiando archivos

Primero copiamos los ejecutables:

[root@servidor ~]# cd postgrey-1.32
[root@servidor postgrey-1.32]# cp postgrey /usr/sbin/
[root@servidor postgrey-1.32]# cp contrib/postgreyreport /usr/sbin/

Hay que verificar que los archivos copiados estén con permiso de ejecución.

Ahora copiamos los archivos de configuración base:

[root@servidor postgrey-1.32]# cp postgrey_whitelist_clients /etc/postfix/
[root@servidor postgrey-1.32]# cp postgrey_whitelist_recipients /etc/postfix/
[root@servidor postgrey-1.32]# touch /etc/postfix/postgrey_whitelist_clients.local

En postgrey_whitelist_clients.local se colocarían las personalizaciones del whitelist.

Creando demonio postgrey

Crearemos el archivo ejecutable del demonio:

[root@servidor postgrey-1.32]# cd /etc/init.d
[root@servidor init.d]# touch postgrey
[root@servidor init.d]# chmod +x postgrey
[root@servidor init.d]# vim postgrey

Este es el contenido del archivo /etc/init.d/postgrey, está basado en el demonio que trae el rpm del postgrey para fedora core 10.

#!/bin/sh
#
# chkconfig: - 79 31
# description: Postfix Greylisting Policy Server
#
# processname: postgrey
#

# 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=postgrey
postgrey=/usr/sbin/$prog
DBPATH=/var/spool/postfix/postgrey
SOCKET=$DBPATH/socket
#OPTIONS="--unix=$SOCKET"
OPTIONS="--inet=10023 --group=postgrey"

# Source an auxiliary options file if we have one, and pick up OPTIONS,
if [ -r /etc/sysconfig/$prog ]; then
    . /etc/sysconfig/$prog
fi

[ -x $postgrey -a -d $DBPATH ] || exit 0

RETVAL=0

start() {
    echo -n $"Starting $prog: "
    daemon $postgrey -d $OPTIONS
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
}
stop() {
    echo -n $"Stopping $prog: "
    killproc $postgrey
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
}

restart() {
    stop
    start
}

reload() {
    echo -n $"Reloading $prog: "
    killproc $postgrey -HUP
    RETVAL=$?
    echo
}

# See how we were called.
case "$1" in
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart)
        restart
    ;;
    reload)
        reload
    ;;
    condrestart)
        [ -f /var/lock/subsys/$prog ] && restart
    ;;
    status)
        status $postgrey
    ;;
    *)
        echo $"Usage: $0 {start|stop|restart|condrestart|reload|status}"
        exit 1
esac

exit $RETVAL

Creando usuario para el demonio

[root@servidor init.d]# useradd -d /var/spool/postfix/postgrey -m -r -s /sbin/nologin postgrey

Verificamos que no tenga cualquier usuario acceso de lectura al directorio home de postgrey (en algunas distribuciones podría crearse con los permisos inadecuados), para cambiarlos ejecutamos:

[root@servidor init.d]# chmod 700 /var/spool/postfix/postgrey

Activando el demonio

Ahora sí estamos listos para activar el servicio.

[root@servidor init.d]# chkconfig --add postgrey
[root@servidor init.d]# chkconfig postgrey on
[root@servidor init.d]# service postgrey start

Configurando Postfix

Para incluir en el postfix el uso del postgrey, se debe incluir en la directiva smtpd_recipient_restrictions la siguiente opción (recomendable que sea última, o como mínimo posterior a las opciones que permiten acceso): check_policy_service inet:127.0.0.1:10023.

Ver También