
في هذه السلسلة، رأينا كيف أن تضمين توقيع S/MIME عملية بسيطة إلى حد ما. إرسال بريد مشفر باستخدام S/MIME أكثر تعقيدًا لأنه يتطلب الحصول على المفاتيح العامة للمستلمين. الأمر بسيط عندما تستخدم عميل بريد إلكتروني للبشر مثل Thunderbird – ولكن كيف يمكن أن يعمل ذلك مع تدفقات البريد الإلكتروني المولدة بواسطة التطبيقات؟
في الجزء 1، أخذنا جولة سريعة على S/MIME، ننظر في توقيع وتشفير تدفقات الرسائل عبر مجموعة من عملاء البريد. الجزء 2 أوصلنا إلى أداة بسيطة لسطر الأوامر لتوقيع وتشفير الرسائل الإلكترونية، ثم إرسالها عبر SparkPost. الجزء 3 أظهر كيفية إدخال تدفقات البريد الآمنة في المنصات المحلية مثل Port25 PowerMTA وMomentum.
في هذه السلسلة، رأينا أن تضمين توقيع S/MIME هو أمر سهل نسبيًا. إرسال البريد المشفر باستخدام S/MIME هو أكثر تعقيدًا لأنه يجب عليك الحصول على مفاتيح عامة للمستلمين. الأمر سهل عند استخدام عميل بريد للبشر مثل Thunderbird – لكن كيف يمكن أن يعمل ذلك مع تدفقات البريد الإلكتروني التي تنتجها التطبيقات؟ رسائل البريد الإلكتروني التي تولدها التطبيقات، مثل تلك المستخدمة من قبل منصات المواعدة، تتطلب استراتيجية محكمة لتعزيز التفاعل. شاهد كيف تخلق تطبيقات المواعدة تجارب بريد إلكتروني موجَّه مثيرة.
لكن انتظر – هناك طريقة أخرى للدخول إلى Mordor للحصول على تلك المفاتيح. يمكن لخدمتك دعوة عملائك (عبر البريد الإلكتروني، بالطبع) لإرسال بريد إلكتروني موقَّع مرة أخرى إلى عنوان خدمة العملاء المعروف. باستخدام قوى سحرية من SparkPost Inbound Relay webhooks، سنستخلص ونخزن المفتاح العام لك لاستخدامه.
يمكننا تلخيص هذا في حالة استخدام بسيطة:
كمستلم للرسائل، أقدم لخدمتك توقيعي الشخصي عبر البريد الإلكتروني، لكي يمكن إرسال الرسائل مستقبلاً لي في شكل مشفر باستخدام S/MIME.
من هنا، دعونا نشتق بعض المتطلبات المفصلة:
نحتاج إلى خدمة بريد إلكتروني داخلي موثوقة تعمل بشكل دائم لتلقي تلك الرسائل الموقعة.
يجب ألا تكون هناك متطلبات خاصة على تنسيق البريد، بخلاف أنه يجب أن يحتوي على توقيع S/MIME.
نظرًا لأنه يمكن لأي شخص محاولة إرسال بريد إلى هذه الخدمة، يجب تصميمها بشكل دفاعي، على سبيل المثال، لرفض الرسائل "المزيفة" من الجهات الفاعلة السيئة. سيكون هناك حاجة لعدة طبقات من الفحص.
إذا كان كل شيء صحيح، ستخزن الخدمة الشهادة في ملف، باستخدام تنسيق PEM النصي المعروف.
هناك بعض المتطلبات غير الوظيفية:
يمكن أن تكون خدمات الويب هوك من جهاز إلى جهاز صعبة الرؤية فقط من الاستجابات إلى ما يحدث في الداخل. يجب على الخدمة أن توفر سجلات شاملة قابلة للقراءة البشرية على مستوى التطبيقات. يجب تسجيل فحص وتفسير الشهادات بشكل خاص.
نضيف حالات اختبار للعمليات الداخلية للتطبيق، باستخدام منصة Pytest الرائعة، وتشغيل تلك الاختبارات تلقائيًا عند عملية الإدراج باستخدام تكامل Travis CI مع GitHub.
حسنًا – دعونا نبدأ!
1. نظرة عامة على الحل
إليك كيف ستبدو الحلول الإجمالية.

2. تثبيت، تكوين وبدء تشغيل التطبيق الويب
3. إعداد Webhooks استقبال SparkPost
أولاً، نحدد نطاقًا لاستخدامه كعنوان للرسائل الواردة لدينا – هنا، سيكون inbound.thetucks.com. قم بإعداد نطاقك باتباع هذا الدليل. إليك الخطوات التي استخدمتها بالتفصيل:
3.1 إضافة سجلات MX
ستحتاج إلى الوصول إلى حساب مزود خدمة الإنترنت الخاص بك. بمجرد الانتهاء، يمكنك التحقق منها باستخدام dig – إليك الأمر الخاص بنطاقي.
يجب أن ترى:
3.2 إنشاء نطاق وارد
استخدم مجموعة API الخاصة بسبارك بوست في بوست مان، مع تحديد نطاقات الوارد / إنشاء .. استدعاء. يحتوي جسم طلب POST على نطاقك، على سبيل المثال:

3.3 إنشاء رابط ترحيل وارد
قم بإنشاء رابط ترحيل وارد باستخدام استدعاء بوست مان المناسب. يحتوي نص الرسالة في حالتي على:
كما ذكرت من قبل، أوصي بتعيين auth_token لقيمتك السرية الخاصة، كما هو محدد في ملف webapp.ini على مضيفك.
تحتاج قيمة “target” لديك إلى مطابقة عنوان مضيفك ومنفذ TCP حيث ستستضيف تطبيق الويب.
تحتاج قيمة “domain” لديك إلى مطابقة سجلات MX التي تم إعدادها في الخطوة 1.

هذا كل شيء! السباكة تمت. يجب أن تكون قادرًا الآن على إرسال الشهادات إلى عنوانك الوارد، سيتم معالجتها وستظهر على مضيف تطبيق الويب الخاص بك – في هذه الحالة، ملف باسم bob.lumreeker@gmail.com.crt.
يمكنك الآن إرسال رسائل بريد إلكتروني مشفرة إلى بوب، باستخدام الأدوات الموضحة في الأجزاء 2 & 3 من هذه السلسلة.
يمكنك فحص محتويات شهادة باستخدام:
4. الداخلية: التحقق من DKIM، التحقق من الشهادة
يتحقق التطبيق من أن رسائل البريد الإلكتروني المستلمة تحتوي على DKIM صالح ويتحقق من أن الشهادات نفسها صالحة، كما هو موضح هنا. هناك ملاحظات تنفيذية في الداخل أيضًا، وأفكار لمزيد من العمل.
تلخيص...
لقد رأينا كيف يمكن جمع مفاتيح المستلمين العامة بسهولة باستخدام بريد إلكتروني إلى عنوان ويب هوكس للاستقبال. بمجرد الانتهاء من ذلك، يمكن لهؤلاء المستلمين تلقي رسائلهم في شكل مشفر باستخدام S/MIME.
هذا كل شيء في الوقت الحالي! إرسال سعيد.