الفصل 18 نقل البريد والحماية الإدارة: #pMtaFilters

Milters (بروتوكول Sendmail milter) وخطافات MTA (HTTP لكل مرحلة SMTP)

تتصل الفلاتر الحالية مباشرة بحوار SMTP: تتحدث الـ Milters بروتوكول Sendmail milter الإصدار 6 (Rspamd عبر وكيل milter الخاص به، وClamAV-milter، وOpenDKIM، ومنتجات DLP)؛ أما MTA Hooks فهي خدمات HTTP بسيطة تتلقى مستند JSON لكل مرحلة (CONNECT وEHLO وMAIL FROM وRCPT TO وDATA) وتعيد قرارًا. ويعمل كلاهما للبريد الوارد (المنفذ 25) واختياريًا للإرسال (465/587). اضبطوهما ضمن Milters & MTA hooks (#pMtaFilters)، ولكل إدخال زر اختبار.

نصيحة تشغيلية وملاحظة حول البنية

اختاروا الإجراء الافتراضي بعناية: "accept" (الفتح عند الفشل) يُبقي تدفق البريد مستمرًا عندما يكون عامل التصفية متوقفًا، و"tempfail" (مثل Postfix milter_default_action = tempfail) يجعل المرسلين يعيدون المحاولة لاحقًا حتى يعود عامل التصفية. ويُعد tempfail أكثر أمانًا لماسحات الفيروسات، وaccept لخدمات التقييم. ويضع العزل البريد الوارد في مجلد البريد العشوائي؛ وعند الإرسال تُرفض الرسالة بالرمز 550.

استجابة MTA Hook (متوافقة مع Stalwart)

الطلب: السياق (stage وclient وsasl وtls وserver وqueue وprotocol)، والمغلف (from وto)، وعند DATA الرسالة (headers وcontents وsize). التوقيع في الترويسة X-Nextxch-Signature: sha256=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 الخاص بـ milter: inet:host:port أو inet:port@host (ترميز Sendmail) أو host:port أو unix:/path. - Rspamd: inet:127.0.0.1:11332 (عامل proxy مع milter = yes). ‏ClamAV-milter: unix:/run/clamav/clamav-milter.ctl أو inet:127.0.0.1:7357.
Phasen und Aktionen (Milter) التفاوض على الخيارات 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. التعديلات: إضافة الترويسات وإدراجها وتغييرها، واستبدال المتن، وإضافة المستلمين/حذفهم، وتغيير المرسل. alle angeboten لا تُرسل المراحل التي يوقفها الـ Milter (SMFIP_NO*)؛ ولا يُنتظر الرد في المراحل التي لا رد لها (SMFIP_NR_*).
Zeitlimits تُضبط بشكل منفصل للاتصال ولكل أمر وللمحتوى/نهاية الرسالة؛ وتمدد ردود التقدم مهلة المحتوى. 5 s / 10 s / 60 s ارفعوا مهلة المحتوى إلى 120 حتى 300 ثانية لماسحات الفيروسات التي تتعامل مع مرفقات كبيرة.
MTA-Hook Phasen und Sicherheit لكل خطاف: connect وehlo وmail وrcpt وdata. ترويسة مصادقة اختيارية (مثل Authorization: Bearer ...) وتوقيع HMAC-SHA256؛ ويُخزَّن كلاهما مشفرًا ولا يُعرضان أبدًا. data فعّلوا المراحل التي تحتاجونها فقط: فكل استدعاء يضيف زمن استجابة الخطاف إلى حوار SMTP. وينبغي أن يجيب الخطاف في أقل من ثانية.
Reihenfolge تعمل milters والخطافات (hooks) وفق حقل الترتيب order؛ وأول رفض ينهي السلسلة. وعند DATA يرى كل عامل تصفية الرسالة متضمنةً تغييرات العوامل السابقة. Milter 100, Hooks 200 ضعوا الفحوص السريعة منخفضة التكلفة (مثل السمعة) قبل الفحوص المكلفة (فحص الفيروسات).