Criado Indomable

Un intento de Blog de Sebastián D. Criado – 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0

Greylist en Sendmail con smf-grey

Posted by Sebastián Criado en sábado, abril 14, 2007 16:00

Seguridad

Luchar contra el spam se hace a veces una tarea muy complicada. Permanentemente estas personas enemigas de Internet que envían SPAM, se esfuerzan para cambiar sus métodos recurriendo a sistemas ingeniosos y complicados de evitar para quienes tratamos de hacer de la conectividad y de los servicios como el de e-mail algo usable y fluido.

Existen diferentes formas de protegernos de los SPAM, entre los que se encuentran las RBL y los sistemas anti-spam de análisis bayesiano y heurísticos.

Las mejores soluciones anti-spam se basan en la implementación de varias soluciones a fin de evitar la mayoría de los spam que llegan al usuario.

Uno de estos métodos que mejor funciona como filtro anterior a que el mail llegue al servidor es el denominado Greylist.

Greylist es un concepto que se basa en el uso de las RFC de los sistemas de mail y simplemente rechaza a todos los mails que llegan indicándole que la casilla está ocupada (error 451) y dejara pasar el mail luego de un tiempo definido.

Dado que los spammers y los virus no pierden tiempo en reenviar los mails, nos ahorramos la gran mayoría de estos sin gastar recursos de ancho de banda, procesador y memoria del servidor de correo.

Una solución anti-spam de varios frentes podría ser

RBL -> Greylist -> Anti-SPAM

Con lo cual podemos llegar a eliminar más del 99% de los SPAM que llegan al usuario, siendo el greylist responsable de casi el 80% de este filtrado.

Existen muchas soluciones de greylisting para diversos servidores de correo. La que usaremos en este documento es una solución para Sendmail, siendo ese el servidor de mail más extendido del mundo.

Para el sistema Sendmail se realiza el filtrado por intermedio de Milter (que es una API que permite realizar filtrado de mail)

A partir de un programa denominado smf-grey podremos tener los benefisios de greylisting en nuestro sendmail .

Este sistema, según indica su web, es simple, liviano y facil de implementar.

Aquí una lista de las posibilidades que brinda:

  • external editable configuration file;
  • whitelist by an IP address (in CIDR notation);
  • whitelist by a PTR (reverse DNS) record;
  • whitelist by an envelope sender e-Mail address;
  • whitelist by an envelope recipient e-Mail address;
  • whitelists auto reloading;
  • scalable and tunable fast in-memory greylist/autowhitelist engine;
  • autowhitelisted records reloading and regular dumping;
  • SMTP AUTH support;
  • RFC-2821 standard compliance;
  • Greylisting results header builder.

La configuración estaá muy bien explicada en el archivo README, pero la comento aquí igualmente:

Lo primero es descargar el programa desde:

http://prdownloads.sourceforge.net/smfs/smf-grey-2.1.0.tar.gz?download

Para poder instalarlo, se requiere las bibliotecas de desarrollo de milter, en debian es tan simple como hacer:

# apt-get install libmilter-dev

Luego de haber instalado está biblioteca, se podra descomprimir el programa smf-grey, compilarlo e instalarlo.

Para compilar e instalar hay que hacer como root:

# make
# make install

Quedara instalado

Para esto es necesario que el Sendmail instalado haya sido compilado con las API’s Milter.

En caso de que no se tengá compilado senmail con Milter, leer:

http://www.sendmail.org/doc/sendmail-current/libmilter/docs/

Lugo de haber compilado e instalado smf-grey, se tendrá que tocar el archivo

/etc/mail/smfs/smf-grey.conf

para configurar las WhiteList y los tiempos que se usaran para rechazar los mails o meterlos dentro de la lista auto generada de White List.

El smf-grey quedara instalado en /usr/local/sbin/smf-grey.

smf-grey funciona como demonio y tiene que estar levantado antes que sendmail, se podrá utilizar alguno de los ejemplos para el init.d que se encuentran el los fuentes del programa.

En Debian se puede realizar directamente copiando y modificando el archivo /etc/init.d/skeleton:

Como root:

cp /etc/init.d/skeleton /etc/init.d/smf-grey

Editar /etc/init.d/smf-grey con el editor preferido y cambiar el contenido de las cariables de entorno DAEMON, NAME y DESC para que queden de la siguiente forma:

DAEMON=/usr/local/sbin/smf-grey
NAME=smf-grey
DESC=»Greylist for Sendmail»

Luego usar la herramienta udpate-rc.d para actualizar los Run Level’s:

update-rc.d /usr/local/sbin/smf-grey start 19 2 3 4 5 . stop 19 0 1 6 .

Nota: Se usa 19 dado que sendmail arranca en 20 en Debian. De esta forma nos aseguramos que inicie antes que sendmail. La opción por defecto de update-rc.d es 20.

Ahora hay que cambiar el archivo /etc/mail/sendmail.mc para agregar las siguientes lineas:

define(`confMILTER_MACROS_HELO’, confMILTER_MACROS_HELO`, {verify}’)dnl
INPUT_MAIL_FILTER(`smf-grey’, `S=unix:/var/run/smfs/smf-grey.sock, T=S:30s;R:30s’)dnl

Compilar el .cf de sendmail de la siguiente manera:

# cd /etc/mail; make

Iniciar el smf-grey

# /etc/init.d/smf-grey start

Reiniciar el sendmail

# /etc/init.d/sendmail restart

Con esto será sufiente y se podrá contar con el filtrado.

En el syslog aparecerán los datos del sistema si es que está funcionando 😉

De esta forma se podrá contar con un sistema de greylist para sendmail de una forma muy rápida y sacarnos de encima más del 80% del spam sin hacer mucho esfuerzo.

2 respuestas to “Greylist en Sendmail con smf-grey”

  1. Miguel said

    Excelente articulooo!! 🙂

  2. […] muchos mecanismos para evitar el SPAM como programas o servicios que evitan que lleguen desde el servidor hasta el usuario. Pregunte a su administrador de red o a su proveedor de servicio Internet con que […]

Deja un comentario