الجزء 3 من S/MIME: التوصيل والتشغيل للبريد الإلكتروني الآمن في الداخل
Bird
01/12/2019
البريد الإلكتروني
1 min read

النقاط الرئيسية
تكامل S/MIME لخوادم البريد الإلكتروني الداخلية: تعلّم كيفية إدراج تيارات البريد الإلكتروني المشفرة والموقعة في PowerMTA أو Momentum أو SparkPost SMTP مع الحفاظ على إعدادات DKIM والتوافق الحالية.
نموذج الأمان الهجين: اجمع بين S/MIME encryption + DKIM signing لضمان كل من مصداقية الرسائل وخصوصية المحتوى في البيئات المنظمة.
تدفق النشر: قم بإعداد متغيرات البيئة (SMTP_HOST، الاعتمادات، المفاتيح)، تشغيل عملية --sign --encrypt --send_smtp، والتحقق من تقارير التسليم.
رؤية الأداء: تظهر الاختبارات سرعة متطابقة تقريباً لحقن SMTP مقابل API (~60 مللي ثانية لكل رسالة، 200–280 مللي ثانية للملفات الأكبر).
أفضل ممارسات الأمان: قم بتخزين المفاتيح الخاصة وكلمات مرور API في ملفات مقيدة (chmod 0700)، استخدم STARTTLS وجلسات SMTP المصادقة.
حالات الاستخدام: يمكن للمؤسسات التي تقوم بتحديث أنظمة البريد القديمة توسيع عملية التشفير من طرف إلى طرف دون التخلي عن البنية التحتية الحالية.
أبرز الأسئلة والأجوبة
لماذا يتم تكييف S/MIME للخوادم الداخلية بدلاً من واجهات برمجة التطبيقات السحابية؟
العديد من الصناعات المنظمة (مثل القطاعين المصرفي والرعاية الصحية) يجب أن تحتفظ بالبريد في الموقع. هذا النهج يحافظ على التحكم في تدفق الرسائل بينما يضيف حماية تشفير حديثة.
كيف يعمل حقن SMTP مع PowerMTA أو Momentum؟
أنت تقوم بحقن رسائل S/MIME مكتملة إلى المستمع المحلي (المنفذ 25 أو الشبكة المحلية الخاصة). ثم تتعامل هذه MTAs مع توقيع DKIM والتوصيل كالمعتاد.
هل يتوافق S/MIME مع DKIM؟
نعم — يوقع DKIM الرسالة بعد تشفير S/MIME، لذلك تظل اختبارات المصادقة والنزاهة سليمة.
كيف يمكنني حماية بيانات اعتماد ومفاتيح SMTP الخاصة بي؟
تصدير متغيرات البيئة فقط في البرامج النصية المغلقة واستخدام أذونات الملفات لتقييد الوصول إلى نفسك (
chmod 0700 my_envs.sh).ماذا يجب أن أراقب بعد الإعداد؟
زمن التسليم (API مقابل SMTP)، معدل نجاح المصافحة TLS، نتائج التحقق من DKIM/S-MIME، وسجلات الأخطاء لـ “رفض الترحيل” أو المصادقة المفقودة.
من يستفيد أكثر من هذا التكوين؟
المنظمات التي تقوم بتشغيل بوابات بريد مستضافة ذاتيًا والتي تتطلب تشفيرًا بمستوى الامتثال ولكنها ترغب في أدوات جاهزة للاستخدام بدون إعادة كتابة مسارات البريد.
في هذا الجزء، سنتناول كيف يمكن تكييف الأداة لإدخال تدفقات البريد إلى المنصات المحلية مثل PowerMTA وMomentum.
في الجزء 1، قمنا بجولة سريعة في S/MIME، للنظر في توقيع وتشفير تدفقات الرسائل لدينا عبر مجموعة من عملاء البريد. بالنسبة للمنظمات التي تقوم بتنفيذ تشفير S/MIME، يصبح فهم كيفية جمع مفاتيح المستلمين العامة بشكل فعّال أمرًا حيويًا لعمليات البريد الإلكتروني الآمنة على نطاق واسع. أخذنا الجزء 2 عبر أداة بسيطة في سطر الأوامر لتوقيع وتشفير الرسائل الإلكترونية، ثم إرسالها من خلال SparkPost.
في هذا الجزء، سننظر في كيفية تكيف الأداة لإدخال تدفقات البريد إلى المنصات الموجودة في المواقع مثل Port25 PowerMTA وMomentum.
حسنًا – لنبدأ!
1. البدء
تثبيت الأداة، والحصول على مفاتيحك إلخ. هو تماماً كما كان من قبل. عند استخدامك نظام البريد الإلكتروني داخل المنشأة مثل PowerMTA أو Momentum، تكون بالفعل مسؤولاً عن إعداد نطاقات الإرسال، مفاتيح DKIM إلخ. تحتاج المنظمات التي تعمل بأنظمة داخل المنشأة أيضاً غالباً إلى معالجة تحديات نظام أرشفة البريد الإلكتروني للامتثال التنظيمي ومتطلبات الاحتفاظ بالبيانات. ما نحتاج إلى القيام به الآن هو توفير بعض الوسائل لإدخال رسائل S/MIME المشُكَّلة بالكامل إلى الخوادم الخاصة بك.
٢. حقن SMTP نحو Port25 PowerMTA
٣. حقن SMTP نحو Momentum
Momentum يدعم وسائل مختلفة لإدخال الرسائل، بما في ذلك API وSMTP. SMTP هي الطريقة المستخدمة هنا، نحو المضيف الذي يعمل عليه Momentum بالفعل. سنترك تكوينه دون تغيير، حيث أن لديه بالفعل القدرة على قبول الإدخالات الواردة من المضيفين المعتمدين الآخرين.
هذا إصدار أصغر من إعداد الإنتاج، حيث تكون العقد "التوليدية" وعقد MTA منفصلة، لكنها مرتبطة بشكل وثيق عبر VLAN خاص وموازنات التحميل، وتحمل حركة حقن SMTP الداخلية.

يتم تثبيت أدوات S/MIME كما كان من قبل، وسنقوم بحقن الرسائل إلى عنوان مضيف SMTP (MTA):
export SMTP_HOST=xx.xx.xx.xx # ضع عنوان MTA / VIP الخاص بك هنا
كما كان من قبل، لدينا المفتاح الخاص للمرسل (steve@thetucks.com.pem) والمفتاح العام للمستلم (steve.tuck@sparkpost.com.crt) موجودين بالفعل على عقدة "التوليد". تتطابق السطور القليلة الأولى من ملف الرسالة مع هذه العناوين.
نرسل الرسالة من عقدة "التوليد" بنفس الأمر تمامًا كما كان من قبل، وتظهر الرسالة في صندوق الوارد.
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
كما تتوقع، تتعايش S/MIME أيضاً بسعادة مع توقيع DKIM لMomentum.
4. حقن SMTP باتجاه SparkPost
في الجزء 2 استخدمنا واجهة برمجة التطبيقات (REST API) الخاصة بإرسال SparkPost لحقن الرسائل. بالطبع، من الممكن أيضًا حقن الرسائل في SparkPost باستخدام SMTP. قمنا بضبط متغيرات البيئة كالتالي:
إذا كنت تستخدم خدمة SparkPost المستضافة في الاتحاد الأوروبي فعليك ضبط SMTP_HOST كـ smtp.eu.sparkpostmail.com.
(انظر هنا لمزيد من الخيارات – على سبيل المثال يمكنك الحقن على المنفذ 2525 بدلاً من 587.)
يوضح الإخراج أدناه أنه يتم استخدام STARTTLS، إلى جانب اسم المستخدم وكلمة المرور.
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
سترى:
يتم طباعة كلمة المرور مع شخصيات *** كبديل، لذلك لا يتم تعريض خصوصية مفتاحك للخطر إذا كان هناك من ينظر إلى كتفك.
تأمين بيانات الاعتماد الخاصة بك
لاحظ أن متغيرات البيئة يمكن إعدادها في ملف نصي للسكربت أو ما شابه، لحفظ إعادة الكتابة. إذا قمت بذلك، يرجى العناية بكلمات المرور/مفاتيح API من خلال تقييد الوصول إلى ذلك الملف لنفسك فقط. على سبيل المثال، إذا تم تسمية ملف إعداد قيمك الائتمانية بـ my_envs.sh، فقم بتشغيل:
chmod 0700 my_envs.sh
تحذيرات متعلقة بـ SMTP قد ترى
حقن SMTP لـ SparkPost صارم جدًا، كما تتوقع من خدمة عامة. إذا لم تقم بضبط رقم منفذ SMTP فسترى تحذيرًا:
{'bob.lumreeker@gmail.com': (550, b'5.7.1 relaying denied')}
إذا لم تكن قد ضبطت اسم مستخدم SMTP أو لم تضبط كلمة المرور، فسترى:
يتم الإبلاغ عن رسائل الخطأ هذه كما هي من مكتبة Python SMTP، لذا فإن التنسيق يأتي كما هو.
أيّهما أسرع – SMTP أم API؟
بصراحة، S/MIME من غير المحتمل أن يكون حالة استخدام ذات حجم كبير، ولكن وجود نفس الأداة مع خيارين للإخراج كان مجرد دعوة لنا لخوض سباق!
ملف اختبار البريد الإلكتروني “Avocado” المستخدم هنا حوالي 19 كيلوبايت. أظهرت إعادة تكرار الاختبارات 10 مرات عبر حلقة bash أن الأوقات المتوسطة كانت مشابهة لـ SMTP وAPI، حوالي 60 ميلي ثانية لكل رسالة، وهو سريع جدًا. في هذه الحالة، قمنا بالحقن من مثيل EC2 متوسط في نفس منطقة الاستضافة مثل SparkPost.com، وهي طريقة جيدة للحفاظ على أوقات التأخير في الشبكة منخفضة.
عند تكرار ذلك مع ملف اختبار أكبر (577 كيلوبايت)، استغرقت API حوالي 200 ميلي ثانية، بينما استغرق SMTP 280 ميلي ثانية لكل رسالة – وهو ما يزال مذهلاً لحجم ملف أكبر بـ 30 مرة. بالطبع، قد يختلف الأداء لديك حسب الموقع، وزحمة الإنترنت وما إلى ذلك، ولكن الأداء من غير المحتمل أن يكون مشكلة.
إذا كنت بحاجة إلى أقصى أداء، فإن نقطة الانطلاق الجيدة ستكون إطلاق عدد محدد من عمليات/جلسات الحقن المتزامنة وفقًا لتوصيات أفضل ممارسات النقل الخاصة بنا – على سبيل المثال من مهمة مشرف.





