نشر الإشارات على الخوادم المحلية: تكامل PowerMTA

طائر

30‏/08‏/2019

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

1 min read

نشر الإشارات على الخوادم المحلية: تكامل PowerMTA

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

    • الغرض: يشرح هذا الدليل كيفية دمج PowerMTA 5.0+ مع SparkPost Signals لبث بيانات الأحداث والتفاعل (الارتدادات، الفتحات، النقرات، شكاوى البريد العشوائي) من MTAs المحلية مباشرة إلى طبقة تحليلات SparkPost.

    • التكوين الأساسي:

      • أضف enable-signals true وتعريف نقطة إدخال SparkPost (https://api.sparkpost.com/api/v1/ingest/events أو المعادل في الاتحاد الأوروبي).

      • استخدم مفتاح واجهة برمجة التطبيقات صالح مع إذن “Incoming Events: Write”.

      • حدد customer-id، وقم بإعداد نطاقات تتبع مخصصة بشكل اختياري لتحسين القابلية للتسليم.

    • إعداد التتبع: يقوم تتبع التفاعل في PowerMTA تلقائيًا بإدخال بيكسلات الفتح والنقر في رسائل البريد الإلكتروني بتنسيق HTML. يمكنك تعطيل التتبع لكل رابط باستخدام السمة data-msys-clicktrack="0".

    • التقرير الانتقائي: يمكن تفعيل Signals بشكل عالمي أو تقييده لبعض VirtualMTAs، والمجموعة، أو مجالات المرسل، مما يسمح بتحكم دقيق في البيانات.

    • اختبار & التحقق: استخدم لوحة معلومات تكامل Signals وسجلات PowerMTA لتأكيد استيعاب الأحداث وتتبع درجات الصحة والارتدادات ومقاييس التفاعل في الوقت الفعلي.

    • تعديل قابلية التسليم:

      • استخدم أسماء VirtualMTA وJob ذات معنى — هذه تتطابق مباشرة مع مجموعات IP ومعرفات الحملات في تقارير SparkPost.

      • قم بتكوين توقيع DKIM وفرض TLS، وقواعد الترحيل الصحيحة لمنع الحقن غير المصرح به.

    • الإعداد المتقدم: تتضمن المقالة أيضًا مقاطع جاهزة للاستخدام لـ FBL & معالجة الارتدادات خارج النطاق، وحقن SMTP المعتمد (المنفذ 587)، ورمز بايثون لتنظيف رؤوس X-Job لتوافقها.

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

  • ما الذي تفعله فعليًا تكامل الإشارات؟

    يقوم بتحميل أحداث رسائل PowerMTA تلقائيًا (الحقن، التسليم، الارتداد، التفاعل) إلى حسابك في SparkPost حتى تتمكن من الوصول إلى لوحات المعلومات مثل درجة الصحة، وتقارير التأخير، ومراقبة فخاخ البريد العشوائي.

  • لماذا يجب دمج Signals مع MTA محلي؟

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

  • كيف يمكنني التحقق من أن الأحداث تتدفق إلى SparkPost؟

    تحقق من سجلات PowerMTA عن Signals: Transferred ... بنجاح وتأكيد إدخالات الحدث تحت Signals → Events Search في SparkPost.

  • هل يمكنني استخدام نطاق التتبع الخاص بي؟

    نعم - قم بتكوين CNAME مثل track.mycompany.com → pmta.spgo.io (الولايات المتحدة) أو pmta.eu.spgo.io (الاتحاد الأوروبي)، ثم قم بتسجيله والتحقق منه في SparkPost لضمان التوافق في العلامة التجارية والسمعة.

  • ماذا عن خصوصية البيانات أو استخدام القرص؟

    تقوم توجيه min-free-space تلقائيًا بحذف ملفات أحداث JSON القديمة عندما تنخفض مساحة القرص، مما يمنع تراكم بيانات القياس عن بُعد محليًا.

  • ما هي "الميزة الإضافية" في النهاية؟

    أداة تعبيرات نمط بايثون (pmtaSafeJobID) تضمن أن أسماء الحملات/الوظائف تستخدم فقط أحرف صالحة في تنسيق رأس X-Job الخاص بـ PowerMTA، مع استبدال الأحرف غير الآمنة بالشرطات السفلية.

دعونا نغوص في تفاصيل إعداد PowerMTA لـ SparkPost Signals. ستحتاج إلى:

  • خادم لتشغيل أحدث إصدار من PowerMTA - إما جديد، أو جهاز موجود

  • حساب SparkPost مع إذن مفتاح API لـ “الأحداث الواردة: كتابة” كما هو موضح هنا

سنقوم بإعداد PowerMTA لبث الأحداث إلى حساب SparkPost الخاص بك، ثم ستتمكن من استخدام ما يلي:

دعونا نغوص في تفاصيل إعداد PowerMTA لـ SparkPost Signals. ستحتاج إلى:

  • خادم لتشغيل أحدث إصدار من PowerMTA - إما جديد، أو جهاز موجود

  • حساب SparkPost مع إذن مفتاح API لـ “الأحداث الواردة: كتابة” كما هو موضح هنا

سنقوم بإعداد PowerMTA لبث الأحداث إلى حساب SparkPost الخاص بك، ثم ستتمكن من استخدام ما يلي:

دعونا نغوص في تفاصيل إعداد PowerMTA لـ SparkPost Signals. ستحتاج إلى:

  • خادم لتشغيل أحدث إصدار من PowerMTA - إما جديد، أو جهاز موجود

  • حساب SparkPost مع إذن مفتاح API لـ “الأحداث الواردة: كتابة” كما هو موضح هنا

سنقوم بإعداد PowerMTA لبث الأحداث إلى حساب SparkPost الخاص بك، ثم ستتمكن من استخدام ما يلي:

نظرة عامة على التثبيت والتكوين

أولاً، قم بتثبيت (أو ترقية) إلى PowerMTA 5.0 r4 أو إصدار أحدث، وفقًا لـ تعليمات التثبيت المعتادة v5.0 التي هي سهلة الفهم. ثم سنتناول الخطوات التالية:

  • تكوين موصل PowerMTA إلى SparkPost Signals

  • إعداد تتبع التفاعل مع نطاق تتبع مخصص

  • اختر أي تدفقات حركة مرور PowerMTA لتقريرها إلى Signals

  • اختبار ما إذا كانت الأحداث تصل إلى Signals

  • مراجعة كيفية استخدام أسماء ذات دلالة تظهر بشكل جيد في التقارير.

سنغطي أيضًا جوانب إعداد PowerMTA الأخرى المحددة المستخدمة في عرض Signals الخاص بنا:

  • أحداث FBL (شكاوى البريد العشوائي) والارتدادات البعيدة (خارج النطاق)

  • تكوين الإرسال، بما في ذلك DKIM

  • تكوين FBL وOOB

  • إعداد VirtualMTA وتسمية (وكيف تظهر هذه في تقارير SparkPost Signals الخاصة بك)

أخيرًا، هناك "ميزة إضافية" مع كود لضمان توافق أسماء حملاتك مع متطلبات تسمية PowerMTA X-Job .

أولاً، قم بتثبيت (أو ترقية) إلى PowerMTA 5.0 r4 أو إصدار أحدث، وفقًا لـ تعليمات التثبيت المعتادة v5.0 التي هي سهلة الفهم. ثم سنتناول الخطوات التالية:

  • تكوين موصل PowerMTA إلى SparkPost Signals

  • إعداد تتبع التفاعل مع نطاق تتبع مخصص

  • اختر أي تدفقات حركة مرور PowerMTA لتقريرها إلى Signals

  • اختبار ما إذا كانت الأحداث تصل إلى Signals

  • مراجعة كيفية استخدام أسماء ذات دلالة تظهر بشكل جيد في التقارير.

سنغطي أيضًا جوانب إعداد PowerMTA الأخرى المحددة المستخدمة في عرض Signals الخاص بنا:

  • أحداث FBL (شكاوى البريد العشوائي) والارتدادات البعيدة (خارج النطاق)

  • تكوين الإرسال، بما في ذلك DKIM

  • تكوين FBL وOOB

  • إعداد VirtualMTA وتسمية (وكيف تظهر هذه في تقارير SparkPost Signals الخاصة بك)

أخيرًا، هناك "ميزة إضافية" مع كود لضمان توافق أسماء حملاتك مع متطلبات تسمية PowerMTA X-Job .

أولاً، قم بتثبيت (أو ترقية) إلى PowerMTA 5.0 r4 أو إصدار أحدث، وفقًا لـ تعليمات التثبيت المعتادة v5.0 التي هي سهلة الفهم. ثم سنتناول الخطوات التالية:

  • تكوين موصل PowerMTA إلى SparkPost Signals

  • إعداد تتبع التفاعل مع نطاق تتبع مخصص

  • اختر أي تدفقات حركة مرور PowerMTA لتقريرها إلى Signals

  • اختبار ما إذا كانت الأحداث تصل إلى Signals

  • مراجعة كيفية استخدام أسماء ذات دلالة تظهر بشكل جيد في التقارير.

سنغطي أيضًا جوانب إعداد PowerMTA الأخرى المحددة المستخدمة في عرض Signals الخاص بنا:

  • أحداث FBL (شكاوى البريد العشوائي) والارتدادات البعيدة (خارج النطاق)

  • تكوين الإرسال، بما في ذلك DKIM

  • تكوين FBL وOOB

  • إعداد VirtualMTA وتسمية (وكيف تظهر هذه في تقارير SparkPost Signals الخاصة بك)

أخيرًا، هناك "ميزة إضافية" مع كود لضمان توافق أسماء حملاتك مع متطلبات تسمية PowerMTA X-Job .

تكوين FBL و OOB

الآن .. أخيرًا .. نعلن عن أي المجالات المحددة مفتوحة لاستقبال استجابات التعليقات عن بعد والبريد المرتد. لا نريد نقل هذه الاستجابات إلى أي مكان (لمنع هجمات النشر العكسي)، فقط نقوم بمعالجة تلك الاستجابات داخليًا.

# # Enable Bounce and FBL processing on specific domains #
relay-domain pmta.signalsdemo.trymsys.net
relay-domain bounces.pmta.signalsdemo.trymsys.net
relay-domain fbl.pmta.signalsdemo.trymsys.net

<bounce-processor>
deliver-unmatched-email no
deliver-matched-email no
<address-list>
domain pmta.signalsdemo.trymsys.net
domain bounces.pmta.signalsdemo.trymsys.net
</address-list>
</bounce-processor>

<feedback-loop-processor>
deliver-unmatched-email no
deliver-matched-email no
<address-list>
domain fbl.pmta.signalsdemo.trymsys.net
</address-list>
</feedback-loop-processor>

يمكنك أن ترى أنني قد قمت بإعداد مجالات مرتدة اثنين، حيث كانت لدي تجربة في استخدام/عدم استخدام قاعدة إعادة الكتابة mfrom .

عادةً ما يتم تسجيل مجال FBL مع خدمات خارجية مثل Microsoft SNDS؛ انظر هذه المقالة لمزيد من المعلومات. في هذا العرض التوضيحي، ستأتي التعليقات عن بعد من Bouncy Sink، لذا لا حاجة للتسجيل.

الآن .. أخيرًا .. نعلن عن أي المجالات المحددة مفتوحة لاستقبال استجابات التعليقات عن بعد والبريد المرتد. لا نريد نقل هذه الاستجابات إلى أي مكان (لمنع هجمات النشر العكسي)، فقط نقوم بمعالجة تلك الاستجابات داخليًا.

# # Enable Bounce and FBL processing on specific domains #
relay-domain pmta.signalsdemo.trymsys.net
relay-domain bounces.pmta.signalsdemo.trymsys.net
relay-domain fbl.pmta.signalsdemo.trymsys.net

<bounce-processor>
deliver-unmatched-email no
deliver-matched-email no
<address-list>
domain pmta.signalsdemo.trymsys.net
domain bounces.pmta.signalsdemo.trymsys.net
</address-list>
</bounce-processor>

<feedback-loop-processor>
deliver-unmatched-email no
deliver-matched-email no
<address-list>
domain fbl.pmta.signalsdemo.trymsys.net
</address-list>
</feedback-loop-processor>

يمكنك أن ترى أنني قد قمت بإعداد مجالات مرتدة اثنين، حيث كانت لدي تجربة في استخدام/عدم استخدام قاعدة إعادة الكتابة mfrom .

عادةً ما يتم تسجيل مجال FBL مع خدمات خارجية مثل Microsoft SNDS؛ انظر هذه المقالة لمزيد من المعلومات. في هذا العرض التوضيحي، ستأتي التعليقات عن بعد من Bouncy Sink، لذا لا حاجة للتسجيل.

الآن .. أخيرًا .. نعلن عن أي المجالات المحددة مفتوحة لاستقبال استجابات التعليقات عن بعد والبريد المرتد. لا نريد نقل هذه الاستجابات إلى أي مكان (لمنع هجمات النشر العكسي)، فقط نقوم بمعالجة تلك الاستجابات داخليًا.

# # Enable Bounce and FBL processing on specific domains #
relay-domain pmta.signalsdemo.trymsys.net
relay-domain bounces.pmta.signalsdemo.trymsys.net
relay-domain fbl.pmta.signalsdemo.trymsys.net

<bounce-processor>
deliver-unmatched-email no
deliver-matched-email no
<address-list>
domain pmta.signalsdemo.trymsys.net
domain bounces.pmta.signalsdemo.trymsys.net
</address-list>
</bounce-processor>

<feedback-loop-processor>
deliver-unmatched-email no
deliver-matched-email no
<address-list>
domain fbl.pmta.signalsdemo.trymsys.net
</address-list>
</feedback-loop-processor>

يمكنك أن ترى أنني قد قمت بإعداد مجالات مرتدة اثنين، حيث كانت لدي تجربة في استخدام/عدم استخدام قاعدة إعادة الكتابة mfrom .

عادةً ما يتم تسجيل مجال FBL مع خدمات خارجية مثل Microsoft SNDS؛ انظر هذه المقالة لمزيد من المعلومات. في هذا العرض التوضيحي، ستأتي التعليقات عن بعد من Bouncy Sink، لذا لا حاجة للتسجيل.

إعداد موصل PowerMTA

تكوين الإشارات موصوف في قسم 5.0 User Guide section 10.1. هنا سنبدأ بـ "حالة الاستخدام #2"، التي تتيح الإشارات لجميع حركة المرور من هذا المضيف PowerMTA، وتمكن تتبع تفاعل SparkPost.

# # SparkPost Signals #
<signals>
api-key ##my ingest API key here##
upload-url https://api.sparkpost.com/api/v1/ingest/events
log-verbose true
min-free-space 1G
engagement-tracking sparkpost   # this turns on the open and click tracking in PowerMTA
customer-id 123                 # Your SparkPost account number here
</signals>

enable-signals true


إليك ما تفعله كل سمة:

api-key

هذا فريد لحساب SparkPost الخاص بك، وهو القيمة التي حصلت عليها من SparkPost في وقت سابق.


upload-url

يجب أن يتطابق هذا مع عنوان خدمة API الخاصة بك في SparkPost، سواء كانت في الولايات المتحدة أو الاتحاد الأوروبي. لمزيد من المعلومات انظر هنا. القيم المعتادة هي:

SparkPost (الولايات المتحدة): https://api.sparkpost.com/api/v1/ingest/events

SparkPost الاتحاد الأوروبي:    https://api.eu.sparkpost.com/api/v1/ingest/events


log-verbose

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

2019-07-26 11:47:57 Signals: Discovered 0 files


مع الحركة، سترى شيئًا مثل:

2019-07-26 11:50:57 Signals: Discovered sp1-0000000000003FBD.json
2019-07-26 11:50:57 Signals: Transferred sp1-0000000000003FBD.json successfully.
2019-07-26 11:50:57 Signals: Discovered 1 file, transferred 1 file successfully


min-free-space

هذا يخبر PowerMTA بحد أدنى لمساحة القرص التي يجب أن يبدأ عندها في حذف أقدم ملفات أحداث JSON الخاصة بـ SparkPost لإفساح المجال لملفات جديدة عندما تكون مساحة القرص منخفضة.


enable-signals

هذا يخبر PowerMTA بتحميل البيانات إلى الإشارات، في هذه الحالة بشكل عالمي لجميع الحركة (لمزيد من المعلومات هنا، للإصدار v5.0). يمكنك أن تكون أكثر انتقائية بشأن تدفقات الحركة التي تريد تحميلها إذا رغبت في ذلك.


يمكنك أيضًا وضع علامة على حركة مرور PowerMTA معينة لتسجيلها كأنها تعود إلى حساب فرعي لـ SparkPost – هذه وسيلة أخرى لتمييز تدفق حركة معين عن الآخر.


تتبع التفاعل، رقم العميل
تحلّ الحلول تتبع التفاعل في PowerMTA افتراضيًا إلى مجال التتبع لخدمة SparkPost المستضافة في الولايات المتحدة. يمكنك تحديد رقم العميل الرقمي الخاص بك في SparkPost؛ إليك تعليمات للعثور عليه.


tracking-domain

للحسابات في SparkPost الاتحاد الأوروبي، أضف السطر التالي:

tracking-domain pmta.eu.spgo.io # هذه هي نقطة النهاية لـ SparkPost الاتحاد الأوروبي


مجال تتبع مخصص

إذا كنت تفضل استخدام مجال التتبع الخاص بك (هذا أفضل من منظور التسليم)، قم بما يلي:

  • قم بإنشاء مجال تتبع مع مزود DNS الخاص بك عن طريق إنشاء سجل CNAME. سيكون هذا عادةً فرعًا من مجالك الرئيسي، مثل track.mycompany.com .


track.mycompany.com CNAME pmta.spgo.io      # if you have a SparkPost US account
track.mycompany.com CNAME pmta.eu.spgo.io   # if you have a SparkPost EU account

يمكنك أيضًا استخدام مجالات تتبع HTTPS، على الرغم من أن هذا أكثر تعقيدًا (انظر خطوات تكوين SparkPost لمجالات تتبع HTTPS).

  • سجل مجال التتبع في حسابك في SparkPost، وقم بـ التحقق منه. انتظر بضع دقائق قبل تجربة ذلك، للسماح بتغييرات DNS الخاصة بك بالانتشار عبر الإنترنت، اعتمادًا على مزود DNS الخاص بك.

  • قم بتكوين PowerMTA لاستخدام ذلك المجال بدلاً من الافتراضي، مع

tracking-domain yourdomain.com # ضع مجالك هنا

يمكنك التحقق من أن رسائلك الإلكترونية المسلمة تحتوي على "بكسلات مفتوحة" مضافة ويمكن أن تكون الروابط مغطاة، من خلال النظر في محتويات البريد (في Gmail، استخدم القائمة في أعلى اليمين واختر "عرض الأصل").

Show original option highlighted


ستلاحظ البكسلات المفتوحة في بداية ونهاية HTML في البريد الإلكتروني. يتم أيضًا تغيير كل رابط HTML ليكون لديه REF  تشير إلى مجال التتبع.

HTML code highlighted


هذا كل ما تحتاجه لجعل إشارات SparkPost تعمل مع تتبع التفاعل المدمج في PowerMTA.

منع تتبع روابط معينة في بريدك الإلكتروني HTML

يمكنك منع PowerMTA من تتبع روابط معينة، عن طريق تعيين السمة المخصصة data-msys-clicktrack  إلى "0"  :

<a href="#" data-msys-clicktrack="0">مثال</a>

لن يقوم PowerMTA بتغليف الرابط. كما سيقوم أيضًا بإزالة تلك السمة قبل إرسال الرسالة إلى المستلم الخاص بك.

تكوين الإشارات موصوف في قسم 5.0 User Guide section 10.1. هنا سنبدأ بـ "حالة الاستخدام #2"، التي تتيح الإشارات لجميع حركة المرور من هذا المضيف PowerMTA، وتمكن تتبع تفاعل SparkPost.

# # SparkPost Signals #
<signals>
api-key ##my ingest API key here##
upload-url https://api.sparkpost.com/api/v1/ingest/events
log-verbose true
min-free-space 1G
engagement-tracking sparkpost   # this turns on the open and click tracking in PowerMTA
customer-id 123                 # Your SparkPost account number here
</signals>

enable-signals true


إليك ما تفعله كل سمة:

api-key

هذا فريد لحساب SparkPost الخاص بك، وهو القيمة التي حصلت عليها من SparkPost في وقت سابق.


upload-url

يجب أن يتطابق هذا مع عنوان خدمة API الخاصة بك في SparkPost، سواء كانت في الولايات المتحدة أو الاتحاد الأوروبي. لمزيد من المعلومات انظر هنا. القيم المعتادة هي:

SparkPost (الولايات المتحدة): https://api.sparkpost.com/api/v1/ingest/events

SparkPost الاتحاد الأوروبي:    https://api.eu.sparkpost.com/api/v1/ingest/events


log-verbose

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

2019-07-26 11:47:57 Signals: Discovered 0 files


مع الحركة، سترى شيئًا مثل:

2019-07-26 11:50:57 Signals: Discovered sp1-0000000000003FBD.json
2019-07-26 11:50:57 Signals: Transferred sp1-0000000000003FBD.json successfully.
2019-07-26 11:50:57 Signals: Discovered 1 file, transferred 1 file successfully


min-free-space

هذا يخبر PowerMTA بحد أدنى لمساحة القرص التي يجب أن يبدأ عندها في حذف أقدم ملفات أحداث JSON الخاصة بـ SparkPost لإفساح المجال لملفات جديدة عندما تكون مساحة القرص منخفضة.


enable-signals

هذا يخبر PowerMTA بتحميل البيانات إلى الإشارات، في هذه الحالة بشكل عالمي لجميع الحركة (لمزيد من المعلومات هنا، للإصدار v5.0). يمكنك أن تكون أكثر انتقائية بشأن تدفقات الحركة التي تريد تحميلها إذا رغبت في ذلك.


يمكنك أيضًا وضع علامة على حركة مرور PowerMTA معينة لتسجيلها كأنها تعود إلى حساب فرعي لـ SparkPost – هذه وسيلة أخرى لتمييز تدفق حركة معين عن الآخر.


تتبع التفاعل، رقم العميل
تحلّ الحلول تتبع التفاعل في PowerMTA افتراضيًا إلى مجال التتبع لخدمة SparkPost المستضافة في الولايات المتحدة. يمكنك تحديد رقم العميل الرقمي الخاص بك في SparkPost؛ إليك تعليمات للعثور عليه.


tracking-domain

للحسابات في SparkPost الاتحاد الأوروبي، أضف السطر التالي:

tracking-domain pmta.eu.spgo.io # هذه هي نقطة النهاية لـ SparkPost الاتحاد الأوروبي


مجال تتبع مخصص

إذا كنت تفضل استخدام مجال التتبع الخاص بك (هذا أفضل من منظور التسليم)، قم بما يلي:

  • قم بإنشاء مجال تتبع مع مزود DNS الخاص بك عن طريق إنشاء سجل CNAME. سيكون هذا عادةً فرعًا من مجالك الرئيسي، مثل track.mycompany.com .


track.mycompany.com CNAME pmta.spgo.io      # if you have a SparkPost US account
track.mycompany.com CNAME pmta.eu.spgo.io   # if you have a SparkPost EU account

يمكنك أيضًا استخدام مجالات تتبع HTTPS، على الرغم من أن هذا أكثر تعقيدًا (انظر خطوات تكوين SparkPost لمجالات تتبع HTTPS).

  • سجل مجال التتبع في حسابك في SparkPost، وقم بـ التحقق منه. انتظر بضع دقائق قبل تجربة ذلك، للسماح بتغييرات DNS الخاصة بك بالانتشار عبر الإنترنت، اعتمادًا على مزود DNS الخاص بك.

  • قم بتكوين PowerMTA لاستخدام ذلك المجال بدلاً من الافتراضي، مع

tracking-domain yourdomain.com # ضع مجالك هنا

يمكنك التحقق من أن رسائلك الإلكترونية المسلمة تحتوي على "بكسلات مفتوحة" مضافة ويمكن أن تكون الروابط مغطاة، من خلال النظر في محتويات البريد (في Gmail، استخدم القائمة في أعلى اليمين واختر "عرض الأصل").

Show original option highlighted


ستلاحظ البكسلات المفتوحة في بداية ونهاية HTML في البريد الإلكتروني. يتم أيضًا تغيير كل رابط HTML ليكون لديه REF  تشير إلى مجال التتبع.

HTML code highlighted


هذا كل ما تحتاجه لجعل إشارات SparkPost تعمل مع تتبع التفاعل المدمج في PowerMTA.

منع تتبع روابط معينة في بريدك الإلكتروني HTML

يمكنك منع PowerMTA من تتبع روابط معينة، عن طريق تعيين السمة المخصصة data-msys-clicktrack  إلى "0"  :

<a href="#" data-msys-clicktrack="0">مثال</a>

لن يقوم PowerMTA بتغليف الرابط. كما سيقوم أيضًا بإزالة تلك السمة قبل إرسال الرسالة إلى المستلم الخاص بك.

تكوين الإشارات موصوف في قسم 5.0 User Guide section 10.1. هنا سنبدأ بـ "حالة الاستخدام #2"، التي تتيح الإشارات لجميع حركة المرور من هذا المضيف PowerMTA، وتمكن تتبع تفاعل SparkPost.

# # SparkPost Signals #
<signals>
api-key ##my ingest API key here##
upload-url https://api.sparkpost.com/api/v1/ingest/events
log-verbose true
min-free-space 1G
engagement-tracking sparkpost   # this turns on the open and click tracking in PowerMTA
customer-id 123                 # Your SparkPost account number here
</signals>

enable-signals true


إليك ما تفعله كل سمة:

api-key

هذا فريد لحساب SparkPost الخاص بك، وهو القيمة التي حصلت عليها من SparkPost في وقت سابق.


upload-url

يجب أن يتطابق هذا مع عنوان خدمة API الخاصة بك في SparkPost، سواء كانت في الولايات المتحدة أو الاتحاد الأوروبي. لمزيد من المعلومات انظر هنا. القيم المعتادة هي:

SparkPost (الولايات المتحدة): https://api.sparkpost.com/api/v1/ingest/events

SparkPost الاتحاد الأوروبي:    https://api.eu.sparkpost.com/api/v1/ingest/events


log-verbose

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

2019-07-26 11:47:57 Signals: Discovered 0 files


مع الحركة، سترى شيئًا مثل:

2019-07-26 11:50:57 Signals: Discovered sp1-0000000000003FBD.json
2019-07-26 11:50:57 Signals: Transferred sp1-0000000000003FBD.json successfully.
2019-07-26 11:50:57 Signals: Discovered 1 file, transferred 1 file successfully


min-free-space

هذا يخبر PowerMTA بحد أدنى لمساحة القرص التي يجب أن يبدأ عندها في حذف أقدم ملفات أحداث JSON الخاصة بـ SparkPost لإفساح المجال لملفات جديدة عندما تكون مساحة القرص منخفضة.


enable-signals

هذا يخبر PowerMTA بتحميل البيانات إلى الإشارات، في هذه الحالة بشكل عالمي لجميع الحركة (لمزيد من المعلومات هنا، للإصدار v5.0). يمكنك أن تكون أكثر انتقائية بشأن تدفقات الحركة التي تريد تحميلها إذا رغبت في ذلك.


يمكنك أيضًا وضع علامة على حركة مرور PowerMTA معينة لتسجيلها كأنها تعود إلى حساب فرعي لـ SparkPost – هذه وسيلة أخرى لتمييز تدفق حركة معين عن الآخر.


تتبع التفاعل، رقم العميل
تحلّ الحلول تتبع التفاعل في PowerMTA افتراضيًا إلى مجال التتبع لخدمة SparkPost المستضافة في الولايات المتحدة. يمكنك تحديد رقم العميل الرقمي الخاص بك في SparkPost؛ إليك تعليمات للعثور عليه.


tracking-domain

للحسابات في SparkPost الاتحاد الأوروبي، أضف السطر التالي:

tracking-domain pmta.eu.spgo.io # هذه هي نقطة النهاية لـ SparkPost الاتحاد الأوروبي


مجال تتبع مخصص

إذا كنت تفضل استخدام مجال التتبع الخاص بك (هذا أفضل من منظور التسليم)، قم بما يلي:

  • قم بإنشاء مجال تتبع مع مزود DNS الخاص بك عن طريق إنشاء سجل CNAME. سيكون هذا عادةً فرعًا من مجالك الرئيسي، مثل track.mycompany.com .


track.mycompany.com CNAME pmta.spgo.io      # if you have a SparkPost US account
track.mycompany.com CNAME pmta.eu.spgo.io   # if you have a SparkPost EU account

يمكنك أيضًا استخدام مجالات تتبع HTTPS، على الرغم من أن هذا أكثر تعقيدًا (انظر خطوات تكوين SparkPost لمجالات تتبع HTTPS).

  • سجل مجال التتبع في حسابك في SparkPost، وقم بـ التحقق منه. انتظر بضع دقائق قبل تجربة ذلك، للسماح بتغييرات DNS الخاصة بك بالانتشار عبر الإنترنت، اعتمادًا على مزود DNS الخاص بك.

  • قم بتكوين PowerMTA لاستخدام ذلك المجال بدلاً من الافتراضي، مع

tracking-domain yourdomain.com # ضع مجالك هنا

يمكنك التحقق من أن رسائلك الإلكترونية المسلمة تحتوي على "بكسلات مفتوحة" مضافة ويمكن أن تكون الروابط مغطاة، من خلال النظر في محتويات البريد (في Gmail، استخدم القائمة في أعلى اليمين واختر "عرض الأصل").

Show original option highlighted


ستلاحظ البكسلات المفتوحة في بداية ونهاية HTML في البريد الإلكتروني. يتم أيضًا تغيير كل رابط HTML ليكون لديه REF  تشير إلى مجال التتبع.

HTML code highlighted


هذا كل ما تحتاجه لجعل إشارات SparkPost تعمل مع تتبع التفاعل المدمج في PowerMTA.

منع تتبع روابط معينة في بريدك الإلكتروني HTML

يمكنك منع PowerMTA من تتبع روابط معينة، عن طريق تعيين السمة المخصصة data-msys-clicktrack  إلى "0"  :

<a href="#" data-msys-clicktrack="0">مثال</a>

لن يقوم PowerMTA بتغليف الرابط. كما سيقوم أيضًا بإزالة تلك السمة قبل إرسال الرسالة إلى المستلم الخاص بك.

اختر تدفق حركة PowerMTA الذي تريد الإبلاغ عنه إلى Signals

يمكنك تحديد الإشارات لتكون نشطة:

  • عالميًا (هذا ما استخدمناه في المثال أعلاه)

  • لبعض الخوادم الافتراضية وليس غيرها

  • لبعض مجموعات الخوادم الافتراضية وليس غيرها

  • لأ addresses 'مرسل' أو 'من' محددة يتم توجيهها بواسطة PowerMTA، بالتزامن مع اختيارات الخادم الافتراضي / مجموعة الخوادم الافتراضية

النطاق

ما يتم الإبلاغ عنه للإشارات

متى تستخدمه

عالمي

جميع حركة المرور من مضيف PowerMTA

نظم بسيطة حيث يجب أن تتغذى جميع حركة المرور في إشارات SparkPost.

الخادم الافتراضي

حركة المرور من الخوادم الافتراضية المختارة فقط

عندما تريد مشاهد تقارير منفصلة لعناوين IP مختلفة أو أنواع حركة مرور مختلفة.

مجموعة الخادم الافتراضي

حركة المرور من مجموعات الخوادم الافتراضية المختارة

عندما تجمع عناوين IP في مجموعات وتريد تقارير على مستوى المجموعة.

مرسل / من نطاق

رسائل من مرسل معين أو نطاقات 'من'

عندما تحتاج إلى تقارير لكل عميل أو لكل علامة تجارية ضمن نفس البنية التحتية.

تعد هذه الإعدادات قوية جدًا ويتم توضيحها من خلال مجموعة من حالات الاستخدام المثال (v5.0) في دليل المستخدم.

يمكنك تحديد الإشارات لتكون نشطة:

  • عالميًا (هذا ما استخدمناه في المثال أعلاه)

  • لبعض الخوادم الافتراضية وليس غيرها

  • لبعض مجموعات الخوادم الافتراضية وليس غيرها

  • لأ addresses 'مرسل' أو 'من' محددة يتم توجيهها بواسطة PowerMTA، بالتزامن مع اختيارات الخادم الافتراضي / مجموعة الخوادم الافتراضية

النطاق

ما يتم الإبلاغ عنه للإشارات

متى تستخدمه

عالمي

جميع حركة المرور من مضيف PowerMTA

نظم بسيطة حيث يجب أن تتغذى جميع حركة المرور في إشارات SparkPost.

الخادم الافتراضي

حركة المرور من الخوادم الافتراضية المختارة فقط

عندما تريد مشاهد تقارير منفصلة لعناوين IP مختلفة أو أنواع حركة مرور مختلفة.

مجموعة الخادم الافتراضي

حركة المرور من مجموعات الخوادم الافتراضية المختارة

عندما تجمع عناوين IP في مجموعات وتريد تقارير على مستوى المجموعة.

مرسل / من نطاق

رسائل من مرسل معين أو نطاقات 'من'

عندما تحتاج إلى تقارير لكل عميل أو لكل علامة تجارية ضمن نفس البنية التحتية.

تعد هذه الإعدادات قوية جدًا ويتم توضيحها من خلال مجموعة من حالات الاستخدام المثال (v5.0) في دليل المستخدم.

يمكنك تحديد الإشارات لتكون نشطة:

  • عالميًا (هذا ما استخدمناه في المثال أعلاه)

  • لبعض الخوادم الافتراضية وليس غيرها

  • لبعض مجموعات الخوادم الافتراضية وليس غيرها

  • لأ addresses 'مرسل' أو 'من' محددة يتم توجيهها بواسطة PowerMTA، بالتزامن مع اختيارات الخادم الافتراضي / مجموعة الخوادم الافتراضية

النطاق

ما يتم الإبلاغ عنه للإشارات

متى تستخدمه

عالمي

جميع حركة المرور من مضيف PowerMTA

نظم بسيطة حيث يجب أن تتغذى جميع حركة المرور في إشارات SparkPost.

الخادم الافتراضي

حركة المرور من الخوادم الافتراضية المختارة فقط

عندما تريد مشاهد تقارير منفصلة لعناوين IP مختلفة أو أنواع حركة مرور مختلفة.

مجموعة الخادم الافتراضي

حركة المرور من مجموعات الخوادم الافتراضية المختارة

عندما تجمع عناوين IP في مجموعات وتريد تقارير على مستوى المجموعة.

مرسل / من نطاق

رسائل من مرسل معين أو نطاقات 'من'

عندما تحتاج إلى تقارير لكل عميل أو لكل علامة تجارية ضمن نفس البنية التحتية.

تعد هذه الإعدادات قوية جدًا ويتم توضيحها من خلال مجموعة من حالات الاستخدام المثال (v5.0) في دليل المستخدم.

اختبار أن فعالياتك تصل إلى إشارات

إليك عرض لـ SparkPost Signals، المتصل بـ PowerMTA. يمكنك أن ترى أن درجة الصحة تختلف.

Health score dashboard


أسماء الحملات متاحة كعوامل تقرير، إلى جانب الحساب الفرعي، تجمع IP، مزود البريد، والنطاق المرسل.

بالإضافة إلى الاطلاع على سجلات PowerMTA، يمكنك التحقق من أن بيانات الأحداث تصل إلى SparkPost من خلال النظر في شاشة تكامل Signals.

Signals integration screen

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

إليك عرض لـ SparkPost Signals، المتصل بـ PowerMTA. يمكنك أن ترى أن درجة الصحة تختلف.

Health score dashboard


أسماء الحملات متاحة كعوامل تقرير، إلى جانب الحساب الفرعي، تجمع IP، مزود البريد، والنطاق المرسل.

بالإضافة إلى الاطلاع على سجلات PowerMTA، يمكنك التحقق من أن بيانات الأحداث تصل إلى SparkPost من خلال النظر في شاشة تكامل Signals.

Signals integration screen

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

إليك عرض لـ SparkPost Signals، المتصل بـ PowerMTA. يمكنك أن ترى أن درجة الصحة تختلف.

Health score dashboard


أسماء الحملات متاحة كعوامل تقرير، إلى جانب الحساب الفرعي، تجمع IP، مزود البريد، والنطاق المرسل.

بالإضافة إلى الاطلاع على سجلات PowerMTA، يمكنك التحقق من أن بيانات الأحداث تصل إلى SparkPost من خلال النظر في شاشة تكامل Signals.

Signals integration screen

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

استخدام أسماء ذات مغزى تظهر بشكل جيد في التقارير

إعداد أسماء مجموعة PowerMTA VirtualMTA وأسماء الوظائف بطريقة جديرة بالمعنى وقابلة للقراءة من قبل الإنسان هو أمر يستحق القيام به. تظهر هذه مباشرة في جوانب SparkPost Signals وملخص التقرير.

كما ذُكر سابقًا، لا تحتاج إلى إنشاء هذه المجموعات في حساب SparkPost الخاص بك. يقوم SparkPost بالتقاطها من تكوين PowerMTA الخاص بك.

إليك كيف تترجم مصطلحات تكوين PowerMTA إلى مصطلحات SparkPost.

مصطلح PowerMTA مصطلح تقارير / إشارات SparkPostمجال المستلم

(domain portion of “rcpt” field in Accounting file).Recipient Domain
The domain portion of the “Sender” or “From” header in the message relayed by PowerMTA.
  
(domain portion of “orig” in Accounting file).Sending Domain
VirtualMTA (name)—VirtualMTA Pool (name)
  
(“vmtaPool” in accounting file)IP Pool (name)
smtp-source-host a.b.c.d
  
(“dlvSourceIp” in accounting file)Sending IP a.b.c.d
Job (name)
  
(“jobId” in accounting file)Campaign ID (name)—Template (name)
“Subaccount” is not a native PowerMTA concept


ومع ذلك، يمكن لـ PowerMTA وضع علامة على virtualMTAs، ومجموعات MTA الافتراضية، أو مجالات المرسل أو

إعداد أسماء مجموعة PowerMTA VirtualMTA وأسماء الوظائف بطريقة جديرة بالمعنى وقابلة للقراءة من قبل الإنسان هو أمر يستحق القيام به. تظهر هذه مباشرة في جوانب SparkPost Signals وملخص التقرير.

كما ذُكر سابقًا، لا تحتاج إلى إنشاء هذه المجموعات في حساب SparkPost الخاص بك. يقوم SparkPost بالتقاطها من تكوين PowerMTA الخاص بك.

إليك كيف تترجم مصطلحات تكوين PowerMTA إلى مصطلحات SparkPost.

مصطلح PowerMTA مصطلح تقارير / إشارات SparkPostمجال المستلم

(domain portion of “rcpt” field in Accounting file).Recipient Domain
The domain portion of the “Sender” or “From” header in the message relayed by PowerMTA.
  
(domain portion of “orig” in Accounting file).Sending Domain
VirtualMTA (name)—VirtualMTA Pool (name)
  
(“vmtaPool” in accounting file)IP Pool (name)
smtp-source-host a.b.c.d
  
(“dlvSourceIp” in accounting file)Sending IP a.b.c.d
Job (name)
  
(“jobId” in accounting file)Campaign ID (name)—Template (name)
“Subaccount” is not a native PowerMTA concept


ومع ذلك، يمكن لـ PowerMTA وضع علامة على virtualMTAs، ومجموعات MTA الافتراضية، أو مجالات المرسل أو

إعداد أسماء مجموعة PowerMTA VirtualMTA وأسماء الوظائف بطريقة جديرة بالمعنى وقابلة للقراءة من قبل الإنسان هو أمر يستحق القيام به. تظهر هذه مباشرة في جوانب SparkPost Signals وملخص التقرير.

كما ذُكر سابقًا، لا تحتاج إلى إنشاء هذه المجموعات في حساب SparkPost الخاص بك. يقوم SparkPost بالتقاطها من تكوين PowerMTA الخاص بك.

إليك كيف تترجم مصطلحات تكوين PowerMTA إلى مصطلحات SparkPost.

مصطلح PowerMTA مصطلح تقارير / إشارات SparkPostمجال المستلم

(domain portion of “rcpt” field in Accounting file).Recipient Domain
The domain portion of the “Sender” or “From” header in the message relayed by PowerMTA.
  
(domain portion of “orig” in Accounting file).Sending Domain
VirtualMTA (name)—VirtualMTA Pool (name)
  
(“vmtaPool” in accounting file)IP Pool (name)
smtp-source-host a.b.c.d
  
(“dlvSourceIp” in accounting file)Sending IP a.b.c.d
Job (name)
  
(“jobId” in accounting file)Campaign ID (name)—Template (name)
“Subaccount” is not a native PowerMTA concept


ومع ذلك، يمكن لـ PowerMTA وضع علامة على virtualMTAs، ومجموعات MTA الافتراضية، أو مجالات المرسل أو

أحداث FBL (شكاوى الرسائل غير المرغوب فيها) والارتدادات عن بُعد (خارج النطاق)

يمكن لـ PowerMTA استقبال ومعالجة أحداث FBL (المعروفة في SparkPost بأحداث الشكاوى من الرسائل غير المرغوب فيها) والانقطاعات عن بُعد (المعروفة في SparkPost بالانقطاعات خارج النطاق، لأن الرد يأتي بعد بعض الوقت، بدلاً من أن يكون خلال محادثة SMTP).

هناك مقالات في منتدى دعم Port25 حول كيفية إعداد معالج الانقطاعات ومعالج FBL. إذا كنت مستخدمًا حاليًا لـ PowerMTA، فمن المحتمل أنك تمتلك هذه بالفعل.

إليك التكوين الذي قمت بإنشائه من أجل عرض توضيحي، استنادًا إلى هذه المقالات وموجه نحو استضافة PowerMTA في Amazon EC2.

إذا كنت على دراية بتكوين PowerMTA في هذا المجال، يمكنك تخطي هذه الجزء، وصولاً إلى الخط الأفقي التالي.

يمكن لـ PowerMTA استقبال ومعالجة أحداث FBL (المعروفة في SparkPost بأحداث الشكاوى من الرسائل غير المرغوب فيها) والانقطاعات عن بُعد (المعروفة في SparkPost بالانقطاعات خارج النطاق، لأن الرد يأتي بعد بعض الوقت، بدلاً من أن يكون خلال محادثة SMTP).

هناك مقالات في منتدى دعم Port25 حول كيفية إعداد معالج الانقطاعات ومعالج FBL. إذا كنت مستخدمًا حاليًا لـ PowerMTA، فمن المحتمل أنك تمتلك هذه بالفعل.

إليك التكوين الذي قمت بإنشائه من أجل عرض توضيحي، استنادًا إلى هذه المقالات وموجه نحو استضافة PowerMTA في Amazon EC2.

إذا كنت على دراية بتكوين PowerMTA في هذا المجال، يمكنك تخطي هذه الجزء، وصولاً إلى الخط الأفقي التالي.

يمكن لـ PowerMTA استقبال ومعالجة أحداث FBL (المعروفة في SparkPost بأحداث الشكاوى من الرسائل غير المرغوب فيها) والانقطاعات عن بُعد (المعروفة في SparkPost بالانقطاعات خارج النطاق، لأن الرد يأتي بعد بعض الوقت، بدلاً من أن يكون خلال محادثة SMTP).

هناك مقالات في منتدى دعم Port25 حول كيفية إعداد معالج الانقطاعات ومعالج FBL. إذا كنت مستخدمًا حاليًا لـ PowerMTA، فمن المحتمل أنك تمتلك هذه بالفعل.

إليك التكوين الذي قمت بإنشائه من أجل عرض توضيحي، استنادًا إلى هذه المقالات وموجه نحو استضافة PowerMTA في Amazon EC2.

إذا كنت على دراية بتكوين PowerMTA في هذا المجال، يمكنك تخطي هذه الجزء، وصولاً إلى الخط الأفقي التالي.

تكوين الحقن

سنستخدم المنفذ 587 للرسائل المدخلة، والتي ستأتي عبر الإنترنت العام من مضيف آخر. نحتاج إلى إيقاف الجهات الفاعلة السيئة عن اكتشاف واستغلال هذه الخدمة، لذلك نطبق مصادقة اسم المستخدم/كلمة المرور وTLS الاختياري، مشابهًا لنقاط إدخال SMTP الخاصة بـ SparkPost.

نريد أن نكون قادرين على إرسال الرسائل من مصادر تم مصادقتها بشكل صحيح إلى أي وجهة. نريد أيضًا مستمعًا منفصلاً على المنفذ 25 لطلبات ردود FBL والانفجارات البعيدة التي لا تتطلب مصادقة.

# IP address(es) and port(s) on which to listen for incoming SMTP connections
smtp-listener 0.0.0.0:587
smtp-listener 0.0.0.0:25

في الإعلانات التالية <source> ، نستخدم مصادقة اسم المستخدم/كلمة المرور وTLS الاختياري للدفاع ضد حقن الرسائل المشبوهة. كما نقوم بتحديد حدود المعدل على الاتصالات التي تقوم بمحاولات كلمة مرور فاشلة.

قد يختلف إعدادك؛ على سبيل المثال، إذا كان لديك شبكة خاصة بين المحقن وPowerMTA، فلن تحتاج إلى مصادقة كلمة المرور.

# One source rule for all injection, internal or external. Enforce auth, except for bounces and FBLs #
<source 0/0>
log-connections false
log-commands false    # WARNING: verbose! just for dev
log-data false        # WARNING: even more verbose!
smtp-service true     # allow SMTP service
smtp-max-auth-failure-rate 1/min
allow-unencrypted-plain-auth false
allow-starttls true
rewrite-list mfrom
</source>

<source {auth}>
always-allow-relaying yes   # only if the auth succeeds
default-virtual-mta default
process-x-job true
</source>

تطبيق إعلان <source {auth}> (انظر هنا. v5.0) بعد نجاح المصادقة. هنا، يسمح بتوجيه الرسائل، ويقوم بإعداد مجموعة MTA الافتراضية التي سيتم استخدامها، ويضيف رأس X-Job (الذي سيتم الإبلاغ عنه بواسطة SparkPost Signals كـ campaign_id).

تقوم قائمة إعادة الكتابة بتحديد الرسائل المدخلة لاستخدام مجال MAIL FROM معين (المعروف أيضًا باسم مجال الانفجار أو Return-Path:).




# # Rewrite the MAIL FROM address to match the bounce domain #
<rewrite-list mfrom>
mail-from *@pmta.signalsdemo.trymsys.net *@bounces.pmta.signalsdemo.trymsys.net
</rewrite-list>


ثم نقوم بإعداد تكوين TLS واسم المستخدم / كلمة المرور لـ SMTP، وفقًا لـ التوصيات الحالية.

# # Secure the inbound service with username, password and TLS. SMT 2020-06-15 #
smtp-server-tls-certificate /etc/pmta/pmtasignalsdemo.pem
smtp-server-tls-allow-tlsv1 false
smtp-server-tls-allow-tlsv1.1 false
smtp-server-tls-allow-tlsv1.2 true
smtp-server-tls-allow-tlsv1.3 true

# # SMTP users (authenticated via SMTP AUTH) #
<smtp-user SMTP_Injection>
password ##PUT YOUR PASSWORD HERE##
authentication-method password
</smtp-user>


يمكننا التحقق من أن (غير الآمن، المهمل) TLS v1.0 غير مقبول باستخدام أداة اختبار SMTP المفضلة لدي، swaks.

swaks --server pmta.signalsdemo.trymsys.net --port 587 \
  --to test@trymsys.net \
  --from any@sparkpost.com \
  --tls \
  --tls-protocol tlsv1


نرى:

*** TLS startup failed (connect(): error:00000000:lib(0):func(0):reason(0))
*** STARTTLS attempted but failed


وكذلك لـ –tls-protocol tlsv1_1.

دعونا أيضًا نطبق توقيع DKIM على رسائلنا الصادرة، حيث إنها ممارسة جيدة (اتبعت هذه التعليمات لإعداد المفتاح).

# # DKIM #
domain-key mypmta, pmta.signalsdemo.trymsys.net, /etc/pmta/mypmta.pmta.signalsdemo.trymsys.net.pem

سنستخدم المنفذ 587 للرسائل المدخلة، والتي ستأتي عبر الإنترنت العام من مضيف آخر. نحتاج إلى إيقاف الجهات الفاعلة السيئة عن اكتشاف واستغلال هذه الخدمة، لذلك نطبق مصادقة اسم المستخدم/كلمة المرور وTLS الاختياري، مشابهًا لنقاط إدخال SMTP الخاصة بـ SparkPost.

نريد أن نكون قادرين على إرسال الرسائل من مصادر تم مصادقتها بشكل صحيح إلى أي وجهة. نريد أيضًا مستمعًا منفصلاً على المنفذ 25 لطلبات ردود FBL والانفجارات البعيدة التي لا تتطلب مصادقة.

# IP address(es) and port(s) on which to listen for incoming SMTP connections
smtp-listener 0.0.0.0:587
smtp-listener 0.0.0.0:25

في الإعلانات التالية <source> ، نستخدم مصادقة اسم المستخدم/كلمة المرور وTLS الاختياري للدفاع ضد حقن الرسائل المشبوهة. كما نقوم بتحديد حدود المعدل على الاتصالات التي تقوم بمحاولات كلمة مرور فاشلة.

قد يختلف إعدادك؛ على سبيل المثال، إذا كان لديك شبكة خاصة بين المحقن وPowerMTA، فلن تحتاج إلى مصادقة كلمة المرور.

# One source rule for all injection, internal or external. Enforce auth, except for bounces and FBLs #
<source 0/0>
log-connections false
log-commands false    # WARNING: verbose! just for dev
log-data false        # WARNING: even more verbose!
smtp-service true     # allow SMTP service
smtp-max-auth-failure-rate 1/min
allow-unencrypted-plain-auth false
allow-starttls true
rewrite-list mfrom
</source>

<source {auth}>
always-allow-relaying yes   # only if the auth succeeds
default-virtual-mta default
process-x-job true
</source>

تطبيق إعلان <source {auth}> (انظر هنا. v5.0) بعد نجاح المصادقة. هنا، يسمح بتوجيه الرسائل، ويقوم بإعداد مجموعة MTA الافتراضية التي سيتم استخدامها، ويضيف رأس X-Job (الذي سيتم الإبلاغ عنه بواسطة SparkPost Signals كـ campaign_id).

تقوم قائمة إعادة الكتابة بتحديد الرسائل المدخلة لاستخدام مجال MAIL FROM معين (المعروف أيضًا باسم مجال الانفجار أو Return-Path:).




# # Rewrite the MAIL FROM address to match the bounce domain #
<rewrite-list mfrom>
mail-from *@pmta.signalsdemo.trymsys.net *@bounces.pmta.signalsdemo.trymsys.net
</rewrite-list>


ثم نقوم بإعداد تكوين TLS واسم المستخدم / كلمة المرور لـ SMTP، وفقًا لـ التوصيات الحالية.

# # Secure the inbound service with username, password and TLS. SMT 2020-06-15 #
smtp-server-tls-certificate /etc/pmta/pmtasignalsdemo.pem
smtp-server-tls-allow-tlsv1 false
smtp-server-tls-allow-tlsv1.1 false
smtp-server-tls-allow-tlsv1.2 true
smtp-server-tls-allow-tlsv1.3 true

# # SMTP users (authenticated via SMTP AUTH) #
<smtp-user SMTP_Injection>
password ##PUT YOUR PASSWORD HERE##
authentication-method password
</smtp-user>


يمكننا التحقق من أن (غير الآمن، المهمل) TLS v1.0 غير مقبول باستخدام أداة اختبار SMTP المفضلة لدي، swaks.

swaks --server pmta.signalsdemo.trymsys.net --port 587 \
  --to test@trymsys.net \
  --from any@sparkpost.com \
  --tls \
  --tls-protocol tlsv1


نرى:

*** TLS startup failed (connect(): error:00000000:lib(0):func(0):reason(0))
*** STARTTLS attempted but failed


وكذلك لـ –tls-protocol tlsv1_1.

دعونا أيضًا نطبق توقيع DKIM على رسائلنا الصادرة، حيث إنها ممارسة جيدة (اتبعت هذه التعليمات لإعداد المفتاح).

# # DKIM #
domain-key mypmta, pmta.signalsdemo.trymsys.net, /etc/pmta/mypmta.pmta.signalsdemo.trymsys.net.pem

سنستخدم المنفذ 587 للرسائل المدخلة، والتي ستأتي عبر الإنترنت العام من مضيف آخر. نحتاج إلى إيقاف الجهات الفاعلة السيئة عن اكتشاف واستغلال هذه الخدمة، لذلك نطبق مصادقة اسم المستخدم/كلمة المرور وTLS الاختياري، مشابهًا لنقاط إدخال SMTP الخاصة بـ SparkPost.

نريد أن نكون قادرين على إرسال الرسائل من مصادر تم مصادقتها بشكل صحيح إلى أي وجهة. نريد أيضًا مستمعًا منفصلاً على المنفذ 25 لطلبات ردود FBL والانفجارات البعيدة التي لا تتطلب مصادقة.

# IP address(es) and port(s) on which to listen for incoming SMTP connections
smtp-listener 0.0.0.0:587
smtp-listener 0.0.0.0:25

في الإعلانات التالية <source> ، نستخدم مصادقة اسم المستخدم/كلمة المرور وTLS الاختياري للدفاع ضد حقن الرسائل المشبوهة. كما نقوم بتحديد حدود المعدل على الاتصالات التي تقوم بمحاولات كلمة مرور فاشلة.

قد يختلف إعدادك؛ على سبيل المثال، إذا كان لديك شبكة خاصة بين المحقن وPowerMTA، فلن تحتاج إلى مصادقة كلمة المرور.

# One source rule for all injection, internal or external. Enforce auth, except for bounces and FBLs #
<source 0/0>
log-connections false
log-commands false    # WARNING: verbose! just for dev
log-data false        # WARNING: even more verbose!
smtp-service true     # allow SMTP service
smtp-max-auth-failure-rate 1/min
allow-unencrypted-plain-auth false
allow-starttls true
rewrite-list mfrom
</source>

<source {auth}>
always-allow-relaying yes   # only if the auth succeeds
default-virtual-mta default
process-x-job true
</source>

تطبيق إعلان <source {auth}> (انظر هنا. v5.0) بعد نجاح المصادقة. هنا، يسمح بتوجيه الرسائل، ويقوم بإعداد مجموعة MTA الافتراضية التي سيتم استخدامها، ويضيف رأس X-Job (الذي سيتم الإبلاغ عنه بواسطة SparkPost Signals كـ campaign_id).

تقوم قائمة إعادة الكتابة بتحديد الرسائل المدخلة لاستخدام مجال MAIL FROM معين (المعروف أيضًا باسم مجال الانفجار أو Return-Path:).




# # Rewrite the MAIL FROM address to match the bounce domain #
<rewrite-list mfrom>
mail-from *@pmta.signalsdemo.trymsys.net *@bounces.pmta.signalsdemo.trymsys.net
</rewrite-list>


ثم نقوم بإعداد تكوين TLS واسم المستخدم / كلمة المرور لـ SMTP، وفقًا لـ التوصيات الحالية.

# # Secure the inbound service with username, password and TLS. SMT 2020-06-15 #
smtp-server-tls-certificate /etc/pmta/pmtasignalsdemo.pem
smtp-server-tls-allow-tlsv1 false
smtp-server-tls-allow-tlsv1.1 false
smtp-server-tls-allow-tlsv1.2 true
smtp-server-tls-allow-tlsv1.3 true

# # SMTP users (authenticated via SMTP AUTH) #
<smtp-user SMTP_Injection>
password ##PUT YOUR PASSWORD HERE##
authentication-method password
</smtp-user>


يمكننا التحقق من أن (غير الآمن، المهمل) TLS v1.0 غير مقبول باستخدام أداة اختبار SMTP المفضلة لدي، swaks.

swaks --server pmta.signalsdemo.trymsys.net --port 587 \
  --to test@trymsys.net \
  --from any@sparkpost.com \
  --tls \
  --tls-protocol tlsv1


نرى:

*** TLS startup failed (connect(): error:00000000:lib(0):func(0):reason(0))
*** STARTTLS attempted but failed


وكذلك لـ –tls-protocol tlsv1_1.

دعونا أيضًا نطبق توقيع DKIM على رسائلنا الصادرة، حيث إنها ممارسة جيدة (اتبعت هذه التعليمات لإعداد المفتاح).

# # DKIM #
domain-key mypmta, pmta.signalsdemo.trymsys.net, /etc/pmta/mypmta.pmta.signalsdemo.trymsys.net.pem

إعداد VirtualMTA وتسمية

تعتبر VirtualMTAs في PowerMTA (وبركزات VirtualMTA) ميزات قوية لإدارة تدفقات الرسائل، وتعمل ميزات تقارير PowerMTA / SparkPost Signals بشكل أفضل عند تفعيلها.

# # Route all outgoing traffic through this virtual mta / pool. #
# Declare the delivery IP address here, so that SparkPost signals ingest injection (aka "reception") events
# will carry the correct sending_IP attribute #
<virtual-mta mta1>
    smtp-source-host 172.31.25.101 pmta.signalsdemo.trymsys.net
</virtual-mta>

<virtual-mta-pool default>
    virtual-mta mta1
    <domain *>
        max-smtp-out    20      # max. connections *per domain*
        bounce-after    4d12h   # 4 days, 12 hours
        retry-after     10m     # 10 minutes
        dkim-sign       yes
    </domain>
</virtual-mta-pool>


يتم الإبلاغ عن إعداد virtual-mta-pool في SparkPost كـ "مجموعة IP"، وهي متاحة كعنصر تقارير في SparkPost Signals (قائمة منسدلة تحت الرسوم البيانية).

Health score dashboard


كما تظهر تقرير الملخص مجموعة IP كعنصر تقارير "تجميع حسب".

Summary report dashboard


كما تم الإشارة إليه سابقًا في هذه المقالة، فإن إعداد عنوان smtp-source-host واحد على الأقل يتيح أيضًا لـ SparkPost التعرف بشكل صحيح على عنوان IP المرسل، بحيث يظهر في أحداث الحقن والتسليم، وفي تقرير الملخص:

Summary report with the group by filter set to "Sending IP"

هذا كل ما تحتاجه للحصول على تكامل أساسي بين PowerMTA و SparkPost Signals. ستجد مثال الملف التكوين الكامل هنا.

قبل أن تذهب، إليك الميزة الإضافية التي ذكرتها.

تعتبر VirtualMTAs في PowerMTA (وبركزات VirtualMTA) ميزات قوية لإدارة تدفقات الرسائل، وتعمل ميزات تقارير PowerMTA / SparkPost Signals بشكل أفضل عند تفعيلها.

# # Route all outgoing traffic through this virtual mta / pool. #
# Declare the delivery IP address here, so that SparkPost signals ingest injection (aka "reception") events
# will carry the correct sending_IP attribute #
<virtual-mta mta1>
    smtp-source-host 172.31.25.101 pmta.signalsdemo.trymsys.net
</virtual-mta>

<virtual-mta-pool default>
    virtual-mta mta1
    <domain *>
        max-smtp-out    20      # max. connections *per domain*
        bounce-after    4d12h   # 4 days, 12 hours
        retry-after     10m     # 10 minutes
        dkim-sign       yes
    </domain>
</virtual-mta-pool>


يتم الإبلاغ عن إعداد virtual-mta-pool في SparkPost كـ "مجموعة IP"، وهي متاحة كعنصر تقارير في SparkPost Signals (قائمة منسدلة تحت الرسوم البيانية).

Health score dashboard


كما تظهر تقرير الملخص مجموعة IP كعنصر تقارير "تجميع حسب".

Summary report dashboard


كما تم الإشارة إليه سابقًا في هذه المقالة، فإن إعداد عنوان smtp-source-host واحد على الأقل يتيح أيضًا لـ SparkPost التعرف بشكل صحيح على عنوان IP المرسل، بحيث يظهر في أحداث الحقن والتسليم، وفي تقرير الملخص:

Summary report with the group by filter set to "Sending IP"

هذا كل ما تحتاجه للحصول على تكامل أساسي بين PowerMTA و SparkPost Signals. ستجد مثال الملف التكوين الكامل هنا.

قبل أن تذهب، إليك الميزة الإضافية التي ذكرتها.

تعتبر VirtualMTAs في PowerMTA (وبركزات VirtualMTA) ميزات قوية لإدارة تدفقات الرسائل، وتعمل ميزات تقارير PowerMTA / SparkPost Signals بشكل أفضل عند تفعيلها.

# # Route all outgoing traffic through this virtual mta / pool. #
# Declare the delivery IP address here, so that SparkPost signals ingest injection (aka "reception") events
# will carry the correct sending_IP attribute #
<virtual-mta mta1>
    smtp-source-host 172.31.25.101 pmta.signalsdemo.trymsys.net
</virtual-mta>

<virtual-mta-pool default>
    virtual-mta mta1
    <domain *>
        max-smtp-out    20      # max. connections *per domain*
        bounce-after    4d12h   # 4 days, 12 hours
        retry-after     10m     # 10 minutes
        dkim-sign       yes
    </domain>
</virtual-mta-pool>


يتم الإبلاغ عن إعداد virtual-mta-pool في SparkPost كـ "مجموعة IP"، وهي متاحة كعنصر تقارير في SparkPost Signals (قائمة منسدلة تحت الرسوم البيانية).

Health score dashboard


كما تظهر تقرير الملخص مجموعة IP كعنصر تقارير "تجميع حسب".

Summary report dashboard


كما تم الإشارة إليه سابقًا في هذه المقالة، فإن إعداد عنوان smtp-source-host واحد على الأقل يتيح أيضًا لـ SparkPost التعرف بشكل صحيح على عنوان IP المرسل، بحيث يظهر في أحداث الحقن والتسليم، وفي تقرير الملخص:

Summary report with the group by filter set to "Sending IP"

هذا كل ما تحتاجه للحصول على تكامل أساسي بين PowerMTA و SparkPost Signals. ستجد مثال الملف التكوين الكامل هنا.

قبل أن تذهب، إليك الميزة الإضافية التي ذكرتها.

ميزة إضافية: التحقق/التصفية من اسم X-Job

لضمان أن أي سلسلة أحرف آمنة للاستخدام كاسم لعمل X-Job في PowerMTA، إليك دالة بايثون بسيطة لتعيين أي أحرف غير آمنة إلى شرطة سفلية “_”

import re

def pmtaSafeJobID(s):
    """
    :param s: str
    :return: str
    Map an arbitrary campaign ID string into allowed chars for PMTA X-Job header.
    See https://download.port25.com/files/UsersGuide-5.0.html#tracking-a-campaign-in-powermta-with-a-jobid
    Specifically disallow <sp> " ` but allow through most other chars.
    """
    # Note have to escape ' - [ ] and double-escape \ - see https://docs.python.org/3/library/re.html
    disallowedChars = '[^A-Za-z0-9!#$%&\'()*+,\-./:;<=>?@$begin:math:display$\\\\\\\\$end:math:display$^_{|}~]'
    return re.sub(disallowedChars, '_', s)

هذا يستخدم تعبيرات عادية في بايثون بطريقة محددة. إنه يعلن عن مجموعة الشخصيات المحظورة باستخدام عامل “مكمل المجموعة” ^ بدلاً من سرد جميع الأحرف المسموح بها. هذا يعني أننا نقبض (ونجعلها آمنة) على أحرف تتجاوز مجموعة 7-بت المعتادة. يمكننا إظهار ذلك باستخدام هذا الجزء الاختباري:

s='' for i in range(32, 256): s += chr(i) print(pmtaSafeJobID(s))

مما يعطينا

!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^abcdefghijklmnopqrstuvwxyz{|}~_________________________________________________________

يمكنك أن ترى أن <SPACE>، وعلامات الاقتباس المزدوجة “، والجرس `، بالإضافة إلى جميع الأحرف التي تتجاوز ~ تم تعيينها إلى شرطة سفلية.

لضمان أن أي سلسلة أحرف آمنة للاستخدام كاسم لعمل X-Job في PowerMTA، إليك دالة بايثون بسيطة لتعيين أي أحرف غير آمنة إلى شرطة سفلية “_”

import re

def pmtaSafeJobID(s):
    """
    :param s: str
    :return: str
    Map an arbitrary campaign ID string into allowed chars for PMTA X-Job header.
    See https://download.port25.com/files/UsersGuide-5.0.html#tracking-a-campaign-in-powermta-with-a-jobid
    Specifically disallow <sp> " ` but allow through most other chars.
    """
    # Note have to escape ' - [ ] and double-escape \ - see https://docs.python.org/3/library/re.html
    disallowedChars = '[^A-Za-z0-9!#$%&\'()*+,\-./:;<=>?@$begin:math:display$\\\\\\\\$end:math:display$^_{|}~]'
    return re.sub(disallowedChars, '_', s)

هذا يستخدم تعبيرات عادية في بايثون بطريقة محددة. إنه يعلن عن مجموعة الشخصيات المحظورة باستخدام عامل “مكمل المجموعة” ^ بدلاً من سرد جميع الأحرف المسموح بها. هذا يعني أننا نقبض (ونجعلها آمنة) على أحرف تتجاوز مجموعة 7-بت المعتادة. يمكننا إظهار ذلك باستخدام هذا الجزء الاختباري:

s='' for i in range(32, 256): s += chr(i) print(pmtaSafeJobID(s))

مما يعطينا

!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^abcdefghijklmnopqrstuvwxyz{|}~_________________________________________________________

يمكنك أن ترى أن <SPACE>، وعلامات الاقتباس المزدوجة “، والجرس `، بالإضافة إلى جميع الأحرف التي تتجاوز ~ تم تعيينها إلى شرطة سفلية.

لضمان أن أي سلسلة أحرف آمنة للاستخدام كاسم لعمل X-Job في PowerMTA، إليك دالة بايثون بسيطة لتعيين أي أحرف غير آمنة إلى شرطة سفلية “_”

import re

def pmtaSafeJobID(s):
    """
    :param s: str
    :return: str
    Map an arbitrary campaign ID string into allowed chars for PMTA X-Job header.
    See https://download.port25.com/files/UsersGuide-5.0.html#tracking-a-campaign-in-powermta-with-a-jobid
    Specifically disallow <sp> " ` but allow through most other chars.
    """
    # Note have to escape ' - [ ] and double-escape \ - see https://docs.python.org/3/library/re.html
    disallowedChars = '[^A-Za-z0-9!#$%&\'()*+,\-./:;<=>?@$begin:math:display$\\\\\\\\$end:math:display$^_{|}~]'
    return re.sub(disallowedChars, '_', s)

هذا يستخدم تعبيرات عادية في بايثون بطريقة محددة. إنه يعلن عن مجموعة الشخصيات المحظورة باستخدام عامل “مكمل المجموعة” ^ بدلاً من سرد جميع الأحرف المسموح بها. هذا يعني أننا نقبض (ونجعلها آمنة) على أحرف تتجاوز مجموعة 7-بت المعتادة. يمكننا إظهار ذلك باستخدام هذا الجزء الاختباري:

s='' for i in range(32, 256): s += chr(i) print(pmtaSafeJobID(s))

مما يعطينا

!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^abcdefghijklmnopqrstuvwxyz{|}~_________________________________________________________

يمكنك أن ترى أن <SPACE>، وعلامات الاقتباس المزدوجة “، والجرس `، بالإضافة إلى جميع الأحرف التي تتجاوز ~ تم تعيينها إلى شرطة سفلية.

أخبار أخرى

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

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.

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