Inicio / Wikis / Tutoriales / Postfix + Mysql + Teapop HOWTO V0.7 - Control UCE

Postfix + Mysql + Teapop HOWTO V0.7 - Control UCE

Tutorial creado por
18 de Enero de 2005
LinuxRedesServidores de correoServidores webSeguridad informática
UCE (Unsolicited Commercial Email a.k.a SPAM) es toda una plaga en internet. De acuerdo a este mismo sistema, como esta funcionando, es totalmente posible que pergenios usen nuestro servidor como Open Relay.

Lo que se debe hacer es configurar Postfix de tal manera que no permita que otras personas usen nuestro server para fines inescrupulosos.

4.1 Permisos por Dominio


Si te habras dado cuenta, hay un campo llamado "acceso" en la tabla transport y en aliases y con valor por defecto 'OK'. Debido a que Postfix cuenta con diccionarios para setear acceso y que ademas, tiene soportes para diccionarios en Mysql, es mas facil usarlos que estar escribiendo en una tabla de accesos tipica (hash) y reconstruirla cada vez que se agrega un dominio (y creanme, es lo ultimo que se le ocurre a uno cuando no funciona).

Centremonos en los dominios por ahora.

Para permitir que Postfix identifique los dominios a recibir como "locales", se puede usar una tabla hash con el siguiente contenido:

(sacado de la documentacion de Postfix)

maptype:mapname Busca en la base de datos por el nombre del cliente, dominios padres, clientes IP o redes. Rechaza la peticion si el resultado es REJECT o [45]XX texto. Permite la peticion si el resultado es OK o RELAY o numerico.

Hmmm...util...pero no practico. Y si ocupamos la tabla de transportes? Mejor.

Por tanto, creamos un diccionario llamado dominios.cf con:

user=postfix password=<la_password_de_mysql_del_usuario_postfix> dbname=mail table=transport select_field=acceso where_field=transport hosts=localhost

y lo dejamos en /etc/postfix

Esta regla la llamaremos (para nosotros) check_client_access mysql:/etc/postfix/dominios.cf

Asi, al agregar cualquier dominio rapidamente, nuestro servidor sabe que el dominio es "local" para correo, por tanto entrega el correo o hace RELAY, de acuerdo con el resultado del campo "acceso".

4.2 Usuarios


Supongamos que un spammer use nuestro server usando la siguiente cabecera:

From: i_am_a_spammer@dominio1.com

Como nuestro dominio "dominio1.com" esta permitido para hacer RELAY, nuestro invitado spammer puede usar un usuario desconocido para el sistema, y aun asi enviar correo.

Recuerdas entonces el campo "acceso" en "aliases"? Funciona exactamente igual que el caso anterior, solo que ahora no va orientado al dominio, sino al usuario

Creamos un diccionario llamado users.cf con:

user=postfix password=<la_password_de_mysql_del_usuario_postfix> dbname=mail table=aliases select_field=acceso where_field=alias hosts=localhost

Y lo guardamos en /etc/postfix.

Entre nos, este diccionario lo llamaremos check_sender_access mysql:/etc/postfix/users.cf

4.3 Agregando en main.cf


Configuremos entonces main.cf de Postfix.

Para entender que se debe hacer, tengo que explicar que debe hacer el servidor

  1. Entregar correo desde nuestros dominios locales hacia nuestros dominios locales
  2. Entregar correo desde nuestros dominios locales hacia otros dominios
  3. Entregar correo desde otros dominios hasta nuestros dominios locales
  4. Denegar cualquier otra alternativa

Postfix posee varias formas de control UCE como restricciones. Son (sin ningun orden en particular):

  • smtpd_client_restrictions: desde donde aceptar conexiones hacia nuestro servidor. se usa por defecto cuando se usa RCPT TO.
  • smtpd_sender_restrictions : desde donde permitir comandos MAIL FROM:
  • smtpd_helo_restrictions : que hosts estan permitidos de hacer HELO
  • smtpd_recipient_restrictions: restringe los comandos RCPT TO:
  • smtpd_etrn_restrictions : restringe que dominios pueden realizar comandos ETRN

Veamos entonces en nuestros 4 casos anteriores, que se debe hacer con algunas de las restricciones de Postfix.

  • Entregar correo desde nuestros dominios locales hacia nuestros dominios locales smtpd_sender_restrictions=check_sender_access mysql:/etc/postfix/users.cf smtpd_client_restrictions=check_client_access mysql:/etc/postfix/dominios.cf smtpd_recipient_restrictions=check_recipient_access mysql:/etc/postfix/users.cf
  • Entregar correo desde nuestros dominios locales hacia otros dominios smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/users.cf, check_client_access mysql:/etc/postfix/dominios.cf smtpd_recipient_restrictions = check_relay_domains, check_sender_access mysql:/etc/postfix/users.cf, check_client_access mysql:/etc/postfix/dominios.cf smtpd_client_restrictions = check_client_access mysql:/etc/postfix/dominios.cf
  • Entregar correo desde otros dominios hasta nuestros dominios locales smtpd_recipient_restrictions = check_recipient_access mysql:/etc/postfix/users.cf

Mezclemos estos casos y hagamos un set de reglas completo:

smtpd_client_restrictions = check_client_access mysql:/etc/postfix/dominios.cf smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/users.cf, check_client_access mysql:/etc/postfix/dominios.cf smtpd_recipient_restrictions = check_relay_domains, check_sender_access mysql:/etc/postfix/users.cf, check_client_access mysql:/etc/postfix/dominios.cf

Como el cuarto caso no lo vimos (Denegar), vamos a agregarlo ahora mismo.

En smtpd_client_restrictions, agreguemos como reglas reject_maps_rbl (Listas negras de correo), reject_unknown_client y despues reject.

smtpd_client_access = reject_maps_rbl, check_client_access mysql:/etc/postfix/dominios.cf, reject_unknown_client, reject

En smtpd_sender_restrictions, colocamos reject_maps_rbl, reject_unknown_client y reject

smptd_sender_restrictions = reject_maps_rbl, check_sender_access mysql:/etc/postfix/users.cf, check_client_access mysql:/etc/postfix/dominios.cf, check_relay_domains, reject_unknown_client, reject

En smtpd_recipient_restrictions colocamos reject_non_fqdn_recipient (en caso que alguien se quiera pasar de vivo y colocar direcciones que no sean de la forma user@fully_qualified_domain_name, como user%domain), reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unknown_hostname, reject_maps_rbl, reject_unknown_recipient_domain, reject_unauth_destination...UF!

smtpd_recipient_restrictions = reject_maps_rbl, reject_non_fqdn_recipient, reject_non_fqdn_sender, reject_unknown_sender_domain, check_client_access mysql:/etc/postfix/dominios.cf, check_sender_access mysql:/etc/postfix/users.cf, reject_unknown_hostname, reject_unknown_recipient_domain, reject_unauth_destination

Asi, amigos, hemos configurado a Postfix para hacerlo un servidor Anti Spam.

Si se desea configurar aun mas Postfix que lo que dice esta guia, RTFM el manual de Postfix. Advertidos.

4.4 body_checks


Los body_checks son los chequeos del cuerpo del mensaje. Funcionan con tablas regexp (Expresiones regulares) para encontrar palabras claves en el cuerpo del mensaje.

Para habilitarlos se crea el archivo /etc/postfix/body_checks con el siguiente contenido:

[ expresion regular ] [ accion ]

asi podemos usar expresiones regulares para detectar palabras "interesantes" en el cuerpo del mensaje.

Por ejemplo, si queremos que se rechacen los correos que contengan:

  • la palabra "hola"
  • las palabras "adios mundo cruel"
  • las lineas que terminen con "999"

usamos la siguiente tabla de body_checks:

/hola/ REJECT /adios mundo cruel/ REJECT /999$/ REJECT

Si alguna vez han usado expresiones regulares, no va a ser tan complejo el uso de body_checks.

Para agregar el chequeo del cuerpo del mensaje, agregamos en main.cf la siguiente linea:

body_checks=regexp:/etc/postfix/body_checks

4.5 header_checks


Funciona exactamente igual que body_checks, con la diferencia que solo afecta a los encabezados (MAIL FROM:, RCPT TO: y demases).

Se crea un archivo header_checks con las expresiones regulares que contengan las cabeceras "ofensivas" y se agrega a main.cf

header_checks=regexp:/etc/postfix/header_checks
Valora este capítulo:
Autor y licencia de 'Postfix + Mysql + Teapop HOWTO V0.7 - Control UCE'
tux.cl Extraído de: http://www.tux.cl/articulos.php?id=3 CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Opiniona sobre 'Postfix + Mysql + Teapop HOWTO V0.7 - Control UCE' (0)

Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.

Opina sobre este tutorial



* Valoración:
* Nombre:
* Correo electrónico:
* Título:
* Comentario:

Wikis relacionados con 'Postfix + Mysql + Teapop HOWTO V0.7 - Control UCE'

Este es HOWTO para configurar un servidor de correo usando el MTA Postfix y el... Más »
Instalación y configuración de Postfix, Courier y MySQL para operar juntos y conseguir un completo... Más »
Documento con fundamentos teóricos de control de accesos en redes telemáticas; se tratan temas como... Más »
Este documento pretende ser el punto de entrada de los hispanohablantes al mundo Linux, intentando... Más »
En las épocas actuales en donde priman los aspectos económicos de la globalización, de la... Más »
¿Estás seguro de que deseas eliminar este capítulo?