Capítulo 07b Transporte y defensa del correo Admin: #pSpam

IA en reglas Sieve: "¿Es este correo una factura?" como condición de filtro

Las reglas de la bandeja de entrada y el Sieve del sistema pueden consultar a un modelo de lenguaje y, según la respuesta, mover, marcar o reenviar. Dos formas: una pregunta libre de sí/no o una elección entre categorías. Utiliza el mismo proveedor que el clasificador de spam con IA (nivel 1): se recomienda un Ollama local; los servidores compatibles con OpenAI, Anthropic o Gemini son opcionales. En el webmail, la condición se llama "Si la IA detecta …", con un botón de prueba, plantillas y una nota sobre qué datos van a qué proveedor. ManageSieve y JMAP también entienden la extensión. Administración: SpamGuard > Extensiones > IA en reglas. Función de Business.

Consejo operativo y nota de arquitectura

La entrega nunca espera más que el límite configurado (de forma predeterminada, 8 segundos para todas las preguntas de IA de un mismo mensaje en conjunto). En caso de tiempo de espera agotado, error, límite alcanzado o con la función desactivada, la condición es simplemente falsa y el script continúa: el correo termina donde habría ido sin la regla de IA.

1. Sintaxis Sieve: :question y :category

La extensión debe solicitarse con require. :confidence (de 0 a 100) establece la certeza mínima del modelo en porcentaje; si se omite, se aplica el valor predeterminado del administrador (60). Una pregunta tiene como máximo 500 caracteres y una lista de categorías de 2 a 20 entradas; la categoría esperada debe estar en la lista. Un require vnd.nextxch.* desconocido hace que el script falle al cargarse, tal como exige RFC 5228.

Referencia / configuración
require ["vnd.nextxch.ai", "fileinto", "copy", "imap4flags"];

# Free yes/no question
if ai :question "Is this mail an invoice or a payment request?" :confidence 70 {
    fileinto "Accounting";
    stop;
}

# Choice between categories: true when the model picks "Application"
if ai :category ["Invoice", "Application", "Support", "Newsletter"] "Application" {
    redirect :copy "hr@company.com";
}

# Combined with ordinary tests (cheap tests first: the model is only asked when reached)
if allof (address :domain :is "from" "customer.com",
          ai :question "Is this an urgent request or complaint?" :confidence 75) {
    addflag "\\Flagged";
}

2. Webmail: plantillas y botón de prueba

Configuración > Reglas de la bandeja de entrada: elija la condición "Si la IA detecta …" y después "Pregunta libre" o "Elegir una categoría". El botón "Probar" envía la condición con un mensaje seleccionado al modelo y muestra la respuesta, la confianza y el extracto enviado.

Referencia / configuración
Template                              Condition                                              Action
Invoices to the Accounting folder     Question "Is this mail an invoice ...?" (70 %)         Move to "Accounting"
Forward job applications to HR        Category "Application" of 5 categories (70 %)         Copy to hr@<your domain>
Flag urgent customer mails            Question "Urgent request or complaint?" (75 %)         Flag as important

3. Lo que ve el modelo (ejemplo con enmascaramiento)

El extracto se sitúa entre marcadores y se entrega al modelo explícitamente como datos no fiables: las instrucciones contenidas en el correo se ignoran. La respuesta debe ser un objeto JSON; las respuestas que no se pueden analizar cuentan como "sin respuesta".

Referencia / configuración
Question: Is this mail an invoice?

<<<EMAIL
From: Supplier Billing <[email@supplier.com]>
Subject: Invoice 2026-1042
Attachments: Invoice-2026-1042.pdf
Body:
Dear Sir or Madam, please find attached our invoice for EUR 1,200.
Please transfer to [number] by 17 Nov 2026.
EMAIL>>>

Model answer: {"answer":"yes","confidence":0.94}
Rule log:     ai :question "Is this mail an invoice?" -> true (ja, 94 %, openai/llama3.2:3b)

4. Configurar Ollama localmente

Para preguntas de sí/no y de categoría basta con un modelo pequeño. A continuación, introduzca el endpoint como nivel 1 en la administración, en SpamGuard > Extensiones, y active "IA en reglas"; la prueba en vivo comprueba la conexión con un correo de ejemplo.

Referencia / configuración
# Linux
curl -fsSL https://ollama.com/install.sh | sh
ollama pull llama3.2:3b
curl http://127.0.0.1:11434/v1/models

# Windows (PowerShell)
winget install Ollama.Ollama
ollama pull llama3.2:3b

# Admin > SpamGuard > Extensions > AI classifier, tier 1:
#   Provider: OpenAI-compatible · Endpoint: http://127.0.0.1:11434/v1 · Model: llama3.2:3b
# Admin > SpamGuard > Extensions > AI in rules: enable, save, live test

Configuración, valores predeterminados y buenas prácticas

Ajuste / ubicación Descripción Valor predeterminado Buena práctica de producción
Welche Daten gesendet werden Por pregunta solo se envían: asunto, remitente, los primeros N caracteres del texto (2000 de forma predeterminada) y los nombres de los archivos adjuntos. Nunca el contenido de los adjuntos, nunca otros encabezados, nunca listas de destinatarios. Maskierung an · Anhangsnamen an Mantenga activado el enmascaramiento: las direcciones de correo se convierten en [email@domain], los IBAN y números de teléfono en [number], los enlaces se recortan a su dominio y el remitente solo muestra el nombre y el dominio. Es la misma lógica de protección de datos que en el clasificador de spam con IA.
Lokal oder Cloud Las reglas utilizan el proveedor de nivel 1 del clasificador de IA. Los endpoints locales (localhost, redes privadas) no necesitan autorización. Los proveedores en la nube solo con dos casillas marcadas: el consentimiento RGPD del clasificador y "Permitir proveedores en la nube para reglas". Ollama http://127.0.0.1:11434/v1 · llama3.2:3b Ejecútelo localmente con Ollama para que ningún contenido de correo salga de su red. Para la nube necesita una base jurídica, un contrato de encargo del tratamiento y una mención en su política de privacidad; el editor del webmail muestra a los usuarios si su regla se evalúa localmente o en la nube.
Zeitlimit und Ausfall Todas las preguntas de IA de un mismo mensaje comparten un único presupuesto de tiempo. Cuando se agota o el modelo no responde, la prueba es falsa y se ejecuta la siguiente regla. 8.000 ms je Nachricht · max. 10 Fragen Coloque las pruebas económicas (remitente, asunto) antes de la pregunta de IA: solo se consulta al modelo cuando la evaluación llega a ella.
Cache: jede Nachricht nur einmal Las respuestas se almacenan en caché por mensaje y pregunta. La comprobación previa en el diálogo SMTP, la entrega y otros destinatarios con la misma pregunta reutilizan la misma respuesta. 60 Minuten Una circular a 200 compañeros con la misma regla cuesta una sola solicitud al modelo.
Freigaben, Limits und Kosten El administrador decide para qué dominios e inquilinos se aplica la función, si el Sieve del sistema puede utilizarla y cuántas preguntas por inquilino y día se permiten (cada inquilino puede tener un valor distinto, 0 = bloqueado). Además, los límites diarios del clasificador (solicitudes, tokens, coste) se aplican a toda la instalación. 500 Fragen je Mandant und Tag La tabla de administración muestra las preguntas y el coste por inquilino del día actual: la base para repercutir los costes de la nube. Los contadores se conservan tras los reinicios y se suman en todo el clúster.
Nachvollziehbarkeit Cada decisión de IA se escribe en el registro de reglas (evento SieveAi) con la pregunta, la respuesta, la confianza, el proveedor, el acierto de caché o el motivo de la falta de respuesta, p. ej. ai :question "Invoice?" -> true (yes, 92 %, openai/llama3.2:3b). immer an El botón de prueba del webmail y la prueba en vivo de la administración muestran además el extracto exacto que se envió al modelo.
Lizenz und Upload Función de Business (también en Enterprise y en la prueba). Sin autorización, el webmail, ManageSieve (PUTSCRIPT/CHECKSCRIPT) y JMAP (SieveScript/set, /validate) rechazan los scripts con la prueba ai; ManageSieve solo incluye vnd.nextxch.ai en SIEVE cuando la función está activada. aus Los scripts guardados anteriormente siguen ejecutándose si la función se desactiva más tarde: la prueba ai es entonces simplemente falsa.