الجزء 3 من S/MIME: التوصيل والتشغيل للبريد الإلكتروني الآمن في الداخل

Bird

01‏/12‏/2019

البريد الإلكتروني

1 min read

الجزء 3 من S/MIME: التوصيل والتشغيل للبريد الإلكتروني الآمن في الداخل

النقاط الرئيسية

    • تكامل 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 وتظهر كموقعة ومشفرة.

Email from Avocado showing a marketing message with security features enabled, displayed in Mac Mail as signed and encrypted.


ميزة إضافية: 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 نشط.

MX Toolbox interface showing successful DKIM record verification with all tests passing for email authentication security.

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 وتظهر كموقعة ومشفرة.

Email from Avocado showing a marketing message with security features enabled, displayed in Mac Mail as signed and encrypted.


ميزة إضافية: 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 نشط.

MX Toolbox interface showing successful DKIM record verification with all tests passing for email authentication security.

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 وتظهر كموقعة ومشفرة.

Email from Avocado showing a marketing message with security features enabled, displayed in Mac Mail as signed and encrypted.


ميزة إضافية: 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 نشط.

MX Toolbox interface showing successful DKIM record verification with all tests passing for email authentication security.

3. حقن SMTP نحو Momentum

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

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


Diagram showing email flow from a generation server to on-premises MTA (Mail Transfer Agent) via SMTP protocol.


تم تثبيت أدوات 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.


Diagram showing email flow from a generation server to on-premises MTA (Mail Transfer Agent) via SMTP protocol.


تم تثبيت أدوات 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.


Diagram showing email flow from a generation server to on-premises MTA (Mail Transfer Agent) via SMTP protocol.


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

إذا كنت بحاجة بالفعل إلى أقصى أداء، فإن نقطة البداية الجيدة ستكون إطلاق عدد محدد من عمليات/جلسات الحقن المتزامنة كما هو موصى به في ممارسات الإرسال الأفضل لدينا - مثلاً من مهمة مشرف.

باختصار …

لقد رأينا كيف تم تحديث الأداة القائمة على SparkPost API المستخدمة في الجزء 2 لدعم إدخال SMTP لدعم MTAs المحلية مثل Port25 PowerMTA وMomentum في مجموعة متنوعة من التكوينات، وكذلك مع SparkPost.

هذا كل شيء في الوقت الحالي! إرسال سعيد.

لقد رأينا كيف تم تحديث الأداة القائمة على SparkPost API المستخدمة في الجزء 2 لدعم إدخال SMTP لدعم MTAs المحلية مثل Port25 PowerMTA وMomentum في مجموعة متنوعة من التكوينات، وكذلك مع SparkPost.

هذا كل شيء في الوقت الحالي! إرسال سعيد.

لقد رأينا كيف تم تحديث الأداة القائمة على SparkPost API المستخدمة في الجزء 2 لدعم إدخال SMTP لدعم MTAs المحلية مثل Port25 PowerMTA وMomentum في مجموعة متنوعة من التكوينات، وكذلك مع SparkPost.

هذا كل شيء في الوقت الحالي! إرسال سعيد.

أخبار أخرى

اقرأ المزيد من هذه الفئة

A person is standing at a desk while typing on a laptop.

المنصة الأصلية للذكاء الاصطناعي التي تتوسع مع عملك.

A person is standing at a desk while typing on a laptop.

المنصة الأصلية للذكاء الاصطناعي التي تتوسع مع عملك.

A person is standing at a desk while typing on a laptop.

المنصة الأصلية للذكاء الاصطناعي التي تتوسع مع عملك.