[eside-ghost] Filtrar mails en el servidor
Alvaro Uría
fermat en rigel.deusto.es
Jue Oct 2 16:57:57 CEST 2008
Aupi,
El 02/10/08 15:40, Borja Sotomayor escribió:
> Hola a todos,
>
> Tengo una duda sobre servidores de correo... hace varios años monté mi
> servidor de correo con Postfix + Courier IMAP + MySQL (configurado
> siguiendo el mítico howto que escribió en su día split ;-), y casi ni lo
> he tocado desde entonces. Sin embargo, ahora me surge la necesidad de
> que el servidor realice un filtrado básico de e-mails. Simplemente
> necesito que, basado en la dirección del remitente, se forwardee el
> e-mail a otra dirección (en otro servidor distinto).
Dependiendo el grado que quieras de proceso de los mensajes que lleguen
desde ese/os remitente/s, tienes 2 opciones:
1) A nivel de MTA (Postfix), comprobando el "sender" y el "recipient", y
en base a eso, hacer un "REDIRECT".
Básicamente la configuración sería algo tal que así (todo en el main.cf):
a) En el smtpd_recipient_restrictions
(http://www.postfix.org/postconf.5.html#smtpd_recipient_restrictions)
creas una regla tal que:
"check_recipient_access hash:/etc/postfix/redirects_por_rcpt"
Ese fichero contendría algo tal que:
"""
borja en borjanet.com redirectsborja
"""
Harías "postmap /etc/postfix/redirects_por_rcpt" y lista esa parte.
b) Luego, "redirectsborja" sería una restricción que se debería definir
mediante smtpd_restriction_classes
(http://www.postfix.org/postconf.5.html#smtpd_restriction_classes),
poniendo (en main.cf):
"""
smtpd_restriction_classes = redirectsborja
"""
c) Y así puedes crear la definición de esa restricción en el main.cf:
"""
redirectsborja = check_sender_access
hash:/etc/postfix/redirect_senders_borja
"""
Y este fichero contendría algo así como:
"""
john en doe.org REDIRECT borja en foobar.org
"""
Y como en el anterior fichero, sería hacer "postmap
/etc/postfix/redirect_senders_borja" para crear el fichero binario que
lee Postfix.
Estos ficheros son del tipo "access table" (ahí ves la sintaxis REDIRECT
y así):
http://www.postfix.org/access.5.html
d) Y con un "postfix reload" debería funcionar.
El resumen es que:
i) Al mirar la "access table" por destinatario, hay una coincidencia con
la cuenta "borja en borjanet.com", así que se aplica la regla "redirectsborja".
ii) "redirectsborja" comprueba el sender, y si existe una coincidencia
pues aplica la regla de la columna de la derecha (en este caso, la
REDIRECT).
iii) Si el recipient no es "borja en borjanet.com", no hay coincidencia de
regla y no se hace nada que no se ha hecho hasta ahora.
iv) Si el recipient es "borja en borjanet.com" pero el sender no
corresponde con ninguno de la lista, pues tampoco se hace nada que no se
haya hecho hasta ahora.
2) A nivel de MDA (yo recomendaría Maildrop), creando un ".mailfilter"
en el buzón de tu usuario, con una condición basada en el "sender".
Esto implica que el mensaje pasa por el antivirus/antispam, si es que
hay... y tal...
Si lo tienes montado como explicaba split, los mensajes se entregarán en
tu buzón mediante el proceso "virtual".
Ese proceso está definido en la variable (en main.cf) "virtual_transport
= virtual" (si no está es que es un valor por defecto).
Sería cuestión de cambiarlo por "virtual_transport = maildrop".
Ese transporte ("maildrop") debe estar definido en el "master.cf", con
una regla tal que:
"""
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${user}
"""
O algo por el estilo.
Seguramente, tendrás configurado también "Courier-POP" y "Courier-IMAP".
Maildrop es parte de esa suite, y en los últimos años ha cambiado su
diseño y no sé si lo tendrás actualizado.
Tal como funciona ahora, existe un "Courier-Authdaemon", daemon al que
se conectan los servicios de POP/IMAP/Maildrop para la autenticación, y
saber el path al maildir.
Si tienes lo del "Courier-Authdaemon", entonces sólo vas a tener que
instalar Maildrop, y en teoría ya empezará a funcionar bien (hasta que
no estés seguro, no cambies el "virtual_transport" y tal O:-P)
Una vez lo tengas (si no te funciona coméntalo :P), el fichero
".mailfilter" sería algo así como:
"""
if ($FROM =~ /^john en doe.org$/)
{
to "!borja en foobar.org"
}
"""
O en lugar de "to", usar "cc", que se envía una copia (y tu buzón en
"borja en borjanet.com" recibe tb el mensaje).
La sintaxis está en,
http://www.courier-mta.org/maildropfilter.html
> Un saludo,
Suerte,
Alvaro.
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre : signature.asc
Tipo : application/pgp-signature
Tamaño : 252 bytes
Descripción: OpenPGP digital signature
Url : https://listas.deusto.es/mailman/private/eside-ghost/attachments/20081002/a66ce8e2/attachment.pgp
Más información sobre la lista de distribución eside-ghost