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

طائر

01‏/12‏/2019

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

1 min read

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

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

    • تكامل S/MIME لخوادم البريد المحلية: تعرف على كيفية حقن تدفقات البريد الإلكتروني الموقعة والمشفرة في PowerMTA أو Momentum أو SparkPost SMTP مع الحفاظ على إعدادات DKIM والامتثال الحالية.

    • نموذج الأمان الهجين: دمج تشفير S/MIME + توقيع DKIM لضمان مصداقية الرسالة وخصوصية المحتوى في البيئات الخاضعة للتنظيم.

    • عملية النشر: تكوين متغيرات البيئة (SMTP_HOST ، بيانات الاعتماد ، المفاتيح) ، وتشغيل سير العمل --sign --encrypt --send_smtp ، والتحقق من تقارير التسليم.

    • رؤية الأداء: تظهر الاختبارات سرعة شبه متطابقة لحقن SMTP مقابل API (~60 مللي ثانية لكل رسالة ، 200-280 مللي ثانية للملفات الأكبر).

    • أفضل ممارسات الأمان: تخزين المفاتيح الخاصة وكلمات مرور API في ملفات مقيدة (chmod 0700) ، واستخدام STARTTLS وجلسات SMTP المعتمدة.

    • حالات الاستخدام: يمكن للمؤسسات التي تعمل على تحديث أنظمة البريد القديمة توسيع التشفير من النهاية إلى النهاية دون التخلي عن البنية التحتية الحالية.

أهم النقاط في الأسئلة والأجوبة

  • لماذا يتم تعديل S/MIME لخوادم محلية بدلاً من واجهات برمجة التطبيقات السحابية؟

    تحتاج العديد من الصناعات الخاضعة للتنظيم (قطاعي البنوك والرعاية الصحية) إلى الاحتفاظ بالبريد في الموقع. تتيح هذه الطريقة السيطرة على تدفق الرسائل مع إضافة حماية تشفير حديثة.

  • كيف يعمل حقن SMTP مع PowerMTA أو Momentum؟

    تقوم بإدخال رسائل S/MIME مكتملة التشكيل إلى المستمع المحلي (المنفذ 25 أو VLAN الخاصة). ثم تتولى هذه الـ 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 نحو PowerMTA على المنفذ 25

PowerMTA تدعم وسائل مختلفة لإدخال الرسائل، بما في ذلك دليل “Pickup” للملفات، و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 كأنها موقعة ومشفرة.

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


ميزة إضافية: DKIM مع PowerMTA

تكوين DKIM سهل جدًا ويتعايش بشكل جيد مع S/MIME. الخطوات هي:

  • استخدم موقع DKIM Wizard الخاص بـ PowerMTA لإنشاء المفتاح الخاص بمجال الإرسال (في حالتي، 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 تدعم وسائل مختلفة لإدخال الرسائل، بما في ذلك دليل “Pickup” للملفات، و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 كأنها موقعة ومشفرة.

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


ميزة إضافية: DKIM مع PowerMTA

تكوين DKIM سهل جدًا ويتعايش بشكل جيد مع S/MIME. الخطوات هي:

  • استخدم موقع DKIM Wizard الخاص بـ PowerMTA لإنشاء المفتاح الخاص بمجال الإرسال (في حالتي، 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 تدعم وسائل مختلفة لإدخال الرسائل، بما في ذلك دليل “Pickup” للملفات، و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 كأنها موقعة ومشفرة.

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


ميزة إضافية: DKIM مع PowerMTA

تكوين DKIM سهل جدًا ويتعايش بشكل جيد مع S/MIME. الخطوات هي:

  • استخدم موقع DKIM Wizard الخاص بـ PowerMTA لإنشاء المفتاح الخاص بمجال الإرسال (في حالتي، 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 نحو الزخم

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

هذه نسخة أصغر من إعداد الإنتاج، حيث تكون عقد “التوليد” وعقد 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 الخاص بـ الزخم التوقيع.

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

هذه نسخة أصغر من إعداد الإنتاج، حيث تكون عقد “التوليد” وعقد 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 الخاص بـ الزخم التوقيع.

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

هذه نسخة أصغر من إعداد الإنتاج، حيث تكون عقد “التوليد” وعقد 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 الخاص بـ الزخم التوقيع.

4. حقن SMTP نحو SparkPost

في الجزء 2 استخدمنا واجهة برمجة التطبيقات REST الخاصة بإرسال نقلات 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')

تُبلغ رسائل الخطأ هذه كما هي من مكتبة SMTP في Python، لذا فإن التنسيق هو على النحو المذكور.

في الجزء 2 استخدمنا واجهة برمجة التطبيقات REST الخاصة بإرسال نقلات 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')

تُبلغ رسائل الخطأ هذه كما هي من مكتبة SMTP في Python، لذا فإن التنسيق هو على النحو المذكور.

في الجزء 2 استخدمنا واجهة برمجة التطبيقات REST الخاصة بإرسال نقلات 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')

تُبلغ رسائل الخطأ هذه كما هي من مكتبة SMTP في Python، لذا فإن التنسيق هو على النحو المذكور.

أيها أسرع - SMTP أم API؟

مقارنة الأداء

إليك تفصيل سريع لاختبارات الأداء:

القياس

SMTP

API

ملاحظات

ملف صغير (~19 كيلوبايت)

~60 مللي ثانية

~60 مللي ثانية

أداء متطابق تقريبًا

ملف كبير (~577 كيلوبايت)

~280 مللي ثانية

~200 مللي ثانية

API أسرع قليلاً مع حمولات أكبر

بصراحة، من غير المرجح أن تكون S/MIME حالة استخدام ذات حجم كبير، ولكن وجود نفس الأداة مع خيارين للإخراج كان مجرد دعوة لنا لنقوم بسباق!

ملف اختبار البريد الإلكتروني "الأفوكادو" المستخدم هنا حوالي 19 كيلوبايت. تكرار الاختبارات 10 مرات عبر حلقة باش أظهر أن الأوقات المتوسطة كانت متشابهة لـ SMTP و API، حوالي 60 مللي ثانية لكل رسالة، وهو سريع جدًا. في هذه الحالة، قمنا بالإدخال من مثيل EC2 متوسط في نفس منطقة استضافة SparkPost.com، وهو وسيلة جيدة للحفاظ على أوقات الرحلة الشبكية منخفضة.

عند تكرار ذلك مع ملف اختبار أكبر (577 كيلوبايت)، استغرق API حوالي 200 مللي ثانية، بينما استغرق SMTP 280 مللي ثانية لكل رسالة – ولا يزال مثيرًا للإعجاب لحجم ملف أكبر بـ 30 مرة. بالطبع، قد يختلف أداؤك حسب الموقع، وازدحام الإنترنت وما إلى ذلك، ولكن من غير المحتمل أن تكون الأداء قضية.

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

مقارنة الأداء

إليك تفصيل سريع لاختبارات الأداء:

القياس

SMTP

API

ملاحظات

ملف صغير (~19 كيلوبايت)

~60 مللي ثانية

~60 مللي ثانية

أداء متطابق تقريبًا

ملف كبير (~577 كيلوبايت)

~280 مللي ثانية

~200 مللي ثانية

API أسرع قليلاً مع حمولات أكبر

بصراحة، من غير المرجح أن تكون S/MIME حالة استخدام ذات حجم كبير، ولكن وجود نفس الأداة مع خيارين للإخراج كان مجرد دعوة لنا لنقوم بسباق!

ملف اختبار البريد الإلكتروني "الأفوكادو" المستخدم هنا حوالي 19 كيلوبايت. تكرار الاختبارات 10 مرات عبر حلقة باش أظهر أن الأوقات المتوسطة كانت متشابهة لـ SMTP و API، حوالي 60 مللي ثانية لكل رسالة، وهو سريع جدًا. في هذه الحالة، قمنا بالإدخال من مثيل EC2 متوسط في نفس منطقة استضافة SparkPost.com، وهو وسيلة جيدة للحفاظ على أوقات الرحلة الشبكية منخفضة.

عند تكرار ذلك مع ملف اختبار أكبر (577 كيلوبايت)، استغرق API حوالي 200 مللي ثانية، بينما استغرق SMTP 280 مللي ثانية لكل رسالة – ولا يزال مثيرًا للإعجاب لحجم ملف أكبر بـ 30 مرة. بالطبع، قد يختلف أداؤك حسب الموقع، وازدحام الإنترنت وما إلى ذلك، ولكن من غير المحتمل أن تكون الأداء قضية.

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

مقارنة الأداء

إليك تفصيل سريع لاختبارات الأداء:

القياس

SMTP

API

ملاحظات

ملف صغير (~19 كيلوبايت)

~60 مللي ثانية

~60 مللي ثانية

أداء متطابق تقريبًا

ملف كبير (~577 كيلوبايت)

~280 مللي ثانية

~200 مللي ثانية

API أسرع قليلاً مع حمولات أكبر

بصراحة، من غير المرجح أن تكون S/MIME حالة استخدام ذات حجم كبير، ولكن وجود نفس الأداة مع خيارين للإخراج كان مجرد دعوة لنا لنقوم بسباق!

ملف اختبار البريد الإلكتروني "الأفوكادو" المستخدم هنا حوالي 19 كيلوبايت. تكرار الاختبارات 10 مرات عبر حلقة باش أظهر أن الأوقات المتوسطة كانت متشابهة لـ SMTP و API، حوالي 60 مللي ثانية لكل رسالة، وهو سريع جدًا. في هذه الحالة، قمنا بالإدخال من مثيل EC2 متوسط في نفس منطقة استضافة SparkPost.com، وهو وسيلة جيدة للحفاظ على أوقات الرحلة الشبكية منخفضة.

عند تكرار ذلك مع ملف اختبار أكبر (577 كيلوبايت)، استغرق API حوالي 200 مللي ثانية، بينما استغرق SMTP 280 مللي ثانية لكل رسالة – ولا يزال مثيرًا للإعجاب لحجم ملف أكبر بـ 30 مرة. بالطبع، قد يختلف أداؤك حسب الموقع، وازدحام الإنترنت وما إلى ذلك، ولكن من غير المحتمل أن تكون الأداء قضية.

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

في الختام ...

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

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

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

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

لقد رأينا كيف تمت ترقية الأداة المعتمدة على API من SparkPost المستخدمة في الجزء 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.

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