#pMtaFilters
Milters (protocolo milter de Sendmail) y MTA hooks (HTTP por etapa SMTP)
Los filtros existentes se conectan directamente al diálogo SMTP: los milters hablan el protocolo milter de Sendmail versión 6 (Rspamd a través de su proxy milter, ClamAV-milter, OpenDKIM, productos DLP); los hooks MTA son servicios HTTP sencillos que reciben un documento JSON por fase (CONNECT, EHLO, MAIL FROM, RCPT TO, DATA) y devuelven una decisión. Ambos se ejecutan para el correo entrante (puerto 25) y, opcionalmente, para el envío (465/587). Configúrelos en Milters & MTA hooks (#pMtaFilters), cada entrada con un botón de prueba.
Elija la acción predeterminada de forma deliberada: "accept" (fail open) mantiene el flujo de correo cuando un filtro no está disponible, "tempfail" (como Postfix milter_default_action = tempfail) hace que los remitentes reintenten más tarde hasta que el filtro vuelva a estar disponible. Para escáneres de virus, tempfail es más seguro; para servicios de puntuación, accept. La cuarentena coloca el correo entrante en la carpeta Spam; en el envío (submission), el mensaje se rechaza con 550.
Respuesta del hook MTA (compatible con Stalwart)
Solicitud: context (stage, client, sasl, tls, server, queue, protocol), envelope (from, to) y, en DATA, message (headers, contents, size). Firma en la cabecera X-Nextxch-Signature: sha256=HMAC sobre el cuerpo.
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" }
Configuración, valores predeterminados y buenas prácticas
| Ajuste / ubicación | Descripción | Valor predeterminado | Buena práctica de producción |
|---|---|---|---|
Milter-Adresse |
Socket TCP o Unix del milter: inet:host:port, inet:port@host (notación de Sendmail), host:port o unix:/path. | - |
Rspamd: inet:127.0.0.1:11332 (worker proxy con milter = yes). ClamAV-milter: unix:/run/clamav/clamav-milter.ctl o inet:127.0.0.1:7357. |
Phasen und Aktionen (Milter) |
Negociación de opciones v6, macros (j, {client_addr}, i, {auth_authen}, {mail_addr}, {rcpt_addr}), connect, helo, mail, rcpt, data, header, eoh, body, eom. Respuestas: accept, continue, reject, tempfail, discard, reply code, quarantine. Modificaciones: añadir, insertar y cambiar cabeceras, sustituir el cuerpo, añadir/eliminar destinatarios, cambiar el remitente. | alle angeboten |
Las fases que el milter desactiva (SMFIP_NO*) no se envían; en las fases sin respuesta (SMFIP_NR_*) no se espera respuesta. |
Zeitlimits |
Conexión, por comando y para contenido/fin del mensaje, configurables por separado; las respuestas de progreso amplían el tiempo de espera de contenido. | 5 s / 10 s / 60 s |
Aumente el tiempo de espera de contenido a entre 120 y 300 s para escáneres de virus con archivos adjuntos grandes. |
MTA-Hook Phasen und Sicherheit |
Por hook: connect, ehlo, mail, rcpt, data. Encabezado de autenticación opcional (p. ej., Authorization: Bearer ...) y firma HMAC-SHA256; ambos se almacenan cifrados y nunca se muestran. | data |
Active solo las fases que necesite: cada llamada añade el tiempo de respuesta del hook al diálogo SMTP. El hook debería responder en menos de un segundo. |
Reihenfolge |
Los milters y hooks se ejecutan según su campo order; el primer rechazo termina la cadena. En DATA, cada filtro ve el mensaje con los cambios de los anteriores. | Milter 100, Hooks 200 |
Coloque las comprobaciones rápidas y baratas (p. ej., reputación) antes de las costosas (análisis antivirus). |