Grupos de Google ya no admite nuevas publicaciones ni suscripciones de Usenet. El contenido anterior sigue siendo visible.

problemas con los spamers (postfix)

Visto 0 veces
Saltar al primer mensaje no leído

Matias

no leída,
8 jun 2002, 16:20:098/6/02
a
Hola:
Tengo configurado postfix, uw-imap (ipop3), y pop-before-smtp, aparentemente bien. Pero resulta que acabó de recibir un mail de P...@nnss.com.ar,Date/Time:05/14/20...@nnss.com.ar, 07:29:2...@nnss.com.ar, y resulta que no existen esos usuarios en mí máquina (nnss.com.ar).
Existe alguna forma de validar el from del mensaje. Me refiero a que postfix verifique que si le llega algo como el_tal_ivan@en_algun_lugar, se conecte a en_algun_lugar y verifique que el_tal_ivan sea un usuario de mail y luego de esto permita que ingrese el mail.
Y también necesitaría saber como se llama a lo que quiero hacer, así lo busco por otros lugares y veo que encuentro, dado que por ahora no encontré mucho ¿validación de from? ¿validación de usuarios?


--
Atentamente, yo <Matías>
Grupo de usuarios que quieren camisetas: camise...@nnss.linux-site.net
Para subscribirse camisetas-...@nnss.linux-site.net?subject=subscribe


--
To UNSUBSCRIBE, email to debian-user-s...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listm...@lists.debian.org

andres

no leída,
8 jun 2002, 16:40:078/6/02
a

Hola Matias, esto me lo paso un amigo, Santi que es un mostro!

Tal vez te sirva, dado que son recomendaciones acerca de como
aplicar filtros a encabezados y demás desde postfix.

Una abrazo

andrés

-----------------------------------------------------------------------------------------

andres ha escrito:
>
> No sé si me falta algo o ya está la configuración realizada... en
> realidad em faltan cosas, te cuento:
> me cuesta entender el uso de las tablas Lookup : HASH y REGEXP para
> filtros.

no es difícil, la tabla la ponés en un archivo externo y luego en el
main.cf ponés la referencia.
Las tablas tipo regexp consisten en expresiones regulares, una por línea
(buscá expresiones regulares en google). Las tablas tipo hash son bases
de datos que se generan con el programa postmap.

Dos ejemplos:

1. para rechazar espamers conocido uso una tabla hash con expresiones
regulares que se comprueban en el encabezado de todos los mensajes que
entran en el servidor. En el main.cf pongo (da igual donde, ponelo al
final del fichero):

header_checks = regexp:/etc/postfix/header_checks

esta línea le dice a postfix que vamos a activar la "feature"
header_checks usando un fichero de expresiones regulares que se llamará
header_checks y estará en el directorio /etc/postfix
El fichero header_check lo creas con VI o cualquier editor de texto y
ponés una expresión regular por línea seguida de la acción a realizar
con el mensaje que la cumpla, por ejemplo algo así:

/^Subject: Enanito si, pero con que pedazo!/ REJECT
/^From:.*@infoidiomas.com.*/ REJECT
/^From:.*(l|L)(o|O)(n|N)(d|D)(o|O)(n|N)([0-9]?)@eresmas.com.*/ REJECT

la expresión regular va encerrada entre los /, y REJECT hace que el
mensaje se rechace. Los caracteres especiales que uso significan:

^ al comienzo de una línea
.* cualquier caracter repetido cero o mas veces
(a|b) o la letra a o la letra b
[0-9] cualquier cifra entre cero y nueve
? cero o una aparición del caracter que le precede.

por lo tanto la primera expresión significa: si hay una línea que sea
exactamente "Subject: Enanito si, pero con que pedazo!"

la segunda significa: la línea empieza por "From:" seguido de cualquier
cosa, seguido de "@infoidiomas.com" seguido de cualquier cosa. Es decir
que rechazo todo el correo que tenga como remitente cualquier dirección
de ese dominio.

la tercera la hice (con ayuda de aep) para rechazar el correo de uno
spammers que usaban varias direcciones del tipo

lon...@eresmas.com
lon...@eresmas.com
Lon...@eresmas.com
LON...@eresmas.com
etc...

rechaza mensajes que en su encabezado tengan una línea que empiece por
"From:", seguido de cualquier cosa, seguido de una ele mayúscula o
minúscula, seguido de una o mayúscula o minñuscula, seguido de una ene
mayúscula o minúscula, (.....) seguido o no de una cifra entre cero y
nueve, seguido de "@eresmas.com", seguido de cualquier cosa.
Esto de las expresiones regulares es un lío increible, además hay varias
versiones: las de perl, las de procmail, etc... Creo que postfix usa las
de perl.

La tabla para usar headers_checks puede ser también de tipo pcre, en vez
de regexp (=regular expresion). Pero no tengo ni idea de como es ese
formato.

Casi todo lo dicho sirve para body_checks, salvo que en ese caso las
expresiones regulares se verifican en el cuerpo del mensaje, la
principal utilidad puede ser rechazar mensajes con determinados tipos de
archivos adjuntos. Chequear todos los cuerpos de los mensajes entrantes
requiere mas recursos de hardware que chequear los headers, así que hay
que hacer bien la expresión regular para evitar un consumo excesivo de
CPU y RAM (aunque en tu caso esto no debe ser relevante). También puede
ocurrir que una expresión mal hecha provoque el rechazo de TODO el
correo entrante, así que después de cambiar algo hay que estar atento a
los logs, por ejemplo con

tail -f /var/log/syslog |grep reject

Podés optar por usar sólo uno de los métodos (o body_checks o
headers_checks), usar los dos o no usar ninguno. Si no los vas a usar
tenés que comentar la línea correspondiente del main.cf (y un "postfix
reload" después) pero no hace falta que borrés los ficheros de
expresiones regulares.


2. segundo ejemplo. Para definir los dominios a los que les damos correo
y sus usuarios virtuales uso una tabla hash. En main.cf se pone

virtual_maps = hash:/etc/postfix/virtual

que activa la "feature" virtual_maps usando un fichero tipo hash que se
genera a partir de un fichero llamado virtual localizado en /etc/postfix
Ojo, postfix lo que lee en realidad es el fichero
/etc/postfix/virtual.db
para generarlo hacemos

postmap /etc/postfix/virtual

y después postfix reload

El contenido del fichero virtual (el que editamos con VI o cualquier
editor de texto) es algo así

congde.org 1
cgt.es 2
cnt.es 3
adminis...@congde.org administracion
coordi...@congde.org coordinadora
in...@cgt.es info_cgt
in...@cnt.es info_cnt

Primero va la lista de dominios que alojamos. NO hay que poner nuestro
dominio principal (aquel definido en mydomain del main.cf, en tu caso
menudeldia.net), sólo los que consideramos secundarios.
El nombre de dominio tiene que ir seguido de un espacio en blanco
seguido de cualquier cosa (se suele poner un número para tenerlos
numerados).
Después ponés en cada línea una dirección de correo seguida del usuario
local (existente en el /etc/passwd) al que se le entregarán los
mensajes.
En el ejemplo vemos que esto nos permite tener las mismas direcciones
(lo que va antes de la @) para dominios diferentes. En el programa de
correo de la persona que lea in...@cgt.es tendrá que poner info_cgt como
nombre de usuario para el servidor de correo entrante.
Todos los usuarios reales (del /etc/passwd) reciben el correo que vaya a
su nombre @dominio_principal (el de mydomain). Eso hace que tengamos
direcciones raras como info...@nodo50.org (en el caso de revolware),
pero da igual porque nadie la va a usar.


> Encontre está bibliografía, que está basante bien, pero no entiendo si
> dónde van las tablas
> Lookup, es decir los ficheros HASH y REGEXP
> -------------------------------------------------------------
> Esta es la bibliografía:
>
> Hay algunas de las opciones de Postfix que requieren saber
> que son
> tablas lookup (lookup tables). Son tablas, contenidas en un
> formato
> que Postfix define como diccionario.
>
> Estos diccionarios pueden ser de la siguiente forma:
> regexp:/file/name
> pcre:/file/name
> hash:/file/name
> mysql:/file/name.cf
> Existen mas, pero estos son los mas conocidos.
>
> Acá no comprendo si tengo que crear esto ficheros con VIM... si fuera
> así /file/name
> ¿es la ruta dónde se encuetra el fichero que voy a crear y definirle un
> nombre X?

en principio con VIM editás las regexp y el fichero de origen de la
tabla hash. Para tipo mysql el fichero que se crea tiene en realidad los
datos de acceso (usuario, pass, base de datos, etc...) a una base en
MySQL. Esto se puede usar para tener usuarios de correo completamente
virtuales, es decir no existen en el /etc/passwd si no que tenemos en
una tabla de MySQL su nombre, su contraseña, el nombre de su buzón y no
se que cosas mas. Claro que esto también lo tiene que entender el
servidor POP e IMAP. La ventaja es velocidad (se lee mas rápido una base
de datos que un fichero de texto como el /etc/passwd) y la seguridad (no
tenés usuarios reales o tenés los justos).


> Pcre y Mysql requieren que Postfix se recompile con este
> soporte.
>

El tipo pcre no se que es.

> Las tablas (maptype) son archivos (mapname) con separacion
> por comas
> o espacios (o una dbase) donde se crea una expresion regular
> y un
> resultado. Los resultados pueden ser los siguientes:
>
> OK : permitida la accion
> REJECT : accion rechazada
> RELAY : permite relay
> ERRORNO razon : un numero de error y una razon del error
>
> Algunos de los numeros de errores que se deben devolver son:
>
> 450 : Unknown address - DNS error
> 554 : UCE restriction
> 504 : Non-FQDN sender

esto viene a ser las tablas hash

> Regexp y PCRE (Perl Common Regular Expressions) son muy
> similares en
> su uso.
>
> Una tabla regexp puede ser, por ejemplo:
>
> /^am...@dominio1.com.*/ OK
> /^postmaster@.*$/ RELAY
> /[aA][cC]v@subdominio.*$/ REJECT
> /hahaha/ 550 Esto es un vil SPAM
>
> ¿Estás tablas van en algún lugar especial?, las tengo que crear con VIM
> o
> con qué?
>
> Una tabla HASH es de la siguiente forma:
>
> (patron) (separacion) (accion)
>
> y recuerda bastante la generacion de /etc/mail/access de
> Sendmail.
>
> Una separacion puede ser un blanco (espacio).
> Un patron puede venir de una base de datos, tabla NIS, SQL
> etc. de
> la siguiente forma:
>
> usuario@dominio
> nombre.de.dominio
> usuario@
> numero.ip.de.cliente, numero.ip.de , numero.ip , numero :
> direcciones de red.
>
> Las acciones son de la siguiente forma
> [45]XX text : rechaza el mensaje que aparezca en el patron y
>
> responde con el codigo y con el texto indicado.
> REJECT : simplemente rechaza. Un error generico es
> desplegado
> OK : acepta.
>
> Un ejemplo de una tabla HASH puede ser:
> midominio1.com OK
> spa...@spammersunited.com REJECT
> spammer@ REJECT
> 192.168.1.99 450 Unresolved
>
> La tabla HASH la tengo que crear con VIM?, dónde dobo ubicarla, es
> un fichero con n mbre determinado y sin extensión alguna no?


bueno, con lo que te explique arriba queda mas o menos aclarado. La
historia es que no tenés porque crear todas las tablas que postfix
soporta. Yo sólo añadí a la configuración por defecto headers_checks,
body_checks y virtual.
También tengo por supuesto

alias_maps = hash:/etc/aliases

que tiene la misma función que el aliases de sendmail. Cada vez que lo
modificamos creamos el aliases.db ejecutando newaliases (en vez de
postmap).

> A la vez cree:
>
> Filtrado de cabeceras así:
>
> header_checks = regexp:/etc/postfix/header_check
>
> y creamos el archivo /etc/postfix/header_check con
> /^to: *amigo@publico\.com$/ REJECT
>
> Según la bibliografía evita que direcciones del tipo
> mia...@publico.com,
> noa...@publico.com, am...@publico.com puedan o enviar o
> recibir o
> usar el servidor.
>
> Filtrado de contenido
>
> body_checks
>
> /keyword/ REJECT
>
> Esto evitara que alguien envie un correo que contenga en
> alguna
> parte del BODY del mensaje la palabra "keyword", por ejemplo
>


bien, ¿hiciste pruebas para ver si funciona? desde el windows intentá
mandar un mensaje con la palabra keyword a ver si te lo rechaza, y
mientras mirá el /var/log/syslog
El ejempo de header_checks es un poco raro, pues es para el destinatario
del mensaje. Cambialo por

/^From:.*luddit...@hotmail.com.*/ REJECT

y enviate un mensaje desde esa cuenta de hotmail. Aunque mejor te
recomiendo que dejés los headers_checks y body_checks para mas adelante
(comentalos en el main.cf). Primero debería funcionar bien la entrega de
correo para direcciones @menudeldia.net y el envío para cualquier
dominio de internet, si eso no está bien y luego te fallan los filtros
headers y body no vas a saber que es lo que está mal en realidad.

Otra cosa, decís

> Según la bibliografía evita que direcciones del tipo mia...@publico.com, noa...@publico.com, am...@publico.com puedan o enviar o recibir o usar el servidor.

postfix no tiene nada que ver con recibir el correo (con que el usuario
reciba sus mensajes en su programa de correo), de eso se encarga el
servidor POP o IMAP. Cuando decimos que se rechazan los mensajes quiere
decir que se rechaza el envío (para la gente que te use como servidor de
correo saliente smtp en su programa de correo) y que se rechaza la
entrega desde otros servidores (de smtp a smtp)

> Me falta algo más?, estos ficheros lo ubique dentro del /etc/postfix
>
> Otra cosa es que no se como y dónde debo crear la tabla de usuarios que
> tendran cuenta de mail, es decir dónde creo la centa de un usuario
> (pep...@pepito.com)

entendiendo que pepito.com es uno de tus dominios secundarios (que está
declarado en el virtual).
Lo mas fácil es crear el usuario pepito en el /etc/passwd (sin shell) y
luego añadir al /etc/postfix/virtual lo siguiente

pep...@pepito.com pepito

y ejecutar

postmap /etc/postfix/virtual
postfix reload

Pero claro, que ocurre si querés tener también pep...@menudeldia.net y
que sean dos cuentas separadas. En ese caso el usuario que corresponde a
pep...@pepito.com debería ser algo distinto que pepito, pues al ser
menudeldia.net el dominio principal no le podés poner alias. Así que
sería mejor esto:

pep...@pepito.com pepitocom

y te reservás el usuario pepito por si algún día te hace falta para
crear pep...@menudeldia.net


>
> Bueno, nada más =)
>
> Gracias
>
> andrés

de nada, así refresco mis conociemientos. Estos mensajes me los guardo.

Santi

Pedro Bados

no leída,
8 jun 2002, 21:30:058/6/02
a

On 08-Jun-2002 Matias wrote:
> Hola:
> Tengo configurado postfix, uw-imap (ipop3), y pop-before-smtp,
aparentemente
> bien. Pero resulta que acabó de recibir un mail de
> P...@nnss.com.ar,Date/Time:05/14/20...@nnss.com.ar, 07:29:2...@nnss.com.ar, y
> resulta que no existen esos usuarios en mí máquina (nnss.com.ar).
> Existe alguna forma de validar el from del mensaje. Me refiero a que
postfix
> verifique que si le llega algo como el_tal_ivan@en_algun_lugar, se conecte a
> en_algun_lugar y verifique que el_tal_ivan sea un usuario de mail y luego de
> esto permita que ingrese el mail.
> Y también necesitaría saber como se llama a lo que quiero hacer, así lo
> busco por otros lugares y veo que encuentro, dado que por ahora no encontré
> mucho ¿validación de from? ¿validación de usuarios?
>

Puedes conectarte al puerto smtp del servidor y utilizar VRFY :

trantor:~# telnet nnss.com.ar 25
VRFY P...@nnss.com.ar
550 <P...@nnss.com.ar>: User unknown
VRFY lis...@nnss.com.ar
252 lis...@nnss.com.ar

El user PM no existe y el user listas si. Mira a ver si lo metes en un script o
con un programita en c y nos cuentas.

Un saludo. Pedro.

0 mensajes nuevos