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:[EMAIL PROTECTED]/ 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 [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] 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 [EMAIL PROTECTED] administracion [EMAIL PROTECTED] coordinadora [EMAIL PROTECTED] info_cgt [EMAIL PROTECTED] 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 [EMAIL PROTECTED] 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 [EMAIL PROTECTED] (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: > > /[EMAIL PROTECTED]/ OK > /[EMAIL PROTECTED]/ RELAY > /[EMAIL PROTECTED]/ 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: > > [EMAIL PROTECTED] > 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 > [EMAIL PROTECTED] 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: [EMAIL PROTECTED]/ REJECT > > Seg�n la bibliograf�a evita que direcciones del tipo > [EMAIL PROTECTED], > [EMAIL PROTECTED], [EMAIL PROTECTED] 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:[EMAIL PROTECTED]/ 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 [EMAIL PROTECTED], > [EMAIL PROTECTED], [EMAIL PROTECTED] 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 > ([EMAIL PROTECTED]) 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 [EMAIL PROTECTED] pepito y ejecutar postmap /etc/postfix/virtual postfix reload Pero claro, que ocurre si quer�s tener tambi�n [EMAIL PROTECTED] y que sean dos cuentas separadas. En ese caso el usuario que corresponde a [EMAIL PROTECTED] 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: [EMAIL PROTECTED] pepitocom y te reserv�s el usuario pepito por si alg�n d�a te hace falta para crear [EMAIL PROTECTED] > > Bueno, nada m�s =) > > Gracias > > andr�s de nada, as� refresco mis conociemientos. Estos mensajes me los guardo. Santi -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

