Sieve es un lenguaje de programación que se puede utilizar para el filtrado de correo electrónico . Debe su creación al CMU Cyrus Project, creadores del servidor Cyrus IMAP .
Autor (es) original (es) | Universidad de Washington y Carnegie Mellon University [1] y estandarizado por Tim Showalter |
---|---|
Versión inicial | 1999 [1] |
Sistema operativo | Multiplataforma |
Tipo | Filtrado de correo electrónico |
Sitio web | tamiz |
El idioma no está vinculado a ningún sistema operativo o arquitectura de correo en particular. Requiere el uso de mensajes que cumplan con RFC-2822, pero de lo contrario debe generalizarse a otros sistemas que cumplan con estos criterios. La versión actual de la especificación básica de Sieve se describe en RFC 5228, publicado en enero de 2008.
Idioma
Sieve es un lenguaje de programación basado en datos , similar a los lenguajes de filtrado de correo electrónico anteriores, como procmail y maildrop , y a los lenguajes orientados a líneas anteriores, como sed y AWK : especifica las condiciones que deben coincidir y las acciones que se deben tomar para hacer coincidir.
Esto se diferencia de los lenguajes de programación de propósito general en que es muy limitado: el estándar base no tiene variables ni bucles (pero sí permite la ramificación condicional), lo que evita programas fuera de control y limita el lenguaje a operaciones de filtrado simples. Aunque se han diseñado extensiones para ampliar el lenguaje para incluir variables y, hasta cierto punto, bucles, el lenguaje todavía está muy restringido y, por lo tanto, es adecuado para ejecutar programas diseñados por el usuario como parte del sistema de correo.
También hay un número significativo de restricciones en la gramática del idioma, con el fin de reducir la complejidad de analizar el idioma, pero el idioma también admite el uso de múltiples métodos para comparar cadenas localizadas y es totalmente compatible con Unicode .
Si bien Sieve se concibió originalmente como una herramienta externa a SMTP, [2] [3] RFC 5429 lo extiende por casualidad para permitir el rechazo en el nivel del protocolo SMTP. [4]
Usar
Los scripts de Sieve pueden ser generados por un editor de reglas basado en GUI o pueden ingresarse directamente usando un editor de texto .
Los scripts se transfieren al servidor de correo de forma dependiente del servidor. El protocolo ManageSieve (definido en RFC 5804) permite a los usuarios administrar sus scripts de Sieve en un servidor remoto. Los servidores de correo con usuarios locales pueden permitir que los scripts se almacenen, por ejemplo, en un archivo .sieve en los directorios de inicio de los usuarios.
Historia
El lenguaje fue estandarizado en el (ahora obsoleto) RFC 3028 de enero de 2001, por Tim Showalter.
Extensiones
El grupo de trabajo IETF Sieve [5] ha actualizado la especificación base en 2008 (RFC 5228) y ha llevado las siguientes extensiones al estado de estándar propuesto:
- RFC 5173 - Cuerpo; permite que un script pruebe el cuerpo de un mensaje, no solo su encabezado.
- RFC 5229 - Variables; permite que el script guarde y recupere valores en variables.
- RFC 5230 - Vacaciones; especifica una acción para enviar una respuesta informando al remitente que el destinatario puede estar ausente.
- RFC 5231 - Pruebas relacionales; define pruebas numéricas, de modo que una secuencia de comandos puede probar un campo en busca de un valor numérico y puede probar el número de apariciones de un campo.
- RFC 5232 - IMAP4flags; permite que un script pruebe y establezca los indicadores IMAP de un mensaje .
- RFC 5233 - Subdirección; permite que un script pruebe subdirecciones con el formato "[email protected]".
- RFC 5235 - Prueba de spam y virus; permite que un script interactúe con el filtrado de mensajes dependiente de la implementación.
- RFC 5260 - Extensiones de índice y fecha.
- RFC 5293 - Encabezado de edición; permite que una secuencia de comandos agregue y elimine campos de encabezado de mensaje .
- RFC 5429 - Rechazar; permite rechazar mensajes a nivel LMTP / SMTP o con un MDN o DSN .
- RFC 5435 - Notificaciones; permite que un script active notificaciones externas de correo electrónico .
- RFC 5436 - Notificaciones por correo electrónico; especifica notificaciones por correo electrónico.
- RFC 5437 - Notificaciones XMPP; especifica notificaciones a través de XMPP .
- RFC 5490 - Comprobación; Estado del buzón y acceso a los metadatos del buzón.
- RFC 5703 - Pruebas, iteración, extracción, reemplazo y envolvente de piezas MIME
- RFC 5804: un protocolo para la gestión remota de scripts de cribado
El grupo de trabajo de Sieve todavía está desarrollando otras extensiones. [ cita requerida ]
Ejemplo
Este es un ejemplo de secuencia de comandos de tamiz:
# Filtro de tamiz# Declare las extensiones utilizadas por este script. # require [ "archivar en" , "rechazar" ];# Los mensajes de más de 100K serán rechazados con un mensaje de error # si el tamaño es de más de 100K { rechazar "Lo siento, no acepto correo de más de 100kb de tamaño. Sube archivos más grandes a un servidor y envíame un enlace. Gracias . " ; }# Los correos de una lista de correo se colocarán en la carpeta "mailinglist" # dirección elsif : es [ "De" , "Para" ] "[email protected]" { fileinto "INBOX.mailinglist" ; } # Regla de correo no deseado: el mensaje no contiene mi dirección en el encabezado Para, CC o CCO #, o el asunto es algo con "dinero" o "Viagra". # elsif anyof ( no address : all : contains [ "Para" , "Cc" , "Cco" ] "[email protected]" , header : coincide con "Asunto" [ "* dinero *" , "* Viagra *" ] ) { archivo en "INBOX.spam" ; }# Mantenga el resto. # Esto no es necesario porque hay una regla de "conservación implícita" # else { keep ; }
Ver también
Referencias
- ^ a b http://sieve.info/history
- ^ Ese tamiz opera después de la aceptación del mensaje está en su documento definitorio: P. Guenther; T. Showalter (enero de 2008). Sieve: un lenguaje de filtrado de correo electrónico . IETF . doi : 10.17487 / RFC5228 . RFC 5228 .
Es razonable filtrar cuando el MTA deposita correo en el buzón del usuario.
- ^ Esa entrega final está fuera de SMTP está en su documento de definición: John Klensin (octubre de 2008). "Información de seguimiento" . Protocolo simple de transferencia de correo . IETF . segundo. 4.4. doi : 10.17487 / RFC5321 . RFC 5321 .
La entrega final significa que el mensaje ha salido del entorno SMTP.
- ^ Aaron Stone (marzo de 2009). "Rechazar un mensaje en el nivel de protocolo SMTP / LMTP" . Filtrado de correo electrónico de tamiz: rechazo y extensiones de rechazo extendido . IETF . segundo. 2.1.1. doi : 10.17487 / RFC5429 . RFC 5429 .
- ^ Carta del grupo de trabajo de Sieve Archivado el 31 de diciembre de 2005 en la Wayback Machine.
enlaces externos
- Sieve.Info, un sitio wiki sobre Sieve
- La antigua página de inicio de Sieve en web.archive.org
- RFC 5228 (Especificación básica sobre el tamiz)
- Carta del Grupo de Trabajo de Sieve IETF
- Tutorial de tamiz con muchos ejemplos