
في الجزء الأول، قمنا بجولة سريعة في S/MIME، حيث نظرنا في توقيع وتشفير تدفقات الرسائل الخاصة بنا عبر مجموعة من عملاء البريد. يمكن توقيع رسائل S/MIME (مما يثبت هوية المرسل)، تشفيرها (للحفاظ على سرية محتوى الرسالة)، أو كلاهما.

في هذه القسط، سنقوم ب:
تثبيت بعض الأدوات البسيطة لواجهة الأوامر لتوقيع وتشفير البريد الإلكتروني
الحصول على مفتاح / شهادة المرسل لتوقيع البريد
إرسال رسالة موقعة عبر SparkPost، وننظر في الرسالة المستلمة
اختياريًا، الحصول على شهادة المستلم للتشفير
إرسال رسالة موقعة ومشفرة عبر SparkPost، والنظر في الرسالة المستلمة
تجربة أداة مستقلة مفيدة "mimeshow" لفحص داخليات ملف البريد الإلكتروني.
حسنًا – لنبدأ!
1. قم بتثبيت الأدوات
أدوات العرض التوضيحي متوفرة على GitHub، مع إرشادات التثبيت الكاملة. قد تلاحظ شعار "البناء ناجح" – يقوم Travis وpytest بفحص حالة البناء تلقائيًا. لاحظ أن هذه الأدوات غير مدعومة رسميًا من قبل SparkPost، لكنني حاولت جعلها قوية وسهلة الاستخدام.
إذا كانت لديك بعض المعرفة بـ Python وpip، يجب أن يكون التثبيت مألوفًا إلى حد ما. يهتم Pipfile بالتبعية الخارجية تلقائيًا لك. بمجرد الانتهاء، يمكنك التحقق من كل شيء تم تثبيته عن طريق تشغيله
يجب أن ترى النص المساعد الودود. بعد ذلك، نحتاج إلى…
2. احصل على مفتاح المرسل / الشهادة للتوقيع
3. أرسل رسالة موقعة عبر SparkPost
الآن دعونا نستخدم نطاق إرسال حقيقي، تم إعداده وفقًا لـ دليل المستخدم الجديد من SparkPost. لدينا ملفات شهادة المرسل والمفتاح في الدليل الحالي:
الملف tests/declaration.eml مضمن في المشروع. إنه مجرد ملف نصي، لذا يمكنك تخصيص عنوان From: ليتناسب مع نطاق الإرسال الخاص بك وعنوان To: ليتناسب مع مستلم الاختبار الخاص بك. بداية الملف تبدو هكذا:
To: Bob <bob.lumreeker@gmail.com> From: Steve <steve@thetucks.com> Subject: ها هي إعلاننا MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-GB عندما يصبح من الضروري …
قم بتعيين مفتاح API الخاص بك:
أرسل البريد الإلكتروني:
ستنظر:
فتح الاتصال بـ https://api.sparkpost.com/api/v1 إرسال tests/declaration.eml From: Steve <steve@thetucks.com> To: Bob <bob.lumreeker@gmail.com> OK - في 1.15 ثانية
بعد ثانية أو نحو ذلك، يصل البريد الإلكتروني إلى صندوق بريد Bob. يعرضه Thunderbird بنقطة حمراء على الظرف، مما يشير إلى توقيع مرسل صالح.

نجاح! انتهِ من قهوتك، لقد استحققت ذلك. إذا كنت تواجه مشكلة، تحقق من أن عنوان From: في ملف البريد الإلكتروني يطابق اسم ملفات .crt و.pem الخاصة بك.
4. تشفير الرسائل
لتشفير رسالة، تحتاج إلى المفتاح العام للمستلم في شكل شهادة. هذا عبارة عن ملف نصي يبدو كالتالي:
Bag Attributes friendlyName: s COMODO CA Limited ID #2 localKeyID: 32 84 AB 9C 56 5C 80 C6 89 4D 40 46 DD D4 7C 71 E8 CD ED C1 subject=/emailAddress=bob.lumreeker@gmail.com issuer=/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Client Authentication and Secure Email CA -----BEGIN CERTIFICATE----- يبدو كأنها رموز عشوائية هنا -----END CERTIFICATE-----
هناك شهادة مستلم وهمي لـ bob@example.com في دليل الاختبارات، لذا يمكنك التدريب عليها قبل أن تحصل على شهادة حقيقية:
سترى:
ستلاحظ أن طول الإخراج أطول قليلاً من الرسالة المشفرة لأنه يحتوي على الكثير من المعلومات الإضافية إلى جانب الرسالة المشوشة نفسها.
4.1 إرسال رسالة مشفرة وموقعة عبر SparkPost
لنرسل رسالة مشفرة إلى عنوان بريد إلكتروني حقيقي. يمكنك اتباع نفس العملية كما من قبل (توقيع ذاتي أو من خلال مزود مثل Comodo) للحصول على مفتاح عام / شهادة لعناوين المستلمين الخاصة بك. تحتاج فقط إلى ملف .crt – لا يحتاج المستلم مطلقاً إلى أن يعطيك مفتاحه الخاص (.p12 و .pem ملفات).
لدي ملف bob.lumreeker@gmail.com.crt لمستلمي المستهدف – مطابق لعنوان "من" المذكور في ملفي.
إليك الأمر للإرسال:
أرى:
تم فتح الاتصال إلى https://api.sparkpost.com/api/v1 إرسال tests/declaration.eml من: Steve <steve@thetucks.com> إلى: Bob <bob.lumreeker@gmail.com> حسنًا - في 1.168 ثانية
تظهر الرسالة في Thunderbird مع أيقونة توقيع "النقطة الحمراء" وأيقونة تشفير "القفل".

يمكنك إرسال بريد إلكتروني معقد مستند إلى HTML مع روابط وصور بنفس السهولة، مثل الرسالة الموضحة في الجزء 1. تطلب بعض العملاء مثل Thunderbird إذنًا لعرض الروابط الخارجية والصور في الرسائل المشفرة S/MIME، لكن الرسائل الموقعة فقط تعرض بشكل جيد في العملاء بما في ذلك Thunderbird وGmail:


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