Editor Sieve en bruto para filtros de correo avanzados
Aprende a activar, validar y mantener scripts Sieve personalizados, con extensiones admitidas, ejemplos completos y errores habituales.
Detalles del artículo
Tipo, dificultad, planes e información de última actualización.
▼
Detalles del artículo
Tipo, dificultad, planes e información de última actualización.
- Tipo
- Referencia
- Dificultad
- Avanzado
- Planes
- Agency
- Última actualización
- 9 de sep. de 2026
La mayoría de las personas nunca necesitará esta página. El editor visual de filtros de TrekMail cubre casi todas las necesidades y es más fácil de usar. Sin embargo, si eres desarrollador, administras decenas de buzones o ya has alcanzado sus límites, el editor Sieve en bruto te da control total sobre el procesamiento del correo entrante.
Se necesita un plan Agency activo para activar un script en bruto. Los demás planes permiten guardar un borrador en el editor, pero no ejecutarlo.
¿Qué es Sieve?
Sieve es un pequeño lenguaje de scripts para filtrar correo. Sus instrucciones se ejecutan cada vez que llega un mensaje. Una regla puede comprobar remitente, asunto, tamaño o cabeceras y, después, mover, reenviar, destacar, rechazar o responder automáticamente al mensaje.
A diferencia de las reglas de Outlook o Apple Mail, Sieve se ejecuta en el servidor. Funciona las 24 horas aunque el ordenador esté apagado o la aplicación de correo cerrada. Todos los dispositivos conectados al buzón ven el mismo resultado.
No necesitas aprender Sieve para usar TrekMail. El editor visual genera Sieve en segundo plano. El editor en bruto solo permite escribirlo directamente cuando el editor visual no basta.
Cuándo usar Sieve en bruto o filtros visuales
Usa el editor visual cuando:
- Necesites condiciones sencillas como «De contiene X» o «Asunto contiene Y».
- Quieras mover, reenviar, destacar, rechazar o descartar mensajes.
- No te resulte cómodo escribir código.
- Quieras hacer cambios rápidos sin preocuparte por la sintaxis.
Usa el editor Sieve en bruto cuando:
- Necesites lógica compleja, por ejemplo «esto Y aquello, pero NO lo otro».
- Quieras detectar patrones con expresiones regulares, como números de pedido con un formato concreto.
- Necesites combinar respuestas de ausencia, filtros y reenvíos en un solo script.
- Necesites una lógica que el editor visual no pueda expresar.
- Administres plantillas que copias en muchos buzones.
Dónde encontrarlo
- Abre el panel de TrekMail y ve a Buzones.
- Elige Administrar junto al buzón que quieras configurar.
- Selecciona la pestaña Sieve.
- Verás un editor de código. En una cuenta Agency válida, se abre con el script generado a partir de tus filtros administrados, si existen. Edítalo o escribe uno desde cero.
- Haz clic en Guardar y activar para subir y aplicar el script.
El editor muestra el script actual o un espacio vacío si todavía no existe. Escribe o pega el script y pulsa Guardar y activar para aplicarlo.
Extensiones compatibles
Sieve es modular. El lenguaje básico es sencillo y las extensiones añaden funciones. TrekMail admite las siguientes:
| Extensión | Función |
|---|---|
fileinto |
Mueve un mensaje a una carpeta concreta. Sin ella, Sieve solo puede conservarlo en la bandeja de entrada o descartarlo. |
reject |
Devuelve el mensaje al remitente con un error personalizado. El remitente sabe que no se entregó. |
vacation |
Envía una respuesta automática, como un aviso de ausencia. Limita las respuestas para que cada remitente solo reciba una por periodo. |
copy |
Permite reenviar un mensaje conservando una copia en el buzón. Sin ella, el reenvío lo elimina del buzón. |
body |
Permite buscar en el contenido real del correo, no solo en las cabeceras. Sirve para filtrar por palabras del mensaje. |
imap4flags |
Establece indicadores, como leído, destacado o importante, visibles en el cliente de correo. |
variables |
Guarda partes de una coincidencia para reutilizarlas en el script. Facilita la lógica avanzada y evita repeticiones. |
relational |
Añade comparaciones numéricas, como mayor o menor que. Resulta útil para el tamaño y las cabeceras numéricas. |
regex |
Permite usar expresiones regulares. Es mucho más potente que una simple búsqueda por contenido. |
Para usar una extensión, declárala al principio del script con una instrucción require. El servidor valida el script antes de activarlo y rechaza extensiones no admitidas o que puedan comprometer la seguridad.
Scripts de ejemplo
Estos cuatro scripts completos y comentados se pueden adaptar.
Ejemplo 1: reenvío condicional complejo
Reenvía correos de un cliente concreto que mencionen «proposal» en el asunto y ocupen menos de 5 MB. También los archiva en una carpeta de proyecto y los destaca.
require ["fileinto", "copy", "imap4flags", "relational", "comparator-i;ascii-numeric"];
# Forward proposal emails from client, but only if they are under 5MB
if allof (
address :contains "from" "@bigclient.com",
header :contains "subject" "proposal",
size :under 5M
) {
# Send a copy to the project manager
redirect :copy "pm@youragency.com";
# Flag it for follow-up
addflag "\\Flagged";
# File it in the client folder
fileinto "Clients/BigClient/Proposals";
# Stop processing further rules
stop;
}
# Everything else from this client goes to their general folder
if address :contains "from" "@bigclient.com" {
fileinto "Clients/BigClient";
stop;
}
Qué hace: la primera regla es muy específica: solo coincide con correos del cliente sobre propuestas que ocupen menos de 5 MB. Los reenvía, destaca y archiva. La segunda regla recoge todo lo demás de ese cliente y lo guarda en su carpeta general.
Ejemplo 2: expresiones regulares para números de pedido
Detecta correos con números de pedido en un formato concreto, como ORD-12345 u ORD-98765, y los archiva automáticamente.
require ["fileinto", "regex"];
# Match order confirmation emails with order numbers like ORD-#####
if header :regex "subject" "ORD-[0-9]{4,6}" {
fileinto "Orders";
stop;
}
# Match support ticket numbers like TICKET-####
if header :regex "subject" "TICKET-[0-9]{3,}" {
fileinto "Support Tickets";
stop;
}
Qué hace: las expresiones regulares detectan patrones en vez de texto exacto. [0-9]{4,6} significa «entre 4 y 6 dígitos», por lo que abarca ORD-1234, ORD-12345 y ORD-123456 sin enumerar cada número posible.
Ejemplo 3: ausencia, archivo y reenvío combinados
Un solo script gestiona la respuesta de ausencia, reenvía mensajes urgentes a una compañera y archiva el resto por categoría.
require ["fileinto", "vacation", "copy", "imap4flags"];
# Auto-reply to everyone (once per 3 days per sender)
vacation :days 3 :subject "Out of office until April 15"
"Thanks for your email. I am out of the office until April 15
with limited access to email. For urgent matters, please contact
Sarah at sarah@youragency.com. I will reply when I return.";
# Forward urgent emails to Sarah immediately
if header :contains "subject" "urgent" {
redirect :copy "sarah@youragency.com";
addflag "\\Flagged";
}
# File invoices
if header :contains "subject" "invoice" {
fileinto "Invoices";
stop;
}
# File newsletters
if address :contains "from" "newsletter" {
fileinto "Newsletters";
stop;
}
Qué hace: vacation se ejecuta para cada mensaje entrante y envía la respuesta automática como máximo una vez cada 3 días por remitente. Después se aplican las reglas de clasificación. Como vacation no usa stop, el script continúa con las reglas inferiores. Así se combina la respuesta automática con otros filtros.
Ejemplo 4: destacar según una cabecera personalizada
Algunos sistemas añaden cabeceras como X-Priority para indicar la importancia. Este script la lee y destaca los mensajes de prioridad alta.
require ["imap4flags", "fileinto", "relational", "comparator-i;ascii-numeric"];
# X-Priority: 1 = highest, 5 = lowest
# Flag messages marked as high priority by the sending server
if header :value "le" :comparator "i;ascii-numeric"
"X-Priority" "2" {
addflag "\\Flagged";
}
# File low-priority messages (4 or 5) into a "Low Priority" folder
if header :value "ge" :comparator "i;ascii-numeric"
"X-Priority" "4" {
fileinto "Low Priority";
stop;
}
Qué hace: la cabecera X-Priority usa números donde 1 es la prioridad máxima y 5 la mínima. El operador :value "le" significa «menor o igual que», así que detecta y destaca prioridades 1 y 2. Las prioridades 4 y 5 se mueven fuera de la bandeja de entrada.
Notas importantes
Los scripts en bruto sustituyen a los filtros visuales. Al guardar uno, sustituye los filtros creados con el editor visual para ese buzón. No se pueden combinar. Los filtros visuales permanecen guardados, pero inactivos mientras el script está activo. Para recuperarlos, pulsa Restablecer valores predeterminados al principio de la pestaña Sieve.
El servidor valida antes de activar. Al pulsar Guardar y activar, el servidor comprueba la sintaxis. Si encuentra un problema, muestra el error y no activa el script. El script anterior o los filtros visuales siguen funcionando hasta que lo corrijas.
La instrucción require es obligatoria. Cada extensión utilizada debe aparecer en una instrucción require al principio. Si usas fileinto y vacation sin declararlas, el servidor rechaza el script. Si dudas, incluye todo lo que puedas necesitar.
El spam se filtra antes de ejecutar el script. El filtro antispam de TrekMail procesa los mensajes en el servidor antes que Sieve. El script solo recibe mensajes que superaron ese control. No necesitas escribir reglas antispam en Sieve.
Volver a los filtros visuales
Para dejar de usar un script en bruto y recuperar el editor visual:
- Abre la pestaña Sieve del buzón.
- Haz clic en Restablecer valores predeterminados en la esquina superior derecha.
- Confirma la acción.
Esto descarta el script personalizado y restaura el generado por los filtros visuales. Los filtros creados en la pestaña Filtros se conservan mientras el script está activo; al restablecer, simplemente vuelven a activarse.
Guardar un cambio en la pestaña Filtros también devuelve el buzón al script administrado. La pestaña Respuesta automática no sobrescribe un script en bruto. Primero vuelve al modo administrado y después configura la respuesta.
Errores habituales y soluciones
Olvidar require. Hay que declarar todas las extensiones. Si aparece un error como «unknown command fileinto», añade require ["fileinto"]; al principio.
Faltan puntos y coma. Todas las órdenes Sieve terminan en punto y coma. Si el validador avisa de tokens inesperados, comprueba los puntos y coma, en especial después de stop, discard y fileinto.
Las cadenas deben llevar comillas. Los nombres de carpetas, direcciones y valores de comparación necesitan comillas dobles. fileinto Newsletters; falla; fileinto "Newsletters"; es correcto.
Barra inversa en los indicadores. Los indicadores IMAP como \Flagged y \Seen requieren dos barras inversas en Sieve: "\\Flagged" y "\\Seen". Una sola se interpreta como carácter de escape y produce errores.
La carpeta no existe. Créala en el cliente de correo antes de dirigir mensajes a ella. Un script en bruto no crea automáticamente una carpeta ausente, salvo que el propio script y el servidor admitan esa función.
El script es demasiado grande. Existe un límite práctico. Si supera unos cientos de líneas, valora trasladar algunas reglas al editor visual. No todo tiene que estar en un único script.
Artículos relacionados
Ve a guías cercanas que continúan el flujo de trabajo.