نشر الإشارات على الخوادم المحلية: تكامل PowerMTA
طائر
30/08/2019
البريد الإلكتروني
1 min read

النقاط الرئيسية
الغرض: يشرح هذا الدليل كيفية دمج 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، استخدم القائمة في أعلى اليمين واختر "عرض الأصل").

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

هذا كل ما تحتاجه لجعل إشارات 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، استخدم القائمة في أعلى اليمين واختر "عرض الأصل").

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

هذا كل ما تحتاجه لجعل إشارات 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، استخدم القائمة في أعلى اليمين واختر "عرض الأصل").

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

هذا كل ما تحتاجه لجعل إشارات 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. يمكنك أن ترى أن درجة الصحة تختلف.

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

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

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

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

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

في شاشة بحث أحداث 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 (قائمة منسدلة تحت الرسوم البيانية).

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

كما تم الإشارة إليه سابقًا في هذه المقالة، فإن إعداد عنوان smtp-source-host واحد على الأقل يتيح أيضًا لـ SparkPost التعرف بشكل صحيح على عنوان 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 (قائمة منسدلة تحت الرسوم البيانية).

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

كما تم الإشارة إليه سابقًا في هذه المقالة، فإن إعداد عنوان smtp-source-host واحد على الأقل يتيح أيضًا لـ SparkPost التعرف بشكل صحيح على عنوان 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 (قائمة منسدلة تحت الرسوم البيانية).

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

كما تم الإشارة إليه سابقًا في هذه المقالة، فإن إعداد عنوان smtp-source-host واحد على الأقل يتيح أيضًا لـ SparkPost التعرف بشكل صحيح على عنوان 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>، وعلامات الاقتباس المزدوجة “، والجرس `، بالإضافة إلى جميع الأحرف التي تتجاوز ~ تم تعيينها إلى شرطة سفلية.



