#pSpam
IA em regras Sieve: "Este e-mail é uma fatura?" como condição de filtro
As regras da caixa de entrada e o Sieve do sistema podem consultar um modelo de linguagem e, dependendo da resposta, mover, sinalizar ou encaminhar. Duas formas: uma pergunta livre de sim/não ou uma escolha entre categorias. É usado o mesmo provedor do classificador de spam com IA (nível 1): recomenda-se um Ollama local; servidores compatíveis com OpenAI, Anthropic ou Gemini são opcionais. No Webmail, a condição se chama "Se a IA detectar …", com botão de teste, modelos e uma indicação de quais dados vão para qual provedor. ManageSieve e JMAP também entendem a extensão. Admin: SpamGuard > Extensões > IA nas regras. Recurso Business.
A entrega nunca espera mais do que o limite configurado (padrão: 8 segundos para todas as perguntas de IA de uma mensagem juntas). Em caso de tempo esgotado, erro, limite atingido ou recurso desativado, a condição é simplesmente falsa e o script continua: o e-mail vai para onde teria ido sem a regra de IA.
1. Sintaxe Sieve: :question e :category
A extensão deve ser solicitada com require. :confidence (0 a 100) define a certeza mínima do modelo em porcentagem; sem ele, vale o padrão do admin (60). Uma pergunta tem no máximo 500 caracteres, uma lista de categorias de 2 a 20 entradas; a categoria esperada deve estar na lista. Um require vnd.nextxch.* desconhecido faz o script falhar no upload, como exige a RFC 5228.
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: modelos e botão de teste
Configurações > Regras da caixa de entrada: escolha a condição "Se a IA detectar …" e depois "Pergunta livre" ou "Escolher uma categoria". O botão "Testar" envia a condição com uma mensagem selecionada ao modelo e mostra a resposta, a confiança e o trecho enviado.
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. O que o modelo vê (exemplo com mascaramento)
O trecho fica entre marcadores e é entregue ao modelo explicitamente como dados não confiáveis: instruções contidas no e-mail são ignoradas. A resposta deve ser um objeto JSON; respostas que não podem ser interpretadas contam como "sem resposta".
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 o Ollama localmente
Um modelo pequeno é suficiente para perguntas de sim/não e de categoria. Em seguida, informe o endpoint como nível 1 no admin em SpamGuard > Extensões e ative "IA nas regras"; o teste ao vivo verifica a conexão com um e-mail de exemplo.
# 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
Configurações, valores padrão e boas práticas
| Configuração / local | Descrição | Valor padrão | Boa prática para produção |
|---|---|---|---|
Welche Daten gesendet werden |
Por pergunta, apenas: assunto, remetente, os primeiros N caracteres do texto (padrão: 2.000) e os nomes dos anexos. Nunca o conteúdo dos anexos, nunca outros cabeçalhos, nunca listas de destinatários. | Maskierung an · Anhangsnamen an |
Mantenha o mascaramento ativado: endereços de e-mail viram [email@domain], IBANs e números de telefone viram [number], links são reduzidos ao domínio e o remetente mostra apenas nome e domínio. É a mesma lógica de proteção de dados do classificador de spam com IA. |
Lokal oder Cloud |
As regras usam o provedor de nível 1 do classificador de IA. Endpoints locais (localhost, redes privadas) não precisam de permissão. Provedores de nuvem somente com duas marcações: o consentimento GDPR do classificador e "Permitir provedores de nuvem para regras". | Ollama http://127.0.0.1:11434/v1 · llama3.2:3b |
Execute localmente com o Ollama para que nenhum conteúdo de e-mail saia da sua rede. Para a nuvem, você precisa de uma base legal, de um contrato de processamento de dados e de uma menção na sua política de privacidade; o editor do Webmail mostra aos usuários se a regra deles é avaliada localmente ou na nuvem. |
Zeitlimit und Ausfall |
Todas as perguntas de IA de uma mensagem compartilham um único orçamento de tempo. Quando ele se esgota ou o modelo não responde, o teste é falso e a próxima regra é executada. | 8.000 ms je Nachricht · max. 10 Fragen |
Coloque testes baratos (remetente, assunto) antes da pergunta de IA: o modelo só é consultado quando a avaliação chega até ela. |
Cache: jede Nachricht nur einmal |
As respostas são armazenadas em cache por mensagem e pergunta. A verificação prévia no diálogo SMTP, a entrega e outros destinatários com a mesma pergunta reutilizam a mesma resposta. | 60 Minuten |
Uma circular para 200 colegas com a mesma regra custa uma única requisição ao modelo. |
Freigaben, Limits und Kosten |
O administrador decide para quais domínios e locatários o recurso vale, se o Sieve do sistema pode usá-lo e quantas perguntas por locatário e por dia são permitidas (locatários individuais podem ter valores diferentes, 0 = bloqueado). Os limites diários do classificador (requisições, tokens, custo) se aplicam adicionalmente a toda a instalação. | 500 Fragen je Mandant und Tag |
A tabela do admin mostra as perguntas e os custos de hoje por locatário: a base para repassar os custos de nuvem. Os contadores sobrevivem a reinicializações e são somados em todo o cluster. |
Nachvollziehbarkeit |
Cada decisão de IA é gravada no log de regras (evento SieveAi) com pergunta, resposta, confiança, provedor, acerto de cache ou o motivo da ausência de resposta, por exemplo ai :question "Fatura?" -> true (yes, 92 %, openai/llama3.2:3b). | immer an |
O botão de teste no Webmail e o teste ao vivo no admin mostram, além disso, o trecho exato que foi enviado ao modelo. |
Lizenz und Upload |
Recurso Business (também no Enterprise e na versão de avaliação). Sem permissão, o Webmail, o ManageSieve (PUTSCRIPT/CHECKSCRIPT) e o JMAP (SieveScript/set, /validate) rejeitam scripts com o teste ai; o ManageSieve só lista vnd.nextxch.ai em SIEVE quando o recurso está ativado. | aus |
Scripts salvos anteriormente continuam em execução se o recurso for desativado depois: nesse caso, o teste ai é simplesmente falso. |