अध्याय 18 मेल ट्रांसपोर्ट & सुरक्षा एडमिन: #pMtaFilters

Milters (Sendmail milter प्रोटोकॉल) और MTA hooks (प्रति SMTP चरण HTTP)

मौजूदा फ़िल्टर सीधे SMTP संवाद में जुड़ जाते हैं: milter, Sendmail milter प्रोटोकॉल संस्करण 6 का उपयोग करते हैं (Rspamd अपने milter proxy के माध्यम से, ClamAV-milter, OpenDKIM, DLP उत्पाद); MTA hooks साधारण HTTP सेवाएँ हैं जो प्रति चरण (CONNECT, EHLO, MAIL FROM, RCPT TO, DATA) एक JSON दस्तावेज़ प्राप्त करती हैं और एक निर्णय लौटाती हैं। दोनों इनबाउंड मेल (पोर्ट 25) के लिए और वैकल्पिक रूप से सबमिशन (465/587) के लिए चलते हैं। इन्हें Milters & MTA hooks (#pMtaFilters) के अंतर्गत कॉन्फ़िगर करें, हर प्रविष्टि एक परीक्षण बटन के साथ।

संचालन सुझाव और आर्किटेक्चर नोट

डिफ़ॉल्ट कार्रवाई सोच-समझकर चुनें: "accept" (fail open) फ़िल्टर बंद होने पर मेल का प्रवाह जारी रखता है, "tempfail" (Postfix milter_default_action = tempfail की तरह) प्रेषकों को फ़िल्टर वापस आने तक बाद में पुनः प्रयास करवाता है। वायरस स्कैनर के लिए tempfail अधिक सुरक्षित है, स्कोरिंग सेवाओं के लिए accept। क्वारंटीन इनबाउंड मेल को Junk फ़ोल्डर में डालता है; सबमिशन पर संदेश 550 के साथ अस्वीकार कर दिया जाता है।

MTA hook प्रतिक्रिया (Stalwart संगत)

अनुरोध: context (stage, client, sasl, tls, server, queue, protocol), envelope (from, to) और DATA पर message (headers, contents, size)। X-Nextxch-Signature हेडर में हस्ताक्षर: sha256=body पर HMAC।

संदर्भ / कॉन्फ़िगरेशन
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" }

सेटिंग्स, डिफ़ॉल्ट मान और बेस्ट प्रैक्टिस

सेटिंग / स्थान विवरण डिफ़ॉल्ट मान उत्पादन बेस्ट प्रैक्टिस
Milter-Adresse मिल्टर का TCP या Unix सॉकेट: inet:host:port, inet:port@host (Sendmail नोटेशन), host:port या unix:/path। - Rspamd: inet:127.0.0.1:11332 (milter = yes के साथ proxy worker)। ClamAV-milter: unix:/run/clamav/clamav-milter.ctl या inet:127.0.0.1:7357।
Phasen und Aktionen (Milter) Option negotiation v6, मैक्रो (j, {client_addr}, i, {auth_authen}, {mail_addr}, {rcpt_addr}), connect, helo, mail, rcpt, data, header, eoh, body, eom। उत्तर: accept, continue, reject, tempfail, discard, reply code, quarantine। संशोधन: हेडर जोड़ना, सम्मिलित करना और बदलना, body बदलना, प्राप्तकर्ता जोड़ना/हटाना, प्रेषक बदलना। alle angeboten जिन चरणों को milter बंद करता है (SMFIP_NO*), वे नहीं भेजे जाते; जिन चरणों का उत्तर नहीं होता (SMFIP_NR_*), उनकी प्रतीक्षा नहीं की जाती।
Zeitlimits कनेक्ट, प्रति कमांड और कंटेंट/संदेश के अंत के लिए अलग-अलग सेट करें; प्रोग्रेस उत्तर कंटेंट टाइमआउट बढ़ाते हैं। 5 s / 10 s / 60 s बड़े अटैचमेंट वाले वायरस स्कैनर के लिए कंटेंट टाइमआउट को 120 से 300 s तक बढ़ाएँ।
MTA-Hook Phasen und Sicherheit प्रति हुक: connect, ehlo, mail, rcpt, data। वैकल्पिक ऑथ हेडर (उदा. Authorization: Bearer ...) और HMAC-SHA256 हस्ताक्षर; दोनों एन्क्रिप्टेड रूप से संग्रहीत होते हैं और कभी दिखाए नहीं जाते। data केवल वही चरण सक्षम करें जिनकी आपको आवश्यकता है: प्रत्येक कॉल हुक का प्रतिक्रिया समय SMTP संवाद में जोड़ती है। हुक को एक सेकंड से कम में उत्तर देना चाहिए।
Reihenfolge Milter और हुक अपने order फ़ील्ड के अनुसार चलते हैं; पहली अस्वीकृति श्रृंखला समाप्त कर देती है। DATA पर हर फ़िल्टर संदेश को उससे पहले वाले फ़िल्टरों के परिवर्तनों के साथ देखता है। Milter 100, Hooks 200 तेज़, सस्ती जाँचें (उदा. प्रतिष्ठा) महँगी जाँचों (वायरस स्कैन) से पहले रखें।