#pMtaFilters
Milters (protocolo milter do Sendmail) e hooks de MTA (HTTP por etapa SMTP)
Filtros existentes se conectam diretamente ao diálogo SMTP: milters falam o protocolo milter do Sendmail versão 6 (Rspamd via seu milter proxy, ClamAV-milter, OpenDKIM, produtos de DLP); MTA hooks são serviços HTTP simples que recebem um documento JSON por fase (CONNECT, EHLO, MAIL FROM, RCPT TO, DATA) e retornam uma decisão. Ambos atuam no e-mail de entrada (porta 25) e, opcionalmente, na submissão (465/587). Configure-os em Milters & MTA hooks (#pMtaFilters), cada entrada com um botão de teste.
Escolha a ação padrão de forma consciente: "accept" (fail open) mantém o fluxo de e-mails quando um filtro está fora do ar, "tempfail" (como milter_default_action = tempfail no Postfix) faz os remetentes tentarem novamente mais tarde até o filtro voltar. Para scanners de vírus, tempfail é mais seguro; para serviços de pontuação, accept. A quarentena coloca e-mails de entrada na pasta Spam; no envio (submission), a mensagem é rejeitada com 550.
Resposta de MTA hook (compatível com Stalwart)
Requisição: context (stage, client, sasl, tls, server, queue, protocol), envelope (from, to) e, no DATA, message (headers, contents, size). Assinatura no cabeçalho X-Nextxch-Signature: sha256=HMAC sobre o corpo.
POST https://dlp.internal/hook (X-Nextxch-Hook-Stage: data)
{
"action": "accept",
"modifications": [
{ "type": "addHeader", "name": "X-DLP-Status", "value": "clean" },
{ "type": "changeHeader", "index": 1, "name": "Subject", "value": "[external] Offer" },
{ "type": "deleteHeader", "index": 1, "name": "X-Internal-Route" }
]
}
{ "action": "reject", "response": { "status": 550, "enhancedStatus": "5.7.1", "message": "Confidential data detected" } }
{ "action": "tempfail", "response": { "status": 451, "message": "Please try again later" } }
{ "action": "quarantine" } { "action": "discard" }
Configurações, valores padrão e boas práticas
| Configuração / local | Descrição | Valor padrão | Boa prática para produção |
|---|---|---|---|
Milter-Adresse |
Socket TCP ou Unix do milter: inet:host:port, inet:port@host (notação Sendmail), host:port ou unix:/path. | - |
Rspamd: inet:127.0.0.1:11332 (proxy worker com milter = yes). ClamAV-milter: unix:/run/clamav/clamav-milter.ctl ou inet:127.0.0.1:7357. |
Phasen und Aktionen (Milter) |
Negociação de opções v6, macros (j, {client_addr}, i, {auth_authen}, {mail_addr}, {rcpt_addr}), connect, helo, mail, rcpt, data, header, eoh, body, eom. Respostas: accept, continue, reject, tempfail, discard, código de resposta, quarantine. Modificações: adicionar, inserir e alterar cabeçalhos, substituir o corpo, adicionar/remover destinatários, alterar o remetente. | alle angeboten |
Fases que o milter desativa (SMFIP_NO*) não são enviadas; fases sem resposta (SMFIP_NR_*) não são aguardadas. |
Zeitlimits |
Conexão, por comando e para conteúdo/fim da mensagem, definidos separadamente; respostas de progresso estendem o timeout de conteúdo. | 5 s / 10 s / 60 s |
Aumente o timeout de conteúdo para 120 a 300 s para scanners de vírus com anexos grandes. |
MTA-Hook Phasen und Sicherheit |
Por hook: connect, ehlo, mail, rcpt, data. Cabeçalho de autenticação opcional (por exemplo, Authorization: Bearer ...) e assinatura HMAC-SHA256; ambos são armazenados criptografados e nunca exibidos. | data |
Ative somente os estágios necessários: cada chamada acrescenta o tempo de resposta do hook ao diálogo SMTP. O hook deve responder em menos de um segundo. |
Reihenfolge |
Milters e hooks são executados conforme o campo order; a primeira rejeição encerra a cadeia. No DATA, cada filtro vê a mensagem com as alterações dos anteriores. | Milter 100, Hooks 200 |
Coloque verificações rápidas e baratas (por exemplo, reputação) antes das caras (verificação de vírus). |