Implementatie van Signal voor On-Premises: PowerMTA-integratie
Bird
30 aug 2019
1 min read

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 ... successfullyen 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) ofpmta.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-spacerichtlijn 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 PowerMTAX-Jobheaderformaat, 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").

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.

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").

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.

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").

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.

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.

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.

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.

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.

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.

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.

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).

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

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:

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).

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

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:

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).

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

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:

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.



