S/MIME الجزء 2: تم التوقيع، والختم، والتسليم من خلال SparkPost
البريد الإلكتروني
·
31/12/2018

النقاط الرئيسية
المقدمة: الجزء 2 ينتقل من نظرية S/MIME إلى الممارسة - موضحاً كيفية توقيع وتشفير رسائل البريد الإلكتروني رقمياً باستخدام SparkPost كمنصة للتسليم.
الهدف: تجهيز المطورين بسير عمل بسيط وسهل الاستخدام من خلال سطر الأوامر لتوقيع الرسائل المرسلة، والتحقق من التوقيعات، و(اختياريًا) تشفير المحتوى للمستلمين المحددين.
النقاط البارزة:
الإعداد: تثبيت أدوات العرض مفتوحة المصدر من GitHub (مع فحص آلي باستخدام Travis + pytest). تتولى Pipfile معالجة جميع اعتمادات Python.
مفاتيح المرسل:
إنشاء شهادة موقعة ذاتياً أو شهادة صادرة عن جهة مصدقة (
.p12) لهوية بريدك الإلكتروني.تقسيمها إلى ملفات خاصة (
.pem) وعامة (.crt) لاستخدامها من قبل أداة التوقيع.
التوقيع:
استخدام برنامج
sparkpostSMIME.pyالمضمن لتوقيع الرسائل التجريبية (على سبيل المثال،tests/declaration.eml).تأكيد التوقيعات بصريًا في عملاء مثل Thunderbird (أيقونة النقطة الحمراء).
التشفير:
الحصول على الشهادة العامة لكل مستلم (
.crt).تشغيل الأداة مرة أخرى لإنتاج رسالة موقعة + مشفرة.
يمكن للمستلمين التحقق وفك التشفير باستخدام مفاتيحهم الخاصة.
التسليم عبر SparkPost:
إعداد نطاق إرسال صالح ومفتاح API.
إرسال الرسائل عبر واجهة برمجة التطبيقات الخاصة بـ SparkPost مع تعطيل تتبع لضمان النزاهة.
أداة إضافية - mimeshow:
يعرض هيكل MIME بلغة مفهومة RFC822 لأغراض تصحيح الأخطاء أو الفحص.
نصائح عملية:
الحفاظ على أسماء الملفات متوافقة مع عنوان From:.
تجنب تعديل محتويات الرسالة بعد التوقيع.
استخدام Bcc فقط للنسخ الأرشيفية - هؤلاء المستلمون لا يمكنهم فك التشفير إذا كانت الرسالة مشفرة إلى عنوان To واحد.
أهم النقاط في الأسئلة والأجوبة
لماذا نستخدم توقيع S/MIME؟
يُصادق على المرسل ويضمن سلامة الرسالة - تعمل عملاء مثل Thunderbird على عرض مؤشر بصري عندما تكون التوقيع صالحًا.
كيف أحصل على شهادة المرسل الخاصة بي؟
إما أن تقوم بالتوقيع الذاتي عبر OpenSSL (للاختبار) أو الحصول على شهادة موثوقة من مزودين مثل Comodo (مجانية للاستخدام غير التجاري).
هل يمكنني تشفير الرسائل لعدة مستلمين؟
فقط إذا كان لديك المفتاح العمومي لكل مستلم. يقوم البرنامج النصي التجريبي بتشفير عنوان To الوحيد بشكل افتراضي.
ما الضمانات التي تحافظ على عدم كسر التوقيعات أثناء النقل؟
تقوم الأداة بضبط خيارات واجهة برمجة تطبيقات SparkPost للإرسال التبادلي وتعطيل تتبع الفتح/النقر، بحيث تمر الحمولة دون تغيير.
ما هو دور العرض الصامت؟
يقوم بتحليل ملفات البريد الإلكتروني الخام ويعرض هيكلها متعدد الأجزاء - وهو مفيد لفحص توقيع S/MIME والمرفقات ورؤوس البريد.
ما التالي في السلسلة؟
الجزء 3 يمدد هذه القدرات S/MIME إلى منصات البريد الإلكتروني الآمن المحلية مثل PowerMTA و Momentum.
في الجزء الأول، أجرينا جولة سريعة حول S/MIME، حيث نظرنا في توقيع وتشفير تدفقات رسائلنا عبر مجموعة من عملاء البريد. يمكن توقيع رسائل S/MIME (مما يثبت هوية المرسل) أو تشفيرها (مما يحفظ محتوى الرسالة سرياً)، أو كليهما.

في هذه الحلقة، سنقوم بما يلي:
تثبيت بعض أدوات سطر الأوامر البسيطة لتوقيع وتشفير البريد الإلكتروني
الحصول على مفتاحك / الشهادة الخاصة بك للتوقيع
إرسال رسالة موقعة عبر SparkPost، والنظر إلى الرسالة المستلمة
اختياريًا، الحصول على الشهادة الخاصة بك لاستقبال التشفير
إرسال رسالة موقعة ومشفرة عبر SparkPost، والنظر إلى الرسالة المستلمة
تجربة أداة مستقلة مفيدة تسمى “mimeshow” للنظر إلى تفاصيل ملف البريد الإلكتروني.
حسناً - دعنا نبدأ!
ميزة إضافية: عرض أجزاء MIME باستخدام "mimeshow"
1. تثبيت الأدوات
٢. احصل على مفتاح المرسل / الشهادة للتوقيع
3. أرسل رسالة موقعة عبر SparkPost
4. تشفير الرسائل
أفكار إضافية وأمور يجب الانتباه إليها
تأخذ هذه الأداة نهجًا بسيطًا للغاية في سحب المفاتيح الضرورية – فهي تبحث ببساطة عن الملفات المسماة في الدليل الحالي. يمكن بسهولة إضافة ترتيبات أكثر تعقيدًا، مثل الاحتفاظ بجميع المفاتيح في قاعدة بيانات، لكنني أردت أن يكون الكود بسيطًا قدر الإمكان.
يمكنك تضمين مستلمين آخرين باستخدام Cc: و Bcc: وسوف يتم تسليمهم؛ قد يكون هذا مفيدًا لأغراض الأرشفة. يتم استلام الرسائل الموقعة ويمكن عرضها من قبل مستلمين آخرين مع التوقيع. تقوم الأداة بإزالة رأس Bcc: من الرسالة المرسلة (كما سيفعل عميل البريد المكتبي).
لضمان مرور الرسائل عبر SparkPost دون تغيير (مما قد يكسر التوقيع)، تقوم الأداة بضبط خيارات API لـ “البريد Transactional”، مع تعطيل تتبع الفتح والنقر.
إذا كنت تستخدم التشفير، خذ في اعتبارك أن الأداة تلتقط عنوان To: الوحيد لذلك. يمكن للمستلمين الآخرين فك تشفير جسم الرسالة فقط إذا كانت لديهم المفتاح الخاص لمستلم To:. إذا كنت تستخدم مستلمين ثانويين فقط كسجل للتسليمات التي تمت، على سبيل المثال، قد يكون ذلك مقبولًا على أي حال.
موقع، مختوم، مُسلّم... أنا لك
هذه لمحة سريعة عن كيفية توقيع وختم وتسليم رسائل S/MIME من خلال SparkPost. تذكير سريع: مشروع العرض التوضيحي متاح على GitHub، وقد حاولت جعل تثبيته واستخدامه سهلاً.







