#pMtaFilters
Milter (protocollo Sendmail milter) e hook MTA (HTTP per fase SMTP)
I filtri esistenti si inseriscono direttamente nel dialogo SMTP: i milter usano il protocollo milter di Sendmail versione 6 (Rspamd tramite il suo milter proxy, ClamAV-milter, OpenDKIM, prodotti DLP); gli MTA hook sono semplici servizi HTTP che ricevono un documento JSON per ogni fase (CONNECT, EHLO, MAIL FROM, RCPT TO, DATA) e restituiscono una decisione. Entrambi vengono eseguiti per la posta in entrata (porta 25) e facoltativamente per la submission (465/587). Si configurano in Milter & MTA hook (#pMtaFilters), ogni voce con un pulsante di test.
Scegliere consapevolmente l'azione predefinita: "accept" (fail open) mantiene il flusso di posta quando un filtro non è disponibile, "tempfail" (come Postfix milter_default_action = tempfail) fa sì che i mittenti riprovino più tardi finché il filtro non torna disponibile. Per gli scanner antivirus tempfail è più sicuro, per i servizi di scoring accept. La quarantena sposta la posta in ingresso nella cartella Spam; in fase di invio (submission) il messaggio viene rifiutato con 550.
Risposta dell'MTA hook (compatibile con Stalwart)
Richiesta: context (stage, client, sasl, tls, server, queue, protocol), envelope (from, to) e, in fase DATA, message (headers, contents, size). Firma nell'intestazione X-Nextxch-Signature: sha256=HMAC sul body.
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" }
Impostazioni, valori predefiniti e best practice
| Impostazione / posizione | Descrizione | Valore predefinito | Best practice per la produzione |
|---|---|---|---|
Milter-Adresse |
Socket TCP o Unix del milter: inet:host:port, inet:port@host (notazione Sendmail), host:port o unix:/path. | - |
Rspamd: inet:127.0.0.1:11332 (proxy worker con milter = yes). ClamAV-milter: unix:/run/clamav/clamav-milter.ctl o inet:127.0.0.1:7357. |
Phasen und Aktionen (Milter) |
Negoziazione delle opzioni v6, macro (j, {client_addr}, i, {auth_authen}, {mail_addr}, {rcpt_addr}), connect, helo, mail, rcpt, data, header, eoh, body, eom. Risposte: accept, continue, reject, tempfail, discard, reply code, quarantine. Modifiche: aggiunta, inserimento e modifica di intestazioni, sostituzione del body, aggiunta/rimozione di destinatari, modifica del mittente. | alle angeboten |
Le fasi che il milter disattiva (SMFIP_NO*) non vengono inviate; per le fasi senza risposta (SMFIP_NR_*) non si attende. |
Zeitlimits |
Connessione, per comando e per contenuto/fine del messaggio, impostabili separatamente; le risposte di avanzamento estendono il timeout del contenuto. | 5 s / 10 s / 60 s |
Aumentare il timeout del contenuto a 120-300 s per gli scanner antivirus con allegati di grandi dimensioni. |
MTA-Hook Phasen und Sicherheit |
Per hook: connect, ehlo, mail, rcpt, data. Header di autenticazione facoltativo (ad es. Authorization: Bearer ...) e firma HMAC-SHA256; entrambi sono memorizzati crittografati e non vengono mai mostrati. | data |
Attivare solo le fasi necessarie: ogni chiamata aggiunge il tempo di risposta dell'hook al dialogo SMTP. L'hook dovrebbe rispondere in meno di un secondo. |
Reihenfolge |
Milter e hook vengono eseguiti secondo il loro campo order; il primo rifiuto termina la catena. In fase DATA ogni filtro vede il messaggio con le modifiche dei precedenti. | Milter 100, Hooks 200 |
Anteporre i controlli rapidi ed economici (ad es. reputazione) a quelli costosi (scansione antivirus). |