Déploiement des Signaux pour On-Premises : Intégration PowerMTA
Oiseau
30 août 2019
1 min read

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 ... successfullyet 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) oupmta.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-spacesupprime 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êteX-Jobde PowerMTA, remplaçant les caractères non sécurisés par des underscores.
Plongeons dans les détails de la configuration de PowerMTA pour SparkPost Signals.
Plongeons 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 machine, soit une machine existante
Un compte SparkPost avec une permission de clé API pour « Événements entrants : Écrire » comme décrit ici
Nous allons configurer PowerMTA pour envoyer des événements à votre compte SparkPost, puis vous pourrez utiliser les éléments suivants :
Tout d'abord, installez (ou mettez à niveau) vers PowerMTA 5.0 r4 ou une version ultérieure, en suivant les instructions habituelles d'installation v5.0 qui sont assez simples. Ensuite, nous passerons en revue les étapes suivantes :
Configurer le connecteur PowerMTA vers SparkPost Signals
Configurer le suivi de l'engagement avec un domaine de suivi personnalisé
Sélectionner les flux de trafic PowerMTA à signaler à Signals
Tester que vos événements atteignent Signals
Revoir comment utiliser des noms significatifs qui apparaissent bien dans les rapports.
Nous couvrirons également d'autres aspects spécifiques de la configuration de PowerPMTA utilisés dans notre démo Signals :
Événements FBL (plaintes pour spam) et rebonds à distance (hors bande)
Configuration de l'injection, y compris DKIM
Configuration FBL et OOB
Configuration et nommage VirtualMTA (et comment cela apparaît dans vos rapports SparkPost Signals)
Enfin, il y a une « fonctionnalité bonus » avec un code pour s'assurer que les noms de vos campagnes sont compatibles avec les conventions de nom X-Job de PowerMTA.
Plongeons 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 machine, soit une machine existante
Un compte SparkPost avec une permission de clé API pour « Événements entrants : Écrire » comme décrit ici
Nous allons configurer PowerMTA pour envoyer des événements à votre compte SparkPost, puis vous pourrez utiliser les éléments suivants :
Tout d'abord, installez (ou mettez à niveau) vers PowerMTA 5.0 r4 ou une version ultérieure, en suivant les instructions habituelles d'installation v5.0 qui sont assez simples. Ensuite, nous passerons en revue les étapes suivantes :
Configurer le connecteur PowerMTA vers SparkPost Signals
Configurer le suivi de l'engagement avec un domaine de suivi personnalisé
Sélectionner les flux de trafic PowerMTA à signaler à Signals
Tester que vos événements atteignent Signals
Revoir comment utiliser des noms significatifs qui apparaissent bien dans les rapports.
Nous couvrirons également d'autres aspects spécifiques de la configuration de PowerPMTA utilisés dans notre démo Signals :
Événements FBL (plaintes pour spam) et rebonds à distance (hors bande)
Configuration de l'injection, y compris DKIM
Configuration FBL et OOB
Configuration et nommage VirtualMTA (et comment cela apparaît dans vos rapports SparkPost Signals)
Enfin, il y a une « fonctionnalité bonus » avec un code pour s'assurer que les noms de vos campagnes sont compatibles avec les conventions de nom X-Job de PowerMTA.
Plongeons 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 machine, soit une machine existante
Un compte SparkPost avec une permission de clé API pour « Événements entrants : Écrire » comme décrit ici
Nous allons configurer PowerMTA pour envoyer des événements à votre compte SparkPost, puis vous pourrez utiliser les éléments suivants :
Tout d'abord, installez (ou mettez à niveau) vers PowerMTA 5.0 r4 ou une version ultérieure, en suivant les instructions habituelles d'installation v5.0 qui sont assez simples. Ensuite, nous passerons en revue les étapes suivantes :
Configurer le connecteur PowerMTA vers SparkPost Signals
Configurer le suivi de l'engagement avec un domaine de suivi personnalisé
Sélectionner les flux de trafic PowerMTA à signaler à Signals
Tester que vos événements atteignent Signals
Revoir comment utiliser des noms significatifs qui apparaissent bien dans les rapports.
Nous couvrirons également d'autres aspects spécifiques de la configuration de PowerPMTA utilisés dans notre démo Signals :
Événements FBL (plaintes pour spam) et rebonds à distance (hors bande)
Configuration de l'injection, y compris DKIM
Configuration FBL et OOB
Configuration et nommage VirtualMTA (et comment cela apparaît dans vos rapports SparkPost Signals)
Enfin, il y a une « fonctionnalité bonus » avec un code pour s'assurer que les noms de vos campagnes sont compatibles avec les conventions de nom X-Job de PowerMTA.
Configurer le connecteur PowerMTA
La configuration des Signaux est décrite dans la section 10.1 du Guide de l'utilisateur 5.0. Ici, nous commencerons par le "Cas d'utilisation #2", qui active les Signaux pour tout le trafic provenant de cet hôte PowerMTA, et active le suivi de l'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 précédemment.
upload-url
Cela doit correspondre à l'adresse de votre service API SparkPost, qu'il soit aux États-Unis ou dans 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, elle donne 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 fichiers d'événements JSON SparkPost les plus anciens pour faire de la place pour de nouveaux fichiers lorsque l'espace disque est faible.
enable-signals
Cela indique à PowerMTA de télécharger vers les 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 être signalé 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 de l'engagement de PowerMTA utilise par défaut le domaine de suivi pour le service hébergé par SparkPost US. 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 DNS en créant un enregistrement CNAME. Ce sera généralement un sous-domaine de votre domaine de niveau supérieur, 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, mais cela est plus complexe (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, pour permettre à vos modifications DNS de se propager sur Internet, selon votre fournisseur DNS.
Configurez PowerMTA pour utiliser ce domaine à la place du défaut, avec
tracking-domain yourdomain.com # Mettez votre propre domaine ici
Vous pouvez vérifier que vos emails délivrés ont des "pixels d'ouverture" ajoutés et les liens enveloppés, en regardant l'intérieur du mail (dans Gmail, utilisez le menu en haut à droite et choisissez "Afficher l'original").

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

C'est tout ce dont vous avez besoin pour obtenir SparkPost Signals fonctionnant avec le suivi de l'engagement intégré de PowerMTA.
Empêcher des liens spécifiques dans votre email HTML d'être 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 ne va pas envelopper 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 le "Cas d'utilisation #2", qui active les Signaux pour tout le trafic provenant de cet hôte PowerMTA, et active le suivi de l'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 précédemment.
upload-url
Cela doit correspondre à l'adresse de votre service API SparkPost, qu'il soit aux États-Unis ou dans 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, elle donne 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 fichiers d'événements JSON SparkPost les plus anciens pour faire de la place pour de nouveaux fichiers lorsque l'espace disque est faible.
enable-signals
Cela indique à PowerMTA de télécharger vers les 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 être signalé 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 de l'engagement de PowerMTA utilise par défaut le domaine de suivi pour le service hébergé par SparkPost US. 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 DNS en créant un enregistrement CNAME. Ce sera généralement un sous-domaine de votre domaine de niveau supérieur, 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, mais cela est plus complexe (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, pour permettre à vos modifications DNS de se propager sur Internet, selon votre fournisseur DNS.
Configurez PowerMTA pour utiliser ce domaine à la place du défaut, avec
tracking-domain yourdomain.com # Mettez votre propre domaine ici
Vous pouvez vérifier que vos emails délivrés ont des "pixels d'ouverture" ajoutés et les liens enveloppés, en regardant l'intérieur du mail (dans Gmail, utilisez le menu en haut à droite et choisissez "Afficher l'original").

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

C'est tout ce dont vous avez besoin pour obtenir SparkPost Signals fonctionnant avec le suivi de l'engagement intégré de PowerMTA.
Empêcher des liens spécifiques dans votre email HTML d'être 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 ne va pas envelopper 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 le "Cas d'utilisation #2", qui active les Signaux pour tout le trafic provenant de cet hôte PowerMTA, et active le suivi de l'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 précédemment.
upload-url
Cela doit correspondre à l'adresse de votre service API SparkPost, qu'il soit aux États-Unis ou dans 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, elle donne 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 fichiers d'événements JSON SparkPost les plus anciens pour faire de la place pour de nouveaux fichiers lorsque l'espace disque est faible.
enable-signals
Cela indique à PowerMTA de télécharger vers les 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 être signalé 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 de l'engagement de PowerMTA utilise par défaut le domaine de suivi pour le service hébergé par SparkPost US. 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 DNS en créant un enregistrement CNAME. Ce sera généralement un sous-domaine de votre domaine de niveau supérieur, 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, mais cela est plus complexe (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, pour permettre à vos modifications DNS de se propager sur Internet, selon votre fournisseur DNS.
Configurez PowerMTA pour utiliser ce domaine à la place du défaut, avec
tracking-domain yourdomain.com # Mettez votre propre domaine ici
Vous pouvez vérifier que vos emails délivrés ont des "pixels d'ouverture" ajoutés et les liens enveloppés, en regardant l'intérieur du mail (dans Gmail, utilisez le menu en haut à droite et choisissez "Afficher l'original").

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

C'est tout ce dont vous avez besoin pour obtenir SparkPost Signals fonctionnant avec le suivi de l'engagement intégré de PowerMTA.
Empêcher des liens spécifiques dans votre email HTML d'être 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 ne va pas envelopper le lien. Il supprimera également cet attribut avant de transmettre le message à votre destinataire.
Sélectionnez les flux de trafic PowerMTA à signaler à Signals
Vous pouvez sélectionner des signaux pour être actifs :
Globalement (c'est ce que nous avons utilisé dans l'exemple ci-dessus)
Pour certains MTAs virtuels et pas d'autres
Pour certains pools de MTAs virtuels et pas 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
Cette configuration est très puissante et est illustrée à travers une série de cas d'utilisation d'exemple (v5.0) dans le Guide de l'utilisateur.
Vous pouvez sélectionner des signaux pour être actifs :
Globalement (c'est ce que nous avons utilisé dans l'exemple ci-dessus)
Pour certains MTAs virtuels et pas d'autres
Pour certains pools de MTAs virtuels et pas 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
Cette configuration est très puissante et est illustrée à travers une série de cas d'utilisation d'exemple (v5.0) dans le Guide de l'utilisateur.
Vous pouvez sélectionner des signaux pour être actifs :
Globalement (c'est ce que nous avons utilisé dans l'exemple ci-dessus)
Pour certains MTAs virtuels et pas d'autres
Pour certains pools de MTAs virtuels et pas 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
Cette configuration est très puissante et est illustrée à travers une série de cas d'utilisation d'exemple (v5.0) dans le Guide de l'utilisateur.
Tester que vos événements atteignent Signals
Voici une vue de SparkPost Signals, connecté à PowerMTA. Vous pouvez voir que le score de santé varie.

Les noms de Campagne sont disponibles comme facettes de reporting, ainsi que Subaccount, IP Pool, Mailbox Provider, et Sending Domain.
En plus de regarder les journaux PowerMTA, vous pouvez vérifier que les données d'événements atteignent SparkPost en regardant l'écran d'Intégration Signals.

Dans votre écran de Recherche d'Événements SparkPost, vous devriez voir apparaître des événements dans quelques minutes. Cela inclura des événements d'Injection et de Livraison, ainsi que Bounce, et potentiellement Out-of-Band Bounce et des événements de Plainte Spam, si vous avez déjà configuré PowerMTA pour les gérer à votre place.
Si vous avez activé le Suivi d'Engagement, vous verrez également des événements open, initial_open, et click.
Voici une vue de SparkPost Signals, connecté à PowerMTA. Vous pouvez voir que le score de santé varie.

Les noms de Campagne sont disponibles comme facettes de reporting, ainsi que Subaccount, IP Pool, Mailbox Provider, et Sending Domain.
En plus de regarder les journaux PowerMTA, vous pouvez vérifier que les données d'événements atteignent SparkPost en regardant l'écran d'Intégration Signals.

Dans votre écran de Recherche d'Événements SparkPost, vous devriez voir apparaître des événements dans quelques minutes. Cela inclura des événements d'Injection et de Livraison, ainsi que Bounce, et potentiellement Out-of-Band Bounce et des événements de Plainte Spam, si vous avez déjà configuré PowerMTA pour les gérer à votre place.
Si vous avez activé le Suivi d'Engagement, vous verrez également des événements open, initial_open, et click.
Voici une vue de SparkPost Signals, connecté à PowerMTA. Vous pouvez voir que le score de santé varie.

Les noms de Campagne sont disponibles comme facettes de reporting, ainsi que Subaccount, IP Pool, Mailbox Provider, et Sending Domain.
En plus de regarder les journaux PowerMTA, vous pouvez vérifier que les données d'événements atteignent SparkPost en regardant l'écran d'Intégration Signals.

Dans votre écran de Recherche d'Événements SparkPost, vous devriez voir apparaître des événements dans quelques minutes. Cela inclura des événements d'Injection et de Livraison, ainsi que Bounce, et potentiellement Out-of-Band Bounce et des événements de Plainte Spam, si vous avez déjà configuré PowerMTA pour les gérer à votre place.
Si vous avez activé le Suivi d'Engagement, vous verrez également des événements open, initial_open, et click.
Utiliser des noms significatifs qui apparaissent bien dans les rapports
Configurer les noms de pools VirtualMTA de PowerMTA et les noms de tâches pour qu'ils soient significatifs et lisibles est une tâche qui en vaut la peine. Ceux-ci apparaissent directement dans vos facettes de Signaux SparkPost et dans le rapport de synthèse.
Comme mentionné précédemment, il n'est pas nécessaire 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 Rapports / Signaux SparkPost Domaine 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 marquer les virtualMTAs, les pools de virtual MTA ou les domaines Sender-or-From avec un ID de sous-compte pour les besoins des rapports 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 sur les événements d'injection et de livraison, ainsi que dans la vue de synthèse du rapport.
Les noms de tâches sont définis dans PowerMTA par le biais d'un en-tête dans le message injecté. En plus de permettre le contrôle individuel des tâches (pause/reprise, etc.), ce qui est utile en soi, PowerMTA transmet les noms aux rapports Signaux de SparkPost sous l'intitulé “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 éléments à prendre en compte concernant la nomination des tâches. Bien que SparkPost (avec le format JSON et l'échappement JSON) autorise des caractères tels que <ESPACE> dans les noms de campagnes, 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 <ESPACE>, les guillemets doubles “ et l'accent grave `. Si vous avez l'habitude de travailler avec des noms de tâches 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 ; voyez la fonction bonus à la fin de cet article.
Configurer les noms de pools VirtualMTA de PowerMTA et les noms de tâches pour qu'ils soient significatifs et lisibles est une tâche qui en vaut la peine. Ceux-ci apparaissent directement dans vos facettes de Signaux SparkPost et dans le rapport de synthèse.
Comme mentionné précédemment, il n'est pas nécessaire 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 Rapports / Signaux SparkPost Domaine 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 marquer les virtualMTAs, les pools de virtual MTA ou les domaines Sender-or-From avec un ID de sous-compte pour les besoins des rapports 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 sur les événements d'injection et de livraison, ainsi que dans la vue de synthèse du rapport.
Les noms de tâches sont définis dans PowerMTA par le biais d'un en-tête dans le message injecté. En plus de permettre le contrôle individuel des tâches (pause/reprise, etc.), ce qui est utile en soi, PowerMTA transmet les noms aux rapports Signaux de SparkPost sous l'intitulé “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 éléments à prendre en compte concernant la nomination des tâches. Bien que SparkPost (avec le format JSON et l'échappement JSON) autorise des caractères tels que <ESPACE> dans les noms de campagnes, 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 <ESPACE>, les guillemets doubles “ et l'accent grave `. Si vous avez l'habitude de travailler avec des noms de tâches 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 ; voyez la fonction bonus à la fin de cet article.
Configurer les noms de pools VirtualMTA de PowerMTA et les noms de tâches pour qu'ils soient significatifs et lisibles est une tâche qui en vaut la peine. Ceux-ci apparaissent directement dans vos facettes de Signaux SparkPost et dans le rapport de synthèse.
Comme mentionné précédemment, il n'est pas nécessaire 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 Rapports / Signaux SparkPost Domaine 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 marquer les virtualMTAs, les pools de virtual MTA ou les domaines Sender-or-From avec un ID de sous-compte pour les besoins des rapports 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 sur les événements d'injection et de livraison, ainsi que dans la vue de synthèse du rapport.
Les noms de tâches sont définis dans PowerMTA par le biais d'un en-tête dans le message injecté. En plus de permettre le contrôle individuel des tâches (pause/reprise, etc.), ce qui est utile en soi, PowerMTA transmet les noms aux rapports Signaux de SparkPost sous l'intitulé “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 éléments à prendre en compte concernant la nomination des tâches. Bien que SparkPost (avec le format JSON et l'échappement JSON) autorise des caractères tels que <ESPACE> dans les noms de campagnes, 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 <ESPACE>, les guillemets doubles “ et l'accent grave `. Si vous avez l'habitude de travailler avec des noms de tâches 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 ; voyez la fonction bonus à la fin de cet article.
Événements FBL (plaintes spam) et rebonds distants (hors bande)
PowerMTA peut recevoir et traiter les événements FBL (connu dans SparkPost sous le nom d'événements de plainte pour spam) et les rebonds distants (connu dans SparkPost sous le nom de rebonds hors bande, car la réponse revient quelque temps plus tard, plutôt que pendant la conversation SMTP).
Il y a des articles dans le forum de support Port25 sur comment configurer le Bounce Processor et le FBL Processor. Si vous êtes déjà un utilisateur de PowerMTA, vous avez probablement déjà cela.
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 dans Amazon EC2.
Si vous êtes familier avec la configuration de PowerMTA dans ce domaine, vous pouvez passer cette partie, jusqu'à la prochaine ligne horizontale.
PowerMTA peut recevoir et traiter les événements FBL (connu dans SparkPost sous le nom d'événements de plainte pour spam) et les rebonds distants (connu dans SparkPost sous le nom de rebonds hors bande, car la réponse revient quelque temps plus tard, plutôt que pendant la conversation SMTP).
Il y a des articles dans le forum de support Port25 sur comment configurer le Bounce Processor et le FBL Processor. Si vous êtes déjà un utilisateur de PowerMTA, vous avez probablement déjà cela.
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 dans Amazon EC2.
Si vous êtes familier avec la configuration de PowerMTA dans ce domaine, vous pouvez passer cette partie, jusqu'à la prochaine ligne horizontale.
PowerMTA peut recevoir et traiter les événements FBL (connu dans SparkPost sous le nom d'événements de plainte pour spam) et les rebonds distants (connu dans SparkPost sous le nom de rebonds hors bande, car la réponse revient quelque temps plus tard, plutôt que pendant la conversation SMTP).
Il y a des articles dans le forum de support Port25 sur comment configurer le Bounce Processor et le FBL Processor. Si vous êtes déjà un utilisateur de PowerMTA, vous avez probablement déjà cela.
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 dans Amazon EC2.
Si vous êtes familier avec la configuration de PowerMTA dans ce domaine, vous pouvez passer cette partie, jusqu'à la prochaine ligne horizontale.
Configuration d'injection
Nous utiliserons le port 587 pour les messages injectés, qui viendront d'Internet public d'un autre hôte. Nous devons empêcher que des acteurs malveillants découvrent et abusent de ce service, donc nous appliquons l'authentification par nom d'utilisateur/mot de passe et TLS optionnel, similaire aux points d'injection SMTP de SparkPost.
Nous voulons être capables d'envoyer des messages depuis des sources correctement authentifiées vers n'importe quelle destination. Nous voulons également un écouteur séparé 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 l'authentification par nom d'utilisateur/mot de passe et TLS optionnel pour se défendre contre l'injection de messages malveillants. 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 réussie. Ici, elle permet la relayeuse continue, configure le groupe MTA virtuel par défaut à utiliser et ajoute l'en-tête X-Job (qui sera rapporté par SparkPost Signals en tant que campaign_id).
La liste de réécriture mappe les messages injectés pour utiliser un domaine MAIL FROM spécifique (alias le 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 le 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 (non sécurisé, obsolète) n'est pas accepté à l'aide de 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
Pareillement pour –tls-protocol tlsv1_1.
Appliquons également la 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 viendront d'Internet public d'un autre hôte. Nous devons empêcher que des acteurs malveillants découvrent et abusent de ce service, donc nous appliquons l'authentification par nom d'utilisateur/mot de passe et TLS optionnel, similaire aux points d'injection SMTP de SparkPost.
Nous voulons être capables d'envoyer des messages depuis des sources correctement authentifiées vers n'importe quelle destination. Nous voulons également un écouteur séparé 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 l'authentification par nom d'utilisateur/mot de passe et TLS optionnel pour se défendre contre l'injection de messages malveillants. 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 réussie. Ici, elle permet la relayeuse continue, configure le groupe MTA virtuel par défaut à utiliser et ajoute l'en-tête X-Job (qui sera rapporté par SparkPost Signals en tant que campaign_id).
La liste de réécriture mappe les messages injectés pour utiliser un domaine MAIL FROM spécifique (alias le 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 le 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 (non sécurisé, obsolète) n'est pas accepté à l'aide de 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
Pareillement pour –tls-protocol tlsv1_1.
Appliquons également la 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 viendront d'Internet public d'un autre hôte. Nous devons empêcher que des acteurs malveillants découvrent et abusent de ce service, donc nous appliquons l'authentification par nom d'utilisateur/mot de passe et TLS optionnel, similaire aux points d'injection SMTP de SparkPost.
Nous voulons être capables d'envoyer des messages depuis des sources correctement authentifiées vers n'importe quelle destination. Nous voulons également un écouteur séparé 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 l'authentification par nom d'utilisateur/mot de passe et TLS optionnel pour se défendre contre l'injection de messages malveillants. 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 réussie. Ici, elle permet la relayeuse continue, configure le groupe MTA virtuel par défaut à utiliser et ajoute l'en-tête X-Job (qui sera rapporté par SparkPost Signals en tant que campaign_id).
La liste de réécriture mappe les messages injectés pour utiliser un domaine MAIL FROM spécifique (alias le 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 le 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 (non sécurisé, obsolète) n'est pas accepté à l'aide de 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
Pareillement pour –tls-protocol tlsv1_1.
Appliquons également la 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
FBL and OOB configuration
Maintenant .. enfin .. nous déclarons quels domaines spécifiques sont ouverts pour les rebonds à distance et les réponses FBL. Nous ne voulons pas les relayer ailleurs (pour prévenir les attaques de rebond), 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/la non-utilisation de la règle de réécriture mfrom .
Le domaine FBL est généralement alors enregistré auprès de services externes tels que Microsoft SNDS; consultez cet article pour plus d'informations. Pour cette démo, les FBL viendront de la Bouncy Sink, donc pas besoin de s'enregistrer.
Maintenant .. enfin .. nous déclarons quels domaines spécifiques sont ouverts pour les rebonds à distance et les réponses FBL. Nous ne voulons pas les relayer ailleurs (pour prévenir les attaques de rebond), 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/la non-utilisation de la règle de réécriture mfrom .
Le domaine FBL est généralement alors enregistré auprès de services externes tels que Microsoft SNDS; consultez cet article pour plus d'informations. Pour cette démo, les FBL viendront de la Bouncy Sink, donc pas besoin de s'enregistrer.
Maintenant .. enfin .. nous déclarons quels domaines spécifiques sont ouverts pour les rebonds à distance et les réponses FBL. Nous ne voulons pas les relayer ailleurs (pour prévenir les attaques de rebond), 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/la non-utilisation de la règle de réécriture mfrom .
Le domaine FBL est généralement alors enregistré auprès de services externes tels que Microsoft SNDS; consultez cet article pour plus d'informations. Pour cette démo, les FBL viendront de la Bouncy Sink, donc pas besoin de s'enregistrer.
Test du listener SMTP
Il est important de tester que votre auditeur SMTP exige une autorisation pour toutes les destinations générales, rejetant tous les messages qui ne sont pas spécifiquement adressés aux domaines FBL et remote-bounce.
swaks --server pmta.signalsdemo.trymsys.net \ --port 25 \ --to test@strange.pmta.signalsdemo.trymsys.net \ --from any@sparkpost.com
La réponse, comme prévu, montre que le relais est refusé :
550 5.7.1 relais refusé pour le destinataire dans "RCPT TO:<test@strange.pmta.signalsdemo.trymsys.net>
(Fin de la description de la configuration de démonstration).
Il est important de tester que votre auditeur SMTP exige une autorisation pour toutes les destinations générales, rejetant tous les messages qui ne sont pas spécifiquement adressés aux domaines FBL et remote-bounce.
swaks --server pmta.signalsdemo.trymsys.net \ --port 25 \ --to test@strange.pmta.signalsdemo.trymsys.net \ --from any@sparkpost.com
La réponse, comme prévu, montre que le relais est refusé :
550 5.7.1 relais refusé pour le destinataire dans "RCPT TO:<test@strange.pmta.signalsdemo.trymsys.net>
(Fin de la description de la configuration de démonstration).
Il est important de tester que votre auditeur SMTP exige une autorisation pour toutes les destinations générales, rejetant tous les messages qui ne sont pas spécifiquement adressés aux domaines FBL et remote-bounce.
swaks --server pmta.signalsdemo.trymsys.net \ --port 25 \ --to test@strange.pmta.signalsdemo.trymsys.net \ --from any@sparkpost.com
La réponse, comme prévu, montre que le relais est refusé :
550 5.7.1 relais refusé pour le destinataire dans "RCPT TO:<test@strange.pmta.signalsdemo.trymsys.net>
(Fin de la description de la configuration de démonstration).
Configuration et nomination de VirtualMTA
PowerMTA VirtualMTAs (et pools de VirtualMTA) sont des fonctionnalités puissantes pour gérer les flux de messages, et les fonctionnalités de reporting 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 signalé dans SparkPost comme "IP Pool", et est disponible comme une facette de reporting SparkPost Signals (le menu déroulant sous les graphiques).

Le rapport récapitulatif montre également IP Pool comme une facette de reporting “Group By”.

Comme mentionné plus tôt dans cet article, configurer au moins une adresse smtp-source-host permet également à SparkPost d'identifier correctement l'adresse IP d'envoi, afin qu'elle apparaisse sur les événements d'injection et de livraison, ainsi que sur le rapport récapitulatif :

C'est tout ce dont vous avez besoin pour obtenir une intégration de base fonctionnant entre PowerMTA et SparkPost Signals. Vous trouverez l'exemple complet de fichier config ici.
Avant de partir, voici la fonctionnalité bonus que j'ai mentionnée.
PowerMTA VirtualMTAs (et pools de VirtualMTA) sont des fonctionnalités puissantes pour gérer les flux de messages, et les fonctionnalités de reporting 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 signalé dans SparkPost comme "IP Pool", et est disponible comme une facette de reporting SparkPost Signals (le menu déroulant sous les graphiques).

Le rapport récapitulatif montre également IP Pool comme une facette de reporting “Group By”.

Comme mentionné plus tôt dans cet article, configurer au moins une adresse smtp-source-host permet également à SparkPost d'identifier correctement l'adresse IP d'envoi, afin qu'elle apparaisse sur les événements d'injection et de livraison, ainsi que sur le rapport récapitulatif :

C'est tout ce dont vous avez besoin pour obtenir une intégration de base fonctionnant entre PowerMTA et SparkPost Signals. Vous trouverez l'exemple complet de fichier config ici.
Avant de partir, voici la fonctionnalité bonus que j'ai mentionnée.
PowerMTA VirtualMTAs (et pools de VirtualMTA) sont des fonctionnalités puissantes pour gérer les flux de messages, et les fonctionnalités de reporting 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 signalé dans SparkPost comme "IP Pool", et est disponible comme une facette de reporting SparkPost Signals (le menu déroulant sous les graphiques).

Le rapport récapitulatif montre également IP Pool comme une facette de reporting “Group By”.

Comme mentionné plus tôt dans cet article, configurer au moins une adresse smtp-source-host permet également à SparkPost d'identifier correctement l'adresse IP d'envoi, afin qu'elle apparaisse sur les événements d'injection et de livraison, ainsi que sur le rapport récapitulatif :

C'est tout ce dont vous avez besoin pour obtenir une intégration de base fonctionnant entre PowerMTA et SparkPost Signals. Vous trouverez l'exemple complet de fichier config ici.
Avant de partir, voici la fonctionnalité bonus que j'ai mentionnée.
Bonus feature : X-Job name checking/filtering
Pour garantir que toute chaîne de caractères est sûre à utiliser comme nom de PowerMTA X-Job, voici une fonction Python simple pour convertir tous les caractères non sécurisés en 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)
Cela utilise les expressions régulières Python de manière spécifique. Il déclare l'ensemble des caractères refusés en utilisant l'opérateur « complément d'ensemble » ^ plutôt que de lister tous les caractères autorisés. Cela signifie que nous capturons (et sécurisons) les caractères au-delà de l'ensemble habituel de 7 bits. Nous pouvons le montrer en utilisant ce fragment de test :
s='' for i in range(32, 256): s += chr(i) print(pmtaSafeJobID(s))
Ce qui 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 convertis en underscore.
Pour garantir que toute chaîne de caractères est sûre à utiliser comme nom de PowerMTA X-Job, voici une fonction Python simple pour convertir tous les caractères non sécurisés en 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)
Cela utilise les expressions régulières Python de manière spécifique. Il déclare l'ensemble des caractères refusés en utilisant l'opérateur « complément d'ensemble » ^ plutôt que de lister tous les caractères autorisés. Cela signifie que nous capturons (et sécurisons) les caractères au-delà de l'ensemble habituel de 7 bits. Nous pouvons le montrer en utilisant ce fragment de test :
s='' for i in range(32, 256): s += chr(i) print(pmtaSafeJobID(s))
Ce qui 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 convertis en underscore.
Pour garantir que toute chaîne de caractères est sûre à utiliser comme nom de PowerMTA X-Job, voici une fonction Python simple pour convertir tous les caractères non sécurisés en 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)
Cela utilise les expressions régulières Python de manière spécifique. Il déclare l'ensemble des caractères refusés en utilisant l'opérateur « complément d'ensemble » ^ plutôt que de lister tous les caractères autorisés. Cela signifie que nous capturons (et sécurisons) les caractères au-delà de l'ensemble habituel de 7 bits. Nous pouvons le montrer en utilisant ce fragment de test :
s='' for i in range(32, 256): s += chr(i) print(pmtaSafeJobID(s))
Ce qui 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 convertis en underscore.



