Implementazione dei segnali per on-premises: integrazione PowerMTA

Uccello

30 ago 2019

Email

1 min read

Implementazione dei segnali per on-premises: integrazione PowerMTA

Punti Chiave

    • Scopo: Questa guida spiega come integrare PowerMTA 5.0+ con SparkPost Signals per trasmettere dati di eventi e coinvolgimento (rimbalzi, aperture, clic, segnalazioni di spam) dagli MTA on-premises direttamente nel livello di analisi di SparkPost.

    • Configurazione principale:

      • Aggiungi enable-signals true e definisci il tuo endpoint di ingestione SparkPost (https://api.sparkpost.com/api/v1/ingest/events o l'equivalente UE).

      • Utilizza una chiave API valida con permesso “Incoming Events: Write”.

      • Specifica customer-id e, opzionalmente, imposta domini di tracciamento personalizzati per migliorare la deliverability.

    • Impostazione del tracciamento: Il Tracking Engagement di PowerMTA inietta automaticamente pixel di apertura e clic nelle email HTML. Puoi disabilitare il tracciamento per link utilizzando l'attributo data-msys-clicktrack="0".

    • Reporting selettivo: I segnali possono essere abilitati globalmente o limitati a determinati VirtualMTA, pool o domini del mittente, consentendo un controllo preciso dei dati.

    • Testing e verifica: Utilizza il cruscotto di integrazione Signals e i log di PowerMTA per confermare l'ingestione degli eventi e monitorare Health Scores, rimbalzi e metriche di coinvolgimento in tempo reale.

    • Ottimizzazione della deliverability:

      • Utilizza nomi significativi per VirtualMTA e Job — questi si mappano direttamente a IP Pools e Campaign IDs nei rapporti di SparkPost.

      • Configura firma DKIM, applicazione TLS e corretti regole di relay per prevenire iniezioni non autorizzate.

    • Impostazione avanzata: L'articolo include anche snippet pronti all'uso per FBL e gestione dei rimbalzi out-of-band, iniezione SMTP autenticata (porta 587) e codice Python per sanitizzare le intestazioni X-Job per compatibilità.

Punti salienti del Q&A

  • Cosa fa realmente l'integrazione di Signals?

    Carica automaticamente gli eventi dei messaggi di PowerMTA (iniezione, consegna, rimbalzo, engagement) nel tuo account SparkPost in modo da poter accedere a cruscotti come Punteggio di Salute, report sui ritardi e Monitoraggio degli Spam Trap.

  • Perché integrare Signals con un MTA on-premise?

    Molte aziende gestiscono infrastrutture di posta auto-ospitate per motivi di conformità, ma desiderano comunque le capacità di analisi e monitoraggio di SparkPost. Signals colma quel divario senza migrare la consegna della posta nel cloud.

  • Come posso verificare che gli eventi stiano fluendo a SparkPost?

    Controlla i log di PowerMTA per Signals: Transferred ... successfully e conferma le voci degli eventi sotto Signals → Events Search in SparkPost.

  • Posso usare il mio dominio di tracciamento?

    Sì — configura un CNAME come track.mycompany.com → pmta.spgo.io (US) o pmta.eu.spgo.io (UE), poi registralo e verificalo in SparkPost per coerenza del branding e della reputazione.

  • Che mi dici della privacy dei dati o dell'utilizzo del disco?

    Il diretto min-free-space elimina automaticamente i vecchi file di eventi JSON quando lo spazio su disco è scarso, prevenendo l'accumulo locale di dati di telemetria.

  • Qual è la "funzione bonus" alla fine?

    Un'utilità regex di Python (pmtaSafeJobID) che garantisce che i nomi delle campagne/lavori utilizzino solo caratteri validi nel formato dell'intestazione X-Job di PowerMTA, sostituendo i caratteri non sicuri con trattini bassi.

Immergiamoci nei dettagli della configurazione di PowerMTA per SparkPost Signals. Avrai bisogno di:

  • Un host per eseguire l'ultima versione di PowerMTA - sia nuovo che una macchina esistente

  • Un account SparkPost con autorizzazione della chiave API per "Eventi in arrivo: Scrivi" come descritto qui

Configureremo PowerMTA per trasmettere eventi al tuo account SparkPost, quindi potrai usare quanto segue:

Immergiamoci nei dettagli della configurazione di PowerMTA per SparkPost Signals. Avrai bisogno di:

  • Un host per eseguire l'ultima versione di PowerMTA - sia nuovo che una macchina esistente

  • Un account SparkPost con autorizzazione della chiave API per "Eventi in arrivo: Scrivi" come descritto qui

Configureremo PowerMTA per trasmettere eventi al tuo account SparkPost, quindi potrai usare quanto segue:

Immergiamoci nei dettagli della configurazione di PowerMTA per SparkPost Signals. Avrai bisogno di:

  • Un host per eseguire l'ultima versione di PowerMTA - sia nuovo che una macchina esistente

  • Un account SparkPost con autorizzazione della chiave API per "Eventi in arrivo: Scrivi" come descritto qui

Configureremo PowerMTA per trasmettere eventi al tuo account SparkPost, quindi potrai usare quanto segue:

Panoramica sull'installazione e configurazione

In primo luogo, installa (o aggiorna) a PowerMTA 5.0 r4 o versioni successive, seguendo le solite istruzioni per l'installazione v5.0 che sono piuttosto semplici. Poi lavoreremo attraverso i seguenti passaggi:

  • Configura il connettore PowerMTA per SparkPost Signals

  • Imposta il monitoraggio dell'engagement con un dominio di tracciamento personalizzato

  • Seleziona quali stream di traffico PowerMTA segnalare a Signals

  • Controlla che i tuoi eventi stiano raggiungendo Signals

  • Rivedi come utilizzare nomi significativi che appaiono bene nei rapporti.

Tratteremo anche gli altri aspetti specifici di configurazione di PowerMTA utilizzati nella nostra demo di Signals:

  • Eventi FBL (Reclami di spam) e rimbalzi remoti (out-of-band)

  • Configurazione dell'inserimento, incluso DKIM

  • Configurazione FBL e OOB

  • Configurazione e denominazione di VirtualMTA (e come questo appare nei tuoi rapporti SparkPost Signals)

Infine, c'è una “funzione bonus” con codice per garantire che i nomi delle tue campagne siano compatibili con le convenzioni di denominazione X-Job di PowerMTA.

In primo luogo, installa (o aggiorna) a PowerMTA 5.0 r4 o versioni successive, seguendo le solite istruzioni per l'installazione v5.0 che sono piuttosto semplici. Poi lavoreremo attraverso i seguenti passaggi:

  • Configura il connettore PowerMTA per SparkPost Signals

  • Imposta il monitoraggio dell'engagement con un dominio di tracciamento personalizzato

  • Seleziona quali stream di traffico PowerMTA segnalare a Signals

  • Controlla che i tuoi eventi stiano raggiungendo Signals

  • Rivedi come utilizzare nomi significativi che appaiono bene nei rapporti.

Tratteremo anche gli altri aspetti specifici di configurazione di PowerMTA utilizzati nella nostra demo di Signals:

  • Eventi FBL (Reclami di spam) e rimbalzi remoti (out-of-band)

  • Configurazione dell'inserimento, incluso DKIM

  • Configurazione FBL e OOB

  • Configurazione e denominazione di VirtualMTA (e come questo appare nei tuoi rapporti SparkPost Signals)

Infine, c'è una “funzione bonus” con codice per garantire che i nomi delle tue campagne siano compatibili con le convenzioni di denominazione X-Job di PowerMTA.

In primo luogo, installa (o aggiorna) a PowerMTA 5.0 r4 o versioni successive, seguendo le solite istruzioni per l'installazione v5.0 che sono piuttosto semplici. Poi lavoreremo attraverso i seguenti passaggi:

  • Configura il connettore PowerMTA per SparkPost Signals

  • Imposta il monitoraggio dell'engagement con un dominio di tracciamento personalizzato

  • Seleziona quali stream di traffico PowerMTA segnalare a Signals

  • Controlla che i tuoi eventi stiano raggiungendo Signals

  • Rivedi come utilizzare nomi significativi che appaiono bene nei rapporti.

Tratteremo anche gli altri aspetti specifici di configurazione di PowerMTA utilizzati nella nostra demo di Signals:

  • Eventi FBL (Reclami di spam) e rimbalzi remoti (out-of-band)

  • Configurazione dell'inserimento, incluso DKIM

  • Configurazione FBL e OOB

  • Configurazione e denominazione di VirtualMTA (e come questo appare nei tuoi rapporti SparkPost Signals)

Infine, c'è una “funzione bonus” con codice per garantire che i nomi delle tue campagne siano compatibili con le convenzioni di denominazione X-Job di PowerMTA.

Configurazione FBL e OOB

Ora .. finalmente .. dichiariamo quali domini specifici sono aperti per il rimbalzo remoto e le risposte FBL. Non vogliamo inoltrarli da nessuna parte (per prevenire attacchi di backscatter), ma solo elaborare internamente quelle risposte.

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

Puoi vedere che ho impostato due domini di rimbalzo, mentre giocavo con l'utilizzo/non utilizzo della regola di riscrittura mfrom .

Il dominio FBL è solitamente registrato con servizi esterni come Microsoft SNDS; vedi questo articolo per ulteriori informazioni. Per questa demo, i FBL arriveranno dal Bouncy Sink, quindi non è necessario registrarsi.

Ora .. finalmente .. dichiariamo quali domini specifici sono aperti per il rimbalzo remoto e le risposte FBL. Non vogliamo inoltrarli da nessuna parte (per prevenire attacchi di backscatter), ma solo elaborare internamente quelle risposte.

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

Puoi vedere che ho impostato due domini di rimbalzo, mentre giocavo con l'utilizzo/non utilizzo della regola di riscrittura mfrom .

Il dominio FBL è solitamente registrato con servizi esterni come Microsoft SNDS; vedi questo articolo per ulteriori informazioni. Per questa demo, i FBL arriveranno dal Bouncy Sink, quindi non è necessario registrarsi.

Ora .. finalmente .. dichiariamo quali domini specifici sono aperti per il rimbalzo remoto e le risposte FBL. Non vogliamo inoltrarli da nessuna parte (per prevenire attacchi di backscatter), ma solo elaborare internamente quelle risposte.

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

Puoi vedere che ho impostato due domini di rimbalzo, mentre giocavo con l'utilizzo/non utilizzo della regola di riscrittura mfrom .

Il dominio FBL è solitamente registrato con servizi esterni come Microsoft SNDS; vedi questo articolo per ulteriori informazioni. Per questa demo, i FBL arriveranno dal Bouncy Sink, quindi non è necessario registrarsi.

Configura il connettore PowerMTA

La configurazione dei segnali è descritta nella sezione 10.1 del 5.0 User Guide. Qui inizieremo con "Use Case #2", che abilita i segnali per tutto il traffico da questo host PowerMTA e abilita il tracciamento dell'engagement di SparkPost.

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

enable-signals true


Ecco cosa fa ciascun attributo:

api-key

Questo è unico per il tuo account SparkPost, è il valore che hai ottenuto da SparkPost in precedenza.


upload-url

Questo deve corrispondere all'indirizzo del servizio API di SparkPost, che sia negli Stati Uniti o nell'UE. Per ulteriori informazioni, vedere qui. I valori abituali sono:

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

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


log-verbose

Questa direttiva è opzionale e, se abilitata, fornisce un po' più di informazioni nel file pmta.log, che può essere utile durante la configurazione per confermare che tutto funzioni correttamente. Ogni minuto, anche quando non c'è traffico, vedrai:

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


Con traffico, vedrai qualcosa del genere:

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

Questo indica a PowerMTA la soglia di spazio su disco oltre la quale dovrebbe iniziare a eliminare i file di evento JSON SparkPost più vecchi per fare spazio a nuovi file quando lo spazio su disco è in esaurimento.


enable-signals

Questo indica a PowerMTA di caricare nei segnali, in questo caso globalmente per tutto il traffico (maggiori informazioni qui, per v5.0). Puoi essere più selettivo riguardo ai flussi di traffico da caricare se lo desideri.


Puoi anche contrassegnare un particolare traffico PowerMTA per essere segnalato come appartenente a un subaccount di SparkPost – questo è un altro modo per distinguere un particolare flusso di traffico da un altro.


tracciamento dell'engagement, customer-id
La soluzione di Tracciamento dell'Engagement di PowerMTA è impostata per impostazione predefinita sul dominio di tracciamento per il servizio SparkPost ospitato negli Stati Uniti. Devi specificare il tuo ID cliente numerico SparkPost; ecco istruzioni per trovarlo.


tracking-domain

Per gli account SparkPost EU, aggiungi la seguente riga:

tracking-domain pmta.eu.spgo.io # questo è l'endpoint per SparkPost EU


Dominio di tracciamento personalizzato

Se preferisci utilizzare il tuo dominio di tracciamento (questo è migliore dal punto di vista della deliverability), fai quanto segue:

  • Crea un dominio di tracciamento presso il tuo provider DNS creando un record CNAME. Questo sarà solitamente un sottodominio del tuo dominio principale, ad esempio 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

Puoi anche utilizzare domini di tracciamento HTTPS, anche se questo è più complicato (vedi i passaggi di configurazione di SparkPost per i domini di tracciamento HTTPS).

  • Registra il dominio di tracciamento nel tuo account SparkPost e verificalo. Aspetta qualche minuto prima di provare, per consentire alle modifiche DNS di propagarsi attraverso Internet, a seconda del tuo provider DNS.

  • Configura PowerMTA per utilizzare quel dominio invece di quello predefinito, con

tracking-domain tuoDominio.com # Inserisci il tuo dominio qui

Puoi controllare che le tue email consegnate abbiano “pixel di apertura” aggiunti e i link incapsulati, guardando all'interno della mail (in Gmail, usa il menu in alto a destra e scegli “Mostra originale”).

Show original option highlighted


Nota che i pixel di apertura si trovano all'inizio e alla fine dell'HTML nell'email. Ogni link HTML viene anche modificato per avere REF  che punta al dominio di tracciamento.

HTML code highlighted


Questo è tutto ciò di cui hai bisogno per far funzionare i segnali SparkPost con il Tracciamento dell'Engagement integrato di PowerMTA.

Impedire che link specifici nelle tue email HTML vengano tracciati

Puoi impedire a PowerMTA di tracciare link specifici impostando l'attributo personalizzato data-msys-clicktrack  a “0”  :

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

PowerMTA non incapsulerà il link. Rimuoverà anche quell'attributo prima di trasmettere il messaggio al tuo destinatario.

La configurazione dei segnali è descritta nella sezione 10.1 del 5.0 User Guide. Qui inizieremo con "Use Case #2", che abilita i segnali per tutto il traffico da questo host PowerMTA e abilita il tracciamento dell'engagement di SparkPost.

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

enable-signals true


Ecco cosa fa ciascun attributo:

api-key

Questo è unico per il tuo account SparkPost, è il valore che hai ottenuto da SparkPost in precedenza.


upload-url

Questo deve corrispondere all'indirizzo del servizio API di SparkPost, che sia negli Stati Uniti o nell'UE. Per ulteriori informazioni, vedere qui. I valori abituali sono:

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

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


log-verbose

Questa direttiva è opzionale e, se abilitata, fornisce un po' più di informazioni nel file pmta.log, che può essere utile durante la configurazione per confermare che tutto funzioni correttamente. Ogni minuto, anche quando non c'è traffico, vedrai:

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


Con traffico, vedrai qualcosa del genere:

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

Questo indica a PowerMTA la soglia di spazio su disco oltre la quale dovrebbe iniziare a eliminare i file di evento JSON SparkPost più vecchi per fare spazio a nuovi file quando lo spazio su disco è in esaurimento.


enable-signals

Questo indica a PowerMTA di caricare nei segnali, in questo caso globalmente per tutto il traffico (maggiori informazioni qui, per v5.0). Puoi essere più selettivo riguardo ai flussi di traffico da caricare se lo desideri.


Puoi anche contrassegnare un particolare traffico PowerMTA per essere segnalato come appartenente a un subaccount di SparkPost – questo è un altro modo per distinguere un particolare flusso di traffico da un altro.


tracciamento dell'engagement, customer-id
La soluzione di Tracciamento dell'Engagement di PowerMTA è impostata per impostazione predefinita sul dominio di tracciamento per il servizio SparkPost ospitato negli Stati Uniti. Devi specificare il tuo ID cliente numerico SparkPost; ecco istruzioni per trovarlo.


tracking-domain

Per gli account SparkPost EU, aggiungi la seguente riga:

tracking-domain pmta.eu.spgo.io # questo è l'endpoint per SparkPost EU


Dominio di tracciamento personalizzato

Se preferisci utilizzare il tuo dominio di tracciamento (questo è migliore dal punto di vista della deliverability), fai quanto segue:

  • Crea un dominio di tracciamento presso il tuo provider DNS creando un record CNAME. Questo sarà solitamente un sottodominio del tuo dominio principale, ad esempio 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

Puoi anche utilizzare domini di tracciamento HTTPS, anche se questo è più complicato (vedi i passaggi di configurazione di SparkPost per i domini di tracciamento HTTPS).

  • Registra il dominio di tracciamento nel tuo account SparkPost e verificalo. Aspetta qualche minuto prima di provare, per consentire alle modifiche DNS di propagarsi attraverso Internet, a seconda del tuo provider DNS.

  • Configura PowerMTA per utilizzare quel dominio invece di quello predefinito, con

tracking-domain tuoDominio.com # Inserisci il tuo dominio qui

Puoi controllare che le tue email consegnate abbiano “pixel di apertura” aggiunti e i link incapsulati, guardando all'interno della mail (in Gmail, usa il menu in alto a destra e scegli “Mostra originale”).

Show original option highlighted


Nota che i pixel di apertura si trovano all'inizio e alla fine dell'HTML nell'email. Ogni link HTML viene anche modificato per avere REF  che punta al dominio di tracciamento.

HTML code highlighted


Questo è tutto ciò di cui hai bisogno per far funzionare i segnali SparkPost con il Tracciamento dell'Engagement integrato di PowerMTA.

Impedire che link specifici nelle tue email HTML vengano tracciati

Puoi impedire a PowerMTA di tracciare link specifici impostando l'attributo personalizzato data-msys-clicktrack  a “0”  :

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

PowerMTA non incapsulerà il link. Rimuoverà anche quell'attributo prima di trasmettere il messaggio al tuo destinatario.

La configurazione dei segnali è descritta nella sezione 10.1 del 5.0 User Guide. Qui inizieremo con "Use Case #2", che abilita i segnali per tutto il traffico da questo host PowerMTA e abilita il tracciamento dell'engagement di SparkPost.

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

enable-signals true


Ecco cosa fa ciascun attributo:

api-key

Questo è unico per il tuo account SparkPost, è il valore che hai ottenuto da SparkPost in precedenza.


upload-url

Questo deve corrispondere all'indirizzo del servizio API di SparkPost, che sia negli Stati Uniti o nell'UE. Per ulteriori informazioni, vedere qui. I valori abituali sono:

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

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


log-verbose

Questa direttiva è opzionale e, se abilitata, fornisce un po' più di informazioni nel file pmta.log, che può essere utile durante la configurazione per confermare che tutto funzioni correttamente. Ogni minuto, anche quando non c'è traffico, vedrai:

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


Con traffico, vedrai qualcosa del genere:

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

Questo indica a PowerMTA la soglia di spazio su disco oltre la quale dovrebbe iniziare a eliminare i file di evento JSON SparkPost più vecchi per fare spazio a nuovi file quando lo spazio su disco è in esaurimento.


enable-signals

Questo indica a PowerMTA di caricare nei segnali, in questo caso globalmente per tutto il traffico (maggiori informazioni qui, per v5.0). Puoi essere più selettivo riguardo ai flussi di traffico da caricare se lo desideri.


Puoi anche contrassegnare un particolare traffico PowerMTA per essere segnalato come appartenente a un subaccount di SparkPost – questo è un altro modo per distinguere un particolare flusso di traffico da un altro.


tracciamento dell'engagement, customer-id
La soluzione di Tracciamento dell'Engagement di PowerMTA è impostata per impostazione predefinita sul dominio di tracciamento per il servizio SparkPost ospitato negli Stati Uniti. Devi specificare il tuo ID cliente numerico SparkPost; ecco istruzioni per trovarlo.


tracking-domain

Per gli account SparkPost EU, aggiungi la seguente riga:

tracking-domain pmta.eu.spgo.io # questo è l'endpoint per SparkPost EU


Dominio di tracciamento personalizzato

Se preferisci utilizzare il tuo dominio di tracciamento (questo è migliore dal punto di vista della deliverability), fai quanto segue:

  • Crea un dominio di tracciamento presso il tuo provider DNS creando un record CNAME. Questo sarà solitamente un sottodominio del tuo dominio principale, ad esempio 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

Puoi anche utilizzare domini di tracciamento HTTPS, anche se questo è più complicato (vedi i passaggi di configurazione di SparkPost per i domini di tracciamento HTTPS).

  • Registra il dominio di tracciamento nel tuo account SparkPost e verificalo. Aspetta qualche minuto prima di provare, per consentire alle modifiche DNS di propagarsi attraverso Internet, a seconda del tuo provider DNS.

  • Configura PowerMTA per utilizzare quel dominio invece di quello predefinito, con

tracking-domain tuoDominio.com # Inserisci il tuo dominio qui

Puoi controllare che le tue email consegnate abbiano “pixel di apertura” aggiunti e i link incapsulati, guardando all'interno della mail (in Gmail, usa il menu in alto a destra e scegli “Mostra originale”).

Show original option highlighted


Nota che i pixel di apertura si trovano all'inizio e alla fine dell'HTML nell'email. Ogni link HTML viene anche modificato per avere REF  che punta al dominio di tracciamento.

HTML code highlighted


Questo è tutto ciò di cui hai bisogno per far funzionare i segnali SparkPost con il Tracciamento dell'Engagement integrato di PowerMTA.

Impedire che link specifici nelle tue email HTML vengano tracciati

Puoi impedire a PowerMTA di tracciare link specifici impostando l'attributo personalizzato data-msys-clicktrack  a “0”  :

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

PowerMTA non incapsulerà il link. Rimuoverà anche quell'attributo prima di trasmettere il messaggio al tuo destinatario.

Seleziona quali stream di traffico PowerMTA segnalare a Signals

È possibile selezionare i segnali da attivare:

  • Globalmente (questo è ciò che abbiamo usato nell'esempio sopra)

  • Per alcuni Virtual MTA e non altri

  • Per alcuni pool di Virtual MTA e non altri

  • Per indirizzi “Mittente” o “Da” specifici inoltrati da PowerMTA, in combinazione con le selezioni di Virtual MTA / pool di Virtual MTA

Ambito

Cosa viene segnalato ai segnali

Quando usarlo

Globale

Tutto il traffico dall'host PowerMTA

Distribuzioni semplici in cui tutto il traffico dovrebbe alimentare i segnali di SparkPost.

VirtualMTA

Traffico solo dai VirtualMTA selezionati

Quando si desidera viste di report separate per diversi IP o tipi di traffico.

Pool VirtualMTA

Traffico dai pool di VirtualMTA selezionati

Quando si raggruppano gli IP in pool e si desidera reportistica a livello di pool.

Mittente / dominio Da

Messaggi da mittenti specifici o domini Da

Quando hai bisogno di reportistica per cliente o per marchio all'interno della stessa infrastruttura.

Questa configurazione è molto potente ed è illustrata attraverso una serie di casi d'uso esempio (v5.0) nel Manuale dell'Utente.

È possibile selezionare i segnali da attivare:

  • Globalmente (questo è ciò che abbiamo usato nell'esempio sopra)

  • Per alcuni Virtual MTA e non altri

  • Per alcuni pool di Virtual MTA e non altri

  • Per indirizzi “Mittente” o “Da” specifici inoltrati da PowerMTA, in combinazione con le selezioni di Virtual MTA / pool di Virtual MTA

Ambito

Cosa viene segnalato ai segnali

Quando usarlo

Globale

Tutto il traffico dall'host PowerMTA

Distribuzioni semplici in cui tutto il traffico dovrebbe alimentare i segnali di SparkPost.

VirtualMTA

Traffico solo dai VirtualMTA selezionati

Quando si desidera viste di report separate per diversi IP o tipi di traffico.

Pool VirtualMTA

Traffico dai pool di VirtualMTA selezionati

Quando si raggruppano gli IP in pool e si desidera reportistica a livello di pool.

Mittente / dominio Da

Messaggi da mittenti specifici o domini Da

Quando hai bisogno di reportistica per cliente o per marchio all'interno della stessa infrastruttura.

Questa configurazione è molto potente ed è illustrata attraverso una serie di casi d'uso esempio (v5.0) nel Manuale dell'Utente.

È possibile selezionare i segnali da attivare:

  • Globalmente (questo è ciò che abbiamo usato nell'esempio sopra)

  • Per alcuni Virtual MTA e non altri

  • Per alcuni pool di Virtual MTA e non altri

  • Per indirizzi “Mittente” o “Da” specifici inoltrati da PowerMTA, in combinazione con le selezioni di Virtual MTA / pool di Virtual MTA

Ambito

Cosa viene segnalato ai segnali

Quando usarlo

Globale

Tutto il traffico dall'host PowerMTA

Distribuzioni semplici in cui tutto il traffico dovrebbe alimentare i segnali di SparkPost.

VirtualMTA

Traffico solo dai VirtualMTA selezionati

Quando si desidera viste di report separate per diversi IP o tipi di traffico.

Pool VirtualMTA

Traffico dai pool di VirtualMTA selezionati

Quando si raggruppano gli IP in pool e si desidera reportistica a livello di pool.

Mittente / dominio Da

Messaggi da mittenti specifici o domini Da

Quando hai bisogno di reportistica per cliente o per marchio all'interno della stessa infrastruttura.

Questa configurazione è molto potente ed è illustrata attraverso una serie di casi d'uso esempio (v5.0) nel Manuale dell'Utente.

Testare che i tuoi eventi stiano raggiungendo Signals

Ecco una vista di SparkPost Signals, collegata a PowerMTA. Puoi vedere che il punteggio di salute varia.

Health score dashboard


I nomi delle campagne sono disponibili come fattori di reporting, insieme a Subaccount, IP Pool, Mailbox Provider e Dominio di Invio.

Oltre a controllare i registri di PowerMTA, puoi verificare che i dati degli eventi stiano arrivando a SparkPost guardando la schermata di integrazione di Signals.

Signals integration screen

Nella schermata di ricerca eventi di SparkPost, dovresti vedere gli eventi apparire entro pochi minuti. Questi includeranno eventi di Iniezione e Consegna, oltre a Rimbalzo, e potenzialmente eventi di Rimbalzo Fuori Banda e Reclamo di Spam, se hai già configurato PowerMTA per gestirli per te.
Se hai abilitato il tracciamento dell'engagement, vedrai anche eventi di apertura , apertura_iniziale , e clic .

Ecco una vista di SparkPost Signals, collegata a PowerMTA. Puoi vedere che il punteggio di salute varia.

Health score dashboard


I nomi delle campagne sono disponibili come fattori di reporting, insieme a Subaccount, IP Pool, Mailbox Provider e Dominio di Invio.

Oltre a controllare i registri di PowerMTA, puoi verificare che i dati degli eventi stiano arrivando a SparkPost guardando la schermata di integrazione di Signals.

Signals integration screen

Nella schermata di ricerca eventi di SparkPost, dovresti vedere gli eventi apparire entro pochi minuti. Questi includeranno eventi di Iniezione e Consegna, oltre a Rimbalzo, e potenzialmente eventi di Rimbalzo Fuori Banda e Reclamo di Spam, se hai già configurato PowerMTA per gestirli per te.
Se hai abilitato il tracciamento dell'engagement, vedrai anche eventi di apertura , apertura_iniziale , e clic .

Ecco una vista di SparkPost Signals, collegata a PowerMTA. Puoi vedere che il punteggio di salute varia.

Health score dashboard


I nomi delle campagne sono disponibili come fattori di reporting, insieme a Subaccount, IP Pool, Mailbox Provider e Dominio di Invio.

Oltre a controllare i registri di PowerMTA, puoi verificare che i dati degli eventi stiano arrivando a SparkPost guardando la schermata di integrazione di Signals.

Signals integration screen

Nella schermata di ricerca eventi di SparkPost, dovresti vedere gli eventi apparire entro pochi minuti. Questi includeranno eventi di Iniezione e Consegna, oltre a Rimbalzo, e potenzialmente eventi di Rimbalzo Fuori Banda e Reclamo di Spam, se hai già configurato PowerMTA per gestirli per te.
Se hai abilitato il tracciamento dell'engagement, vedrai anche eventi di apertura , apertura_iniziale , e clic .

Usare nomi significativi che si vedono bene nei rapporti

Impostare i nomi dei Pool VirtualMTA e dei nomi dei Job di PowerMTA in modo che siano significativi e leggibili dagli esseri umani vale sicuramente la pena farlo. Questi appaiono direttamente nei tuoi attributi Signals di SparkPost e nel report di riepilogo.

Come accennato in precedenza, non è necessario creare questi pool nel tuo account SparkPost. SparkPost li recupera dalla configurazione di PowerMTA.

Ecco come i termini di configurazione di PowerMTA si traducono in termini di SparkPost.

Termine PowerMTA Termine Report / Signals di SparkPostDominio del destinatario

(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


Tuttavia, PowerMTA può contrassegnare virtualMTAs, Pool virtual MTA o domini Sender-o-From con un ID di subaccount per scopi di reportistica di SparkPost.

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

Impostare almeno un indirizzo smtp-source-host  consente anche a SparkPost di identificare correttamente l'indirizzo IP di invio in modo che venga visualizzato negli eventi di Iniezione e Consegna, così come nella vista del report di riepilogo.

I nomi dei Job sono impostati in PowerMTA tramite un'intestazione nel messaggio iniettato. Oltre a consentire il controllo individuale dei job (pausa/ripresa ecc.) che è utile di per sé, PowerMTA trasmette i nomi a SparkPost Signals reporting come “ID campagna”. Vedi Guida per l'utente v5.0 sezione 12.8 “Monitorare una campagna in PowerMTA con un JobID”.

Ci sono alcune cose da tenere a mente riguardo alla denominazione dei job. Anche se SparkPost (con formato JSON e escape JSON) consente caratteri come <SPACE>  nei nomi delle campagne, le intestazioni delle email sono più restrittive. I caratteri validi consentiti nell'intestazione X-Job  sono:

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

In altre parole, i caratteri non consentiti includono <SPACE>, virgolette doppie “  e il backtick `. Se sei abituato a lavorare con i nomi X-Job, questo non ti sorprenderà, e i tuoi nomi di ID campagna funzioneranno “senza problemi” nella reportistica di SparkPost. Se, come me, hai imparato SparkPost per primo, potresti voler uno strumento per garantire che i tuoi valori X-Job siano sicuri; vedi la funzionalità bonus alla fine di questo articolo.

Termine PowerMTA

Termine Signals di SparkPost

VirtualMTA

Pool IP

Pool VirtualMTA

Pool IP (raggruppato)

Nome Job (intestazione X-Job)

ID Campagna

smtp-source-host

Indirizzo IP di invio

Dominio di rimbalzo

Identificazione del dominio di invio

Dominio Mittente/Da

Reportistica a livello di subaccount / dominio

Impostare i nomi dei Pool VirtualMTA e dei nomi dei Job di PowerMTA in modo che siano significativi e leggibili dagli esseri umani vale sicuramente la pena farlo. Questi appaiono direttamente nei tuoi attributi Signals di SparkPost e nel report di riepilogo.

Come accennato in precedenza, non è necessario creare questi pool nel tuo account SparkPost. SparkPost li recupera dalla configurazione di PowerMTA.

Ecco come i termini di configurazione di PowerMTA si traducono in termini di SparkPost.

Termine PowerMTA Termine Report / Signals di SparkPostDominio del destinatario

(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


Tuttavia, PowerMTA può contrassegnare virtualMTAs, Pool virtual MTA o domini Sender-o-From con un ID di subaccount per scopi di reportistica di SparkPost.

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

Impostare almeno un indirizzo smtp-source-host  consente anche a SparkPost di identificare correttamente l'indirizzo IP di invio in modo che venga visualizzato negli eventi di Iniezione e Consegna, così come nella vista del report di riepilogo.

I nomi dei Job sono impostati in PowerMTA tramite un'intestazione nel messaggio iniettato. Oltre a consentire il controllo individuale dei job (pausa/ripresa ecc.) che è utile di per sé, PowerMTA trasmette i nomi a SparkPost Signals reporting come “ID campagna”. Vedi Guida per l'utente v5.0 sezione 12.8 “Monitorare una campagna in PowerMTA con un JobID”.

Ci sono alcune cose da tenere a mente riguardo alla denominazione dei job. Anche se SparkPost (con formato JSON e escape JSON) consente caratteri come <SPACE>  nei nomi delle campagne, le intestazioni delle email sono più restrittive. I caratteri validi consentiti nell'intestazione X-Job  sono:

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

In altre parole, i caratteri non consentiti includono <SPACE>, virgolette doppie “  e il backtick `. Se sei abituato a lavorare con i nomi X-Job, questo non ti sorprenderà, e i tuoi nomi di ID campagna funzioneranno “senza problemi” nella reportistica di SparkPost. Se, come me, hai imparato SparkPost per primo, potresti voler uno strumento per garantire che i tuoi valori X-Job siano sicuri; vedi la funzionalità bonus alla fine di questo articolo.

Termine PowerMTA

Termine Signals di SparkPost

VirtualMTA

Pool IP

Pool VirtualMTA

Pool IP (raggruppato)

Nome Job (intestazione X-Job)

ID Campagna

smtp-source-host

Indirizzo IP di invio

Dominio di rimbalzo

Identificazione del dominio di invio

Dominio Mittente/Da

Reportistica a livello di subaccount / dominio

Impostare i nomi dei Pool VirtualMTA e dei nomi dei Job di PowerMTA in modo che siano significativi e leggibili dagli esseri umani vale sicuramente la pena farlo. Questi appaiono direttamente nei tuoi attributi Signals di SparkPost e nel report di riepilogo.

Come accennato in precedenza, non è necessario creare questi pool nel tuo account SparkPost. SparkPost li recupera dalla configurazione di PowerMTA.

Ecco come i termini di configurazione di PowerMTA si traducono in termini di SparkPost.

Termine PowerMTA Termine Report / Signals di SparkPostDominio del destinatario

(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


Tuttavia, PowerMTA può contrassegnare virtualMTAs, Pool virtual MTA o domini Sender-o-From con un ID di subaccount per scopi di reportistica di SparkPost.

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

Impostare almeno un indirizzo smtp-source-host  consente anche a SparkPost di identificare correttamente l'indirizzo IP di invio in modo che venga visualizzato negli eventi di Iniezione e Consegna, così come nella vista del report di riepilogo.

I nomi dei Job sono impostati in PowerMTA tramite un'intestazione nel messaggio iniettato. Oltre a consentire il controllo individuale dei job (pausa/ripresa ecc.) che è utile di per sé, PowerMTA trasmette i nomi a SparkPost Signals reporting come “ID campagna”. Vedi Guida per l'utente v5.0 sezione 12.8 “Monitorare una campagna in PowerMTA con un JobID”.

Ci sono alcune cose da tenere a mente riguardo alla denominazione dei job. Anche se SparkPost (con formato JSON e escape JSON) consente caratteri come <SPACE>  nei nomi delle campagne, le intestazioni delle email sono più restrittive. I caratteri validi consentiti nell'intestazione X-Job  sono:

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

In altre parole, i caratteri non consentiti includono <SPACE>, virgolette doppie “  e il backtick `. Se sei abituato a lavorare con i nomi X-Job, questo non ti sorprenderà, e i tuoi nomi di ID campagna funzioneranno “senza problemi” nella reportistica di SparkPost. Se, come me, hai imparato SparkPost per primo, potresti voler uno strumento per garantire che i tuoi valori X-Job siano sicuri; vedi la funzionalità bonus alla fine di questo articolo.

Termine PowerMTA

Termine Signals di SparkPost

VirtualMTA

Pool IP

Pool VirtualMTA

Pool IP (raggruppato)

Nome Job (intestazione X-Job)

ID Campagna

smtp-source-host

Indirizzo IP di invio

Dominio di rimbalzo

Identificazione del dominio di invio

Dominio Mittente/Da

Reportistica a livello di subaccount / dominio

Eventi FBL (Denunce di Spam) e rimbalzi remoti (fuori banda)

PowerMTA può ricevere e elaborare eventi FBL (conosciuti in SparkPost come eventi di reclamo per spam) e rimbalzi remoti (conosciuti in SparkPost come rimbalzi fuori banda, poiché la risposta arriva dopo un certo tempo, piuttosto che durante la conversazione SMTP).

Ci sono articoli nel Port25 Support Forum su come impostare il Processore di Rimbalzo e il Processore FBL. Se sei un utente esistente di PowerMTA, probabilmente li hai già.

Ecco la configurazione che ho fatto per una demo, basata su questi articoli e orientata all'hosting di PowerMTA su Amazon EC2.

Se sei familiare con la configurazione di PowerMTA in quest'area, puoi saltare questa parte, fino alla prossima linea orizzontale.

PowerMTA può ricevere e elaborare eventi FBL (conosciuti in SparkPost come eventi di reclamo per spam) e rimbalzi remoti (conosciuti in SparkPost come rimbalzi fuori banda, poiché la risposta arriva dopo un certo tempo, piuttosto che durante la conversazione SMTP).

Ci sono articoli nel Port25 Support Forum su come impostare il Processore di Rimbalzo e il Processore FBL. Se sei un utente esistente di PowerMTA, probabilmente li hai già.

Ecco la configurazione che ho fatto per una demo, basata su questi articoli e orientata all'hosting di PowerMTA su Amazon EC2.

Se sei familiare con la configurazione di PowerMTA in quest'area, puoi saltare questa parte, fino alla prossima linea orizzontale.

PowerMTA può ricevere e elaborare eventi FBL (conosciuti in SparkPost come eventi di reclamo per spam) e rimbalzi remoti (conosciuti in SparkPost come rimbalzi fuori banda, poiché la risposta arriva dopo un certo tempo, piuttosto che durante la conversazione SMTP).

Ci sono articoli nel Port25 Support Forum su come impostare il Processore di Rimbalzo e il Processore FBL. Se sei un utente esistente di PowerMTA, probabilmente li hai già.

Ecco la configurazione che ho fatto per una demo, basata su questi articoli e orientata all'hosting di PowerMTA su Amazon EC2.

Se sei familiare con la configurazione di PowerMTA in quest'area, puoi saltare questa parte, fino alla prossima linea orizzontale.

Configurazione dell'iniezione

Utilizzeremo la porta 587 per i messaggi iniettati, che arriveranno su Internet pubblico da un altro host. Dobbiamo fermare i soggetti malintenzionati dallo scoprire e abusare di questo servizio, quindi applichiamo l'autenticazione tramite nome utente/password e TLS opzionale, simile agli endpoint di iniezione SMTP SparkPost.

Vogliamo essere in grado di inviare messaggi da fonti adeguatamente autenticate a qualsiasi destinazione. Vogliamo anche un listener separato sulla porta 25 per i rapporti FBL e le risposte di rimbalzo remoto che non richiedono autenticazione.

# 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

Nelle seguenti dichiarazioni <source>  stiamo utilizzando l'autenticazione tramite nome utente/password e TLS opzionale per difenderci contro l'iniezione di messaggi dannosi. Impostiamo anche limiti di velocità sulle connessioni che tentano password errate.

La tua configurazione potrebbe essere diversa; ad esempio, se hai una rete privata tra l'iniettore e PowerMTA, non avrai bisogno dell'autenticazione della password.

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

La dichiarazione <source {auth}> (vedi qui. v5.0) si applica una volta che l'autenticazione è stata superata. Qui, consente il relaying, imposta il gruppo MTA virtuale predefinito da utilizzare e aggiunge l'intestazione X-Job (che verrà segnalata da SparkPost Signals come campaign_id).

La rewrite-list mappa i messaggi iniettati per utilizzare un dominio MAIL FROM specifico (noto anche come dominio di rimbalzo o 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>


Quindi impostiamo la nostra configurazione TLS e nome utente/password SMTP, secondo le raccomandazioni attuali.

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


Possiamo controllare che la TLS v1.0 (insicura, deprecata) non venga accettata utilizzando il mio strumento di test SMTP preferito, swaks.

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


Vediamo:

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


Allo stesso modo per –tls-protocol tlsv1_1.

Applichiamo anche la firma DKIM sui nostri messaggi in uscita, poiché è una buona pratica (ho seguito queste istruzioni per impostare la chiave).

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

Utilizzeremo la porta 587 per i messaggi iniettati, che arriveranno su Internet pubblico da un altro host. Dobbiamo fermare i soggetti malintenzionati dallo scoprire e abusare di questo servizio, quindi applichiamo l'autenticazione tramite nome utente/password e TLS opzionale, simile agli endpoint di iniezione SMTP SparkPost.

Vogliamo essere in grado di inviare messaggi da fonti adeguatamente autenticate a qualsiasi destinazione. Vogliamo anche un listener separato sulla porta 25 per i rapporti FBL e le risposte di rimbalzo remoto che non richiedono autenticazione.

# 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

Nelle seguenti dichiarazioni <source>  stiamo utilizzando l'autenticazione tramite nome utente/password e TLS opzionale per difenderci contro l'iniezione di messaggi dannosi. Impostiamo anche limiti di velocità sulle connessioni che tentano password errate.

La tua configurazione potrebbe essere diversa; ad esempio, se hai una rete privata tra l'iniettore e PowerMTA, non avrai bisogno dell'autenticazione della password.

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

La dichiarazione <source {auth}> (vedi qui. v5.0) si applica una volta che l'autenticazione è stata superata. Qui, consente il relaying, imposta il gruppo MTA virtuale predefinito da utilizzare e aggiunge l'intestazione X-Job (che verrà segnalata da SparkPost Signals come campaign_id).

La rewrite-list mappa i messaggi iniettati per utilizzare un dominio MAIL FROM specifico (noto anche come dominio di rimbalzo o 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>


Quindi impostiamo la nostra configurazione TLS e nome utente/password SMTP, secondo le raccomandazioni attuali.

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


Possiamo controllare che la TLS v1.0 (insicura, deprecata) non venga accettata utilizzando il mio strumento di test SMTP preferito, swaks.

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


Vediamo:

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


Allo stesso modo per –tls-protocol tlsv1_1.

Applichiamo anche la firma DKIM sui nostri messaggi in uscita, poiché è una buona pratica (ho seguito queste istruzioni per impostare la chiave).

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

Utilizzeremo la porta 587 per i messaggi iniettati, che arriveranno su Internet pubblico da un altro host. Dobbiamo fermare i soggetti malintenzionati dallo scoprire e abusare di questo servizio, quindi applichiamo l'autenticazione tramite nome utente/password e TLS opzionale, simile agli endpoint di iniezione SMTP SparkPost.

Vogliamo essere in grado di inviare messaggi da fonti adeguatamente autenticate a qualsiasi destinazione. Vogliamo anche un listener separato sulla porta 25 per i rapporti FBL e le risposte di rimbalzo remoto che non richiedono autenticazione.

# 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

Nelle seguenti dichiarazioni <source>  stiamo utilizzando l'autenticazione tramite nome utente/password e TLS opzionale per difenderci contro l'iniezione di messaggi dannosi. Impostiamo anche limiti di velocità sulle connessioni che tentano password errate.

La tua configurazione potrebbe essere diversa; ad esempio, se hai una rete privata tra l'iniettore e PowerMTA, non avrai bisogno dell'autenticazione della password.

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

La dichiarazione <source {auth}> (vedi qui. v5.0) si applica una volta che l'autenticazione è stata superata. Qui, consente il relaying, imposta il gruppo MTA virtuale predefinito da utilizzare e aggiunge l'intestazione X-Job (che verrà segnalata da SparkPost Signals come campaign_id).

La rewrite-list mappa i messaggi iniettati per utilizzare un dominio MAIL FROM specifico (noto anche come dominio di rimbalzo o 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>


Quindi impostiamo la nostra configurazione TLS e nome utente/password SMTP, secondo le raccomandazioni attuali.

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


Possiamo controllare che la TLS v1.0 (insicura, deprecata) non venga accettata utilizzando il mio strumento di test SMTP preferito, swaks.

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


Vediamo:

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


Allo stesso modo per –tls-protocol tlsv1_1.

Applichiamo anche la firma DKIM sui nostri messaggi in uscita, poiché è una buona pratica (ho seguito queste istruzioni per impostare la chiave).

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

Impostazione e denominazione di VirtualMTA

I VirtualMTAs di PowerMTA (e i pool VirtualMTA) sono funzionalità potenti per gestire i flussi di messaggi, e le funzionalità di reportistica di PowerMTA / SparkPost Signals funzionano meglio con questi attivi.

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


Il virtual-mta-pool impostazione è riportata in SparkPost come “IP Pool” ed è disponibile come una faccetta di reportistica SparkPost Signals (il menu a discesa sotto i grafici).

Health score dashboard


Il Report di Sintesi mostra anche IP Pool come una faccetta di reportistica “Group By”.

Summary report dashboard


Come accennato in precedenza in questo articolo, impostare almeno un indirizzo smtp-source-host consente anche a SparkPost di identificare correttamente l'indirizzo IP di invio, in modo che venga visualizzato sugli eventi di Iniezione e Consegna, e nel Report di Sintesi:

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

Questo è tutto ciò di cui hai bisogno per far funzionare un'integrazione di base tra PowerMTA e SparkPost Signals. Troverai il file di configurazione completo qui.

Prima di andare, ecco la funzionalità bonus che ho menzionato.

I VirtualMTAs di PowerMTA (e i pool VirtualMTA) sono funzionalità potenti per gestire i flussi di messaggi, e le funzionalità di reportistica di PowerMTA / SparkPost Signals funzionano meglio con questi attivi.

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


Il virtual-mta-pool impostazione è riportata in SparkPost come “IP Pool” ed è disponibile come una faccetta di reportistica SparkPost Signals (il menu a discesa sotto i grafici).

Health score dashboard


Il Report di Sintesi mostra anche IP Pool come una faccetta di reportistica “Group By”.

Summary report dashboard


Come accennato in precedenza in questo articolo, impostare almeno un indirizzo smtp-source-host consente anche a SparkPost di identificare correttamente l'indirizzo IP di invio, in modo che venga visualizzato sugli eventi di Iniezione e Consegna, e nel Report di Sintesi:

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

Questo è tutto ciò di cui hai bisogno per far funzionare un'integrazione di base tra PowerMTA e SparkPost Signals. Troverai il file di configurazione completo qui.

Prima di andare, ecco la funzionalità bonus che ho menzionato.

I VirtualMTAs di PowerMTA (e i pool VirtualMTA) sono funzionalità potenti per gestire i flussi di messaggi, e le funzionalità di reportistica di PowerMTA / SparkPost Signals funzionano meglio con questi attivi.

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


Il virtual-mta-pool impostazione è riportata in SparkPost come “IP Pool” ed è disponibile come una faccetta di reportistica SparkPost Signals (il menu a discesa sotto i grafici).

Health score dashboard


Il Report di Sintesi mostra anche IP Pool come una faccetta di reportistica “Group By”.

Summary report dashboard


Come accennato in precedenza in questo articolo, impostare almeno un indirizzo smtp-source-host consente anche a SparkPost di identificare correttamente l'indirizzo IP di invio, in modo che venga visualizzato sugli eventi di Iniezione e Consegna, e nel Report di Sintesi:

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

Questo è tutto ciò di cui hai bisogno per far funzionare un'integrazione di base tra PowerMTA e SparkPost Signals. Troverai il file di configurazione completo qui.

Prima di andare, ecco la funzionalità bonus che ho menzionato.

Funzione bonus: controllo/filtraggio del nome X-Job

Per garantire che qualsiasi stringa di caratteri sia sicura da utilizzare come nome di un PowerMTA X-Job , ecco una semplice funzione Python per mappare qualsiasi carattere non sicuro su un underscore “_”

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)

Questo utilizza espressioni regolari Python in un modo specifico. Dichiara l'insieme dei caratteri non consentiti utilizzando l'operatore “complemento dell'insieme” ^ anziché elencare tutti i caratteri consentiti. Ciò significa che catturiamo (e rendiamo sicuri) caratteri oltre il consueto insieme a 7 bit. Possiamo dimostrarlo utilizzando questo frammento di test:

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

Restituisce

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

Puoi vedere che <SPACE>, le virgolette doppie “, e il backtick `, così come tutti i caratteri oltre ~ vengono mappati a un underscore.

Per garantire che qualsiasi stringa di caratteri sia sicura da utilizzare come nome di un PowerMTA X-Job , ecco una semplice funzione Python per mappare qualsiasi carattere non sicuro su un underscore “_”

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)

Questo utilizza espressioni regolari Python in un modo specifico. Dichiara l'insieme dei caratteri non consentiti utilizzando l'operatore “complemento dell'insieme” ^ anziché elencare tutti i caratteri consentiti. Ciò significa che catturiamo (e rendiamo sicuri) caratteri oltre il consueto insieme a 7 bit. Possiamo dimostrarlo utilizzando questo frammento di test:

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

Restituisce

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

Puoi vedere che <SPACE>, le virgolette doppie “, e il backtick `, così come tutti i caratteri oltre ~ vengono mappati a un underscore.

Per garantire che qualsiasi stringa di caratteri sia sicura da utilizzare come nome di un PowerMTA X-Job , ecco una semplice funzione Python per mappare qualsiasi carattere non sicuro su un underscore “_”

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)

Questo utilizza espressioni regolari Python in un modo specifico. Dichiara l'insieme dei caratteri non consentiti utilizzando l'operatore “complemento dell'insieme” ^ anziché elencare tutti i caratteri consentiti. Ciò significa che catturiamo (e rendiamo sicuri) caratteri oltre il consueto insieme a 7 bit. Possiamo dimostrarlo utilizzando questo frammento di test:

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

Restituisce

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

Puoi vedere che <SPACE>, le virgolette doppie “, e il backtick `, così come tutti i caratteri oltre ~ vengono mappati a un underscore.

Altre notizie

Leggi di più da questa categoria

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

La piattaforma completa nativa dell'IA che si espande con la tua azienda.

© 2025 Uccello

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

La piattaforma completa nativa dell'IA che si espande con la tua azienda.

© 2025 Uccello