Intro

Uno de los peligros de mantener un servidor de correo es que los malos lo usen para enviar spam a diestro y siniestro. Es tan sencillo como engañar a uno de nuestros usuarios para que les envíen su nombre de usuario y contraseña. Para ello los malos usan mensajes de correo falso donde se advierte a nuestros usuarios que les cerraremos la cuenta si no actualizan sus datos o algo así.

Lo lamentable es que siempre hay alguien que pica y les cede sus credenciales. En ese momento comienza el circo. El nombre de usuario y contraseña son compartidos por cientos (quizás miles) de máquinas zombies que se afanan en enviar mensajes de spam a través de nuestro servidor.

El resultado ya lo conocemos: el servidor se queda atascado y listado en todas las blacklists del mundo mundial, con lo que ya casi ningún servidor de correo quiere hablar con él.

Lo que uno quisiera en estos casos sería colgar al usuario incauto por los pulgares, pero el daño ya está hecho, así que nos centraremos en alguna estrategia más positiva y dirigida a prevenir las consecuencias en la medida de lo posible.

La mejor forma de evitar abusos es limitar el número de correos que nuestro servidor tiene permitido enviar en el plazo de una hora (o un día, o un mes…). Por desgracia Postfix no tiene esta función incorporada, así que tendremos que echar mano de un filtro externo.

Haciendo una búsqueda en google llegamos a la conclusión de que uno de los mejores es policyd

 

Instalación de policyd

Nos encargamos de instalar las dependencias que se indican en la página de requerimientos de la documentación de policyd:

  • MySQL, PostgreSQL or SQLite
  • Net::Server >= 0.96
  • Net::CIDR
  • Config::IniFiles (debian: libconfig-inifiles-perl, rpm: perl-Config-IniFiles)
  • Cache::FastmMap (debian: libcache-fastmmap-perl, rpm: perl-Cache-FastMmap)
  • Mail::SPF (required for CheckSPF module)
  • PHP v5+ (compiled with PDO support for your database)

 

Luego descargamos los paquetes .deb (nuestro servidor está basado en debian) de la sección de descargas:

cluebringer_2.1.x~201310261831_all.deb

cluebringer-webui_2.1.x~201310261831_all.deb

Luego veremos la razón, pero hemos de descargar también el archivo que contiene las fuentes:

cluebringer-v2.1.x-201310261831.tar.gz

 

Aunque no sea la versión estable, debemos descargar la versión 2.1 del programa, porque la 2.0 no funciona con ipv6 y eso nos obligaría a cambiar la configuración de postfix para que funcionase solamente con ipv4

 

El archivo fuente lo necesitamos para poblar la base de datos. Una vez descomprimido entramos en el directorio cluebringer-v2.1.x-201310261831/database y ejecutamos lo siguiente:

for i in core.tsql access_control.tsql quotas.tsql amavis.tsql checkhelo.tsql checkspf.tsql greylisting.tsql accounting.tsql; do ./convert-tsql mysql55 $i; done > policyd.sql

Es muy importante que el primer archivo que procesemos en el bucle for sea core.tsql porque si no, no se cumplen las dependencias de foreign index del resto de tablas.

Para versiones de mysql inferiores a 5.5 emplear convert-tsql mysql en lugar de convert-tsql mysql55

Luego poblamos la base de datos policyd con el archivo policyd.sql y creamos un usuario mysql con todos los permisos para esta base de datos.

Los archivos de configuración

Los archivos de configuración los instala en /etc/cbpolicyd y son:

cluebringer.conf

webui.conf

Hemos de indicar el nombre de la base de datos, el usuario y la contraseña en ambos archivos.

Tembién tenemos que configurar apache para que podamos acceder a /usr/share/cluebringer/webui/ que es donde el sistema instala los archivos de la webui

 

Configurar Postfix

Para que el filtro funcione hemos de añadir lo siguiente en las secciones smtpd_recipient_restrictions Y smtpd_end_of_data_restrictions:

check_policy_service inet:127.0.0.1:10031

Es conveniente ponerlo al principio de las secciones para que sea el primer filtro que se ejecute.

 

Crear reglas

Para crear las reglas seguimos el tutorial de https://imanudin.net/2014/09/09/zimbra-tips-how-to-configure-rate-limit-sending-message-on-policyd/

 

 

Más info:

http://en.enisozgen.com/policydcluebringer-installation/

https://enchufado.com/post.php?ID=366