
في هذا الجزء، سنتناول كيف يمكن تكييف الأداة لإدخال تدفقات البريد إلى المنصات المحلية مثل 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 مرة. بالطبع، قد يختلف الأداء لديك حسب الموقع، وزحمة الإنترنت وما إلى ذلك، ولكن الأداء من غير المحتمل أن يكون مشكلة.
إذا كنت بحاجة إلى أقصى أداء، فإن نقطة الانطلاق الجيدة ستكون إطلاق عدد محدد من عمليات/جلسات الحقن المتزامنة وفقًا لتوصيات أفضل ممارسات النقل الخاصة بنا – على سبيل المثال من مهمة مشرف.