نشر الإشارات للأنظمة المحلية: تكامل PowerMTA

Bird

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 أو ما يعادله في الاتحاد الأوروبي).

      • استخدم مفتاح API صحيح مع صلاحية "Incoming Events: Write".

      • حدد 'customer-id' واختر إعداد مجالات التتبع المخصصة لتحسين إمكانية التسليم.

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

    • إبلاغ اختياري: يمكن تمكين Signals على مستوى العالم أو تقييده إلى VirtualMTAs، المجمعات، أو مجالات المرسل معينة، مما يسمح بالتحكم الدقيق في البيانات.

    • الاختبار والتحقق: استخدم لوحة القيادة التابعة لـ Signals Integration وسجلات PowerMTA لتأكيد إدخال الأحداث وتتبع Health Scores، الارتدادات، ومقاييس التفاعل في الوقت الفعلي.

    • ضبط إمكانية التسليم:

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

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

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

أبرز الأسئلة والأجوبة

  • ما الذي تفعله دمج Signals فعليًا؟

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

  • لماذا نقوم بدمج Signals مع جهاز توجيه البريد المركب في الموقع؟

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

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

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

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

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

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

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

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

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

لنلقي نظرة على تفاصيل إعداد PowerMTA لـ SparkPost Signals.

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

  • مضيف لتشغيل أحدث إصدار من PowerMTA - إما جديد أو آلة موجودة

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

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

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

  • تهيئة موصل PowerMTA لـ SparkPost Signals

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

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

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

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

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

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

  • تهيئة الحقن، بما في ذلك DKIM

  • تهيئة FBL و OOB

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

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

قم بتكوين موصل PowerMTA

يتم وصف تكوين Signals في النسخة 5.0 من دليل المستخدم القسم 10.1. هنا سنبدأ ب"حالة الاستخدام #2"، والتي تمكن Signals لكل حركة المرور من هذا المضيف 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 (US): https://api.sparkpost.com/api/v1/ingest/events

SparkPost EU:    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 لرفع إشارات إلى إشارات، في هذه الحالة لكل حركة المرور (للمزيد من المعلومات هنا للنسخة 5.0). يمكنك أن تكون أكثر انتقائية بشأن أي تدفقات حركة المرور لترفعها إذا رغبت.

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

engagement-tracking, customer-id
حل تتبع التفاعل من PowerMTA الافتراضي هو نطاق التتبع لخدمة SparkPost المستضافة في الولايات المتحدة. تحدد رقم حساب SparkPost الخاص بك; هنا الإرشادات لكيفية إيجاده.

tracking-domain

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

tracking-domain pmta.eu.spgo.io # this is the endpoint for SparkPost EU

نطاق تتبع مخصص

إذا كنت تفضل استخدام نطاق التتبع الخاص بك (هذا أفضل من ناحية تسليم الرسائل)، قم بما يلي:

  • أنشئ نطاق تتبع مع موفر 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">Example</a>

سيعدم PowerMTA تغليف الرابط. كما سيزيل تلك السمة قبل نقل الرسالة إلى المستلم الخاص بك.

اختر حركة مرور PowerMTA التي تريد الإبلاغ عنها إلى Signals

يمكنك اختيار تشغيل الإشارات:

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

  • لبعض الـMTAs الافتراضية وليس للآخرين

  • لبعض مجموعات الـMTA الافتراضية وليس للآخرين

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

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

يمكنك اختيار تشغيل الإشارات:

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

  • لبعض الـMTAs الافتراضية وليس للآخرين

  • لبعض مجموعات الـMTA الافتراضية وليس للآخرين

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

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

يمكنك اختيار تشغيل الإشارات:

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

  • لبعض الـMTAs الافتراضية وليس للآخرين

  • لبعض مجموعات الـMTA الافتراضية وليس للآخرين

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

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

اختبار وصول الأحداث الخاصة بك إلى Signals

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

Health score dashboard


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

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

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 أو تجمعات virtual MTA أو المجالات المرسلة أو من مع معرف فرعي لأغراض تقارير SparkPost.

Subaccount ID (number)
FBL (event)
Spam Complaint (event)
Remote Bounce (event)
Out-of-Band bounce (event)

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

يتم تعيين أسماء الوظائف في PowerMTA عبر رأس في الرسالة المحقنة. بالإضافة إلى تمكين التحكم في الوظائف الفردية (توقف مؤقت / استئناف إلخ) الذي يكون مفيدًا في حد ذاته، يمرر PowerMTA الأسماء إلى تقارير إشارات SparkPost كـ "معرف الحملة". انظر دليل المستخدم v5.0 القسم 12.8 "تتبع حملة في PowerMTA مع JobID".

هناك بعض الأمور التي يجب أن تكون على دراية بها بخصوص تسمية الوظائف. بينما يسمح SparkPost (مع تنسيق JSON وهروب JSON) بأحرف مثل <SPACE> في أسماء الحملات، تكون رؤوس البريد أكثر تقييدًا. الأحرف الصالحة المسموح بها في رأس X-Job هي:

A-Za-z0-9!#$%&'()*+,-./:;<=>?@[\]^_{|}~ 

بعبارة أخرى، الأحرف المحظورة تشمل <SPACE>، الأقواس المزدوجة ” والبراكت`. إذا كنت معتادًا على العمل بأسماء X-Job، فهذا لن يكون مفاجئًا، وأسماء معرفات الحملة الخاصة بك ستعمل "ببساطة" على تقارير SparkPost. إذا كنت مثلي، تعلمت SparkPost أولًا، قد ترغب في أداة لضمان أن قيم X-Job الخاصة بك آمنة؛ انظر الميزة الإضافية في نهاية هذه المقالة.

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

يمكن لـ 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 كـ 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

إعدادات 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، لذا لا حاجة للتسجيل.

اختبار مستمع SMTP

من المهم اختبار أن المستمع SMTP الخاص بك يطلب التفويض لأي وجهات عامة، ويرفض أي رسائل غير موجهة تحديدًا إلى مجالات FBL والمرتجع عن بعد.

swaks --server pmta.signalsdemo.trymsys.net \
  --port 25 \
  --to test@strange.pmta.signalsdemo.trymsys.net \
  --from any@sparkpost.com

الاستجابة، كما هو متوقع، تظهر أن إعادة الإرسال مرفوض:

550 5.7.1 إعادة الإرسال مرفوضة للمستلم في "RCPT TO:<test@strange.pmta.signalsdemo.trymsys.net>

(نهاية وصف إعداد العرض التوضيحي).

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

ميزات PowerMTA VirtualMTAs (وحمامات 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 (القائمة المنسدلة تحت الرسوم البيانية).

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/التصفية

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

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.

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