Postfix, como parar el spam (o por lo menos intentarlo)

Esta mañana recibiamos un correo de un «pobre usuario» quejandose de que le habian entrado «algunos correos» en un buzón que podian ser spam. Tampoco eran muchos, pero aprovechando que la cosa estaba tranquila por aquello de que todos estan de vacaciones (menos los tontos de siempre) lo mire con calma.

Asi que, para dentro a buscar el ficherito de cojnfiguración en /etc/mail/acess pero … ostia si no es sendmail, esto es un postfix …

A lo que vamos, para hacer un filtrado «basico» en postfix…

Puedes hacer un HELO restriction, o sea … o me saludas o no te hablo mas…

Añades en /etc/main.cf

smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks,
reject_non_fqdn_helo_hostname,
reject_invalid_helo_hostname,
permit

Estas directivas suelen funcionar siempre igual, primero la activas, despues permites lo que quieras y despues deniegas a saco para acabar permitiendo lo que no machee.

En este caso permitimos el envio de correo desde mynetworks (que previamente has tenido que definir con tu red local), lo denegamos si el pollo no resuelve su nombre y si hace algo raro con el helo.

En el manual pone que ojo con esto, que si tienes algun problema con tu DNS y temporalmente no se resuelve tu nombre (el fqdn) no te va a permitir el envio de correo. Tal y como van las cosas en la inet hoy en dia, casi es mejor dejar de recibir algun correo que recibir 10.000 de spam.

Sender Restrictions
Ojo con esto que suele ser lo que mas les mola a los usuarios, correos tipicos de , no quiero recibir correos de mi ex mujer o similares para que tengas que mantener una lista enorme de direcciones. Si no quieres recibir correos desde sitios porno … no seas gilipollas y date de alta con una cuenta que no sea la del curro … melón.

smtpd_sender_restrictions =
permit_mynetworks,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
permit

Lo mismo que antes, permites mynetworks y deniegas lo que no se ajuste al standar.

Por ultimo, tienes las Recipient restrictions importante para no acabar en una bonita lista negra (por dios, dejate alguna ip de reserva con su inversa configurada para salir de estos apuros).

smtpd_recipient_restrictions =
reject_unauth_pipelining,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
permit_mynetworks,
reject_unauth_destination,
check_sender_access
hash:/etc/postfix/sender_access,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client bl.spamcop.net,
check_policy_service unix:postgrey/socket,
permit

De aqui … el fichero sender_access con el listado de direcciones dominios (como el de sendmail)
[email protected] REJECT
@todoestedominio.com REJECT
@estesiquepasa.com OK

Y ojo que este fichero va en formato DB asi que, en cuanto lo toques no te olvides de hacer postmap sender_access

Y listo, puedes activar cualquiera de las 3 por separado, o las 3 juntas, hagas lo que hagas reinicia el servicio y mira los logs durante un rato porque es facil cagarla con estas cosas.

Ojo al hacer copy&paste, todo tiene que ir en la misma linea, si no lo haces bien empezara a darte errores de este tipo : fatal: /etc/postfix/main.cf, line 274: missing ‘=’ after attribute name: «check_sender_access

Todo esto se puede leer en formato original:

http://wiki.centos.org/HowTos/postfix_restrictions o http://www.freesoftwaremagazine.com/articles/focus_spam_postfix.