Como filtrar mensajes de correo en un servidor IMAP

De doc.ubuntu-es
(Diferencias entre revisiones)
Saltar a: navegación, buscar
m (Mis ojos, mis ojos! Se me olvido poner las tildes...)
m (añado categoría)
 
Línea 85: Línea 85:
 
=Referencias=
 
=Referencias=
 
* He basado este tutorial en la [http://imapfilter.hellug.gr/#documentation documentación] de IMAPFIlter.
 
* He basado este tutorial en la [http://imapfilter.hellug.gr/#documentation documentación] de IMAPFIlter.
 +
 +
[[Categoría:Servidores]]

Última revisión de 19:43 19 mar 2010

Contenido

[editar] Descripción

Los actuales clientes de correo incluyen entre sus funcionalidades el filtrado de los mensajes atendiendo a diversos parámetros configurables por quien los usa. De este modo se pueden clasificar y priorizar mejor la correspondencia. Pero en situaciones de gran movilidad es difícil mantener coordinados dichos filtros entre diferentes equipos (trabajo, casa, cibercafes, ...). En esta y otras situaciones podemos usar una herramienta llamada IMAPFilter.

[editar] Requisitos

Únicamente es necesario disponer del programa IMAPfilter (no necesariamente en el servidor de correo IMAP). Este tutorial se ha probado contra un servidor IMAP configurado siguiendo el tutorial Virtual Users And Domains With Postfix, Courier, MySQL And SquirrelMail (Ubuntu 9.04). Es posible que con otros tipos de servidores sean necesarios algunos reajustes.

[editar] Proceso

[editar] Instalación

En los repositorios de Jaunty se encuentra la aplicación IMAPFilter, de modo que deberemos teclear en una terminal:

sudo aptitude install imapfilter

O instalar desde el gestor de paquetes Synaptic dicha aplicación.

[editar] Configuración

La configuración solo precisa de la creación de un archivo que incluirá las opciones generales, las opciones de cada cuenta de correo que queramos gestionar y los filtros a aplicar en la cuenta o cuentas. El programa buscara este fichero llamado config.lua dentro de la carpeta oculta .imapfilter, que a su vez se encontrara en la carpeta del usuario o usuaria en cuestión. De modo que podemos empezar creando dicha carpeta para nuestro usuario.

  • En terminal:
mkdir ~/.imapfilter

Y continuaremos editando dicho fichero con nuestro editor de texto preferido y cambiando sus permisos para que nadie pueda leer las contraseñas de las cuentas de correo:

  • En terminal:
nano .imapfilter/config.lua && chmod go-rwx .imapfilter/config.lua
gedit .imapfilter/config.lua && chmod go-rwx .imapfilter/config.lua

Lo único un poco complicado es la sintaxis de este fichero, y en realidad tampoco lo es tanto. Esta basada en el lenguaje de programación LUA y esta muy bien descrita (en ingles) en la documentación del programa.

[editar] Opciones generales

Las opciones generales van precedidas del texto options. y para empezar mostrare un ejemplo:

options.create = true
options.close = true
options.subscribe = true

Esto indica al programa:

  1. options.create que al escribir un mensaje en una carpeta no existe la cree.
  2. options.close que se cierre la carpeta en uso al terminar las operaciones, lo que implica que se eliminen los mensajes marcados como eliminados en ese momento.
  3. options.subscribe implica que las carpetas creadas automáticamente sean suscritas (visibles).

En la documentación se explican el resto de opciones que enumero: create,close,crammd5,expunge,info,namespace,starttls,subscribe,timeout

[editar] Configuración de las cuentas

Para configurar cada cuenta de correo usaremos la función IMAP() del siguiente modo:

cuenta1 = IMAP {
 server = 'imap.servidor.com',
 port = 993,
 username = 'yo',
 password = 'secreto',
 ssl = 'ssl3'
}
  1. La linea server indica el nombre del servidor IMAP.
  2. La linea port indica el puerto usado para conectar al servidor IMAP (143 para IMAP y 993 para IMAPS).
  3. La linea username indica nuestro nombre de usuario en el servidor IMAP.
  4. La linea password indica la clave de nuestra cuenta en el servidor IMAP.
  5. La linea ssl indica que se usara una conexión segura (IMAPS) y el protocolo a usar ssl2 , ssl3 , tls1.

[editar] Configuración de los filtros

Y aqui entramos en lo único un poco mas complicado. Como decía antes, este archivo de configuración se escribe siguiendo las normas del lenguaje de programación LUA y por tanto es preciso tener algunos conocimientos básicos de programación para perfeccionar este archivo, pero para ayudar existen los múltiples ejemplos que se proveen en la documentación. Así que nada mejor que mostrar algunos y sus resultados.

[editar] Buscando mensajes

  • Obtener mensajes (despues veremos que podemos hacer con estos mensajes) no vistos y con un remitente especifico
no_vistos_de_spam = cuenta1.INBOX:is_unseen() *
 cuenta1.INBOX:contain_from('@spam.com')

Aqui podemos ver que pedimos una lista de mensajes de la bandeja de entrada (INBOX) que coincidan con dos condiciones.

  1. Que no hayan sido vistos por el usuario (is_unseen).
  2. Que el remitente contenga el texto @spam (contain_from).

El símbolo * indica el operador Y (AND) que le dice a IMAPFilter que deben cumplirse las dos condiciones.

  • Obtener mensajes que provengan de un determinado remitente y que su asunto no sea uno determinado:
de_pepe_no_urgentes = cuenta1.INBOX:contain_from('pepe@servidor.com') -
 cuenta1.INBOX:contain_subject('urgente')

En este caso el símbolo - indica el operador NO (NOT) que le dice al programa que se debe cumplir la primera y que no se debe cumplir la segunda condición.

[editar] Haciendo cosas con los mensajes

Ahora deberemos indicar al programa que hacer con estos mensajes que ha localizado para nosotros y de nuevo un par de ejemplos comunes.

  • Eliminar mensajes:
cuenta1.INBOX:delete_messages(no_vistos_de_spam)

Aqui le decimos que elimine mensajes de la cuenta cuenta1 y el listado de mensajes exacto es el que indicamos previamente con el nombre no_vistos_de_spam.

  • Mover mensajes a una carpeta determinada:
cuenta1.INBOX:move_messages(cuenta1['De Pepe/No urgente'],de_pepe_no_urgentes)

En este ejemplo moveremos los mensajes que indicamos con el listado de_pepe_no_urgentes a la carpeta No urgente que esta dentro de la carpeta De Pepe.

[editar] Preparando su ejecución programada

Ahora es necesario que se ejecute el programa IMAPFilter para que apliquen nuestros filtros. Lo haremos con la opcion debug (-d)) para obtener información extra de lo que sucede y hace el programa.

imapfilter -d

Esto aplicara por primera vez los filtros, pero para que se ejecuten repetidamente deberemos crear una tarea programada que lo realice por nosotros. Dicha tarea programada la debera realizar el mismo usuario del sistema que es propietario del archivo de configuración. Así que en una terminal pondremos el siguiente comando:

crontab -e

Si es la primera vez que usamos crontab nos preguntara por el editor de textos que queremos usar. En mi caso me decante por la opcion 3, nano. Una vez tengamos abierto el archivo de configuración de las tareas programadas agregaremos la siguiente linea:

0,10,20,30,40,50 * * * * /usr/bin/imapfilter

La opción -d es mejor eliminarla para no recibir mas información pero si tienes dudas, usala aquí también para poder controlar que hizo el programa con tus mensajes y asi depurar tus filtros.

[editar] A tener en cuenta

  • Los textos con símbolos especiales como tildes, eñes, etc. Pueden aparecer en nuestro programa de correo de una manera y el servidor entenderlos de otra. Aconsejo que mires el código fuente del mensaje primero para asegurarte de como aparece el texto allí o usar las palabras o trozos de palabras que no contengan dichos símbolos. Por ejemplo: El mensaje pone Información sobre las españolas, pues escribe el filtro:
infoespa = cuenta1.INBOX:contain_subject('Informaci') +
 cuenta1.INBOX:contain_subject('sobre las espa)

[editar] Referencias

Herramientas personales