Módulo 6 · 6.1
Cómo funcionan los filtros
Módulo 6: Automático: filtros y ausencia · Tiempo de lectura: 10 minutos
Objetivo de aprendizaje: Tras esta lección, usted sabrá explicar dónde y cuándo actúan los filtros, leer un script de filtros en Sieve y predecir en qué carpeta acabará un mensaje entrante.
Conceptos clave: filtro, Sieve, ManageSieve, conjunto de filtros, regla, condición, acción, conservación implícita, stop, contiene, es igual a, coincide con la expresión
Los filtros actúan en el servidor
Un filtro ordena su correo automáticamente: los correos con "factura" en el asunto van a la carpeta Facturas y los boletines, a su propia carpeta. Lo más importante que debe saber: esa clasificación no se hace en el webmail, sino en el servidor de correo, en el momento en que un mensaje se entrega en su buzón.
De ahí se derivan tres cosas:
- Los filtros funcionan aunque el webmail esté cerrado. Su portátil puede estar apagado. El teléfono ve el correo directamente en la carpeta correcta.
- Los filtros solo actúan sobre el correo nuevo. El correo que ya está en su buzón se queda donde está. Si crea un filtro hoy, tendrá que mover usted mismo los mensajes antiguos.
- Los filtros se aplican a un solo buzón. Cada buzón tiene sus propios filtros. Si quiere configurar algo para todos los buzones de su dominio, como bloquear a un remitente, hágalo en el panel de control de su alojamiento.
Los filtros están escritos en Sieve, un lenguaje sencillo creado especialmente para filtrar correo (RFC 5228). El servidor de correo de WebOké utiliza Dovecot con Pigeonhole, la implementación de Sieve de Dovecot. El webmail convierte lo que usted elige en el formulario en un script Sieve y lo envía al servidor mediante el protocolo ManageSieve (RFC 5804). Usted no necesita escribir Sieve, pero quien sabe leerlo entiende exactamente qué hacen sus filtros.
Conjunto de filtros, reglas, condiciones y acciones
Un conjunto de filtros es el script completo: todos los filtros de su buzón en un solo archivo. Puede tener varios conjuntos de filtros, pero siempre hay solo uno activo.
En el conjunto de filtros están los filtros, que en el webmail también se llaman reglas. Cada filtro tiene:
- un nombre, solo para usted;
- un alcance: el mensaje debe cumplir todas las reglas, una de las reglas, o el filtro se aplica a todos los mensajes;
- una o varias condiciones: dónde mira el filtro (asunto, remitente, otra cabecera), cómo compara y con qué texto;
- una o varias acciones: qué ocurre si se cumplen las condiciones.
Hay tres formas de comparar:
| En el webmail | En Sieve | Significado |
|---|---|---|
| contiene | :contains | el texto aparece en algún lugar de la cabecera |
| es igual a | :is | la cabecera es exactamente este texto |
| coincide con la expresión | :matches | patrón con * (cero o más caracteres) y ? (exactamente un carácter) |
En los tres casos, las mayúsculas no importan. Sieve compara por defecto con la regla i;ascii-casemap, que trata igual las mayúsculas y las minúsculas. Así, "factura" también encuentra "FACTURA" y "Factura".
Así es un conjunto de filtros
En el webmail puede ver el conjunto de filtros como texto en Filtros > Acciones > Editar conjunto de filtros. Un ejemplo tal como lo escribe el webmail:
require ["fileinto"];
# rule:[Boletines]
if exists "List-Id"
{
fileinto "Boletines";
stop;
}
# rule:[Facturas]
if allof (header :contains "subject" "factura")
{
fileinto "Facturas";
}
# rule:[Compañero Pablo]
if false # header :contains "from" "pablo@example.com"
{
fileinto "INBOX.Equipo";
}Línea por línea:
require ["fileinto"];pide al servidor la extensión necesaria para mover a una carpeta. El webmail la añade por sí mismo al principio, con todas las extensiones que usa el script.# rule:[Boletines]es un comentario. Con él, el webmail reconoce el nombre de su filtro. El servidor ignora esa línea.if exists "List-Id"es la condición: el mensaje tiene una cabecera List-Id. Los boletines y las listas de correo la tienen (RFC 2919).fileinto "Boletines";mueve el mensaje a la carpeta Boletines. El nombre de la carpeta es el nombre completo en el servidor, con el punto como separador (lección 5.1). Una carpeta bajo Entrada se llama, por tanto,INBOX.Equipo.stop;detiene todo el script. Los filtros siguientes ya no miran este mensaje. En el webmail, esta acción se llama Parar de evaluar reglas.if false # ...es un filtro desactivado. Si desmarca Filtro activado, el webmail convierte la condición enfalse: nunca se cumple. La condición antigua se conserva como comentario, para que pueda volver a activarla más adelante.

De arriba abajo
El servidor lee el script de arriba abajo y examina cada filtro. Para ello se aplican tres reglas.
1. Sin acción, el mensaje se queda en Entrada. Sieve tiene la conservación implícita (implicit keep, RFC 5228, sección 2.10.2): si ningún filtro hace nada, el mensaje llega sin más a Entrada.
2. Después de moverlo, el mensaje no está también en Entrada. Un fileinto desactiva esa conservación implícita. El mensaje va a la carpeta elegida y no, además, a Entrada. Si quiere que esté en ambos sitios, utilice Copiar mensaje a.
3. Sin stop, los filtros siguientes también miran. Si falta stop, el servidor continúa con el siguiente filtro. Si ese filtro también coincide, el servidor ejecuta también su acción. Dos movimientos a dos carpetas significan que el mensaje acaba en ambas carpetas. Con stop, decide el primer filtro que coincide.
Por eso el orden importa. En el ejemplo anterior, Boletines está por encima de Facturas, con un stop. Un boletín con "Su factura" en el asunto va, por tanto, a Boletines y no a Facturas. Si invierte el orden, ese mismo boletín acaba en Facturas, porque ese filtro no tiene stop y ahora va primero. El boletín incluso estaría en ambas carpetas. Por eso, coloque arriba los filtros más específicos y deles un stop.
Recorrer un mensaje: así lo predice
Tome un mensaje y recorra el script como lo hace el servidor:
- Empiece por el primer filtro. ¿Está desactivado (
if false)? Sáltelo. - ¿Se cumple la condición? Fíjese bien en la cabecera:
subjectes el asunto,fromel remitente con nombre y dirección,toel destinatario. - Si es así: ejecute las acciones. Si hay un
stop, ha terminado. - Si no, o si no hay stop: pase al siguiente filtro.
- Al final: si ningún filtro ha movido ni eliminado el mensaje, este está en Entrada (
INBOX).
Con estos cinco pasos puede leer cualquier script, aunque sea largo.
En la práctica: así funciona en el webmail
Los filtros se encuentran en Configuración > Filtros. La lista muestra sus filtros en el orden en que el servidor los ejecuta; puede arrastrarlos para cambiar el orden. En Acciones está Editar conjunto de filtros: ahí ve y modifica el script como texto. Los pasos para crear un filtro nuevo están en el Manual de Roundcube, en Crear un filtro. En otros webmails funciona de forma parecida: Gmail tiene filtros y Outlook.com, reglas. No usan Sieve, pero allí también cuentan el orden y la detención.
Resumen
- Los filtros actúan en el servidor de correo al entregar el mensaje, por lo que funcionan aunque el webmail esté cerrado, y solo sobre el correo nuevo.
- El webmail escribe sus filtros como script Sieve (RFC 5228) y lo coloca en el servidor mediante ManageSieve.
- Contiene, es igual a y coincide con la expresión no distinguen por defecto entre mayúsculas y minúsculas.
- Si ningún filtro hace nada, el mensaje se queda en Entrada; después de moverlo, no está también en Entrada.
- Los filtros se recorren de arriba abajo; stop termina el script, así que el orden determina el resultado.
Cuestionario
Ejercicio
Ejercicio A6.1: ¿Adónde va a parar este correo? Abra el material filters-1.txt, un conjunto de filtros tal como lo escribe el webmail, y berichten-1.txt, con las cabeceras de cuatro mensajes entrantes, numerados del 1 al 4. Recorra cada mensaje según los cinco pasos de esta lección: de arriba abajo, saltando los filtros desactivados y fijándose en stop. Para cada mensaje, indique el nombre de la carpeta en la que acaba, exactamente como figura en el script; si el mensaje acaba en Entrada, indique INBOX. El programa compara sus cuatro respuestas con la clave de respuestas y muestra, para cada mensaje, qué filtro fue decisivo.
Para saber más
Cuando se indican pasos en el webmail, se refieren al webmail de WebOké; en otros webmails funciona de forma parecida.
- Roundcube Webmail 7.1: Crear un filtro
- Roundcube Webmail 7.2: Ejemplos de filtros útiles
- Reglas de correo electrónico del lado del servidor (filtros en el servidor)
- RFC 5228, Sieve: An Email Filtering Language (en inglés): https://www.rfc-editor.org/rfc/rfc5228
- RFC 5804, ManageSieve (en inglés): https://www.rfc-editor.org/rfc/rfc5804
- RFC 2919, List-Id (en inglés): https://www.rfc-editor.org/rfc/rfc2919
- Ver, descargar y restaurar sus filtros como script Sieve
