الجزء 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، وسجلات الأخطاء لـ “رفض الترحيل” أو المصادقة المفقودة.
من يستفيد أكثر من هذا التكوين؟
المنظمات التي تقوم بتشغيل بوابات بريد مستضافة ذاتيًا والتي تتطلب تشفيرًا بمستوى الامتثال ولكنها ترغب في أدوات جاهزة للاستخدام بدون إعادة كتابة مسارات البريد.
في الجزء 1، قمنا بجولة سريعة في S/MIME، للنظر في توقيع وتشفير تدفقات الرسائل لدينا عبر مجموعة من عملاء البريد. بالنسبة للمنظمات التي تقوم بتنفيذ تشفير S/MIME، يصبح فهم كيفية جمع مفاتيح المستلمين العامة بشكل فعّال أمرًا حيويًا لعمليات البريد الإلكتروني الآمنة على نطاق واسع. أخذنا الجزء 2 عبر أداة بسيطة في سطر الأوامر لتوقيع وتشفير الرسائل الإلكترونية، ثم إرسالها من خلال SparkPost.
في هذا الجزء، سننظر في كيفية تكيف الأداة لإدخال تدفقات البريد إلى المنصات الموجودة في المواقع مثل Port25 PowerMTA وMomentum.
حسنًا – لنبدأ!
في الجزء 1، قمنا بجولة سريعة في S/MIME، للنظر في توقيع وتشفير تدفقات الرسائل لدينا عبر مجموعة من عملاء البريد. بالنسبة للمنظمات التي تقوم بتنفيذ تشفير S/MIME، يصبح فهم كيفية جمع مفاتيح المستلمين العامة بشكل فعّال أمرًا حيويًا لعمليات البريد الإلكتروني الآمنة على نطاق واسع. أخذنا الجزء 2 عبر أداة بسيطة في سطر الأوامر لتوقيع وتشفير الرسائل الإلكترونية، ثم إرسالها من خلال SparkPost.
في هذا الجزء، سننظر في كيفية تكيف الأداة لإدخال تدفقات البريد إلى المنصات الموجودة في المواقع مثل Port25 PowerMTA وMomentum.
حسنًا – لنبدأ!
في الجزء 1، قمنا بجولة سريعة في S/MIME، للنظر في توقيع وتشفير تدفقات الرسائل لدينا عبر مجموعة من عملاء البريد. بالنسبة للمنظمات التي تقوم بتنفيذ تشفير S/MIME، يصبح فهم كيفية جمع مفاتيح المستلمين العامة بشكل فعّال أمرًا حيويًا لعمليات البريد الإلكتروني الآمنة على نطاق واسع. أخذنا الجزء 2 عبر أداة بسيطة في سطر الأوامر لتوقيع وتشفير الرسائل الإلكترونية، ثم إرسالها من خلال SparkPost.
في هذا الجزء، سننظر في كيفية تكيف الأداة لإدخال تدفقات البريد إلى المنصات الموجودة في المواقع مثل Port25 PowerMTA وMomentum.
حسنًا – لنبدأ!
1. بدء الاستخدام
تثبيت الأداة والحصول على مفاتيحك وما إلى ذلك هو تمامًا كما كان من قبل. عندما تستخدم نظام بريد إلكتروني داخلي مثل PowerMTA أو Momentum، فأنت بالفعل مسؤول عن إعداد مجالات الإرسال ومفاتيح DKIM وما إلى ذلك. كما أن المنظمات التي تعمل بأنظمة داخلية تحتاج أيضًا في كثير من الأحيان لمعالجة التحديات المتعلقة بنظام أرشفة البريد الإلكتروني للامتثال التنظيمي ومتطلبات الاحتفاظ بالبيانات. ما نحتاج إلى القيام به الآن هو توفير طريقة لضخ رسائل S/MIME المكتملة في خوادمك.
تثبيت الأداة والحصول على مفاتيحك وما إلى ذلك هو تمامًا كما كان من قبل. عندما تستخدم نظام بريد إلكتروني داخلي مثل PowerMTA أو Momentum، فأنت بالفعل مسؤول عن إعداد مجالات الإرسال ومفاتيح DKIM وما إلى ذلك. كما أن المنظمات التي تعمل بأنظمة داخلية تحتاج أيضًا في كثير من الأحيان لمعالجة التحديات المتعلقة بنظام أرشفة البريد الإلكتروني للامتثال التنظيمي ومتطلبات الاحتفاظ بالبيانات. ما نحتاج إلى القيام به الآن هو توفير طريقة لضخ رسائل S/MIME المكتملة في خوادمك.
تثبيت الأداة والحصول على مفاتيحك وما إلى ذلك هو تمامًا كما كان من قبل. عندما تستخدم نظام بريد إلكتروني داخلي مثل PowerMTA أو Momentum، فأنت بالفعل مسؤول عن إعداد مجالات الإرسال ومفاتيح DKIM وما إلى ذلك. كما أن المنظمات التي تعمل بأنظمة داخلية تحتاج أيضًا في كثير من الأحيان لمعالجة التحديات المتعلقة بنظام أرشفة البريد الإلكتروني للامتثال التنظيمي ومتطلبات الاحتفاظ بالبيانات. ما نحتاج إلى القيام به الآن هو توفير طريقة لضخ رسائل S/MIME المكتملة في خوادمك.
2. حقن SMTP نحو Port25 PowerMTA
PowerMTA يدعم وسائل متنوعة لإدخال الرسائل، بما في ذلك دليل "الالتقاط" للملف، SMTP، وAPI. SMTP هو الطريقة المستخدمة هنا.
لإيضاح أبسط إعداد ممكن، سنقوم بتثبيت أدوات S/MIME على نفس الخادم مثل PowerMTA. نقوم بحقن الرسائل إلى المستمع، الذي يكون مفتوحًا بشكل افتراضي على منفذ TCP 25، حيث يقبل فقط حركة المرور المحلية.
export SMTP_HOST=localhost
(إذا نسيت هذه الخطوة، ستظهر لك: "لم يتم تعيين متغير البيئة SMTP_HOST - التوقف عن العمل" عندما تحاول التشغيل.)
لدينا مفتاح خاص بالمرسل (steve@thetucks.com.pem) ومفتاح عام للمستقبل (steve.tuck@sparkpost.com.crt) موجود بالفعل. السطور القليلة الأولى من ملف الرسالة هي:
To: SteveT <steve.tuck@sparkpost.com> From: Steve <steve@thetucks.com> Subject: This is a message created using HEML MIME-Version: 1.0 Content-Type: text/html; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 7bit
نرسل الرسالة مع:
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
نرى:
Opened SMTP connection (plain) Host: localhost Port: 25 User: "" Password: "" Sending: tests/fancy-HTML-to-smt.eml From: Steve <steve@thetucks.com> To: SteveT <steve.tuck@sparkpost.com> OK - in 0.028 seconds
تصل الرسالة بسرعة إلى صندوق الوارد في Mac Mail وتظهر كموقعة ومشفرة.

ميزة إضافية: DKIM مع PowerMTA
تكوين DKIM سهل جدًا ويتعايش بسعادة مع S/MIME. الخطوات هي:
استخدام موقع PowerMTA DKIM Wizard لإنشاء مفتاح خاص لنطاق الإرسال (في حالتي، mypmta.thetucks.com.pem) ومحتويات سجل DNS TXT العام.
قم بإعداد سجل DNS TXT، مع اختيار محدد. على سبيل المثال، استخدمت المحدد pmta201811. يتم تعريف أحرف المحدد الصالحة هنا.
وضع ملف mypmta.thetucks.com.pem على الخادم في الدليل /etc/pmta .
أضف ما يلي إلى /etc/pmta/config الخاص بي وأعد تشغيل خدمة pmta. (هنا، يتم كتابة هذه التوجيهات على نطاق عالمي؛ في نظام الإنتاج، قد تفضل إضافتها تحت virtual-mta بدلاً من ذلك.)
host-name thetucks.com domain-key pmta201811,*,/etc/pmta/mypmta.thetucks.com.pem <domain *> dkim-sign yes </domain>
يتحقق سجل DNS على ما يرام عبر MX Toolbox، والآن DKIM نشط.

PowerMTA يدعم وسائل متنوعة لإدخال الرسائل، بما في ذلك دليل "الالتقاط" للملف، SMTP، وAPI. SMTP هو الطريقة المستخدمة هنا.
لإيضاح أبسط إعداد ممكن، سنقوم بتثبيت أدوات S/MIME على نفس الخادم مثل PowerMTA. نقوم بحقن الرسائل إلى المستمع، الذي يكون مفتوحًا بشكل افتراضي على منفذ TCP 25، حيث يقبل فقط حركة المرور المحلية.
export SMTP_HOST=localhost
(إذا نسيت هذه الخطوة، ستظهر لك: "لم يتم تعيين متغير البيئة SMTP_HOST - التوقف عن العمل" عندما تحاول التشغيل.)
لدينا مفتاح خاص بالمرسل (steve@thetucks.com.pem) ومفتاح عام للمستقبل (steve.tuck@sparkpost.com.crt) موجود بالفعل. السطور القليلة الأولى من ملف الرسالة هي:
To: SteveT <steve.tuck@sparkpost.com> From: Steve <steve@thetucks.com> Subject: This is a message created using HEML MIME-Version: 1.0 Content-Type: text/html; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 7bit
نرسل الرسالة مع:
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
نرى:
Opened SMTP connection (plain) Host: localhost Port: 25 User: "" Password: "" Sending: tests/fancy-HTML-to-smt.eml From: Steve <steve@thetucks.com> To: SteveT <steve.tuck@sparkpost.com> OK - in 0.028 seconds
تصل الرسالة بسرعة إلى صندوق الوارد في Mac Mail وتظهر كموقعة ومشفرة.

ميزة إضافية: DKIM مع PowerMTA
تكوين DKIM سهل جدًا ويتعايش بسعادة مع S/MIME. الخطوات هي:
استخدام موقع PowerMTA DKIM Wizard لإنشاء مفتاح خاص لنطاق الإرسال (في حالتي، mypmta.thetucks.com.pem) ومحتويات سجل DNS TXT العام.
قم بإعداد سجل DNS TXT، مع اختيار محدد. على سبيل المثال، استخدمت المحدد pmta201811. يتم تعريف أحرف المحدد الصالحة هنا.
وضع ملف mypmta.thetucks.com.pem على الخادم في الدليل /etc/pmta .
أضف ما يلي إلى /etc/pmta/config الخاص بي وأعد تشغيل خدمة pmta. (هنا، يتم كتابة هذه التوجيهات على نطاق عالمي؛ في نظام الإنتاج، قد تفضل إضافتها تحت virtual-mta بدلاً من ذلك.)
host-name thetucks.com domain-key pmta201811,*,/etc/pmta/mypmta.thetucks.com.pem <domain *> dkim-sign yes </domain>
يتحقق سجل DNS على ما يرام عبر MX Toolbox، والآن DKIM نشط.

PowerMTA يدعم وسائل متنوعة لإدخال الرسائل، بما في ذلك دليل "الالتقاط" للملف، SMTP، وAPI. SMTP هو الطريقة المستخدمة هنا.
لإيضاح أبسط إعداد ممكن، سنقوم بتثبيت أدوات S/MIME على نفس الخادم مثل PowerMTA. نقوم بحقن الرسائل إلى المستمع، الذي يكون مفتوحًا بشكل افتراضي على منفذ TCP 25، حيث يقبل فقط حركة المرور المحلية.
export SMTP_HOST=localhost
(إذا نسيت هذه الخطوة، ستظهر لك: "لم يتم تعيين متغير البيئة SMTP_HOST - التوقف عن العمل" عندما تحاول التشغيل.)
لدينا مفتاح خاص بالمرسل (steve@thetucks.com.pem) ومفتاح عام للمستقبل (steve.tuck@sparkpost.com.crt) موجود بالفعل. السطور القليلة الأولى من ملف الرسالة هي:
To: SteveT <steve.tuck@sparkpost.com> From: Steve <steve@thetucks.com> Subject: This is a message created using HEML MIME-Version: 1.0 Content-Type: text/html; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 7bit
نرسل الرسالة مع:
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
نرى:
Opened SMTP connection (plain) Host: localhost Port: 25 User: "" Password: "" Sending: tests/fancy-HTML-to-smt.eml From: Steve <steve@thetucks.com> To: SteveT <steve.tuck@sparkpost.com> OK - in 0.028 seconds
تصل الرسالة بسرعة إلى صندوق الوارد في Mac Mail وتظهر كموقعة ومشفرة.

ميزة إضافية: DKIM مع PowerMTA
تكوين DKIM سهل جدًا ويتعايش بسعادة مع S/MIME. الخطوات هي:
استخدام موقع PowerMTA DKIM Wizard لإنشاء مفتاح خاص لنطاق الإرسال (في حالتي، mypmta.thetucks.com.pem) ومحتويات سجل DNS TXT العام.
قم بإعداد سجل DNS TXT، مع اختيار محدد. على سبيل المثال، استخدمت المحدد pmta201811. يتم تعريف أحرف المحدد الصالحة هنا.
وضع ملف mypmta.thetucks.com.pem على الخادم في الدليل /etc/pmta .
أضف ما يلي إلى /etc/pmta/config الخاص بي وأعد تشغيل خدمة pmta. (هنا، يتم كتابة هذه التوجيهات على نطاق عالمي؛ في نظام الإنتاج، قد تفضل إضافتها تحت virtual-mta بدلاً من ذلك.)
host-name thetucks.com domain-key pmta201811,*,/etc/pmta/mypmta.thetucks.com.pem <domain *> dkim-sign yes </domain>
يتحقق سجل DNS على ما يرام عبر MX Toolbox، والآن DKIM نشط.

3. حقن SMTP نحو Momentum
Momentum يدعم وسائل مختلفة لحقن الرسائل، بما في ذلك API وSMTP. SMTP هي الطريقة المستخدمة هنا، نحو مضيف يقوم بالفعل بتشغيل Momentum. سنترك التكوين الخاص به دون تغيير، حيث أنه يمتلك بالفعل القدرة على قبول عمليات الحقن الواردة من مضيفين معتمدين آخرين.
هذه نسخة أصغر من إعداد الإنتاج، حيث تكون عقد "التوليد" وعقد MTA منفصلة، لكنها مرتبطة بشكل وثيق عبر VLAN خاص ومحملات الحمل، وتحمل حركة المرور الداخلية لحقن SMTP.

تم تثبيت أدوات S/MIME كما كان من قبل، وسنحقن الرسائل إلى عنوان مضيف SMTP (MTA):
export SMTP_HOST=xx.xx.xx.xx # set your own MTA / VIP address here
كما كان من قبل، لدينا مفتاح خاص للمُرسِل (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.
Momentum يدعم وسائل مختلفة لحقن الرسائل، بما في ذلك API وSMTP. SMTP هي الطريقة المستخدمة هنا، نحو مضيف يقوم بالفعل بتشغيل Momentum. سنترك التكوين الخاص به دون تغيير، حيث أنه يمتلك بالفعل القدرة على قبول عمليات الحقن الواردة من مضيفين معتمدين آخرين.
هذه نسخة أصغر من إعداد الإنتاج، حيث تكون عقد "التوليد" وعقد MTA منفصلة، لكنها مرتبطة بشكل وثيق عبر VLAN خاص ومحملات الحمل، وتحمل حركة المرور الداخلية لحقن SMTP.

تم تثبيت أدوات S/MIME كما كان من قبل، وسنحقن الرسائل إلى عنوان مضيف SMTP (MTA):
export SMTP_HOST=xx.xx.xx.xx # set your own MTA / VIP address here
كما كان من قبل، لدينا مفتاح خاص للمُرسِل (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.
Momentum يدعم وسائل مختلفة لحقن الرسائل، بما في ذلك API وSMTP. SMTP هي الطريقة المستخدمة هنا، نحو مضيف يقوم بالفعل بتشغيل Momentum. سنترك التكوين الخاص به دون تغيير، حيث أنه يمتلك بالفعل القدرة على قبول عمليات الحقن الواردة من مضيفين معتمدين آخرين.
هذه نسخة أصغر من إعداد الإنتاج، حيث تكون عقد "التوليد" وعقد MTA منفصلة، لكنها مرتبطة بشكل وثيق عبر VLAN خاص ومحملات الحمل، وتحمل حركة المرور الداخلية لحقن SMTP.

تم تثبيت أدوات S/MIME كما كان من قبل، وسنحقن الرسائل إلى عنوان مضيف SMTP (MTA):
export SMTP_HOST=xx.xx.xx.xx # set your own MTA / VIP address here
كما كان من قبل، لدينا مفتاح خاص للمُرسِل (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 استخدمنا واجهة برمجة تطبيقات الإرسال الخاصة بـSparkPost لحقن الرسائل. بالطبع، من الممكن أيضًا حقن الرسائل في SparkPost باستخدام SMTP. نقوم بتعيين متغيرات البيئة على النحو التالي:
export SMTP_PASSWORD=<<YOUR_API_KEY_HERE>
إذا كنت تستخدم خدمة SparkPost المستضافة في الاتحاد الأوروبي فعندئذٍ قم بتعيين SMTP_HOST كـ smtp.eu.sparkpostmail.com.
(انظر هنا لمزيد من الخيارات – على سبيل المثال يمكنك الحقن على المنفذ 2525 بدلاً من 587.)
العرض أدناه يوضح أن STARTTLS يستخدم، مع اسم المستخدم وكلمة المرور.
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
سترى:
Opened SMTP connection (STARTTLS) Host: smtp.sparkpostmail.com Port: 587 User: "SMTP_Injection" Password: "****************************************" Sending: tests/fancy-HTML-to-smt.eml From: Steve <steve@thetucks.com> To: SteveT <steve.tuck@sparkpost.com> OK - in 0.057 seconds
يتم طباعة كلمة المرور مع استبدال الأحرف بـ ***، لذا لن تقوم بفضح خصوصية مفتاحك إذا كان هناك من ينظر من فوق كتفك.
تأمين بيانات الاعتماد الخاصة بك
لاحظ أن متغيرات البيئة يمكن إعدادها في ملف نص برمجي لقذيفة أو شيء مشابه، لتجنب إعادة الكتابة. إذا فعلت ذلك، يرجى الحفاظ على كلمات المرور/مفاتيح 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 أو لم تعيّن كلمة المرور، سترى:
(530, b'5.7.1 Authorization required. Ref. https://developers.sparkpost.com/api/index#header-smtp-relay-endpoints', 'steve@thetucks.com')
يتم ببساطة الإبلاغ عن هذه الرسائل الخطأ كما هي من مكتبة Python SMTP، ومن هنا التنسيق.
في الجزء 2 استخدمنا واجهة برمجة تطبيقات الإرسال الخاصة بـSparkPost لحقن الرسائل. بالطبع، من الممكن أيضًا حقن الرسائل في SparkPost باستخدام SMTP. نقوم بتعيين متغيرات البيئة على النحو التالي:
export SMTP_PASSWORD=<<YOUR_API_KEY_HERE>
إذا كنت تستخدم خدمة SparkPost المستضافة في الاتحاد الأوروبي فعندئذٍ قم بتعيين SMTP_HOST كـ smtp.eu.sparkpostmail.com.
(انظر هنا لمزيد من الخيارات – على سبيل المثال يمكنك الحقن على المنفذ 2525 بدلاً من 587.)
العرض أدناه يوضح أن STARTTLS يستخدم، مع اسم المستخدم وكلمة المرور.
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
سترى:
Opened SMTP connection (STARTTLS) Host: smtp.sparkpostmail.com Port: 587 User: "SMTP_Injection" Password: "****************************************" Sending: tests/fancy-HTML-to-smt.eml From: Steve <steve@thetucks.com> To: SteveT <steve.tuck@sparkpost.com> OK - in 0.057 seconds
يتم طباعة كلمة المرور مع استبدال الأحرف بـ ***، لذا لن تقوم بفضح خصوصية مفتاحك إذا كان هناك من ينظر من فوق كتفك.
تأمين بيانات الاعتماد الخاصة بك
لاحظ أن متغيرات البيئة يمكن إعدادها في ملف نص برمجي لقذيفة أو شيء مشابه، لتجنب إعادة الكتابة. إذا فعلت ذلك، يرجى الحفاظ على كلمات المرور/مفاتيح 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 أو لم تعيّن كلمة المرور، سترى:
(530, b'5.7.1 Authorization required. Ref. https://developers.sparkpost.com/api/index#header-smtp-relay-endpoints', 'steve@thetucks.com')
يتم ببساطة الإبلاغ عن هذه الرسائل الخطأ كما هي من مكتبة Python SMTP، ومن هنا التنسيق.
في الجزء 2 استخدمنا واجهة برمجة تطبيقات الإرسال الخاصة بـSparkPost لحقن الرسائل. بالطبع، من الممكن أيضًا حقن الرسائل في SparkPost باستخدام SMTP. نقوم بتعيين متغيرات البيئة على النحو التالي:
export SMTP_PASSWORD=<<YOUR_API_KEY_HERE>
إذا كنت تستخدم خدمة SparkPost المستضافة في الاتحاد الأوروبي فعندئذٍ قم بتعيين SMTP_HOST كـ smtp.eu.sparkpostmail.com.
(انظر هنا لمزيد من الخيارات – على سبيل المثال يمكنك الحقن على المنفذ 2525 بدلاً من 587.)
العرض أدناه يوضح أن STARTTLS يستخدم، مع اسم المستخدم وكلمة المرور.
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
سترى:
Opened SMTP connection (STARTTLS) Host: smtp.sparkpostmail.com Port: 587 User: "SMTP_Injection" Password: "****************************************" Sending: tests/fancy-HTML-to-smt.eml From: Steve <steve@thetucks.com> To: SteveT <steve.tuck@sparkpost.com> OK - in 0.057 seconds
يتم طباعة كلمة المرور مع استبدال الأحرف بـ ***، لذا لن تقوم بفضح خصوصية مفتاحك إذا كان هناك من ينظر من فوق كتفك.
تأمين بيانات الاعتماد الخاصة بك
لاحظ أن متغيرات البيئة يمكن إعدادها في ملف نص برمجي لقذيفة أو شيء مشابه، لتجنب إعادة الكتابة. إذا فعلت ذلك، يرجى الحفاظ على كلمات المرور/مفاتيح 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 أو لم تعيّن كلمة المرور، سترى:
(530, b'5.7.1 Authorization required. Ref. https://developers.sparkpost.com/api/index#header-smtp-relay-endpoints', 'steve@thetucks.com')
يتم ببساطة الإبلاغ عن هذه الرسائل الخطأ كما هي من مكتبة Python SMTP، ومن هنا التنسيق.
أيّهما أسرع – SMTP أو API؟
مقارنة الأداء
إليك نظرة سريعة على اختبارات الأداء:
القياس | SMTP | API | ملاحظات |
|---|---|---|---|
ملف صغير (~19 KB) | ~60 مللي ثانية | ~60 مللي ثانية | أداء مشابه جدًا |
ملف كبير (~577 KB) | ~280 مللي ثانية | ~200 مللي ثانية | API أسرع قليلاً مع أحمال أكبر |
بصراحة، من غير المحتمل أن يكون استخدام S/MIME بكميات كبيرة، ولكن وجود نفس الأداة بخيارين للإخراج كان يطلب منا القيام بسباق!
ملف اختبار البريد الإلكتروني "Avocado" المستخدم هنا هو تقريباً 19KB. تكرار الاختبارات 10 مرات عبر حلقة bash أظهر أن الأوقات المتوسطة كانت مشابهة لـ SMTP وAPI، حوالي 60 مللي ثانية لكل رسالة، وهو سريع جداً. في هذه الحالة، قمنا بإدخالها من جهاز EC2 متوسط في نفس منطقة استضافة SparkPost.com، وهو طريقة جيدة للحفاظ على أوقات الرحلة الشبكية منخفضة.
عند تكرار ذلك مع ملف اختبار أكبر (577KB)، استغرق API تقريباً 200 مللي ثانية، بينما استغرق SMTP 280 مللي ثانية لكل رسالة - لا يزال مذهلاً لحجم ملف أكبر بـ30 مرة. بالطبع، قد تختلف تجربتك حسب الموقع واختناق الإنترنت وغيرها، لكن من غير المحتمل أن يكون الأداء مشكلة.
إذا كنت بحاجة بالفعل إلى أقصى أداء، فإن نقطة البداية الجيدة ستكون إطلاق عدد محدد من عمليات/جلسات الحقن المتزامنة كما هو موصى به في ممارسات الإرسال الأفضل لدينا - مثلاً من مهمة مشرف.
مقارنة الأداء
إليك نظرة سريعة على اختبارات الأداء:
القياس | SMTP | API | ملاحظات |
|---|---|---|---|
ملف صغير (~19 KB) | ~60 مللي ثانية | ~60 مللي ثانية | أداء مشابه جدًا |
ملف كبير (~577 KB) | ~280 مللي ثانية | ~200 مللي ثانية | API أسرع قليلاً مع أحمال أكبر |
بصراحة، من غير المحتمل أن يكون استخدام S/MIME بكميات كبيرة، ولكن وجود نفس الأداة بخيارين للإخراج كان يطلب منا القيام بسباق!
ملف اختبار البريد الإلكتروني "Avocado" المستخدم هنا هو تقريباً 19KB. تكرار الاختبارات 10 مرات عبر حلقة bash أظهر أن الأوقات المتوسطة كانت مشابهة لـ SMTP وAPI، حوالي 60 مللي ثانية لكل رسالة، وهو سريع جداً. في هذه الحالة، قمنا بإدخالها من جهاز EC2 متوسط في نفس منطقة استضافة SparkPost.com، وهو طريقة جيدة للحفاظ على أوقات الرحلة الشبكية منخفضة.
عند تكرار ذلك مع ملف اختبار أكبر (577KB)، استغرق API تقريباً 200 مللي ثانية، بينما استغرق SMTP 280 مللي ثانية لكل رسالة - لا يزال مذهلاً لحجم ملف أكبر بـ30 مرة. بالطبع، قد تختلف تجربتك حسب الموقع واختناق الإنترنت وغيرها، لكن من غير المحتمل أن يكون الأداء مشكلة.
إذا كنت بحاجة بالفعل إلى أقصى أداء، فإن نقطة البداية الجيدة ستكون إطلاق عدد محدد من عمليات/جلسات الحقن المتزامنة كما هو موصى به في ممارسات الإرسال الأفضل لدينا - مثلاً من مهمة مشرف.
مقارنة الأداء
إليك نظرة سريعة على اختبارات الأداء:
القياس | SMTP | API | ملاحظات |
|---|---|---|---|
ملف صغير (~19 KB) | ~60 مللي ثانية | ~60 مللي ثانية | أداء مشابه جدًا |
ملف كبير (~577 KB) | ~280 مللي ثانية | ~200 مللي ثانية | API أسرع قليلاً مع أحمال أكبر |
بصراحة، من غير المحتمل أن يكون استخدام S/MIME بكميات كبيرة، ولكن وجود نفس الأداة بخيارين للإخراج كان يطلب منا القيام بسباق!
ملف اختبار البريد الإلكتروني "Avocado" المستخدم هنا هو تقريباً 19KB. تكرار الاختبارات 10 مرات عبر حلقة bash أظهر أن الأوقات المتوسطة كانت مشابهة لـ SMTP وAPI، حوالي 60 مللي ثانية لكل رسالة، وهو سريع جداً. في هذه الحالة، قمنا بإدخالها من جهاز EC2 متوسط في نفس منطقة استضافة SparkPost.com، وهو طريقة جيدة للحفاظ على أوقات الرحلة الشبكية منخفضة.
عند تكرار ذلك مع ملف اختبار أكبر (577KB)، استغرق API تقريباً 200 مللي ثانية، بينما استغرق SMTP 280 مللي ثانية لكل رسالة - لا يزال مذهلاً لحجم ملف أكبر بـ30 مرة. بالطبع، قد تختلف تجربتك حسب الموقع واختناق الإنترنت وغيرها، لكن من غير المحتمل أن يكون الأداء مشكلة.
إذا كنت بحاجة بالفعل إلى أقصى أداء، فإن نقطة البداية الجيدة ستكون إطلاق عدد محدد من عمليات/جلسات الحقن المتزامنة كما هو موصى به في ممارسات الإرسال الأفضل لدينا - مثلاً من مهمة مشرف.



