MTA-STS هو معيار
RFC8461 المقترح الذي خرج من حالة المسودة وتم نشره رسميًا في 26 سبتمبر 2018. يقدم هذا المعيار آلية للكشف عن إمكانية استخدام TLS الكامل بين خوادم البريد ، مع تشفير البيانات ومصادقة الخادم. أي أن هذا المعيار يحمي بشكل كامل تقريبًا من التداخل مع حركة مرور البريد بين الخوادم.
مبسط ، جوهر المعيار هو كما يلي:
- تنشر خدمات البريد الداعمة سياسة (سجل TXT ومورد HTTPS واحد لكل نطاق).
- تكتشف خدمات البريد عند إرسال البريد إلى المجالات الأخرى نهج مجال المستلمين.
- تتصل خدمات البريد بخادم البريد في نطاق المستلم ، مع تطبيق قيود TLS التي حددتها السياسة المكتشفة ، إن وجدت.
هناك مقالات جيدة (
على سبيل المثال ) تتحدث عن المعيار نفسه ولماذا هو مطلوب ، ومقارنة MTA-STS مع مبادرات أخرى مماثلة ، وحتى إظهار كيفية كتابة ونشر سياسة. لكن العثور على كيفية تجاوز الخطوة الأولى لم يكن بهذه البساطة.
ابدأ من جديد
قبل تنفيذ MTA-STS ، تحتاج إلى ترتيب شهادات خادم البريد. بخلاف ذلك ، سترفض خوادم البريد التي تراعي سياسة STS الاتصال بالخادم. يجب استيفاء الشروط التالية:
- يتم إصدار شهادة الخادم من قبل مرجع مصدق معترف به (Let's Encrypt is good).
- تتضمن سلسلة الشهادات المرسلة من قبل الخادم جميع الشهادات اللازمة من المراجع المصدقة المتوسطة.
- تحتوي الشهادة على حقل اسم بديل للموضوع باسم DNS لخادم MX الخاص بك.
يمكنك التحقق من الخادم الذي تم تكوينه باستخدام الشهادة بالأمر التالي:
[ "$(LANG=C openssl s_client -connect MX.EXAMPLE.COM:25 -starttls smtp -verify_hostname MX.EXAMPLE.COM < /dev/null 2>&1 | fgrep 'error')" = "" ] && echo OK || echo FAIL
حيث MX.EXAMPLE.COM هو اسم مجال خادم MX الخاص بك. للامتثال الكامل للمعيار ، من المستحسن التحقق من أن اسم النطاق المطلوب موجود ليس فقط في الاسم الشائع للشهادة ، ولكن على الأقل في الاسم البديل للموضوع.
نشر السياسة
لتعيين نطاقك على أنه يدعم الاتصال الآمن معه ، تحتاج إلى نشر سياسة MTA-STS. للقيام بذلك ، قم بتنفيذ الخطوات البسيطة التالية بالترتيب المحدد (يتم إعطاء أمثلة للمجال example.com).
1. ضع في
https://mta-sts.example.com/.well-known/mta-sts.txt
ملف نصي من النموذج:
الإصدار: STSv1
الوضع: فرض
mx: mail.example.com
mx: * .example.net
mx: backupmx.example.com
الحد الأقصى: 604800
يجب إعطاء الملف بنوع المحتوى: text / plain. عمليات إعادة التوجيه غير مسموح بها. يجب أن تكون موجزات الخط إما LF أو CRLF. الخطوط الفارغة غير مسموح بها. قد ينتهي السطر الأخير بتغذية سطر ، أو قد لا ينتهي به - كلا الخيارين مسموح به. لا يُسمح بمساحة فارغة قبل النقطتين وبداية السطر. يُسمح بالمسافة الفارغة بعد القولون بأي كمية. يتم تجاهل المسافة البيضاء (المسافات وعلامات التبويب وما إلى ذلك) في نهاية كل سطر.
قيم الحقول:
الإصدار :
إصدار التنسيق. يجب أن يكون دائمًا مساويًا لـ "STSv1".
الوضع :
وضع السياسة. الخيارات الممكنة: لا شيء ، الاختبار ، الإنفاذ. يتوافق وضع فرض مع الأداء الطبيعي للمعيار - لطلب الشهادة الصحيحة واتصال TLS مستقر عند الاتصال بالخادم. يتطلب وضع الاختبار منك محاولة استخدام اتصال آمن ، ولكن في حالة حدوث خطأ ، قم بإرسال بريد في أي حال بإشعار مسؤول من خلال آلية TLSRPT. يتوافق الوضع "بلا" مع الوضع كما لو لم يتم نشر السياسة على الإطلاق. هذا الوضع مفيد لتعطيل سياسة بشكل صحيح.
mx : حقل واحد أو أكثر يحتوي على أسماء جميع خوادم نطاق MX المسموح بها. كما ترى من المثال ، يُسمح بالقوالب ، ولكن فقط كنطاق ذي مستوى أقل.
max_age : الوقت بالثواني الذي يمكن تخزين السياسة فيه مؤقتًا والذي يمكن للمرسلين خلاله الاستمرار في استخدامه إذا لم تعد السياسة متاحة. نظرًا لهذه الميزة القياسية ، يكون تعطيل STS أسرع من خلال نشر سياسة جديدة بدون وضع.
2. أنشئ سجل TXT _mta-sts.example.com بمحتويات النموذج:
ت = STSv1 ؛ id = 20160831085700Z ؛
يمكن ترتيب الفراغات حول فاصلة منقوطة بشكل عشوائي بأي كمية. في أماكن أخرى ، لا يُسمح بالمسافة البيضاء. يمكن أن تكون الفاصلة المنقوطة الأخيرة موجودة أو غير موجودة.
قيم الحقول:
v : إصدار التنسيق. يجب أن يكون دائمًا الحقل الأول ، يجب أن يكون دائمًا مساويًا لـ STSv1.
id :
المعرف الفريد للسياسة المنشورة. يمكن أن تكون سلسلة بطول 1-32 حرفًا ، تتكون من أحرف التسجيلات والأرقام. يعد تغيير قيمة المعرّف إشارة إلى المرسلين بأنه تم تحديث السياسة. لذلك ، تحتاج إلى تحديث السياسة عن طريق نشر ملف سياسة جديد أولاً ، ثم تغيير المعرف في سجل TXT.
من الآن فصاعدًا ، سترسل خوادم البريد التي تدعم MTA-STS بريدًا إلى نطاقك فقط من خلال اتصال آمن مصدق على الشهادة. هذا هو المكان الذي تنتهي فيه معظم الأدلة ، ولكن الجزء الأكثر إثارة للاهتمام هو الحصول على سياسة MTA-STS من خادمك الخاص عند إرسال البريد.
الأكثر إثارة للاهتمام
تتمثل الصعوبة الرئيسية في أن هذا المعيار غير مدعوم بواسطة خوادم البريد ، بما في ذلك Postfix. ومع ذلك ، فإن هذه التفاهات غير السارة يجب ألا توقفنا.
قادني إيجاد حل إلى أرشيف القائمة البريدية
لمستخدمي postfix يناقش توقيت هذا المعيار. في إحدى المنشورات ، تشير Witsa Venema ، مؤلفة Postfix ، إلى الاتجاه المفضل لتطبيق هذه الوظيفة - لاستخدام خادم خارجي للبحث عن سياسات TLS. يقترح استخدام توجيه التكوين للنموذج
smtp_policy_maps = socketmap: inet: host: port: name
لقد قمت بتطبيق مثل هذا الخادم للحصول على سياسة MTA-STS.
→
كود المصدر→
الحزمة في PyPIيفتقر التطبيق إلى بعض الوظائف التي يصفها RFC8461 ، مثل: استرجاع السياسات الاستباقي ، والتقارير ، والحد من تكرار طلبات السياسة. ومع ذلك ، فإن الوظيفة الرئيسية - الكشف عن سياسة TLS وتخزينها مؤقتًا - تؤديها.
يتطلب التطبيق Python 3.5.3+. يمكن تثبيت هذا البرنامج وتكوينه باستخدام الخطوات التالية.
تثبيت الحزمة
يكفي تشغيل الأمر:
pip3 install postfix-mta-sts-resolver
تتم كتابة طرق التثبيت البديلة
هنا .
إنشاء ملف تكوين
إذا كنت راضيًا عن الإعدادات الافتراضية ، فإن الأمر يكفي
touch /etc/postfix/mta-sts-daemon.yml
خلاف ذلك ، يمكن أن تؤخذ التكوين من
المثال ومصممة لتناسب احتياجاتك.
في رأيي ، المعلمة الأكثر أهمية هي المعلمة الصارمة. إذا تم تعيينه على true (خطأ بشكل افتراضي) ، فسوف يعيد التطبيق سياسة آمنة حتى بالنسبة للنطاقات التي لها سياسة في وضع الاختبار. هذا السلوك مخالف للمعيار ، ولكن يُنصح به لأسباب عملية: إذا كان مالك النطاق قد نشر سياسة STS حتى في وضع الاختبار ، فمن المحتمل أنه مستعد لذلك. أي ، سيتم إرسال بريد gmail.com اليوم عبر اتصال موثوق.
منظمة بدء التشغيل
في حالة systemd ، يكفي وضع
ملف وحدة بسيط في /etc/systemd/system/mta-sts-daemon.service
بعد ذلك ، يبقى إعادة قراءة تكوين systemd ، وتمكين التشغيل التلقائي للشيطان وبدء تشغيله:
systemctl daemon-reload systemctl enable mta-sts-daemon.service systemctl start mta-sts-daemon.service
فحص الصحة
بافتراض استخدام المنفذ الافتراضي ، الأمر
/usr/sbin/postmap -q dismail.de socketmap:inet:127.0.0.1:8461:postfix
يجب أن تجلب
مباراة آمنة = mx1.dismail.de
الاتصال بـ Postfix
أضف خطًا إلى main.cf:
smtp_policy_maps = socketmap:inet:127.0.0.1:8461:postfix
إعادة تشغيل Postfix:
systemctl reload postfix.service
إذا تم تنفيذ كل شيء بشكل صحيح ، فعندئذٍ بالنسبة لاتصالات STS في سجل /var/log/mail.info بدلاً من ذلك
تم إنشاء اتصال TLS موثوق به
تبدأ السجلات في الظهور
تم إنشاء اتصال TLS تم التحقق منه
الخلاصة
إذا وصلت إلى هذا المكان ، فهذا يعني على الأرجح:
- تقرأ المقالة بدون صورة واحدة.
- من يوم لآخر ، سينخفض احتمال اعتراض البريد في نطاقك ، حيث تقوم خدمات البريد الأخرى بتطبيق المعيار الجديد.