Bloqueando un dominio con POSTFIX

09/11/2007

SPAM

Pues ayer mi paciencia se agotó con correos provenientes del dominio aol.com y aim.com que promocionaban una nueva forma de hacer negocios o algo así. Nunca leí tales correos, pero me llegaban por cantidades industriales a mi buzón. Como no conozco a nadie que tenga un correo @aol.com o @aim.com que valga la pena (y si los tiene, pediré que me escriban desde otro buzón menos problemático) decidí bloquearlo a nivel de MTA (POSTFIX en mi caso).

Los pasos son sencillos.

Lo primero es agregar la llamada a las restricciones que se harán desde la variable de configuración “smtpd_recipient_restrictions” contenida en el archivo “main.cf” y agregar la llamada a la lista de dominios por bloquear. En este punto hay dos opciones: una lista estática (hash) donde se coloca un buzón por línea (para bloquear, por ejemplo las direcciones quefastidio@spammer.com, queladilla@spammer.com, queladilla-8s7s6@spammer.com y así sucesivamente colocando explícitamente cada buzón deseado) o en mi caso una expresión regular (regexp) para decir “todo lo que sea @spammer.com”.

Para el caso que me compete y que es mucho más flexible hay que agregar el parámetro “regexp:/etc/postfix/bloqueados” quedando algo así (en mi caso tengo otras restricciones para bloquear correo defectuoso):

smtpd_recipient_restrictions =
permit_mynetworks
reject_unauth_destination
regexp:/etc/postfix/bloqueados
permit_sasl_authenticated
reject_non_fqdn_hostname
reject_non_fqdn_sender
reject_invalid_hostname
reject_unknown_sender_domain
reject_unknown_recipient_domain
reject_rbl_client blackholes.mail-abuse.org
reject_rbl_client list.dsbl.org
reject_rbl_client sbl.spamhaus.org
reject_rbl_client cbl.abuseat.org
reject_rbl_client dul.dnsbl.sorbs.net

EL significado de cada parámetro puede ser estudiado aqui. El que nos compete lo he puesto, como se puede evidenciar, en negrillas.

Bien. Una vez hecho esto creamos la lista de expresiones regulares que blouearemos. En mi caso quiero bloquear cualquier correo de @aol.com y de @aim.com. Eso, en el lenguaje de las expresiones regulares se escribe así:

/@aol\.com$/ 550
/@aim\.com$/ 550

El número corresponde al mensaje de error que devolverá el MTA en el protocolo SMTP. Acá hay una lista con los errores mas comunes, si se desea enviar otro mensaje. Tener en cuenta que los errores deben ser 5XX para que no persista el envío.

Guardamos esas líneas en un archivo llamado “/etc/postfix/bloqueados”. Si no queremos bloquear un dominio entero (esta configuración hace esto) y por el contrario queremos bloquear una lista de buzones indeseados específicos, cambiamos “regexp:” por “hash:” en la variable y en el archivo escribimos simplemente la lista de buzones no deseados:

quefastidio@spammer.com 550
hastacuando@correobasura.net 550
quebuenavaina@fastidiosisimo.nl 550
negociochimbo@spammersbrillantres.com 550

(ya saben que les pasa a los que me envían ridiculeces en PowerPoint después de la segunda advertencia de que NO lo hagan)

Ahora debemos transformarlas en un archivo de base de datos (tablas en realidad) entendible por el MTA en cuestión. Para eso la generamos con el comando:

postmap /etc/postfix/bloqueados

y veremos que se ha creado un archivo con el mismo nombre pero con la extensión .db el cual será el archivo que realmente POSTFIX vaya a acceder.

Bien, hasta aquí lo que hay que configurar y modificar. Recargamos la configuración del servicio con el popular “/etc/init.d/postfix reload” y si observamos para nuestra tranquilidad ya no tendremos correos desde ese dominio.



7 Comentarios a “Bloqueando un dominio con POSTFIX”

  1. edegugli dice:

    Una buena forma de reducir el spam, un poco radical en cuanto a bloquear un dominio completo, pero mas efectiva. Gracias por el dato

  2. arturo dice:

    Perdona que te haga una pregunta, se puede poner las dos formas, osea regex y hash a la vez para poder bloquear a un dominio entero y a varios correos electronicos, gracias

  3. [TR0N] dice:

    Si, de hecho me falta alguna vez escribir la tercera parte de este artículo, en el cual se puede hacer una unión de regex con bloqueos estáticos. Cuando me sienta inspirado le doy al asunto.

  4. Leandro H dice:

    Excelente! me vino al pelo, gracias por la data!

  5. Eduardo dice:

    muy bueno, pero me gustaria bloquear todos los dominios externos a determinada cuenta del servidor se puede hacer esto con este procedimiento ? desde ya gracias por el aporte

  6. […] Si queremos bloquear mas dominios debemos poner una por linea. El número (550) significa el mensaje de error que será notificado a el remitente, estos mensajes de error son los de el protocolo SMTP “SMTP REPLY CODES” los cuales podemos ver en este link […]

  7. Carlos dice:

    Muy buen archivo,

    Tengo una pregunta, tal vez me puedes dar una guia, en mi postfix necesito bloquear que los usuarios envien correo a determinada cuenta, dentro del mismo servidor, es decir, xxx@dominio.com envie a todos@dominio.com, “todos” hace referecia a una lista donde tengo a todos los usuarios del SRV, lo que necesito es que una determinada cuenta: info@dominio.com envie unica y exclusicamentea todos@dominio.com, y que nadie mas pueda enviar correo a “todos”

Deja tu comentario