Implementatie van Signal voor On-Premises: PowerMTA-integratie

Bird

30 aug 2019

E-mail

1 min read

Implementatie van Signal voor On-Premises: PowerMTA-integratie

Belangrijkste punten

    • Doel: Deze gids legt uit hoe PowerMTA 5.0+ kan worden geïntegreerd met SparkPost Signals om gebeurtenis- en betrokkenheidsgegevens (bounces, opens, clicks, spamklachten) van on-premises MTAs direct naar de SparkPost analysegelaag te streamen.

    • Kernconfiguratie:

      • Voeg enable-signals true toe en definieer uw SparkPost ingest endpoint (https://api.sparkpost.com/api/v1/ingest/events of het EU-equivalent).

      • Gebruik een geldige API-sleutel met “Incoming Events: Write” toestemming.

      • Specificeer customer-id, en stel optioneel aangepaste trackingsdomeinen in voor verbeterde leverbaarheid.

    • Trackinginstelling: PowerMTA’s Engagement Tracking injecteert automatisch open- en klikpixels in HTML-e-mails. U kunt tracking per link uitschakelen met het data-msys-clicktrack="0" attribuut.

    • Selectieve rapportage: Signals kan globaal worden ingeschakeld of beperkt tot bepaalde VirtualMTAs, pools, of afzenderdomeinen, waardoor fijne controle over de gegevens mogelijk is.

    • Testen & verificatie: Gebruik het Signals Integration-dashboard en PowerMTA logs om gebeurtenisinvoer te bevestigen en Health Scores, bounces, en verlofdheidsstatistieken in real-time te volgen.

    • Leverbaarheidsafstemming:

      • Gebruik betekenisvolle VirtualMTA en Jobnamen — deze worden direct gemapt naar IP Pools en Campagne-ID's in SparkPost-rapporten.

      • Configureer DKIM-ondertekening, TLS-afdwinging, en correcte relay regels om ongeoorloofde injecties te voorkomen.

    • Geavanceerde instellingen: Het artikel bevat ook kant-en-klare fragmenten voor FBL & out-of-band bounceverwerking, geauthentiseerde SMTP-injectie (poort 587), en Python-code om X-Job headers te saneren voor compatibiliteit.

Q&A Hoogtepunten

  • Wat doet de Signals-integratie eigenlijk?

    Het uploadt automatisch PowerMTA’s berichtengebeurtenissen (injectie, levering, bounce, betrokkenheid) naar jouw SparkPost-account, zodat je toegang hebt tot dashboards zoals Health Score, Vertragingrapporten en Spam Trap Monitoring.

  • Waarom Signal integreren met een on-prem MTA?

    Veel bedrijven gebruiken zelf-gehoste mailinfrastructuur om nalevingsredenen, maar willen nog steeds de analysemogelijkheden en monitoring capaciteiten van SparkPost gebruiken. Signals overbrugt die kloof zonder migratie van de mailbezorging naar de cloud.

  • Hoe kan ik verifiëren dat events naar SparkPost stromen?

    Controleer de PowerMTA-logboeken voor Signals: Transferred ... successfully en bevestig evenementenitems onder Signals → Events Search in SparkPost.

  • Kan ik mijn eigen trackingdomein gebruiken?

    Ja — configureer een CNAME zoals track.mycompany.com → pmta.spgo.io (VS) of pmta.eu.spgo.io (EU), registreer en verifieer het vervolgens in SparkPost voor merk- en reputatieconsistentie.

  • Hoe zit het met gegevensprivacy of schijfgebruik?

    De min-free-space richtlijn verwijdert automatisch oude JSON-gebeurtenisbestanden wanneer de schijfruimte laag is, waardoor de lokale ophoping van telemetriegegevens wordt voorkomen.

  • Wat is de "bonus feature" aan het einde?

    Een Python regex hulpmiddel (pmtaSafeJobID) dat ervoor zorgt dat campagne-/jobnamen alleen tekens gebruiken die geldig zijn in het PowerMTA X-Job headerformaat, waarbij onveilige tekens worden vervangen door underscores.

Laten we in de details duiken van het opzetten van PowerMTA voor SparkPost Signals. Je hebt het volgende nodig:

  • Een host om de nieuwste versie van PowerMTA op te draaien – ofwel nieuw, of een bestaande machine

  • Een SparkPost-account met API-sleutelpermissie voor “Incoming Events: Write” zoals hier beschreven

We zullen PowerMTA instellen om gebeurtenissen naar je SparkPost-account te streamen, waarna je het volgende kunt gebruiken:

Laten we in de details duiken van het opzetten van PowerMTA voor SparkPost Signals. Je hebt het volgende nodig:

  • Een host om de nieuwste versie van PowerMTA op te draaien – ofwel nieuw, of een bestaande machine

  • Een SparkPost-account met API-sleutelpermissie voor “Incoming Events: Write” zoals hier beschreven

We zullen PowerMTA instellen om gebeurtenissen naar je SparkPost-account te streamen, waarna je het volgende kunt gebruiken:

Laten we in de details duiken van het opzetten van PowerMTA voor SparkPost Signals. Je hebt het volgende nodig:

  • Een host om de nieuwste versie van PowerMTA op te draaien – ofwel nieuw, of een bestaande machine

  • Een SparkPost-account met API-sleutelpermissie voor “Incoming Events: Write” zoals hier beschreven

We zullen PowerMTA instellen om gebeurtenissen naar je SparkPost-account te streamen, waarna je het volgende kunt gebruiken:

Installatie- en configuratieoverzicht

Ten eerste, installeer (of upgrade) naar PowerMTA 5.0 r4 of later, volgens de gebruikelijke v5.0 installatiespecificaties die vrij eenvoudig zijn. Vervolgens doorlopen we de volgende stappen:

  • Configureer de PowerMTA-connector naar SparkPost Signals

  • Stel Engagement Tracking in met een aangepast trackingdomein

  • Selecteer welke PowerMTA-verkeerstromen naar Signals moeten worden gerapporteerd

  • Testen of uw gebeurtenissen Signals bereiken

  • Bekijk hoe u betekenisvolle namen kunt gebruiken die goed in rapportages verschijnen.

We behandelen ook de andere specifieke PowerMTA-instellingsaspecten die in onze Signals-demo worden gebruikt:

  • FBL-evenementen (spamklachten) en externe (out-of-band) bounces

  • Injectieconfiguratie, inclusief DKIM

  • FBL- en OOB-configuratie

  • VirtualMTA-installatie en naamsgeving (en hoe dit verschijnt in uw SparkPost Signals-rapporten)

Ten slotte is er een “bonusfunctie” met code om ervoor te zorgen dat uw campagnenamen compatibel zijn met PowerMTA X-Job  naamconventies.

Ten eerste, installeer (of upgrade) naar PowerMTA 5.0 r4 of later, volgens de gebruikelijke v5.0 installatiespecificaties die vrij eenvoudig zijn. Vervolgens doorlopen we de volgende stappen:

  • Configureer de PowerMTA-connector naar SparkPost Signals

  • Stel Engagement Tracking in met een aangepast trackingdomein

  • Selecteer welke PowerMTA-verkeerstromen naar Signals moeten worden gerapporteerd

  • Testen of uw gebeurtenissen Signals bereiken

  • Bekijk hoe u betekenisvolle namen kunt gebruiken die goed in rapportages verschijnen.

We behandelen ook de andere specifieke PowerMTA-instellingsaspecten die in onze Signals-demo worden gebruikt:

  • FBL-evenementen (spamklachten) en externe (out-of-band) bounces

  • Injectieconfiguratie, inclusief DKIM

  • FBL- en OOB-configuratie

  • VirtualMTA-installatie en naamsgeving (en hoe dit verschijnt in uw SparkPost Signals-rapporten)

Ten slotte is er een “bonusfunctie” met code om ervoor te zorgen dat uw campagnenamen compatibel zijn met PowerMTA X-Job  naamconventies.

Ten eerste, installeer (of upgrade) naar PowerMTA 5.0 r4 of later, volgens de gebruikelijke v5.0 installatiespecificaties die vrij eenvoudig zijn. Vervolgens doorlopen we de volgende stappen:

  • Configureer de PowerMTA-connector naar SparkPost Signals

  • Stel Engagement Tracking in met een aangepast trackingdomein

  • Selecteer welke PowerMTA-verkeerstromen naar Signals moeten worden gerapporteerd

  • Testen of uw gebeurtenissen Signals bereiken

  • Bekijk hoe u betekenisvolle namen kunt gebruiken die goed in rapportages verschijnen.

We behandelen ook de andere specifieke PowerMTA-instellingsaspecten die in onze Signals-demo worden gebruikt:

  • FBL-evenementen (spamklachten) en externe (out-of-band) bounces

  • Injectieconfiguratie, inclusief DKIM

  • FBL- en OOB-configuratie

  • VirtualMTA-installatie en naamsgeving (en hoe dit verschijnt in uw SparkPost Signals-rapporten)

Ten slotte is er een “bonusfunctie” met code om ervoor te zorgen dat uw campagnenamen compatibel zijn met PowerMTA X-Job  naamconventies.

FBL en OOB configuratie

Nu .. eindelijk .. verklaren we welke specifieke domeinen open zijn voor externe bounce- en FBL-reacties. We willen deze nergens doorsturen (om backscatter-aanvallen te voorkomen), alleen intern deze reacties verwerken.

# # 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>

Je kunt zien dat ik twee bounce-domeinen heb ingesteld, aangezien ik aan het experimenteren was met het wel/niet gebruiken van de mfrom rewrite-regel.

Het FBL-domein wordt meestal geregistreerd bij externe diensten zoals Microsoft SNDS; zie dit artikel voor meer informatie. Voor deze demo komen de FBL's van Bouncy Sink, dus registratie is niet nodig.

Nu .. eindelijk .. verklaren we welke specifieke domeinen open zijn voor externe bounce- en FBL-reacties. We willen deze nergens doorsturen (om backscatter-aanvallen te voorkomen), alleen intern deze reacties verwerken.

# # 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>

Je kunt zien dat ik twee bounce-domeinen heb ingesteld, aangezien ik aan het experimenteren was met het wel/niet gebruiken van de mfrom rewrite-regel.

Het FBL-domein wordt meestal geregistreerd bij externe diensten zoals Microsoft SNDS; zie dit artikel voor meer informatie. Voor deze demo komen de FBL's van Bouncy Sink, dus registratie is niet nodig.

Nu .. eindelijk .. verklaren we welke specifieke domeinen open zijn voor externe bounce- en FBL-reacties. We willen deze nergens doorsturen (om backscatter-aanvallen te voorkomen), alleen intern deze reacties verwerken.

# # 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>

Je kunt zien dat ik twee bounce-domeinen heb ingesteld, aangezien ik aan het experimenteren was met het wel/niet gebruiken van de mfrom rewrite-regel.

Het FBL-domein wordt meestal geregistreerd bij externe diensten zoals Microsoft SNDS; zie dit artikel voor meer informatie. Voor deze demo komen de FBL's van Bouncy Sink, dus registratie is niet nodig.

Configureer PowerMTA connector

De configuratie van Signals wordt beschreven in de 5.0 gebruikershandleiding sectie 10.1. Hier beginnen we met "Use Case #2", die Signals inschakelt voor alle verkeer van deze PowerMTA-host, en actieve betrokkenheidsopsporing van SparkPost inschakelt.

# # 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


Hier is wat elk attribuut doet:

api-key

Dit is uniek voor uw SparkPost-account, het is de waarde die u eerder van SparkPost heeft ontvangen.


upload-url

Dit moet overeenkomen met het adres van uw SparkPost API-service, of het nu VS of EU is. Voor meer informatie kijk hier. De gebruikelijke waarden zijn:

SparkPost (VS): https://api.sparkpost.com/api/v1/ingest/events

SparkPost EU:    https://api.eu.sparkpost.com/api/v1/ingest/events


log-verbose

Deze richtlijn is optioneel en, wanneer ingeschakeld, biedt iets meer informatie in het pmta.log-bestand, wat nuttig kan zijn tijdens de installatie om te bevestigen dat alles correct werkt. Elke minuut, zelfs als er geen verkeer is, ziet u:

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


Met verkeer, ziet u iets als:

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

Dit geeft PowerMTA de schijfruimte-drempel aan waarop het moet beginnen met het verwijderen van de oudste SparkPost JSON-evenementbestanden om ruimte te maken voor nieuwe bestanden wanneer de schijfruimte tekortschiet.


enable-signals

Dit geeft PowerMTA de opdracht om naar Signals te uploaden, in dit geval wereldwijd voor al het verkeer (meer info hier, voor v5.0). U kunt selectiever zijn over welke verkeersstromen u wilt uploaden als u dat wilt.


U kunt ook specifiek PowerMTA-verkeer markeren als behorend tot een SparkPost subaccount – dit is een manier om de ene specifieke verkeersstroom van de andere te onderscheiden.


engagement-tracking, customer-id
PowerMTA’s Engagement Tracking-oplossing schakelt standaard over op het trackingdomein voor de SparkPost US-gehoste dienst. U specificeert uw SparkPost numerieke klant-ID; hier zijn instructies voor het vinden ervan.


tracking-domain

Voor SparkPost EU-accounts, voeg de volgende regel toe:

tracking-domain pmta.eu.spgo.io # dit is het eindpunt voor SparkPost EU


Custom Tracking domein

Als u liever uw eigen trackingdomein gebruikt (dit is beter vanuit leverbaarheidsoogpunt), doe dan het volgende:

  • Creëer een trackingdomein met uw DNS-provider door een CNAME-record aan te maken. Dit is meestal een subdomein van uw hoofddomein, bijvoorbeeld 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

U kunt ook HTTPS-trackingdomeinen gebruiken, hoewel dit complexer is (zie de SparkPost-configuratiestappen voor HTTPS-trackingdomeinen).

  • Registreer het trackingdomein in uw SparkPost-account, en verifieer het. Wacht een paar minuten voordat u dit probeert, om uw DNS-wijzigingen door het internet te laten verspreiden, afhankelijk van uw DNS-provider.

  • Configureer PowerMTA om dat domein te gebruiken in plaats van het standaarddomein, met

tracking-domain yourdomain.com # Plaats hier uw eigen domein

U kunt controleren of uw verzonden e-mails "open pixels" toegevoegd hebben en dat de links zijn gewrapt, door te kijken naar de interne structuren van de e-mail (in Gmail, gebruik het menu rechtsboven en kies "Origineel weergeven").

Show original option highlighted


U zult de open pixels opmerken aan het begin en het einde van de HTML in de e-mail. Elke HTML-link wordt ook gewijzigd om een REF te hebben die verwijst naar het trackingdomein.

HTML code highlighted


Dat is alles wat u nodig hebt om SparkPost Signals te laten werken met PowerMTA’s ingebouwde Engagement Tracking.

Voorkomen dat specifieke links in uw HTML e-mail worden bijgehouden

U kunt PowerMTA voorkomen om specifieke links bij te houden, door de aangepaste attribuut data-msys-clicktrack  in te stellen op “0”  :

<a href="#" data-msys-clicktrack="0">Voorbeeld</a>

PowerMTA zal de link niet wikkelen. Het zal dat attribuut ook verwijderen voordat het bericht naar uw ontvanger wordt verzonden.

De configuratie van Signals wordt beschreven in de 5.0 gebruikershandleiding sectie 10.1. Hier beginnen we met "Use Case #2", die Signals inschakelt voor alle verkeer van deze PowerMTA-host, en actieve betrokkenheidsopsporing van SparkPost inschakelt.

# # 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


Hier is wat elk attribuut doet:

api-key

Dit is uniek voor uw SparkPost-account, het is de waarde die u eerder van SparkPost heeft ontvangen.


upload-url

Dit moet overeenkomen met het adres van uw SparkPost API-service, of het nu VS of EU is. Voor meer informatie kijk hier. De gebruikelijke waarden zijn:

SparkPost (VS): https://api.sparkpost.com/api/v1/ingest/events

SparkPost EU:    https://api.eu.sparkpost.com/api/v1/ingest/events


log-verbose

Deze richtlijn is optioneel en, wanneer ingeschakeld, biedt iets meer informatie in het pmta.log-bestand, wat nuttig kan zijn tijdens de installatie om te bevestigen dat alles correct werkt. Elke minuut, zelfs als er geen verkeer is, ziet u:

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


Met verkeer, ziet u iets als:

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

Dit geeft PowerMTA de schijfruimte-drempel aan waarop het moet beginnen met het verwijderen van de oudste SparkPost JSON-evenementbestanden om ruimte te maken voor nieuwe bestanden wanneer de schijfruimte tekortschiet.


enable-signals

Dit geeft PowerMTA de opdracht om naar Signals te uploaden, in dit geval wereldwijd voor al het verkeer (meer info hier, voor v5.0). U kunt selectiever zijn over welke verkeersstromen u wilt uploaden als u dat wilt.


U kunt ook specifiek PowerMTA-verkeer markeren als behorend tot een SparkPost subaccount – dit is een manier om de ene specifieke verkeersstroom van de andere te onderscheiden.


engagement-tracking, customer-id
PowerMTA’s Engagement Tracking-oplossing schakelt standaard over op het trackingdomein voor de SparkPost US-gehoste dienst. U specificeert uw SparkPost numerieke klant-ID; hier zijn instructies voor het vinden ervan.


tracking-domain

Voor SparkPost EU-accounts, voeg de volgende regel toe:

tracking-domain pmta.eu.spgo.io # dit is het eindpunt voor SparkPost EU


Custom Tracking domein

Als u liever uw eigen trackingdomein gebruikt (dit is beter vanuit leverbaarheidsoogpunt), doe dan het volgende:

  • Creëer een trackingdomein met uw DNS-provider door een CNAME-record aan te maken. Dit is meestal een subdomein van uw hoofddomein, bijvoorbeeld 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

U kunt ook HTTPS-trackingdomeinen gebruiken, hoewel dit complexer is (zie de SparkPost-configuratiestappen voor HTTPS-trackingdomeinen).

  • Registreer het trackingdomein in uw SparkPost-account, en verifieer het. Wacht een paar minuten voordat u dit probeert, om uw DNS-wijzigingen door het internet te laten verspreiden, afhankelijk van uw DNS-provider.

  • Configureer PowerMTA om dat domein te gebruiken in plaats van het standaarddomein, met

tracking-domain yourdomain.com # Plaats hier uw eigen domein

U kunt controleren of uw verzonden e-mails "open pixels" toegevoegd hebben en dat de links zijn gewrapt, door te kijken naar de interne structuren van de e-mail (in Gmail, gebruik het menu rechtsboven en kies "Origineel weergeven").

Show original option highlighted


U zult de open pixels opmerken aan het begin en het einde van de HTML in de e-mail. Elke HTML-link wordt ook gewijzigd om een REF te hebben die verwijst naar het trackingdomein.

HTML code highlighted


Dat is alles wat u nodig hebt om SparkPost Signals te laten werken met PowerMTA’s ingebouwde Engagement Tracking.

Voorkomen dat specifieke links in uw HTML e-mail worden bijgehouden

U kunt PowerMTA voorkomen om specifieke links bij te houden, door de aangepaste attribuut data-msys-clicktrack  in te stellen op “0”  :

<a href="#" data-msys-clicktrack="0">Voorbeeld</a>

PowerMTA zal de link niet wikkelen. Het zal dat attribuut ook verwijderen voordat het bericht naar uw ontvanger wordt verzonden.

De configuratie van Signals wordt beschreven in de 5.0 gebruikershandleiding sectie 10.1. Hier beginnen we met "Use Case #2", die Signals inschakelt voor alle verkeer van deze PowerMTA-host, en actieve betrokkenheidsopsporing van SparkPost inschakelt.

# # 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


Hier is wat elk attribuut doet:

api-key

Dit is uniek voor uw SparkPost-account, het is de waarde die u eerder van SparkPost heeft ontvangen.


upload-url

Dit moet overeenkomen met het adres van uw SparkPost API-service, of het nu VS of EU is. Voor meer informatie kijk hier. De gebruikelijke waarden zijn:

SparkPost (VS): https://api.sparkpost.com/api/v1/ingest/events

SparkPost EU:    https://api.eu.sparkpost.com/api/v1/ingest/events


log-verbose

Deze richtlijn is optioneel en, wanneer ingeschakeld, biedt iets meer informatie in het pmta.log-bestand, wat nuttig kan zijn tijdens de installatie om te bevestigen dat alles correct werkt. Elke minuut, zelfs als er geen verkeer is, ziet u:

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


Met verkeer, ziet u iets als:

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

Dit geeft PowerMTA de schijfruimte-drempel aan waarop het moet beginnen met het verwijderen van de oudste SparkPost JSON-evenementbestanden om ruimte te maken voor nieuwe bestanden wanneer de schijfruimte tekortschiet.


enable-signals

Dit geeft PowerMTA de opdracht om naar Signals te uploaden, in dit geval wereldwijd voor al het verkeer (meer info hier, voor v5.0). U kunt selectiever zijn over welke verkeersstromen u wilt uploaden als u dat wilt.


U kunt ook specifiek PowerMTA-verkeer markeren als behorend tot een SparkPost subaccount – dit is een manier om de ene specifieke verkeersstroom van de andere te onderscheiden.


engagement-tracking, customer-id
PowerMTA’s Engagement Tracking-oplossing schakelt standaard over op het trackingdomein voor de SparkPost US-gehoste dienst. U specificeert uw SparkPost numerieke klant-ID; hier zijn instructies voor het vinden ervan.


tracking-domain

Voor SparkPost EU-accounts, voeg de volgende regel toe:

tracking-domain pmta.eu.spgo.io # dit is het eindpunt voor SparkPost EU


Custom Tracking domein

Als u liever uw eigen trackingdomein gebruikt (dit is beter vanuit leverbaarheidsoogpunt), doe dan het volgende:

  • Creëer een trackingdomein met uw DNS-provider door een CNAME-record aan te maken. Dit is meestal een subdomein van uw hoofddomein, bijvoorbeeld 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

U kunt ook HTTPS-trackingdomeinen gebruiken, hoewel dit complexer is (zie de SparkPost-configuratiestappen voor HTTPS-trackingdomeinen).

  • Registreer het trackingdomein in uw SparkPost-account, en verifieer het. Wacht een paar minuten voordat u dit probeert, om uw DNS-wijzigingen door het internet te laten verspreiden, afhankelijk van uw DNS-provider.

  • Configureer PowerMTA om dat domein te gebruiken in plaats van het standaarddomein, met

tracking-domain yourdomain.com # Plaats hier uw eigen domein

U kunt controleren of uw verzonden e-mails "open pixels" toegevoegd hebben en dat de links zijn gewrapt, door te kijken naar de interne structuren van de e-mail (in Gmail, gebruik het menu rechtsboven en kies "Origineel weergeven").

Show original option highlighted


U zult de open pixels opmerken aan het begin en het einde van de HTML in de e-mail. Elke HTML-link wordt ook gewijzigd om een REF te hebben die verwijst naar het trackingdomein.

HTML code highlighted


Dat is alles wat u nodig hebt om SparkPost Signals te laten werken met PowerMTA’s ingebouwde Engagement Tracking.

Voorkomen dat specifieke links in uw HTML e-mail worden bijgehouden

U kunt PowerMTA voorkomen om specifieke links bij te houden, door de aangepaste attribuut data-msys-clicktrack  in te stellen op “0”  :

<a href="#" data-msys-clicktrack="0">Voorbeeld</a>

PowerMTA zal de link niet wikkelen. Het zal dat attribuut ook verwijderen voordat het bericht naar uw ontvanger wordt verzonden.

Selecteer welke PowerMTA-verkeersstromen moeten worden gerapporteerd aan Signals

U kunt Signaleren selecteren om actief te zijn:

  • Globaal (dit is wat we in het bovenstaande voorbeeld hebben gebruikt)

  • Voor sommige Virtual MTA's en niet voor andere

  • Voor sommige Virtual MTA pools en niet voor andere

  • Voor specifieke “Sender” of “From” adressen doorgestuurd door PowerMTA, in combinatie met de Virtual MTA / Virtual MTA pool selecties

Scope

Wat gerapporteerd wordt aan Signaleren

Wanneer te gebruiken

Globaal

Al het verkeer van de PowerMTA host

Eenvoudige implementaties waarbij al het verkeer moet worden ingevoerd in SparkPost Signals.

VirtualMTA

Alleen verkeer van geselecteerde VirtualMTA's

Wanneer u aparte rapportageviews voor verschillende IP's of verkeerstypes wilt.

VirtualMTA Pool

Verkeer van geselecteerde VirtualMTA pools

Wanneer u IP's groepeert in pools en poolniveau rapportage wilt.

“Sender” / “From” domein

Berichten van specifieke afzender of From domeinen

Wanneer u per-klant of per-merk rapportage nodig heeft binnen dezelfde infrastructuur.

Deze configuratie is zeer krachtig en wordt geïllustreerd door een reeks voorbeeld-gebruikscases (v5.0) in de Gebruikershandleiding.

U kunt Signaleren selecteren om actief te zijn:

  • Globaal (dit is wat we in het bovenstaande voorbeeld hebben gebruikt)

  • Voor sommige Virtual MTA's en niet voor andere

  • Voor sommige Virtual MTA pools en niet voor andere

  • Voor specifieke “Sender” of “From” adressen doorgestuurd door PowerMTA, in combinatie met de Virtual MTA / Virtual MTA pool selecties

Scope

Wat gerapporteerd wordt aan Signaleren

Wanneer te gebruiken

Globaal

Al het verkeer van de PowerMTA host

Eenvoudige implementaties waarbij al het verkeer moet worden ingevoerd in SparkPost Signals.

VirtualMTA

Alleen verkeer van geselecteerde VirtualMTA's

Wanneer u aparte rapportageviews voor verschillende IP's of verkeerstypes wilt.

VirtualMTA Pool

Verkeer van geselecteerde VirtualMTA pools

Wanneer u IP's groepeert in pools en poolniveau rapportage wilt.

“Sender” / “From” domein

Berichten van specifieke afzender of From domeinen

Wanneer u per-klant of per-merk rapportage nodig heeft binnen dezelfde infrastructuur.

Deze configuratie is zeer krachtig en wordt geïllustreerd door een reeks voorbeeld-gebruikscases (v5.0) in de Gebruikershandleiding.

U kunt Signaleren selecteren om actief te zijn:

  • Globaal (dit is wat we in het bovenstaande voorbeeld hebben gebruikt)

  • Voor sommige Virtual MTA's en niet voor andere

  • Voor sommige Virtual MTA pools en niet voor andere

  • Voor specifieke “Sender” of “From” adressen doorgestuurd door PowerMTA, in combinatie met de Virtual MTA / Virtual MTA pool selecties

Scope

Wat gerapporteerd wordt aan Signaleren

Wanneer te gebruiken

Globaal

Al het verkeer van de PowerMTA host

Eenvoudige implementaties waarbij al het verkeer moet worden ingevoerd in SparkPost Signals.

VirtualMTA

Alleen verkeer van geselecteerde VirtualMTA's

Wanneer u aparte rapportageviews voor verschillende IP's of verkeerstypes wilt.

VirtualMTA Pool

Verkeer van geselecteerde VirtualMTA pools

Wanneer u IP's groepeert in pools en poolniveau rapportage wilt.

“Sender” / “From” domein

Berichten van specifieke afzender of From domeinen

Wanneer u per-klant of per-merk rapportage nodig heeft binnen dezelfde infrastructuur.

Deze configuratie is zeer krachtig en wordt geïllustreerd door een reeks voorbeeld-gebruikscases (v5.0) in de Gebruikershandleiding.

Testen of jouw evenementen Signals bereiken

Hier ziet u een overzicht van SparkPost Signals, verbonden met PowerMTA. U kunt zien dat de gezondheidsscore varieert.

Health score dashboard


De campagnenamen zijn beschikbaar als rapportage-elementen, samen met Subaccount, IP Pool, Mailbox Provider en Sending Domain.

Naast het bekijken van de PowerMTA-logs, kunt u controleren of de evenementen gegevens SparkPost bereiken door naar het Signals Integratie scherm te kijken.

Signals integration screen

In uw SparkPost Events Zoek scherm zou u evenementen binnen een paar minuten moeten zien verschijnen. Deze zullen Injectie en Levering gebeurtenissen bevatten, evenals Bounce, en mogelijk Out-of-Band Bounce en Spam Klacht gebeurtenissen, als u PowerMTA al hebt geconfigureerd om die voor u te verwerken.
Als u Engagement Tracking hebt ingeschakeld, ziet u ook open-, initial_open- en klik-gebeurtenissen.

Hier ziet u een overzicht van SparkPost Signals, verbonden met PowerMTA. U kunt zien dat de gezondheidsscore varieert.

Health score dashboard


De campagnenamen zijn beschikbaar als rapportage-elementen, samen met Subaccount, IP Pool, Mailbox Provider en Sending Domain.

Naast het bekijken van de PowerMTA-logs, kunt u controleren of de evenementen gegevens SparkPost bereiken door naar het Signals Integratie scherm te kijken.

Signals integration screen

In uw SparkPost Events Zoek scherm zou u evenementen binnen een paar minuten moeten zien verschijnen. Deze zullen Injectie en Levering gebeurtenissen bevatten, evenals Bounce, en mogelijk Out-of-Band Bounce en Spam Klacht gebeurtenissen, als u PowerMTA al hebt geconfigureerd om die voor u te verwerken.
Als u Engagement Tracking hebt ingeschakeld, ziet u ook open-, initial_open- en klik-gebeurtenissen.

Hier ziet u een overzicht van SparkPost Signals, verbonden met PowerMTA. U kunt zien dat de gezondheidsscore varieert.

Health score dashboard


De campagnenamen zijn beschikbaar als rapportage-elementen, samen met Subaccount, IP Pool, Mailbox Provider en Sending Domain.

Naast het bekijken van de PowerMTA-logs, kunt u controleren of de evenementen gegevens SparkPost bereiken door naar het Signals Integratie scherm te kijken.

Signals integration screen

In uw SparkPost Events Zoek scherm zou u evenementen binnen een paar minuten moeten zien verschijnen. Deze zullen Injectie en Levering gebeurtenissen bevatten, evenals Bounce, en mogelijk Out-of-Band Bounce en Spam Klacht gebeurtenissen, als u PowerMTA al hebt geconfigureerd om die voor u te verwerken.
Als u Engagement Tracking hebt ingeschakeld, ziet u ook open-, initial_open- en klik-gebeurtenissen.

Het gebruiken van betekenisvolle namen die goed naar voren komen in rapportages

Het instellen van de PowerMTA VirtualMTA Pool-namen en Job-namen zodat deze begrijpelijk en menselijk leesbaar zijn, is zeker de moeite waard. Deze verschijnen direct in uw SparkPost Signals-facetten en het Samenvattingsrapport.

Zoals eerder vermeld, hoeft u deze pools niet aan te maken in uw SparkPost-account. SparkPost neemt ze over uit uw PowerMTA-configuratie.

Hier is hoe PowerMTA-configuratietermen vertalen naar SparkPost-termen.

PowerMTA-term SparkPost Reports / Signals-termOntvanger Domein

(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 kan echter virtualMTAs, virtual MTA Pools of Sender- of From-domeinen taggen met een subaccount-ID voor SparkPost-rapportagedoeleinden.

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

Het instellen van ten minste één smtp-source-host adres stelt SparkPost ook in staat om het verzendende IP-adres correct te identificeren, zodat het verschijnt bij Invoeg- en Verzendingsevenementen, evenals in het Samenvattingsrapport weergave.

Job-namen worden ingesteld in PowerMTA via een header in het geïnjecteerde bericht. Naast het mogelijk maken van individuele jobbesturing (pauzeren/hervatten enz.) wat op zichzelf al nuttig is, draagt PowerMTA de namen over aan SparkPost Signals-rapportage als "campagne ID". Zie Gebruikershandleiding v5.0 sectie 12.8 “Een campagne volgen in PowerMTA met een JobID”.

Er zijn een paar dingen om op te letten met betrekking tot jobbenaming. Hoewel SparkPost (met JSON-formaat en JSON escaping) tekens zoals <SPACE>  in campagnenamen toestaat, hebben mailheaders meer beperkingen. Geldige tekens die in de X-Job header zijn toegestaan, zijn:

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

Met andere woorden, niet-toegestane tekens zijn onder andere <SPACE>, dubbele aanhalingstekens “  en accent grave `. Als u gewend bent met X-Job-namen te werken, zal dit niet verrassend zijn, en zullen uw campagne ID-namen "gewoon werken" op SparkPost-rapportage. Als u, net als ik, eerst SparkPost heeft geleerd, wilt u misschien een tool om te zorgen dat uw X-Job-waarden veilig zijn; zie de bonusfunctie aan het einde van dit artikel.

PowerMTA Term

SparkPost Signals Term

VirtualMTA

IP Pool

VirtualMTA Pool

IP Pool (gegroepeerd)

Job Naam (X-Job header)

Campagne ID

smtp-source-host

Verzendend IP-adres

Bounce Domein

Verzendend Domein Identificatie

Afzender/From Domein

Subaccount / Domeinniveau Rapportage

Het instellen van de PowerMTA VirtualMTA Pool-namen en Job-namen zodat deze begrijpelijk en menselijk leesbaar zijn, is zeker de moeite waard. Deze verschijnen direct in uw SparkPost Signals-facetten en het Samenvattingsrapport.

Zoals eerder vermeld, hoeft u deze pools niet aan te maken in uw SparkPost-account. SparkPost neemt ze over uit uw PowerMTA-configuratie.

Hier is hoe PowerMTA-configuratietermen vertalen naar SparkPost-termen.

PowerMTA-term SparkPost Reports / Signals-termOntvanger Domein

(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 kan echter virtualMTAs, virtual MTA Pools of Sender- of From-domeinen taggen met een subaccount-ID voor SparkPost-rapportagedoeleinden.

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

Het instellen van ten minste één smtp-source-host adres stelt SparkPost ook in staat om het verzendende IP-adres correct te identificeren, zodat het verschijnt bij Invoeg- en Verzendingsevenementen, evenals in het Samenvattingsrapport weergave.

Job-namen worden ingesteld in PowerMTA via een header in het geïnjecteerde bericht. Naast het mogelijk maken van individuele jobbesturing (pauzeren/hervatten enz.) wat op zichzelf al nuttig is, draagt PowerMTA de namen over aan SparkPost Signals-rapportage als "campagne ID". Zie Gebruikershandleiding v5.0 sectie 12.8 “Een campagne volgen in PowerMTA met een JobID”.

Er zijn een paar dingen om op te letten met betrekking tot jobbenaming. Hoewel SparkPost (met JSON-formaat en JSON escaping) tekens zoals <SPACE>  in campagnenamen toestaat, hebben mailheaders meer beperkingen. Geldige tekens die in de X-Job header zijn toegestaan, zijn:

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

Met andere woorden, niet-toegestane tekens zijn onder andere <SPACE>, dubbele aanhalingstekens “  en accent grave `. Als u gewend bent met X-Job-namen te werken, zal dit niet verrassend zijn, en zullen uw campagne ID-namen "gewoon werken" op SparkPost-rapportage. Als u, net als ik, eerst SparkPost heeft geleerd, wilt u misschien een tool om te zorgen dat uw X-Job-waarden veilig zijn; zie de bonusfunctie aan het einde van dit artikel.

PowerMTA Term

SparkPost Signals Term

VirtualMTA

IP Pool

VirtualMTA Pool

IP Pool (gegroepeerd)

Job Naam (X-Job header)

Campagne ID

smtp-source-host

Verzendend IP-adres

Bounce Domein

Verzendend Domein Identificatie

Afzender/From Domein

Subaccount / Domeinniveau Rapportage

Het instellen van de PowerMTA VirtualMTA Pool-namen en Job-namen zodat deze begrijpelijk en menselijk leesbaar zijn, is zeker de moeite waard. Deze verschijnen direct in uw SparkPost Signals-facetten en het Samenvattingsrapport.

Zoals eerder vermeld, hoeft u deze pools niet aan te maken in uw SparkPost-account. SparkPost neemt ze over uit uw PowerMTA-configuratie.

Hier is hoe PowerMTA-configuratietermen vertalen naar SparkPost-termen.

PowerMTA-term SparkPost Reports / Signals-termOntvanger Domein

(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 kan echter virtualMTAs, virtual MTA Pools of Sender- of From-domeinen taggen met een subaccount-ID voor SparkPost-rapportagedoeleinden.

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

Het instellen van ten minste één smtp-source-host adres stelt SparkPost ook in staat om het verzendende IP-adres correct te identificeren, zodat het verschijnt bij Invoeg- en Verzendingsevenementen, evenals in het Samenvattingsrapport weergave.

Job-namen worden ingesteld in PowerMTA via een header in het geïnjecteerde bericht. Naast het mogelijk maken van individuele jobbesturing (pauzeren/hervatten enz.) wat op zichzelf al nuttig is, draagt PowerMTA de namen over aan SparkPost Signals-rapportage als "campagne ID". Zie Gebruikershandleiding v5.0 sectie 12.8 “Een campagne volgen in PowerMTA met een JobID”.

Er zijn een paar dingen om op te letten met betrekking tot jobbenaming. Hoewel SparkPost (met JSON-formaat en JSON escaping) tekens zoals <SPACE>  in campagnenamen toestaat, hebben mailheaders meer beperkingen. Geldige tekens die in de X-Job header zijn toegestaan, zijn:

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

Met andere woorden, niet-toegestane tekens zijn onder andere <SPACE>, dubbele aanhalingstekens “  en accent grave `. Als u gewend bent met X-Job-namen te werken, zal dit niet verrassend zijn, en zullen uw campagne ID-namen "gewoon werken" op SparkPost-rapportage. Als u, net als ik, eerst SparkPost heeft geleerd, wilt u misschien een tool om te zorgen dat uw X-Job-waarden veilig zijn; zie de bonusfunctie aan het einde van dit artikel.

PowerMTA Term

SparkPost Signals Term

VirtualMTA

IP Pool

VirtualMTA Pool

IP Pool (gegroepeerd)

Job Naam (X-Job header)

Campagne ID

smtp-source-host

Verzendend IP-adres

Bounce Domein

Verzendend Domein Identificatie

Afzender/From Domein

Subaccount / Domeinniveau Rapportage

FBL evenementen (Spam Klachten) en remote (out-of-band) terugkaatsingen

PowerMTA kan FBL-events ontvangen en verwerken (bekend in SparkPost als Spamklachten) en externe bounces (bekend in SparkPost als out-of-band bounces, omdat het antwoord pas later terugkomt en niet tijdens het SMTP-gesprek).

Er zijn artikelen in het Port25 Support Forum over hoe de Bounce Processor en de FBL Processor op te zetten. Als u een bestaande PowerMTA-gebruiker bent, heeft u deze waarschijnlijk al.

Hier is de configuratie die ik voor een demo heb gemaakt, gebaseerd op deze artikelen en gericht op het hosten van PowerMTA in Amazon EC2.

Als u bekend bent met de PowerMTA-configuratie in dit gebied, kunt u dit deel overslaan tot aan de volgende horizontale lijn.

PowerMTA kan FBL-events ontvangen en verwerken (bekend in SparkPost als Spamklachten) en externe bounces (bekend in SparkPost als out-of-band bounces, omdat het antwoord pas later terugkomt en niet tijdens het SMTP-gesprek).

Er zijn artikelen in het Port25 Support Forum over hoe de Bounce Processor en de FBL Processor op te zetten. Als u een bestaande PowerMTA-gebruiker bent, heeft u deze waarschijnlijk al.

Hier is de configuratie die ik voor een demo heb gemaakt, gebaseerd op deze artikelen en gericht op het hosten van PowerMTA in Amazon EC2.

Als u bekend bent met de PowerMTA-configuratie in dit gebied, kunt u dit deel overslaan tot aan de volgende horizontale lijn.

PowerMTA kan FBL-events ontvangen en verwerken (bekend in SparkPost als Spamklachten) en externe bounces (bekend in SparkPost als out-of-band bounces, omdat het antwoord pas later terugkomt en niet tijdens het SMTP-gesprek).

Er zijn artikelen in het Port25 Support Forum over hoe de Bounce Processor en de FBL Processor op te zetten. Als u een bestaande PowerMTA-gebruiker bent, heeft u deze waarschijnlijk al.

Hier is de configuratie die ik voor een demo heb gemaakt, gebaseerd op deze artikelen en gericht op het hosten van PowerMTA in Amazon EC2.

Als u bekend bent met de PowerMTA-configuratie in dit gebied, kunt u dit deel overslaan tot aan de volgende horizontale lijn.

Injectieconfiguratie

We gebruiken poort 587 voor geïnjecteerde berichten, die via het openbare internet van een andere host zullen komen. We moeten voorkomen dat kwaadwillenden deze service ontdekken en misbruiken, dus we passen gebruikersnaam/wachtwoordauthenticatie en optionele TLS toe, vergelijkbaar met SparkPost SMTP-injectie-eindpunten.

We willen in staat zijn om berichten te verzenden van bronnen die correct zijn geauthenticeerd naar elke bestemming. We willen ook een aparte luisteraar op poort 25 voor FBL- en externe bounce-antwoorden die geen authenticatie vereisen.

# 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

In de volgende <source> -verklaringen gebruiken we gebruikersnaam/wachtwoordauthenticatie en optionele TLS om ons te verdedigen tegen ongewenste berichtinjectie. We stellen ook snelheidslimieten in voor verbindingen die mislukte wachtwoordpogingen doen.

Uw setup kan anders zijn; bijvoorbeeld, als u een privénetwerk tussen injector en PowerMTA heeft, heeft u geen wachtwoordauthenticatie nodig.

# 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>

De <source {auth}> verklaring (zie hier. v5.0) is van toepassing zodra de authenticatie is geslaagd. Hier staat het doorsturen toe, stelt het de standaard virtuele MTA-groep in voor gebruik en voegt het de X-Job-kop toe (die door SparkPost Signals als campaign_id zal worden gerapporteerd).

De rewrite-lijst koppelt geïnjecteerde berichten aan het gebruik van een specifieke MAIL FROM-domein (ook bekend als bounce-domein of 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>


Vervolgens stellen we onze TLS-configuratie en SMTP-gebruikersnaam / wachtwoord in, volgens de huidige aanbevelingen.

# # 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>


We kunnen controleren dat de (onveilige, verouderde) TLS v1.0 niet wordt geaccepteerd met mijn favoriete SMTP-testtool, swaks.

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


We zien:

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


Hetzelfde geldt voor –tls-protocol tlsv1_1.

Laten we ook DKIM-ondertekening toepassen op onze uitgaande berichten, aangezien het een goede gewoonte is (ik volgde deze instructies om de sleutel op te zetten).

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

We gebruiken poort 587 voor geïnjecteerde berichten, die via het openbare internet van een andere host zullen komen. We moeten voorkomen dat kwaadwillenden deze service ontdekken en misbruiken, dus we passen gebruikersnaam/wachtwoordauthenticatie en optionele TLS toe, vergelijkbaar met SparkPost SMTP-injectie-eindpunten.

We willen in staat zijn om berichten te verzenden van bronnen die correct zijn geauthenticeerd naar elke bestemming. We willen ook een aparte luisteraar op poort 25 voor FBL- en externe bounce-antwoorden die geen authenticatie vereisen.

# 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

In de volgende <source> -verklaringen gebruiken we gebruikersnaam/wachtwoordauthenticatie en optionele TLS om ons te verdedigen tegen ongewenste berichtinjectie. We stellen ook snelheidslimieten in voor verbindingen die mislukte wachtwoordpogingen doen.

Uw setup kan anders zijn; bijvoorbeeld, als u een privénetwerk tussen injector en PowerMTA heeft, heeft u geen wachtwoordauthenticatie nodig.

# 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>

De <source {auth}> verklaring (zie hier. v5.0) is van toepassing zodra de authenticatie is geslaagd. Hier staat het doorsturen toe, stelt het de standaard virtuele MTA-groep in voor gebruik en voegt het de X-Job-kop toe (die door SparkPost Signals als campaign_id zal worden gerapporteerd).

De rewrite-lijst koppelt geïnjecteerde berichten aan het gebruik van een specifieke MAIL FROM-domein (ook bekend als bounce-domein of 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>


Vervolgens stellen we onze TLS-configuratie en SMTP-gebruikersnaam / wachtwoord in, volgens de huidige aanbevelingen.

# # 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>


We kunnen controleren dat de (onveilige, verouderde) TLS v1.0 niet wordt geaccepteerd met mijn favoriete SMTP-testtool, swaks.

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


We zien:

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


Hetzelfde geldt voor –tls-protocol tlsv1_1.

Laten we ook DKIM-ondertekening toepassen op onze uitgaande berichten, aangezien het een goede gewoonte is (ik volgde deze instructies om de sleutel op te zetten).

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

We gebruiken poort 587 voor geïnjecteerde berichten, die via het openbare internet van een andere host zullen komen. We moeten voorkomen dat kwaadwillenden deze service ontdekken en misbruiken, dus we passen gebruikersnaam/wachtwoordauthenticatie en optionele TLS toe, vergelijkbaar met SparkPost SMTP-injectie-eindpunten.

We willen in staat zijn om berichten te verzenden van bronnen die correct zijn geauthenticeerd naar elke bestemming. We willen ook een aparte luisteraar op poort 25 voor FBL- en externe bounce-antwoorden die geen authenticatie vereisen.

# 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

In de volgende <source> -verklaringen gebruiken we gebruikersnaam/wachtwoordauthenticatie en optionele TLS om ons te verdedigen tegen ongewenste berichtinjectie. We stellen ook snelheidslimieten in voor verbindingen die mislukte wachtwoordpogingen doen.

Uw setup kan anders zijn; bijvoorbeeld, als u een privénetwerk tussen injector en PowerMTA heeft, heeft u geen wachtwoordauthenticatie nodig.

# 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>

De <source {auth}> verklaring (zie hier. v5.0) is van toepassing zodra de authenticatie is geslaagd. Hier staat het doorsturen toe, stelt het de standaard virtuele MTA-groep in voor gebruik en voegt het de X-Job-kop toe (die door SparkPost Signals als campaign_id zal worden gerapporteerd).

De rewrite-lijst koppelt geïnjecteerde berichten aan het gebruik van een specifieke MAIL FROM-domein (ook bekend als bounce-domein of 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>


Vervolgens stellen we onze TLS-configuratie en SMTP-gebruikersnaam / wachtwoord in, volgens de huidige aanbevelingen.

# # 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>


We kunnen controleren dat de (onveilige, verouderde) TLS v1.0 niet wordt geaccepteerd met mijn favoriete SMTP-testtool, swaks.

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


We zien:

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


Hetzelfde geldt voor –tls-protocol tlsv1_1.

Laten we ook DKIM-ondertekening toepassen op onze uitgaande berichten, aangezien het een goede gewoonte is (ik volgde deze instructies om de sleutel op te zetten).

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

VirtualMTA setup en naamgeving

PowerMTA VirtualMTAs (en VirtualMTA pools) zijn krachtige functies voor het beheren van berichtstromen, en PowerMTA / SparkPost Signals rapportagefuncties werken het beste met deze actief.

# # 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>


De virtual-mta-pool instelling wordt in SparkPost gerapporteerd als "IP Pool", en is beschikbaar als een SparkPost Signals rapportage facet (het dropdownmenu onder de grafieken).

Health score dashboard


Het Samenvattingsrapport toont ook IP Pool als een "Group By" rapportage facet.

Summary report dashboard


Zoals eerder in dit artikel opgemerkt, stelt het opzetten van minstens één smtp-source-host adres SparkPost ook in staat om het juiste verzend-IP-adres te identificeren, zodat het verschijnt in Injectie- en Leveringsgebeurtenissen, en in het Samenvattingsrapport:

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

Dat is alles wat je nodig hebt om een eenvoudige integratie tussen PowerMTA en SparkPost Signals te laten werken. Je vindt het volledige configuratiebestand voorbeeld hier.

Voordat je gaat, hier is de bonusfunctie die ik noemde.

PowerMTA VirtualMTAs (en VirtualMTA pools) zijn krachtige functies voor het beheren van berichtstromen, en PowerMTA / SparkPost Signals rapportagefuncties werken het beste met deze actief.

# # 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>


De virtual-mta-pool instelling wordt in SparkPost gerapporteerd als "IP Pool", en is beschikbaar als een SparkPost Signals rapportage facet (het dropdownmenu onder de grafieken).

Health score dashboard


Het Samenvattingsrapport toont ook IP Pool als een "Group By" rapportage facet.

Summary report dashboard


Zoals eerder in dit artikel opgemerkt, stelt het opzetten van minstens één smtp-source-host adres SparkPost ook in staat om het juiste verzend-IP-adres te identificeren, zodat het verschijnt in Injectie- en Leveringsgebeurtenissen, en in het Samenvattingsrapport:

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

Dat is alles wat je nodig hebt om een eenvoudige integratie tussen PowerMTA en SparkPost Signals te laten werken. Je vindt het volledige configuratiebestand voorbeeld hier.

Voordat je gaat, hier is de bonusfunctie die ik noemde.

PowerMTA VirtualMTAs (en VirtualMTA pools) zijn krachtige functies voor het beheren van berichtstromen, en PowerMTA / SparkPost Signals rapportagefuncties werken het beste met deze actief.

# # 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>


De virtual-mta-pool instelling wordt in SparkPost gerapporteerd als "IP Pool", en is beschikbaar als een SparkPost Signals rapportage facet (het dropdownmenu onder de grafieken).

Health score dashboard


Het Samenvattingsrapport toont ook IP Pool als een "Group By" rapportage facet.

Summary report dashboard


Zoals eerder in dit artikel opgemerkt, stelt het opzetten van minstens één smtp-source-host adres SparkPost ook in staat om het juiste verzend-IP-adres te identificeren, zodat het verschijnt in Injectie- en Leveringsgebeurtenissen, en in het Samenvattingsrapport:

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

Dat is alles wat je nodig hebt om een eenvoudige integratie tussen PowerMTA en SparkPost Signals te laten werken. Je vindt het volledige configuratiebestand voorbeeld hier.

Voordat je gaat, hier is de bonusfunctie die ik noemde.

Bonusfunctie: X-Job naam controleren/filteren

Om ervoor te zorgen dat elke tekenreeks veilig is voor gebruik als een PowerMTA X-Job naam, hier is een eenvoudige Python-functie om onveilige tekens naar een underscore '_' te mapen.

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)

Dit gebruikt Python regular expressions op een specifieke manier. Het verklaart de set van niet-toegestane tekens met behulp van de 'set complement' operator ^ in plaats van alle toegestane tekens op te sommen. Dat betekent dat we tekens opvangen (en veilig maken) voorbij de gebruikelijke 7-bits set. We kunnen dat laten zien met deze testfragment:

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

Geeft

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

Je kunt zien dat <SPACE>, dubbele aanhalingstekens “, en backtick `, evenals alle tekens voorbij ~ naar een underscore worden gemapt.

Om ervoor te zorgen dat elke tekenreeks veilig is voor gebruik als een PowerMTA X-Job naam, hier is een eenvoudige Python-functie om onveilige tekens naar een underscore '_' te mapen.

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)

Dit gebruikt Python regular expressions op een specifieke manier. Het verklaart de set van niet-toegestane tekens met behulp van de 'set complement' operator ^ in plaats van alle toegestane tekens op te sommen. Dat betekent dat we tekens opvangen (en veilig maken) voorbij de gebruikelijke 7-bits set. We kunnen dat laten zien met deze testfragment:

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

Geeft

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

Je kunt zien dat <SPACE>, dubbele aanhalingstekens “, en backtick `, evenals alle tekens voorbij ~ naar een underscore worden gemapt.

Om ervoor te zorgen dat elke tekenreeks veilig is voor gebruik als een PowerMTA X-Job naam, hier is een eenvoudige Python-functie om onveilige tekens naar een underscore '_' te mapen.

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)

Dit gebruikt Python regular expressions op een specifieke manier. Het verklaart de set van niet-toegestane tekens met behulp van de 'set complement' operator ^ in plaats van alle toegestane tekens op te sommen. Dat betekent dat we tekens opvangen (en veilig maken) voorbij de gebruikelijke 7-bits set. We kunnen dat laten zien met deze testfragment:

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

Geeft

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

Je kunt zien dat <SPACE>, dubbele aanhalingstekens “, en backtick `, evenals alle tekens voorbij ~ naar een underscore worden gemapt.

Andere nieuws

Lees meer uit deze categorie

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

Het complete AI-native platform dat met uw bedrijf meegroeit.

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

Het complete AI-native platform dat met uw bedrijf meegroeit.