[LUG.ro] Greylist en Sendmail con smf-grey

Sebastián D. Criado lugro@lugro.org.ar
Sat, 14 Apr 2007 16:03:43 -0300


--nextPart4980818.HNqt6A93X5
Content-Type: text/plain;
  charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Les paso el siguiente documento que he preparado:

http://criadoindomable.wordpress.com/2007/04/14/greylist-en-sendmail-con-sm=
f-grey/

Luchar contra el spam se hace a veces una tarea muy complicada.=20
Permanentemente estas personas enemigas que env=C3=ADan SPAM y son terrible=
s=20
enemigos de Internet, se esfuerzan para cambiar sus m=C3=A9todos recurriend=
o a=20
sistemas ingeniosos y complicados evitar para quienes tratamos de hacer de =
la=20
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=20
encuentran las RBL y los sistemas de an=C3=A1lisis bayesiano y heur=C3=ADst=
icos.

Las mejores soluciones anti-spam se basan en la implementaci=C3=B3n de vari=
as=20
soluciones a fin de evitar la mayor=C3=ADa de los spam que llegan al usuari=
o.

Uno de estos m=C3=A9todos que mejor funciona como filtro anterior a que el =
mail=20
llegue al servidor es el denominado Greylist.

Greylist se basa en el uso de las RFC de los sistemas de mail y simplemente=
=20
rechaza a todos los mails que llegan indic=C3=A1ndole que la casilla est=C3=
=A1 ocupada=20
(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=20
ahorramos la gran mayor=C3=ADa de estos sin gastar recursos de ancho de ban=
da,=20
procesador y memoria del servidor de correo.

Una soluci=C3=B3n anti-spam de varios frentes podr=C3=ADa ser

    RBL -> Greylist -> Anti-SPAM

Con lo cual podemos llegar a eliminar m=C3=A1s del 99% de los SPAM que lleg=
an al=20
usuario, siendo el greylist responsable de casi el 80% de este filtrado.

Existen muchas soluciones de greylisting para diversos servidores de correo=
=2E=20
La que usaremos en este documento es una soluci=C3=B3n para Sendmail, siend=
o ese=20
el servidor de mail m=C3=A1s extendido del mundo.

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

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

Este sistema, seg=C3=BAn indica su web, es simple, liviano y facil de imple=
mentar.

Aqu=C3=AD 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=C3=B3n esta=C3=A1 muy bien explicada en el archivo README, p=
ero la=20
comento aqu=C3=AD 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=20
debian es tan simple como hacer:

    # apt-get install libmilter-dev

Luego de haber instalado est=C3=A1 biblioteca, se podra descomprimir el pro=
grama=20
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 la=
s=20
API=E2=80=99s Milter.

En caso de que no se teng=C3=A1 compilado senmail con Milter, leer:

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

Lugo de haber compilado e instalado smf-grey, se tendr=C3=A1 que tocar el a=
rchivo

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

para configurar las WhiteList y los tiempos que se usaran para rechazar los=
=20
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 sendma=
il,=20
se podr=C3=A1 utilizar alguno de los ejemplos para el init.d que se encuent=
ran el=20
los fuentes del programa.

En Debian se puede  realizar directamente copiando y modificando el=20
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=20
las cariables de entorno DAEMON, NAME y DESC para que queden de la siguient=
e=20
forma:

    DAEMON=3D/usr/local/sbin/smf-grey
    NAME=3Dsmf-grey
    DESC=3D=E2=80=9DGreylist for Sendmail=E2=80=9D

Luego usar la herramienta udpate-rc.d para actualizar los Run Level=E2=80=
=99s:

    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 no=
s=20
aseguramos que inicie antes que sendmail. La opci=C3=B3n por defecto de=20
update-rc.d es 20.

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

    define(`confMILTER_MACROS_HELO=E2=80=99, confMILTER_MACROS_HELO`, {veri=
fy}=E2=80=99)dnl
    INPUT_MAIL_FILTER(`smf-grey=E2=80=99, `S=3Dunix:/var/run/smfs/smf-grey.=
sock,=20
T=3DS:30s;R:30s=E2=80=99)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=C3=A1 sufiente y se podr=C3=A1 contar con el filtrado.

En el syslog aparecer=C3=A1n los datos del sistema si es que est=C3=A1 func=
ionando ;)

De esta forma se podr=C3=A1 contar con un sistema de greylist para sendmail=
 de una=20
forma muy r=C3=A1pida y sacarnos de encima m=C3=A1s del 80% del spam sin ha=
cer mucho=20
esfuerzo.


Saludos.-
=2D-=20
Sebasti=C3=A1n D. Criado - scriado{en}ciudad.com.ar
L.U.G.Ro - http://www.lugro.org.ar
GNU/Linux Registered User # 146768
=2D------------------------------------------------------------------
"Si el Universo fuera un programa estar=C3=ADa hecho en C, y correr=C3=ADa =
sobre
un sistema UNIX"
							An=C3=B3nimo.

--nextPart4980818.HNqt6A93X5
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQBGISWa8hmHQ8ZCg0IRAmwNAJsFLbDxfIFF4pqQlpKIbKEtNQ6GTACggKYr
gV8LC+sXtmpZkbJEVfgmBUg=
=GReN
-----END PGP SIGNATURE-----

--nextPart4980818.HNqt6A93X5--