Capítulo 07b Transporte de e-mail & defesa Admin: #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.

Dica operacional & nota de arquitetura

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.

Referência / configuração
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.

Referência / configuração
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".

Referência / configuração
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.

Referência / configuração
# 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.