Déploiement des Signaux pour On-Premises : Intégration PowerMTA

Oiseau

30 août 2019

Email

1 min read

Déploiement des Signaux pour On-Premises : Intégration PowerMTA

Points Clés

    • Objet : Ce guide explique comment intégrer PowerMTA 5.0+ avec SparkPost Signals pour diffuser les données d'événements et d'engagement (rebonds, ouvertures, clics, plaintes pour spam) des MTAs locaux directement dans la couche analytique de SparkPost.

    • Configuration de base :

      • Ajoutez enable-signals true et définissez votre point de terminaison SparkPost ingest (https://api.sparkpost.com/api/v1/ingest/events ou l'équivalent UE).

      • Utilisez une clé API valide avec l'autorisation « Événements entrants : Écriture ».

      • Spécifiez customer-id et, éventuellement, configurez des domaines de suivi personnalisés pour améliorer la délivrabilité.

    • Configuration du suivi : Le suivi d'engagement de PowerMTA injecte automatiquement des pixels d'ouverture et de clics dans les emails HTML. Vous pouvez désactiver le suivi par lien avec l'attribut data-msys-clicktrack="0".

    • Rapports sélectifs : Les Signaux peuvent être activés globalement ou limités à certains VirtualMTAs, pools ou domaines d'expéditeurs, permettant un contrôle précis des données.

    • Tests & vérification : Utilisez le tableau de bord d'intégration des Signaux et les journaux PowerMTA pour confirmer l'ingestion d'événements et suivre les scores de santé, les rebonds et les métriques d'engagement en temps réel.

    • Optimisation de la délivrabilité :

      • Utilisez des noms significatifs pour VirtualMTA et Job — ceux-ci se mappent directement aux pools IP et aux IDs de campagne dans les rapports SparkPost.

      • Configurez la signature DKIM, l'application TLS, et des règles de relais appropriées pour prévenir les injections non autorisées.

    • Configuration avancée : L'article inclut également des extraits prêts à l'emploi pour la gestion des demandes avec FBL et des rebonds hors bande, l'injection SMTP authentifiée (port 587), et le code Python pour nettoyer les en-têtes X-Job pour compatibilité.

Points forts des Q&A

  • Que fait réellement l'intégration Signals ?

    Il télécharge automatiquement les événements de message de PowerMTA (injection, livraison, rebond, engagement) dans votre compte SparkPost afin que vous puissiez accéder à des tableaux de bord comme le Health Score, les rapports de Délai et la Surveillance des Pièges à Spam.

  • Pourquoi intégrer Signals avec un MTA sur site ?

    De nombreuses entreprises utilisent une infrastructure de messagerie auto-hébergée pour des raisons de conformité mais souhaitent tout de même bénéficier des capacités d'analyse et de suivi de SparkPost. Signals comble cet écart sans migrer la distribution de courrier vers le cloud.

  • Comment puis-je vérifier que les événements sont bien envoyés à SparkPost ?

    Vérifiez les logs de PowerMTA pour Signals: Transferred ... successfully et confirmez les entrées d'événements sous Signals → Events Search dans SparkPost.

  • Puis-je utiliser mon propre domaine de suivi ?

    Oui — configurez un CNAME tel que track.mycompany.com → pmta.spgo.io (US) ou pmta.eu.spgo.io (EU), puis enregistrez-le et vérifiez-le dans SparkPost pour maintenir la cohérence de la marque et de la réputation.

  • Qu'en est-il de la confidentialité des données ou de l'utilisation du disque ?

    La directive min-free-space supprime automatiquement les anciens fichiers d'événements JSON lorsque l'espace disque est insuffisant, empêchant l'accumulation locale de données de télémétrie.

  • Quel est le « bonus feature » à la fin ?

    Un utilitaire regex Python (pmtaSafeJobID) qui garantit que les noms de campagne/d'emploi utilisent uniquement des caractères valides dans le format d'en-tête X-Job de PowerMTA, remplaçant les caractères non sécurisés par des underscores.

Plongeons-nous dans les détails de la configuration de PowerMTA pour SparkPost Signals. Vous allez avoir besoin de :

  • Un hôte pour exécuter la dernière version de PowerMTA – soit une nouvelle, soit une machine existante

  • Un compte SparkPost avec une autorisation de clé API pour « Événements entrants : Écrire » comme décrit ici

Nous configurerons PowerMTA pour transmettre les événements à votre compte SparkPost, puis vous pourrez utiliser les éléments suivants :

Plongeons-nous dans les détails de la configuration de PowerMTA pour SparkPost Signals. Vous allez avoir besoin de :

  • Un hôte pour exécuter la dernière version de PowerMTA – soit une nouvelle, soit une machine existante

  • Un compte SparkPost avec une autorisation de clé API pour « Événements entrants : Écrire » comme décrit ici

Nous configurerons PowerMTA pour transmettre les événements à votre compte SparkPost, puis vous pourrez utiliser les éléments suivants :

Plongeons-nous dans les détails de la configuration de PowerMTA pour SparkPost Signals. Vous allez avoir besoin de :

  • Un hôte pour exécuter la dernière version de PowerMTA – soit une nouvelle, soit une machine existante

  • Un compte SparkPost avec une autorisation de clé API pour « Événements entrants : Écrire » comme décrit ici

Nous configurerons PowerMTA pour transmettre les événements à votre compte SparkPost, puis vous pourrez utiliser les éléments suivants :

Présentation de l'installation et de la configuration

Tout d'abord, installez (ou mettez à niveau) vers PowerMTA 5.0 r4 ou une version ultérieure, en suivant les instructions d'installation habituelles de v5.0 qui sont assez simples. Ensuite, nous parcourrons les étapes suivantes :

  • Configurer le connecteur PowerMTA vers SparkPost Signals

  • Configurer le suivi de l'engagement avec un domaine de suivi personnalisé

  • Sélectionner quels flux de trafic PowerMTA à rapporter à Signals

  • Tester que vos événements atteignent bien Signals

  • Revoir comment utiliser des noms significatifs qui apparaissent bien dans les rapports.

Nous couvrirons également les autres aspects spécifiques de la configuration de PowerMTA utilisés dans notre démo Signals :

  • Événements FBL (réclamations de spam) et rebonds à distance (hors bande)

  • Configuration de l'injection, y compris DKIM

  • Configuration FBL et OOB

  • Configuration et nommage de VirtualMTA (et comment cela apparaît dans vos rapports SparkPost Signals)

Enfin, il y a une "fonctionnalité bonus" avec du code pour garantir que les noms de vos campagnes sont compatibles avec les conventions de nommage PowerMTA X-Job .

Tout d'abord, installez (ou mettez à niveau) vers PowerMTA 5.0 r4 ou une version ultérieure, en suivant les instructions d'installation habituelles de v5.0 qui sont assez simples. Ensuite, nous parcourrons les étapes suivantes :

  • Configurer le connecteur PowerMTA vers SparkPost Signals

  • Configurer le suivi de l'engagement avec un domaine de suivi personnalisé

  • Sélectionner quels flux de trafic PowerMTA à rapporter à Signals

  • Tester que vos événements atteignent bien Signals

  • Revoir comment utiliser des noms significatifs qui apparaissent bien dans les rapports.

Nous couvrirons également les autres aspects spécifiques de la configuration de PowerMTA utilisés dans notre démo Signals :

  • Événements FBL (réclamations de spam) et rebonds à distance (hors bande)

  • Configuration de l'injection, y compris DKIM

  • Configuration FBL et OOB

  • Configuration et nommage de VirtualMTA (et comment cela apparaît dans vos rapports SparkPost Signals)

Enfin, il y a une "fonctionnalité bonus" avec du code pour garantir que les noms de vos campagnes sont compatibles avec les conventions de nommage PowerMTA X-Job .

Tout d'abord, installez (ou mettez à niveau) vers PowerMTA 5.0 r4 ou une version ultérieure, en suivant les instructions d'installation habituelles de v5.0 qui sont assez simples. Ensuite, nous parcourrons les étapes suivantes :

  • Configurer le connecteur PowerMTA vers SparkPost Signals

  • Configurer le suivi de l'engagement avec un domaine de suivi personnalisé

  • Sélectionner quels flux de trafic PowerMTA à rapporter à Signals

  • Tester que vos événements atteignent bien Signals

  • Revoir comment utiliser des noms significatifs qui apparaissent bien dans les rapports.

Nous couvrirons également les autres aspects spécifiques de la configuration de PowerMTA utilisés dans notre démo Signals :

  • Événements FBL (réclamations de spam) et rebonds à distance (hors bande)

  • Configuration de l'injection, y compris DKIM

  • Configuration FBL et OOB

  • Configuration et nommage de VirtualMTA (et comment cela apparaît dans vos rapports SparkPost Signals)

Enfin, il y a une "fonctionnalité bonus" avec du code pour garantir que les noms de vos campagnes sont compatibles avec les conventions de nommage PowerMTA X-Job .

Configuration FBL et OOB

Maintenant ... enfin ... nous déclarons quels domaines spécifiques sont ouverts pour les réponses de rebond à distance et FBL. Nous ne voulons pas les relayer n'importe où (pour éviter les attaques de backscatter), juste traiter ces réponses en interne.

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

Vous pouvez voir que j'ai configuré deux domaines de rebond, car je jouais avec l'utilisation ou non de la règle de réécriture mfrom.

Le domaine FBL est généralement ensuite enregistré auprès de services externes tels que Microsoft SNDS; voir cet article pour plus d'informations. Pour cette démonstration, les FBL viendront de Bouncy Sink, donc pas besoin de s'inscrire.

Maintenant ... enfin ... nous déclarons quels domaines spécifiques sont ouverts pour les réponses de rebond à distance et FBL. Nous ne voulons pas les relayer n'importe où (pour éviter les attaques de backscatter), juste traiter ces réponses en interne.

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

Vous pouvez voir que j'ai configuré deux domaines de rebond, car je jouais avec l'utilisation ou non de la règle de réécriture mfrom.

Le domaine FBL est généralement ensuite enregistré auprès de services externes tels que Microsoft SNDS; voir cet article pour plus d'informations. Pour cette démonstration, les FBL viendront de Bouncy Sink, donc pas besoin de s'inscrire.

Maintenant ... enfin ... nous déclarons quels domaines spécifiques sont ouverts pour les réponses de rebond à distance et FBL. Nous ne voulons pas les relayer n'importe où (pour éviter les attaques de backscatter), juste traiter ces réponses en interne.

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

Vous pouvez voir que j'ai configuré deux domaines de rebond, car je jouais avec l'utilisation ou non de la règle de réécriture mfrom.

Le domaine FBL est généralement ensuite enregistré auprès de services externes tels que Microsoft SNDS; voir cet article pour plus d'informations. Pour cette démonstration, les FBL viendront de Bouncy Sink, donc pas besoin de s'inscrire.

Configurer PowerMTA connector

La configuration des Signaux est décrite dans la section 10.1 du Guide de l'utilisateur 5.0. Ici, nous commencerons par "Use Case #2", qui active les Signaux pour tout le trafic de cet hôte PowerMTA et active le suivi d'engagement 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


Voici ce que fait chaque attribut :

api-key

C'est unique à votre compte SparkPost, c'est la valeur que vous avez obtenue de SparkPost plus tôt.


upload-url

Cela doit correspondre à l'adresse de votre service API SparkPost, qu'il s'agisse des États-Unis ou de l'UE. Pour plus d'informations, voir ici. Les valeurs habituelles sont :

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

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


log-verbose

Cette directive est optionnelle et, lorsqu'elle est activée, fournit un peu plus d'informations dans le fichier pmta.log, ce qui peut être utile lors de la configuration pour confirmer que tout fonctionne correctement. Chaque minute, même lorsqu'il n'y a pas de trafic, vous verrez :

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


Avec du trafic, vous verrez quelque chose comme :

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

Cela indique à PowerMTA le seuil d'espace disque à partir duquel il doit commencer à supprimer les plus anciens fichiers d'événements JSON SparkPost pour faire de la place pour les nouveaux fichiers lorsque l'espace disque est insuffisant.


enable-signals

Cela indique à PowerMTA de télécharger vers des Signaux, dans ce cas globalement pour tout le trafic (plus d'informations ici, pour la v5.0). Vous pouvez être plus sélectif sur les flux de trafic à télécharger si vous le souhaitez.


Vous pouvez également marquer un trafic PowerMTA particulier pour qu'il soit rapporté comme appartenant à un sous-compte SparkPost – c'est une autre façon de distinguer un flux de trafic particulier d'un autre.


engagement-tracking, customer-id
La solution de suivi d'engagement de PowerMTA par défaut est celle du domaine de suivi pour le service hébergé aux États-Unis. Vous spécifiez votre ID client numérique SparkPost ; voici les instructions pour le trouver.


tracking-domain

Pour les comptes SparkPost EU, ajoutez la ligne suivante :

tracking-domain pmta.eu.spgo.io # c'est le point de terminaison pour SparkPost EU


Domaine de suivi personnalisé

Si vous préférez utiliser votre propre domaine de suivi (c'est mieux du point de vue de la délivrabilité), faites ce qui suit :

  • Créez un domaine de suivi avec votre fournisseur de DNS en créant un enregistrement CNAME. Cela sera généralement un sous-domaine de votre domaine de premier niveau, par exemple 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

Vous pouvez également utiliser des domaines de suivi HTTPS, bien que cela soit plus délicat (voir les étapes de configuration SparkPost pour les domaines de suivi HTTPS).

  • Enregistrez le domaine de suivi dans votre compte SparkPost, et vérifiez-le. Attendez quelques minutes avant d'essayer cela, pour permettre à vos modifications DNS de se propager sur Internet, en fonction de votre fournisseur DNS.

  • Configurez PowerMTA pour utiliser ce domaine au lieu du domaine par défaut, avec

tracking-domain yourdomain.com # Mettez votre propre domaine ici

Vous pouvez vérifier que vos e-mails envoyés ont des « pixels ouverts » ajoutés et que les liens sont enveloppés, en regardant les informations internes du courrier (dans Gmail, utilisez le menu en haut à droite et choisissez « Afficher l'original »).

Show original option highlighted


Vous remarquerez les pixels ouverts au début et à la fin du HTML dans l'e-mail. Chaque lien HTML est également modifié pour avoir REF  pointant vers le domaine de suivi.

HTML code highlighted


C'est tout ce dont vous avez besoin pour que SparkPost Signals fonctionne avec le suivi d'engagement intégré de PowerMTA.

Empêcher que des liens spécifiques de votre email html ne soient suivis

Vous pouvez empêcher PowerMTA de suivre des liens spécifiques, en définissant l'attribut personnalisé data-msys-clicktrack  à « 0 »  :

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

PowerMTA n'encadrera pas le lien. Il supprimera également cet attribut avant de transmettre le message à votre destinataire.

La configuration des Signaux est décrite dans la section 10.1 du Guide de l'utilisateur 5.0. Ici, nous commencerons par "Use Case #2", qui active les Signaux pour tout le trafic de cet hôte PowerMTA et active le suivi d'engagement 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


Voici ce que fait chaque attribut :

api-key

C'est unique à votre compte SparkPost, c'est la valeur que vous avez obtenue de SparkPost plus tôt.


upload-url

Cela doit correspondre à l'adresse de votre service API SparkPost, qu'il s'agisse des États-Unis ou de l'UE. Pour plus d'informations, voir ici. Les valeurs habituelles sont :

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

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


log-verbose

Cette directive est optionnelle et, lorsqu'elle est activée, fournit un peu plus d'informations dans le fichier pmta.log, ce qui peut être utile lors de la configuration pour confirmer que tout fonctionne correctement. Chaque minute, même lorsqu'il n'y a pas de trafic, vous verrez :

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


Avec du trafic, vous verrez quelque chose comme :

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

Cela indique à PowerMTA le seuil d'espace disque à partir duquel il doit commencer à supprimer les plus anciens fichiers d'événements JSON SparkPost pour faire de la place pour les nouveaux fichiers lorsque l'espace disque est insuffisant.


enable-signals

Cela indique à PowerMTA de télécharger vers des Signaux, dans ce cas globalement pour tout le trafic (plus d'informations ici, pour la v5.0). Vous pouvez être plus sélectif sur les flux de trafic à télécharger si vous le souhaitez.


Vous pouvez également marquer un trafic PowerMTA particulier pour qu'il soit rapporté comme appartenant à un sous-compte SparkPost – c'est une autre façon de distinguer un flux de trafic particulier d'un autre.


engagement-tracking, customer-id
La solution de suivi d'engagement de PowerMTA par défaut est celle du domaine de suivi pour le service hébergé aux États-Unis. Vous spécifiez votre ID client numérique SparkPost ; voici les instructions pour le trouver.


tracking-domain

Pour les comptes SparkPost EU, ajoutez la ligne suivante :

tracking-domain pmta.eu.spgo.io # c'est le point de terminaison pour SparkPost EU


Domaine de suivi personnalisé

Si vous préférez utiliser votre propre domaine de suivi (c'est mieux du point de vue de la délivrabilité), faites ce qui suit :

  • Créez un domaine de suivi avec votre fournisseur de DNS en créant un enregistrement CNAME. Cela sera généralement un sous-domaine de votre domaine de premier niveau, par exemple 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

Vous pouvez également utiliser des domaines de suivi HTTPS, bien que cela soit plus délicat (voir les étapes de configuration SparkPost pour les domaines de suivi HTTPS).

  • Enregistrez le domaine de suivi dans votre compte SparkPost, et vérifiez-le. Attendez quelques minutes avant d'essayer cela, pour permettre à vos modifications DNS de se propager sur Internet, en fonction de votre fournisseur DNS.

  • Configurez PowerMTA pour utiliser ce domaine au lieu du domaine par défaut, avec

tracking-domain yourdomain.com # Mettez votre propre domaine ici

Vous pouvez vérifier que vos e-mails envoyés ont des « pixels ouverts » ajoutés et que les liens sont enveloppés, en regardant les informations internes du courrier (dans Gmail, utilisez le menu en haut à droite et choisissez « Afficher l'original »).

Show original option highlighted


Vous remarquerez les pixels ouverts au début et à la fin du HTML dans l'e-mail. Chaque lien HTML est également modifié pour avoir REF  pointant vers le domaine de suivi.

HTML code highlighted


C'est tout ce dont vous avez besoin pour que SparkPost Signals fonctionne avec le suivi d'engagement intégré de PowerMTA.

Empêcher que des liens spécifiques de votre email html ne soient suivis

Vous pouvez empêcher PowerMTA de suivre des liens spécifiques, en définissant l'attribut personnalisé data-msys-clicktrack  à « 0 »  :

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

PowerMTA n'encadrera pas le lien. Il supprimera également cet attribut avant de transmettre le message à votre destinataire.

La configuration des Signaux est décrite dans la section 10.1 du Guide de l'utilisateur 5.0. Ici, nous commencerons par "Use Case #2", qui active les Signaux pour tout le trafic de cet hôte PowerMTA et active le suivi d'engagement 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


Voici ce que fait chaque attribut :

api-key

C'est unique à votre compte SparkPost, c'est la valeur que vous avez obtenue de SparkPost plus tôt.


upload-url

Cela doit correspondre à l'adresse de votre service API SparkPost, qu'il s'agisse des États-Unis ou de l'UE. Pour plus d'informations, voir ici. Les valeurs habituelles sont :

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

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


log-verbose

Cette directive est optionnelle et, lorsqu'elle est activée, fournit un peu plus d'informations dans le fichier pmta.log, ce qui peut être utile lors de la configuration pour confirmer que tout fonctionne correctement. Chaque minute, même lorsqu'il n'y a pas de trafic, vous verrez :

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


Avec du trafic, vous verrez quelque chose comme :

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

Cela indique à PowerMTA le seuil d'espace disque à partir duquel il doit commencer à supprimer les plus anciens fichiers d'événements JSON SparkPost pour faire de la place pour les nouveaux fichiers lorsque l'espace disque est insuffisant.


enable-signals

Cela indique à PowerMTA de télécharger vers des Signaux, dans ce cas globalement pour tout le trafic (plus d'informations ici, pour la v5.0). Vous pouvez être plus sélectif sur les flux de trafic à télécharger si vous le souhaitez.


Vous pouvez également marquer un trafic PowerMTA particulier pour qu'il soit rapporté comme appartenant à un sous-compte SparkPost – c'est une autre façon de distinguer un flux de trafic particulier d'un autre.


engagement-tracking, customer-id
La solution de suivi d'engagement de PowerMTA par défaut est celle du domaine de suivi pour le service hébergé aux États-Unis. Vous spécifiez votre ID client numérique SparkPost ; voici les instructions pour le trouver.


tracking-domain

Pour les comptes SparkPost EU, ajoutez la ligne suivante :

tracking-domain pmta.eu.spgo.io # c'est le point de terminaison pour SparkPost EU


Domaine de suivi personnalisé

Si vous préférez utiliser votre propre domaine de suivi (c'est mieux du point de vue de la délivrabilité), faites ce qui suit :

  • Créez un domaine de suivi avec votre fournisseur de DNS en créant un enregistrement CNAME. Cela sera généralement un sous-domaine de votre domaine de premier niveau, par exemple 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

Vous pouvez également utiliser des domaines de suivi HTTPS, bien que cela soit plus délicat (voir les étapes de configuration SparkPost pour les domaines de suivi HTTPS).

  • Enregistrez le domaine de suivi dans votre compte SparkPost, et vérifiez-le. Attendez quelques minutes avant d'essayer cela, pour permettre à vos modifications DNS de se propager sur Internet, en fonction de votre fournisseur DNS.

  • Configurez PowerMTA pour utiliser ce domaine au lieu du domaine par défaut, avec

tracking-domain yourdomain.com # Mettez votre propre domaine ici

Vous pouvez vérifier que vos e-mails envoyés ont des « pixels ouverts » ajoutés et que les liens sont enveloppés, en regardant les informations internes du courrier (dans Gmail, utilisez le menu en haut à droite et choisissez « Afficher l'original »).

Show original option highlighted


Vous remarquerez les pixels ouverts au début et à la fin du HTML dans l'e-mail. Chaque lien HTML est également modifié pour avoir REF  pointant vers le domaine de suivi.

HTML code highlighted


C'est tout ce dont vous avez besoin pour que SparkPost Signals fonctionne avec le suivi d'engagement intégré de PowerMTA.

Empêcher que des liens spécifiques de votre email html ne soient suivis

Vous pouvez empêcher PowerMTA de suivre des liens spécifiques, en définissant l'attribut personnalisé data-msys-clicktrack  à « 0 »  :

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

PowerMTA n'encadrera pas le lien. Il supprimera également cet attribut avant de transmettre le message à votre destinataire.

Sélectionnez quels flux de trafic PowerMTA signaler à Signals

Vous pouvez sélectionner des Signals à activer :

  • Globalement (c'est ce que nous avons utilisé dans l'exemple ci-dessus)

  • Pour certains Virtual MTAs et non d'autres

  • Pour certains pools de Virtual MTA et non d'autres

  • Pour des adresses "Sender" ou "From" spécifiques relayées par PowerMTA, en combinaison avec les sélections de Virtual MTA / pool de Virtual MTA

Portée

Ce qui est rapporté à Signals

Quand l'utiliser

Global

Tout le trafic provenant de l'hôte PowerMTA

Déploiements simples où tout le trafic doit être acheminé vers SparkPost Signals.

VirtualMTA

Trafic uniquement des VirtualMTAs sélectionnés

Lorsque vous souhaitez des vues de rapport distinctes pour différents IPs ou types de trafic.

Pool de VirtualMTA

Trafic des pools de VirtualMTA sélectionnés

Quand vous regroupez des IPs en pools et voulez un rapport au niveau du pool.

Domaine Sender / From

Messages de domaines spécifiques Sender ou From

Quand vous avez besoin de rapports par client ou par marque au sein de la même infrastructure.

Cette configuration est très puissante et est illustrée par une série de cas d'utilisation exemples (v5.0) dans le Guide de l'utilisateur.

Vous pouvez sélectionner des Signals à activer :

  • Globalement (c'est ce que nous avons utilisé dans l'exemple ci-dessus)

  • Pour certains Virtual MTAs et non d'autres

  • Pour certains pools de Virtual MTA et non d'autres

  • Pour des adresses "Sender" ou "From" spécifiques relayées par PowerMTA, en combinaison avec les sélections de Virtual MTA / pool de Virtual MTA

Portée

Ce qui est rapporté à Signals

Quand l'utiliser

Global

Tout le trafic provenant de l'hôte PowerMTA

Déploiements simples où tout le trafic doit être acheminé vers SparkPost Signals.

VirtualMTA

Trafic uniquement des VirtualMTAs sélectionnés

Lorsque vous souhaitez des vues de rapport distinctes pour différents IPs ou types de trafic.

Pool de VirtualMTA

Trafic des pools de VirtualMTA sélectionnés

Quand vous regroupez des IPs en pools et voulez un rapport au niveau du pool.

Domaine Sender / From

Messages de domaines spécifiques Sender ou From

Quand vous avez besoin de rapports par client ou par marque au sein de la même infrastructure.

Cette configuration est très puissante et est illustrée par une série de cas d'utilisation exemples (v5.0) dans le Guide de l'utilisateur.

Vous pouvez sélectionner des Signals à activer :

  • Globalement (c'est ce que nous avons utilisé dans l'exemple ci-dessus)

  • Pour certains Virtual MTAs et non d'autres

  • Pour certains pools de Virtual MTA et non d'autres

  • Pour des adresses "Sender" ou "From" spécifiques relayées par PowerMTA, en combinaison avec les sélections de Virtual MTA / pool de Virtual MTA

Portée

Ce qui est rapporté à Signals

Quand l'utiliser

Global

Tout le trafic provenant de l'hôte PowerMTA

Déploiements simples où tout le trafic doit être acheminé vers SparkPost Signals.

VirtualMTA

Trafic uniquement des VirtualMTAs sélectionnés

Lorsque vous souhaitez des vues de rapport distinctes pour différents IPs ou types de trafic.

Pool de VirtualMTA

Trafic des pools de VirtualMTA sélectionnés

Quand vous regroupez des IPs en pools et voulez un rapport au niveau du pool.

Domaine Sender / From

Messages de domaines spécifiques Sender ou From

Quand vous avez besoin de rapports par client ou par marque au sein de la même infrastructure.

Cette configuration est très puissante et est illustrée par une série de cas d'utilisation exemples (v5.0) dans le Guide de l'utilisateur.

Testing que vos événements atteignent Signals

Voici une vue de SparkPost Signals, connecté à PowerMTA. Vous pouvez voir que le score de santé varie.

Health score dashboard


Les noms des campagnes sont disponibles en tant que facettes de rapport, ainsi que le sous-compte, le pool d'IP, le fournisseur de boîte aux lettres et le domaine d'envoi.

En plus de consulter les journaux de PowerMTA, vous pouvez vérifier que les données des événements atteignent SparkPost en regardant l'écran d'intégration des Signaux.

Signals integration screen

Dans votre écran de recherche d'événements SparkPost, vous devriez voir des événements apparaître en quelques minutes. Ceux-ci incluront les événements d'injection et de livraison, ainsi que les rebonds, et potentiellement les événements de rebond hors bande et les plaintes pour spam, si vous avez déjà configuré PowerMTA pour les gérer pour vous.
Si vous avez activé le suivi d'engagement, vous verrez également les événements open, initial_open, et click.

Voici une vue de SparkPost Signals, connecté à PowerMTA. Vous pouvez voir que le score de santé varie.

Health score dashboard


Les noms des campagnes sont disponibles en tant que facettes de rapport, ainsi que le sous-compte, le pool d'IP, le fournisseur de boîte aux lettres et le domaine d'envoi.

En plus de consulter les journaux de PowerMTA, vous pouvez vérifier que les données des événements atteignent SparkPost en regardant l'écran d'intégration des Signaux.

Signals integration screen

Dans votre écran de recherche d'événements SparkPost, vous devriez voir des événements apparaître en quelques minutes. Ceux-ci incluront les événements d'injection et de livraison, ainsi que les rebonds, et potentiellement les événements de rebond hors bande et les plaintes pour spam, si vous avez déjà configuré PowerMTA pour les gérer pour vous.
Si vous avez activé le suivi d'engagement, vous verrez également les événements open, initial_open, et click.

Voici une vue de SparkPost Signals, connecté à PowerMTA. Vous pouvez voir que le score de santé varie.

Health score dashboard


Les noms des campagnes sont disponibles en tant que facettes de rapport, ainsi que le sous-compte, le pool d'IP, le fournisseur de boîte aux lettres et le domaine d'envoi.

En plus de consulter les journaux de PowerMTA, vous pouvez vérifier que les données des événements atteignent SparkPost en regardant l'écran d'intégration des Signaux.

Signals integration screen

Dans votre écran de recherche d'événements SparkPost, vous devriez voir des événements apparaître en quelques minutes. Ceux-ci incluront les événements d'injection et de livraison, ainsi que les rebonds, et potentiellement les événements de rebond hors bande et les plaintes pour spam, si vous avez déjà configuré PowerMTA pour les gérer pour vous.
Si vous avez activé le suivi d'engagement, vous verrez également les événements open, initial_open, et click.

Utiliser des noms significatifs qui apparaissent bien dans les rapports

Configurer les noms des PowerMTA VirtualMTA Pool et les noms de travail pour qu'ils soient significatifs et lisibles par les humains vaut bien la peine d'être fait. Ceux-ci apparaissent directement dans vos facettes SparkPost Signals et dans le rapport de synthèse.

Comme mentionné précédemment, vous n'avez pas besoin de créer ces pools dans votre compte SparkPost. SparkPost les récupère à partir de votre configuration PowerMTA.

Voici comment les termes de configuration PowerMTA se traduisent en termes SparkPost.

Terme PowerMTA Terme des rapports / des signaux SparkPostDomaine du destinataire

(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


Cependant, PowerMTA peut étiqueter les virtualMTAs, les Virtual MTA Pools, ou les domaines Sender-or-From avec un ID de sous-compte pour les besoins de rapport de SparkPost.

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

Configurer au moins une adresse smtp-source-host permet également à SparkPost d'identifier correctement l'adresse IP d'envoi afin qu'elle apparaisse lors des événements d'injection et de livraison, ainsi que dans la vue du rapport de synthèse.

Les noms de travail sont définis dans PowerMTA via un en-tête dans le message injecté. En plus de permettre le contrôle individuel des travaux (pause/reprise, etc.) ce qui est utile en soi, PowerMTA transmet les noms au reporting SparkPost Signals sous forme d'« ID de campagne ». Voir le Guide Utilisateur v5.0 section 12.8 « Suivi d'une campagne dans PowerMTA avec un JobID ».

Il y a quelques points à noter concernant la dénomination des travaux. Bien que SparkPost (avec le format JSON et l'échappement JSON) autorise des caractères comme <SPACE>  dans les noms de campagne, les en-têtes de courrier sont plus restrictifs. Les caractères valides autorisés dans l'en-tête X-Job sont :

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

En d'autres termes, les caractères non autorisés incluent <SPACE>, les guillemets doubles «   et l'accent grave `. Si vous avez l'habitude de travailler avec les noms X-Job, cela ne vous surprendra pas, et vos noms d'ID de campagne « fonctionneront simplement » dans les rapports SparkPost. Si, comme moi, vous avez appris SparkPost en premier, vous pourriez vouloir un outil pour vous assurer que vos valeurs X-Job sont sûres ; voir la fonction bonus à la fin de cet article.

Terme PowerMTA

Terme des signaux SparkPost

VirtualMTA

IP Pool

VirtualMTA Pool

IP Pool (groupé)

Nom du travail (en-tête X-Job)

ID de campagne

smtp-source-host

Adresse IP d'envoi

Domaine de rebond

Identification du domaine d'envoi

Domaine Sender/From

Rapports au niveau du sous-compte/domaine

Configurer les noms des PowerMTA VirtualMTA Pool et les noms de travail pour qu'ils soient significatifs et lisibles par les humains vaut bien la peine d'être fait. Ceux-ci apparaissent directement dans vos facettes SparkPost Signals et dans le rapport de synthèse.

Comme mentionné précédemment, vous n'avez pas besoin de créer ces pools dans votre compte SparkPost. SparkPost les récupère à partir de votre configuration PowerMTA.

Voici comment les termes de configuration PowerMTA se traduisent en termes SparkPost.

Terme PowerMTA Terme des rapports / des signaux SparkPostDomaine du destinataire

(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


Cependant, PowerMTA peut étiqueter les virtualMTAs, les Virtual MTA Pools, ou les domaines Sender-or-From avec un ID de sous-compte pour les besoins de rapport de SparkPost.

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

Configurer au moins une adresse smtp-source-host permet également à SparkPost d'identifier correctement l'adresse IP d'envoi afin qu'elle apparaisse lors des événements d'injection et de livraison, ainsi que dans la vue du rapport de synthèse.

Les noms de travail sont définis dans PowerMTA via un en-tête dans le message injecté. En plus de permettre le contrôle individuel des travaux (pause/reprise, etc.) ce qui est utile en soi, PowerMTA transmet les noms au reporting SparkPost Signals sous forme d'« ID de campagne ». Voir le Guide Utilisateur v5.0 section 12.8 « Suivi d'une campagne dans PowerMTA avec un JobID ».

Il y a quelques points à noter concernant la dénomination des travaux. Bien que SparkPost (avec le format JSON et l'échappement JSON) autorise des caractères comme <SPACE>  dans les noms de campagne, les en-têtes de courrier sont plus restrictifs. Les caractères valides autorisés dans l'en-tête X-Job sont :

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

En d'autres termes, les caractères non autorisés incluent <SPACE>, les guillemets doubles «   et l'accent grave `. Si vous avez l'habitude de travailler avec les noms X-Job, cela ne vous surprendra pas, et vos noms d'ID de campagne « fonctionneront simplement » dans les rapports SparkPost. Si, comme moi, vous avez appris SparkPost en premier, vous pourriez vouloir un outil pour vous assurer que vos valeurs X-Job sont sûres ; voir la fonction bonus à la fin de cet article.

Terme PowerMTA

Terme des signaux SparkPost

VirtualMTA

IP Pool

VirtualMTA Pool

IP Pool (groupé)

Nom du travail (en-tête X-Job)

ID de campagne

smtp-source-host

Adresse IP d'envoi

Domaine de rebond

Identification du domaine d'envoi

Domaine Sender/From

Rapports au niveau du sous-compte/domaine

Configurer les noms des PowerMTA VirtualMTA Pool et les noms de travail pour qu'ils soient significatifs et lisibles par les humains vaut bien la peine d'être fait. Ceux-ci apparaissent directement dans vos facettes SparkPost Signals et dans le rapport de synthèse.

Comme mentionné précédemment, vous n'avez pas besoin de créer ces pools dans votre compte SparkPost. SparkPost les récupère à partir de votre configuration PowerMTA.

Voici comment les termes de configuration PowerMTA se traduisent en termes SparkPost.

Terme PowerMTA Terme des rapports / des signaux SparkPostDomaine du destinataire

(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


Cependant, PowerMTA peut étiqueter les virtualMTAs, les Virtual MTA Pools, ou les domaines Sender-or-From avec un ID de sous-compte pour les besoins de rapport de SparkPost.

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

Configurer au moins une adresse smtp-source-host permet également à SparkPost d'identifier correctement l'adresse IP d'envoi afin qu'elle apparaisse lors des événements d'injection et de livraison, ainsi que dans la vue du rapport de synthèse.

Les noms de travail sont définis dans PowerMTA via un en-tête dans le message injecté. En plus de permettre le contrôle individuel des travaux (pause/reprise, etc.) ce qui est utile en soi, PowerMTA transmet les noms au reporting SparkPost Signals sous forme d'« ID de campagne ». Voir le Guide Utilisateur v5.0 section 12.8 « Suivi d'une campagne dans PowerMTA avec un JobID ».

Il y a quelques points à noter concernant la dénomination des travaux. Bien que SparkPost (avec le format JSON et l'échappement JSON) autorise des caractères comme <SPACE>  dans les noms de campagne, les en-têtes de courrier sont plus restrictifs. Les caractères valides autorisés dans l'en-tête X-Job sont :

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

En d'autres termes, les caractères non autorisés incluent <SPACE>, les guillemets doubles «   et l'accent grave `. Si vous avez l'habitude de travailler avec les noms X-Job, cela ne vous surprendra pas, et vos noms d'ID de campagne « fonctionneront simplement » dans les rapports SparkPost. Si, comme moi, vous avez appris SparkPost en premier, vous pourriez vouloir un outil pour vous assurer que vos valeurs X-Job sont sûres ; voir la fonction bonus à la fin de cet article.

Terme PowerMTA

Terme des signaux SparkPost

VirtualMTA

IP Pool

VirtualMTA Pool

IP Pool (groupé)

Nom du travail (en-tête X-Job)

ID de campagne

smtp-source-host

Adresse IP d'envoi

Domaine de rebond

Identification du domaine d'envoi

Domaine Sender/From

Rapports au niveau du sous-compte/domaine

Événements FBL (Spam Complaints) et rebonds distants (out-of-band)

PowerMTA peut recevoir et traiter les événements FBL (connus sur SparkPost sous le nom d'événements de plainte pour spam) et les rebonds distants (connus sur SparkPost en tant que rebonds hors bande, car la réponse revient quelque temps après, plutôt que pendant la conversation SMTP).

Il y a des articles dans le forum de support de Port25 sur comment configurer le Bounce Processor et le FBL Processor. Si vous êtes un utilisateur existant de PowerMTA, vous les avez probablement déjà.

Voici la configuration que j'ai faite pour une démo, basée sur ces articles et orientée vers l'hébergement de PowerMTA sur Amazon EC2.

Si vous êtes familier avec la configuration de PowerMTA dans ce domaine, vous pouvez ignorer cette partie, jusqu'à la prochaine ligne horizontale.

PowerMTA peut recevoir et traiter les événements FBL (connus sur SparkPost sous le nom d'événements de plainte pour spam) et les rebonds distants (connus sur SparkPost en tant que rebonds hors bande, car la réponse revient quelque temps après, plutôt que pendant la conversation SMTP).

Il y a des articles dans le forum de support de Port25 sur comment configurer le Bounce Processor et le FBL Processor. Si vous êtes un utilisateur existant de PowerMTA, vous les avez probablement déjà.

Voici la configuration que j'ai faite pour une démo, basée sur ces articles et orientée vers l'hébergement de PowerMTA sur Amazon EC2.

Si vous êtes familier avec la configuration de PowerMTA dans ce domaine, vous pouvez ignorer cette partie, jusqu'à la prochaine ligne horizontale.

PowerMTA peut recevoir et traiter les événements FBL (connus sur SparkPost sous le nom d'événements de plainte pour spam) et les rebonds distants (connus sur SparkPost en tant que rebonds hors bande, car la réponse revient quelque temps après, plutôt que pendant la conversation SMTP).

Il y a des articles dans le forum de support de Port25 sur comment configurer le Bounce Processor et le FBL Processor. Si vous êtes un utilisateur existant de PowerMTA, vous les avez probablement déjà.

Voici la configuration que j'ai faite pour une démo, basée sur ces articles et orientée vers l'hébergement de PowerMTA sur Amazon EC2.

Si vous êtes familier avec la configuration de PowerMTA dans ce domaine, vous pouvez ignorer cette partie, jusqu'à la prochaine ligne horizontale.

Injection configuration

Nous utiliserons le port 587 pour les messages injectés, qui arriveront sur Internet public depuis un autre hôte. Nous devons empêcher les acteurs malveillants de découvrir et d'abuser de ce service, nous appliquons donc une authentification par nom d'utilisateur/mot de passe et TLS en option, similaire aux points d'injection SMTP de SparkPost.

Nous voulons pouvoir envoyer des messages à partir de sources correctement authentifiées vers n'importe quelle destination. Nous voulons également un écouteur distinct sur le port 25 pour les FBL et les réponses de rebond à distance qui ne nécessitent pas d'authentification.

# 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

Dans les déclarations <source> suivantes, nous utilisons une authentification par nom d'utilisateur/mot de passe et TLS en option pour nous protéger contre l'injection de messages non autorisés. Nous fixons également des limites de taux sur les connexions effectuant des tentatives de mot de passe échouées.

Votre configuration peut être différente; par exemple, si vous avez un réseau privé entre l'injecteur et PowerMTA, vous n'aurez pas besoin d'authentification par mot de passe.

# 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 déclaration <source {auth}> (voir ici. v5.0) s'applique une fois l'authentification passée. Ici, elle permet le relais, configure le groupe MTA virtuel par défaut à utiliser, et ajoute l'en-tête X-Job (qui sera rapporté par SparkPost Signals sous campaign_id).

La liste de réécriture mappe les messages injectés pour utiliser un domaine MAIL FROM spécifique (alias domaine de rebond ou 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>


Ensuite, nous configurons notre configuration TLS et nom d'utilisateur / mot de passe SMTP, selon les recommandations actuelles.

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


Nous pouvons vérifier que le TLS v1.0 (insecure, déprécié) n'est pas accepté en utilisant mon outil de test SMTP préféré, swaks.

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


Nous voyons:

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


De même pour –tls-protocol tlsv1_1.

Appliquons également une signature DKIM sur nos messages sortants, car c'est une bonne pratique (j'ai suivi ces instructions pour configurer la clé).

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

Nous utiliserons le port 587 pour les messages injectés, qui arriveront sur Internet public depuis un autre hôte. Nous devons empêcher les acteurs malveillants de découvrir et d'abuser de ce service, nous appliquons donc une authentification par nom d'utilisateur/mot de passe et TLS en option, similaire aux points d'injection SMTP de SparkPost.

Nous voulons pouvoir envoyer des messages à partir de sources correctement authentifiées vers n'importe quelle destination. Nous voulons également un écouteur distinct sur le port 25 pour les FBL et les réponses de rebond à distance qui ne nécessitent pas d'authentification.

# 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

Dans les déclarations <source> suivantes, nous utilisons une authentification par nom d'utilisateur/mot de passe et TLS en option pour nous protéger contre l'injection de messages non autorisés. Nous fixons également des limites de taux sur les connexions effectuant des tentatives de mot de passe échouées.

Votre configuration peut être différente; par exemple, si vous avez un réseau privé entre l'injecteur et PowerMTA, vous n'aurez pas besoin d'authentification par mot de passe.

# 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 déclaration <source {auth}> (voir ici. v5.0) s'applique une fois l'authentification passée. Ici, elle permet le relais, configure le groupe MTA virtuel par défaut à utiliser, et ajoute l'en-tête X-Job (qui sera rapporté par SparkPost Signals sous campaign_id).

La liste de réécriture mappe les messages injectés pour utiliser un domaine MAIL FROM spécifique (alias domaine de rebond ou 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>


Ensuite, nous configurons notre configuration TLS et nom d'utilisateur / mot de passe SMTP, selon les recommandations actuelles.

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


Nous pouvons vérifier que le TLS v1.0 (insecure, déprécié) n'est pas accepté en utilisant mon outil de test SMTP préféré, swaks.

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


Nous voyons:

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


De même pour –tls-protocol tlsv1_1.

Appliquons également une signature DKIM sur nos messages sortants, car c'est une bonne pratique (j'ai suivi ces instructions pour configurer la clé).

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

Nous utiliserons le port 587 pour les messages injectés, qui arriveront sur Internet public depuis un autre hôte. Nous devons empêcher les acteurs malveillants de découvrir et d'abuser de ce service, nous appliquons donc une authentification par nom d'utilisateur/mot de passe et TLS en option, similaire aux points d'injection SMTP de SparkPost.

Nous voulons pouvoir envoyer des messages à partir de sources correctement authentifiées vers n'importe quelle destination. Nous voulons également un écouteur distinct sur le port 25 pour les FBL et les réponses de rebond à distance qui ne nécessitent pas d'authentification.

# 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

Dans les déclarations <source> suivantes, nous utilisons une authentification par nom d'utilisateur/mot de passe et TLS en option pour nous protéger contre l'injection de messages non autorisés. Nous fixons également des limites de taux sur les connexions effectuant des tentatives de mot de passe échouées.

Votre configuration peut être différente; par exemple, si vous avez un réseau privé entre l'injecteur et PowerMTA, vous n'aurez pas besoin d'authentification par mot de passe.

# 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 déclaration <source {auth}> (voir ici. v5.0) s'applique une fois l'authentification passée. Ici, elle permet le relais, configure le groupe MTA virtuel par défaut à utiliser, et ajoute l'en-tête X-Job (qui sera rapporté par SparkPost Signals sous campaign_id).

La liste de réécriture mappe les messages injectés pour utiliser un domaine MAIL FROM spécifique (alias domaine de rebond ou 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>


Ensuite, nous configurons notre configuration TLS et nom d'utilisateur / mot de passe SMTP, selon les recommandations actuelles.

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


Nous pouvons vérifier que le TLS v1.0 (insecure, déprécié) n'est pas accepté en utilisant mon outil de test SMTP préféré, swaks.

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


Nous voyons:

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


De même pour –tls-protocol tlsv1_1.

Appliquons également une signature DKIM sur nos messages sortants, car c'est une bonne pratique (j'ai suivi ces instructions pour configurer la clé).

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

Configuration et nomination de VirtualMTA

PowerMTA VirtualMTAs (et pools VirtualMTA) sont des fonctionnalités puissantes pour gérer les flux de messages, et les fonctionnalités de rapport PowerMTA / SparkPost Signals fonctionnent mieux avec ceux-ci actifs.

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


Le paramètre virtual-mta-pool est rapporté dans SparkPost sous le nom de « IP Pool », et est disponible en tant que facette de rapport SparkPost Signals (le menu déroulant sous les graphiques).

Health score dashboard


Le Rapport de Synthèse montre également IP Pool comme une facette de rapport "Group By".

Summary report dashboard


Comme indiqué plus tôt dans cet article, la configuration d'au moins une adresse smtp-source-host permet également à SparkPost d'identifier correctement l'adresse IP d'envoi, de sorte qu'elle apparaisse sur les événements d'Injection et de Livraison, ainsi que sur le Rapport de Synthèse :

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

C’est tout ce dont vous avez besoin pour une intégration de base entre PowerMTA et SparkPost Signals. Vous trouverez l’exemple de fichier de configuration complet ici.

Avant de partir, voici la fonctionnalité bonus que j'ai mentionnée.

PowerMTA VirtualMTAs (et pools VirtualMTA) sont des fonctionnalités puissantes pour gérer les flux de messages, et les fonctionnalités de rapport PowerMTA / SparkPost Signals fonctionnent mieux avec ceux-ci actifs.

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


Le paramètre virtual-mta-pool est rapporté dans SparkPost sous le nom de « IP Pool », et est disponible en tant que facette de rapport SparkPost Signals (le menu déroulant sous les graphiques).

Health score dashboard


Le Rapport de Synthèse montre également IP Pool comme une facette de rapport "Group By".

Summary report dashboard


Comme indiqué plus tôt dans cet article, la configuration d'au moins une adresse smtp-source-host permet également à SparkPost d'identifier correctement l'adresse IP d'envoi, de sorte qu'elle apparaisse sur les événements d'Injection et de Livraison, ainsi que sur le Rapport de Synthèse :

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

C’est tout ce dont vous avez besoin pour une intégration de base entre PowerMTA et SparkPost Signals. Vous trouverez l’exemple de fichier de configuration complet ici.

Avant de partir, voici la fonctionnalité bonus que j'ai mentionnée.

PowerMTA VirtualMTAs (et pools VirtualMTA) sont des fonctionnalités puissantes pour gérer les flux de messages, et les fonctionnalités de rapport PowerMTA / SparkPost Signals fonctionnent mieux avec ceux-ci actifs.

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


Le paramètre virtual-mta-pool est rapporté dans SparkPost sous le nom de « IP Pool », et est disponible en tant que facette de rapport SparkPost Signals (le menu déroulant sous les graphiques).

Health score dashboard


Le Rapport de Synthèse montre également IP Pool comme une facette de rapport "Group By".

Summary report dashboard


Comme indiqué plus tôt dans cet article, la configuration d'au moins une adresse smtp-source-host permet également à SparkPost d'identifier correctement l'adresse IP d'envoi, de sorte qu'elle apparaisse sur les événements d'Injection et de Livraison, ainsi que sur le Rapport de Synthèse :

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

C’est tout ce dont vous avez besoin pour une intégration de base entre PowerMTA et SparkPost Signals. Vous trouverez l’exemple de fichier de configuration complet ici.

Avant de partir, voici la fonctionnalité bonus que j'ai mentionnée.

Bonus feature : X-Job name checking/filtering

Pour garantir qu'une chaîne de caractères est sécurisée pour être utilisée comme nom de PowerMTA X-Job, voici une fonction Python simple pour mapper tout caractère non sécurisé à un trait de soulignement « _ »

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)

Cela utilise les expressions régulières Python d'une manière spécifique. Il déclare l'ensemble des caractères interdits en utilisant l'opérateur de « complément d'ensemble » ^ au lieu de lister tous les caractères autorisés. Cela signifie que nous interceptons (et sécurisons) des caractères au-delà de l'ensemble habituel 7 bits. Nous pouvons le montrer à l'aide de ce fragment de test :

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

Donne

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

Vous pouvez voir que <SPACE>, les guillemets doubles “, et l'accent grave `, ainsi que tous les caractères au-delà de ~ sont mappés à un trait de soulignement.

Pour garantir qu'une chaîne de caractères est sécurisée pour être utilisée comme nom de PowerMTA X-Job, voici une fonction Python simple pour mapper tout caractère non sécurisé à un trait de soulignement « _ »

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)

Cela utilise les expressions régulières Python d'une manière spécifique. Il déclare l'ensemble des caractères interdits en utilisant l'opérateur de « complément d'ensemble » ^ au lieu de lister tous les caractères autorisés. Cela signifie que nous interceptons (et sécurisons) des caractères au-delà de l'ensemble habituel 7 bits. Nous pouvons le montrer à l'aide de ce fragment de test :

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

Donne

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

Vous pouvez voir que <SPACE>, les guillemets doubles “, et l'accent grave `, ainsi que tous les caractères au-delà de ~ sont mappés à un trait de soulignement.

Pour garantir qu'une chaîne de caractères est sécurisée pour être utilisée comme nom de PowerMTA X-Job, voici une fonction Python simple pour mapper tout caractère non sécurisé à un trait de soulignement « _ »

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)

Cela utilise les expressions régulières Python d'une manière spécifique. Il déclare l'ensemble des caractères interdits en utilisant l'opérateur de « complément d'ensemble » ^ au lieu de lister tous les caractères autorisés. Cela signifie que nous interceptons (et sécurisons) des caractères au-delà de l'ensemble habituel 7 bits. Nous pouvons le montrer à l'aide de ce fragment de test :

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

Donne

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

Vous pouvez voir que <SPACE>, les guillemets doubles “, et l'accent grave `, ainsi que tous les caractères au-delà de ~ sont mappés à un trait de soulignement.

Autres news

Lire la suite de cette catégorie

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

La plateforme native AI complète qui évolue avec votre business.

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

La plateforme native AI complète qui évolue avec votre business.