Despliegue de señales para locales: Integración de PowerMTA
Pájaro
30 ago 2019
Correo electrónico
1 min read

Puntos clave
Propósito: Esta guía explica cómo integrar PowerMTA 5.0+ con SparkPost Signals para transmitir datos de eventos y participación (rebotes, aperturas, clics, quejas de spam) desde MTAs locales directamente a la capa de análisis de SparkPost.
Configuración principal:
Agregue enable-signals true y defina su punto de ingestión de SparkPost (https://api.sparkpost.com/api/v1/ingest/events o el equivalente en la UE).
Utilice una clave API válida con permiso de “Incoming Events: Write”.
Especifique el customer-id, y opcionalmente configure dominios de seguimiento personalizados para mejorar la entregabilidad.
Configuración de seguimiento: El Engagement Tracking de PowerMTA inyecta automáticamente píxeles de apertura y clic en los correos electrónicos HTML. Puede deshabilitar el seguimiento por enlace con el atributo data-msys-clicktrack="0".
Informes selectivos: Signals puede habilitarse de forma global o limitarse a ciertos VirtualMTAs, pools, o dominios del remitente, permitiendo un control detallado de los datos.
Pruebas y verificación: Utilice el panel de integración de Signals y los registros de PowerMTA para confirmar la ingesta de eventos y seguir Health Scores, rebotes y métricas de participación en tiempo real.
Ajuste de entregabilidad:
Utilice nombres significativos para VirtualMTA y trabajos, ya que estos se asignan directamente a IP Pools y IDs de campaña en los informes de SparkPost.
Configure la firma DKIM, la aplicación de TLS y las reglas de retransmisión adecuadas para evitar inyecciones no autorizadas.
Configuración avanzada: El artículo también incluye fragmentos listos para usar para manejo de rebotes FBL y fuera de banda, inyección SMTP autenticada (puerto 587) y código Python para sanitizar encabezados X-Job para compatibilidad.
Destacados de Q&A
¿Qué es lo que realmente hace la integración de Signals?
Carga automáticamente los eventos de mensajes de PowerMTA (inyección, entrega, rebote, interacción) en tu cuenta de SparkPost para que puedas acceder a paneles como Health Score, informes de retraso y monitoreo de trampas de spam.
¿Por qué integrar Signals con un MTA local?
Muchas empresas gestionan infraestructura de correo autoalojada por razones de cumplimiento, pero aún desean las capacidades de análisis y monitoreo de SparkPost. Signals cierra esa brecha sin migrar la entrega de correo a la nube.
¿Cómo puedo verificar que los eventos están fluyendo a SparkPost?
Revise los registros de PowerMTA para
Signals: Transferred ... successfullyy confirme las entradas de eventos bajo Signals → Events Search en SparkPost.¿Puedo usar mi propio dominio de seguimiento?
Sí — configure un CNAME como
track.mycompany.com → pmta.spgo.io(US) opmta.eu.spgo.io(EU), luego regístrelo y verifíquelo en SparkPost para la consistencia de la marca y la reputación.¿Qué hay sobre la privacidad de los datos o el uso del disco?
La directiva
min-free-spaceelimina automáticamente los archivos de eventos JSON antiguos cuando el espacio en disco se reduce, evitando la acumulación local de datos de telemetría.¿Cuál es la “bonus feature” al final?
Una utilidad de expresiones regulares de Python (
pmtaSafeJobID) que garantiza que los nombres de campañas/trabajos usen solo caracteres válidos en el formato de encabezadoX-Jobde PowerMTA, reemplazando los caracteres no seguros con guiones bajos.
Vamos a sumergirnos en los detalles de la configuración de PowerMTA para SparkPost Signals.
Vamos a profundizar en los detalles de la configuración de PowerMTA para SparkPost Signals. Vas a necesitar:
Un host para ejecutar la última versión de PowerMTA, ya sea una máquina nueva o existente
Una cuenta de SparkPost con permiso de clave API para “Incoming Events: Write” como se describe aquí
Configuraremos PowerMTA para enviar eventos a tu cuenta de SparkPost, luego podrás utilizar lo siguiente:
Primero, instala (o actualiza) a PowerMTA 5.0 r4 o posterior, siguiendo las instrucciones habituales de instalación de v5.0, que son bastante sencillas. Luego, trabajaremos a través de los siguientes pasos:
Configurar el conector de PowerMTA para SparkPost Signals
Configurar el seguimiento de la participación con un dominio de seguimiento personalizado
Seleccionar qué flujos de tráfico de PowerMTA informar a Signals
Probar que tus eventos estén llegando a Signals
Revisar cómo usar nombres significativos que destaquen bien en los informes.
También cubriremos otros aspectos específicos de configuración de PowerPMTA utilizados en nuestra demostración de Signals:
Eventos FBL (Spam Complaints) y rebotes remotos (out-of-band)
Configuración de inyección, incluyendo DKIM
Configuración de FBL y OOB
Configuración y nombramiento de VirtualMTA (y cómo aparece esto en tus informes de SparkPost Signals)
Finalmente, hay una “característica adicional” con código para asegurar que los nombres de tus campañas sean compatibles con las convenciones de nombre X-Job de PowerMTA.
Vamos a profundizar en los detalles de la configuración de PowerMTA para SparkPost Signals. Vas a necesitar:
Un host para ejecutar la última versión de PowerMTA, ya sea una máquina nueva o existente
Una cuenta de SparkPost con permiso de clave API para “Incoming Events: Write” como se describe aquí
Configuraremos PowerMTA para enviar eventos a tu cuenta de SparkPost, luego podrás utilizar lo siguiente:
Primero, instala (o actualiza) a PowerMTA 5.0 r4 o posterior, siguiendo las instrucciones habituales de instalación de v5.0, que son bastante sencillas. Luego, trabajaremos a través de los siguientes pasos:
Configurar el conector de PowerMTA para SparkPost Signals
Configurar el seguimiento de la participación con un dominio de seguimiento personalizado
Seleccionar qué flujos de tráfico de PowerMTA informar a Signals
Probar que tus eventos estén llegando a Signals
Revisar cómo usar nombres significativos que destaquen bien en los informes.
También cubriremos otros aspectos específicos de configuración de PowerPMTA utilizados en nuestra demostración de Signals:
Eventos FBL (Spam Complaints) y rebotes remotos (out-of-band)
Configuración de inyección, incluyendo DKIM
Configuración de FBL y OOB
Configuración y nombramiento de VirtualMTA (y cómo aparece esto en tus informes de SparkPost Signals)
Finalmente, hay una “característica adicional” con código para asegurar que los nombres de tus campañas sean compatibles con las convenciones de nombre X-Job de PowerMTA.
Vamos a profundizar en los detalles de la configuración de PowerMTA para SparkPost Signals. Vas a necesitar:
Un host para ejecutar la última versión de PowerMTA, ya sea una máquina nueva o existente
Una cuenta de SparkPost con permiso de clave API para “Incoming Events: Write” como se describe aquí
Configuraremos PowerMTA para enviar eventos a tu cuenta de SparkPost, luego podrás utilizar lo siguiente:
Primero, instala (o actualiza) a PowerMTA 5.0 r4 o posterior, siguiendo las instrucciones habituales de instalación de v5.0, que son bastante sencillas. Luego, trabajaremos a través de los siguientes pasos:
Configurar el conector de PowerMTA para SparkPost Signals
Configurar el seguimiento de la participación con un dominio de seguimiento personalizado
Seleccionar qué flujos de tráfico de PowerMTA informar a Signals
Probar que tus eventos estén llegando a Signals
Revisar cómo usar nombres significativos que destaquen bien en los informes.
También cubriremos otros aspectos específicos de configuración de PowerPMTA utilizados en nuestra demostración de Signals:
Eventos FBL (Spam Complaints) y rebotes remotos (out-of-band)
Configuración de inyección, incluyendo DKIM
Configuración de FBL y OOB
Configuración y nombramiento de VirtualMTA (y cómo aparece esto en tus informes de SparkPost Signals)
Finalmente, hay una “característica adicional” con código para asegurar que los nombres de tus campañas sean compatibles con las convenciones de nombre X-Job de PowerMTA.
Configurar PowerMTA connector
La configuración de Signals está descrita en la sección 10.1 de la Guía del Usuario 5.0. Aquí comenzaremos con el “Caso de Uso #2”, que habilita Signals para todo el tráfico desde este host de PowerMTA, y habilita el seguimiento de compromiso de 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
A continuación se explica lo que hace cada atributo:
api-key
Esto es único para su cuenta de SparkPost, es el valor que obtuvo de SparkPost anteriormente.
upload-url
Esto necesita coincidir con la dirección de su servicio API de SparkPost, ya sea en EE. UU. o en la UE. Para obtener más información, véase aquí. Los valores usuales son:
SparkPost (EE. UU.): https://api.sparkpost.com/api/v1/ingest/events
SparkPost UE: https://api.eu.sparkpost.com/api/v1/ingest/events
log-verbose
Esta directiva es opcional y cuando está habilitada, proporciona un poco más de información en el archivo pmta.log, lo cual puede ser útil durante la configuración para confirmar que todo está funcionando correctamente. Cada minuto, incluso cuando no hay tráfico, verá:
2019-07-26 11:47:57 Signals: Descubierto 0 archivos
Con tráfico, verá algo como:
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
Esto indica a PowerMTA el umbral de espacio en disco a partir del cual debería comenzar a eliminar los archivos JSON de eventos más antiguos de SparkPost para hacer espacio para nuevos archivos cuando el espacio en disco se está agotando.
enable-signals
Esto indica a PowerMTA que suba a Signals, en este caso globalmente para todo el tráfico (más información aquí, para v5.0). Puede ser más selectivo sobre qué flujos de tráfico subir si lo desea.
También puede marcar un tráfico particular de PowerMTA para que se informe como perteneciente a una subcuenta de SparkPost – esta es otra manera de distinguir un flujo de tráfico particular de otro.
engagement-tracking, customer-id
La solución de Seguimiento de Compromiso de PowerMTA tiene como predeterminado el dominio de seguimiento para el servicio alojado en EE. UU. de SparkPost. Debe especificar su ID de cliente numérico de SparkPost; aquí están las instrucciones para encontrarlo.
tracking-domain
Para cuentas de SparkPost UE, agregue la siguiente línea:
tracking-domain pmta.eu.spgo.io # este es el endpoint para SparkPost UE
Dominio de Seguimiento Personalizado
Si prefiere usar su propio dominio de seguimiento (esto es mejor desde el punto de vista de la capacidad de entrega), haga lo siguiente:
Crear un dominio de seguimiento con su proveedor DNS creando un registro CNAME. Esto generalmente será un subdominio de su dominio de nivel superior, por ejemplo, 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
También puede usar dominios de seguimiento HTTPS, aunque esto es más complicado (vea los pasos de configuración de SparkPost para dominios de seguimiento HTTPS).
Registrar el dominio de seguimiento en su cuenta de SparkPost, y verificarlo. Espere unos minutos antes de intentar esto, para permitir que sus cambios DNS se propaguen a través de Internet, dependiendo de su proveedor DNS.
Configurar PowerMTA para usar ese dominio en lugar del predeterminado, con
tracking-domain yourdomain.com # Ponga su propio dominio aquí
Puede verificar que sus correos electrónicos entregados tengan “píxeles de apertura” agregados y los enlaces envueltos, observando el interior del correo (en Gmail, use el menú de la parte superior derecha y elija “Mostrar original”).

Notará los píxeles de apertura al principio y al final del HTML en el correo electrónico. Cada enlace HTML también se cambia para tener REF apuntando al dominio de seguimiento.

Eso es todo lo que necesita para que SparkPost Signals funcione con el Seguimiento de Compromiso integrado de PowerMTA.
Prevenir que se rastreen enlaces específicos en su correo electrónico html
Puede evitar que PowerMTA rastree enlaces específicos, configurando el atributo personalizado data-msys-clicktrack a “0” :
<a href="#" data-msys-clicktrack="0">Ejemplo</a>
PowerMTA no envolverá el enlace. También eliminará ese atributo antes de transmitir el mensaje a su destinatario.
La configuración de Signals está descrita en la sección 10.1 de la Guía del Usuario 5.0. Aquí comenzaremos con el “Caso de Uso #2”, que habilita Signals para todo el tráfico desde este host de PowerMTA, y habilita el seguimiento de compromiso de 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
A continuación se explica lo que hace cada atributo:
api-key
Esto es único para su cuenta de SparkPost, es el valor que obtuvo de SparkPost anteriormente.
upload-url
Esto necesita coincidir con la dirección de su servicio API de SparkPost, ya sea en EE. UU. o en la UE. Para obtener más información, véase aquí. Los valores usuales son:
SparkPost (EE. UU.): https://api.sparkpost.com/api/v1/ingest/events
SparkPost UE: https://api.eu.sparkpost.com/api/v1/ingest/events
log-verbose
Esta directiva es opcional y cuando está habilitada, proporciona un poco más de información en el archivo pmta.log, lo cual puede ser útil durante la configuración para confirmar que todo está funcionando correctamente. Cada minuto, incluso cuando no hay tráfico, verá:
2019-07-26 11:47:57 Signals: Descubierto 0 archivos
Con tráfico, verá algo como:
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
Esto indica a PowerMTA el umbral de espacio en disco a partir del cual debería comenzar a eliminar los archivos JSON de eventos más antiguos de SparkPost para hacer espacio para nuevos archivos cuando el espacio en disco se está agotando.
enable-signals
Esto indica a PowerMTA que suba a Signals, en este caso globalmente para todo el tráfico (más información aquí, para v5.0). Puede ser más selectivo sobre qué flujos de tráfico subir si lo desea.
También puede marcar un tráfico particular de PowerMTA para que se informe como perteneciente a una subcuenta de SparkPost – esta es otra manera de distinguir un flujo de tráfico particular de otro.
engagement-tracking, customer-id
La solución de Seguimiento de Compromiso de PowerMTA tiene como predeterminado el dominio de seguimiento para el servicio alojado en EE. UU. de SparkPost. Debe especificar su ID de cliente numérico de SparkPost; aquí están las instrucciones para encontrarlo.
tracking-domain
Para cuentas de SparkPost UE, agregue la siguiente línea:
tracking-domain pmta.eu.spgo.io # este es el endpoint para SparkPost UE
Dominio de Seguimiento Personalizado
Si prefiere usar su propio dominio de seguimiento (esto es mejor desde el punto de vista de la capacidad de entrega), haga lo siguiente:
Crear un dominio de seguimiento con su proveedor DNS creando un registro CNAME. Esto generalmente será un subdominio de su dominio de nivel superior, por ejemplo, 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
También puede usar dominios de seguimiento HTTPS, aunque esto es más complicado (vea los pasos de configuración de SparkPost para dominios de seguimiento HTTPS).
Registrar el dominio de seguimiento en su cuenta de SparkPost, y verificarlo. Espere unos minutos antes de intentar esto, para permitir que sus cambios DNS se propaguen a través de Internet, dependiendo de su proveedor DNS.
Configurar PowerMTA para usar ese dominio en lugar del predeterminado, con
tracking-domain yourdomain.com # Ponga su propio dominio aquí
Puede verificar que sus correos electrónicos entregados tengan “píxeles de apertura” agregados y los enlaces envueltos, observando el interior del correo (en Gmail, use el menú de la parte superior derecha y elija “Mostrar original”).

Notará los píxeles de apertura al principio y al final del HTML en el correo electrónico. Cada enlace HTML también se cambia para tener REF apuntando al dominio de seguimiento.

Eso es todo lo que necesita para que SparkPost Signals funcione con el Seguimiento de Compromiso integrado de PowerMTA.
Prevenir que se rastreen enlaces específicos en su correo electrónico html
Puede evitar que PowerMTA rastree enlaces específicos, configurando el atributo personalizado data-msys-clicktrack a “0” :
<a href="#" data-msys-clicktrack="0">Ejemplo</a>
PowerMTA no envolverá el enlace. También eliminará ese atributo antes de transmitir el mensaje a su destinatario.
La configuración de Signals está descrita en la sección 10.1 de la Guía del Usuario 5.0. Aquí comenzaremos con el “Caso de Uso #2”, que habilita Signals para todo el tráfico desde este host de PowerMTA, y habilita el seguimiento de compromiso de 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
A continuación se explica lo que hace cada atributo:
api-key
Esto es único para su cuenta de SparkPost, es el valor que obtuvo de SparkPost anteriormente.
upload-url
Esto necesita coincidir con la dirección de su servicio API de SparkPost, ya sea en EE. UU. o en la UE. Para obtener más información, véase aquí. Los valores usuales son:
SparkPost (EE. UU.): https://api.sparkpost.com/api/v1/ingest/events
SparkPost UE: https://api.eu.sparkpost.com/api/v1/ingest/events
log-verbose
Esta directiva es opcional y cuando está habilitada, proporciona un poco más de información en el archivo pmta.log, lo cual puede ser útil durante la configuración para confirmar que todo está funcionando correctamente. Cada minuto, incluso cuando no hay tráfico, verá:
2019-07-26 11:47:57 Signals: Descubierto 0 archivos
Con tráfico, verá algo como:
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
Esto indica a PowerMTA el umbral de espacio en disco a partir del cual debería comenzar a eliminar los archivos JSON de eventos más antiguos de SparkPost para hacer espacio para nuevos archivos cuando el espacio en disco se está agotando.
enable-signals
Esto indica a PowerMTA que suba a Signals, en este caso globalmente para todo el tráfico (más información aquí, para v5.0). Puede ser más selectivo sobre qué flujos de tráfico subir si lo desea.
También puede marcar un tráfico particular de PowerMTA para que se informe como perteneciente a una subcuenta de SparkPost – esta es otra manera de distinguir un flujo de tráfico particular de otro.
engagement-tracking, customer-id
La solución de Seguimiento de Compromiso de PowerMTA tiene como predeterminado el dominio de seguimiento para el servicio alojado en EE. UU. de SparkPost. Debe especificar su ID de cliente numérico de SparkPost; aquí están las instrucciones para encontrarlo.
tracking-domain
Para cuentas de SparkPost UE, agregue la siguiente línea:
tracking-domain pmta.eu.spgo.io # este es el endpoint para SparkPost UE
Dominio de Seguimiento Personalizado
Si prefiere usar su propio dominio de seguimiento (esto es mejor desde el punto de vista de la capacidad de entrega), haga lo siguiente:
Crear un dominio de seguimiento con su proveedor DNS creando un registro CNAME. Esto generalmente será un subdominio de su dominio de nivel superior, por ejemplo, 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
También puede usar dominios de seguimiento HTTPS, aunque esto es más complicado (vea los pasos de configuración de SparkPost para dominios de seguimiento HTTPS).
Registrar el dominio de seguimiento en su cuenta de SparkPost, y verificarlo. Espere unos minutos antes de intentar esto, para permitir que sus cambios DNS se propaguen a través de Internet, dependiendo de su proveedor DNS.
Configurar PowerMTA para usar ese dominio en lugar del predeterminado, con
tracking-domain yourdomain.com # Ponga su propio dominio aquí
Puede verificar que sus correos electrónicos entregados tengan “píxeles de apertura” agregados y los enlaces envueltos, observando el interior del correo (en Gmail, use el menú de la parte superior derecha y elija “Mostrar original”).

Notará los píxeles de apertura al principio y al final del HTML en el correo electrónico. Cada enlace HTML también se cambia para tener REF apuntando al dominio de seguimiento.

Eso es todo lo que necesita para que SparkPost Signals funcione con el Seguimiento de Compromiso integrado de PowerMTA.
Prevenir que se rastreen enlaces específicos en su correo electrónico html
Puede evitar que PowerMTA rastree enlaces específicos, configurando el atributo personalizado data-msys-clicktrack a “0” :
<a href="#" data-msys-clicktrack="0">Ejemplo</a>
PowerMTA no envolverá el enlace. También eliminará ese atributo antes de transmitir el mensaje a su destinatario.
Seleccione qué flujos de tráfico de PowerMTA informar a Signals
Puede seleccionar Señales para que estén activas:
Globalmente (esto es lo que usamos en el ejemplo anterior)
Para algunas MTAs Virtuales y no otras
Para algunos grupos de MTAs Virtuales y no otros
Para direcciones específicas de “Sender” o “From” retransmitidas por PowerMTA, en combinación con las selecciones de MTA Virtual / grupo de MTA Virtual
Esta configuración es muy poderosa y se ilustra a través de una serie de casos de uso de ejemplo (v5.0) en la Guía del Usuario.
Puede seleccionar Señales para que estén activas:
Globalmente (esto es lo que usamos en el ejemplo anterior)
Para algunas MTAs Virtuales y no otras
Para algunos grupos de MTAs Virtuales y no otros
Para direcciones específicas de “Sender” o “From” retransmitidas por PowerMTA, en combinación con las selecciones de MTA Virtual / grupo de MTA Virtual
Esta configuración es muy poderosa y se ilustra a través de una serie de casos de uso de ejemplo (v5.0) en la Guía del Usuario.
Puede seleccionar Señales para que estén activas:
Globalmente (esto es lo que usamos en el ejemplo anterior)
Para algunas MTAs Virtuales y no otras
Para algunos grupos de MTAs Virtuales y no otros
Para direcciones específicas de “Sender” o “From” retransmitidas por PowerMTA, en combinación con las selecciones de MTA Virtual / grupo de MTA Virtual
Esta configuración es muy poderosa y se ilustra a través de una serie de casos de uso de ejemplo (v5.0) en la Guía del Usuario.
Probando que tus eventos están llegando a Signals
Aquí tienes una vista de SparkPost Signals, conectado a PowerMTA. Puedes ver que la puntuación de salud está variando.

Los nombres de las Campañas están disponibles como facetas de informes, junto con Subaccount, IP Pool, Mailbox Provider, y Sending Domain.
Además de mirar los registros de PowerMTA, puedes verificar que los datos de eventos están llegando a SparkPost mirando la pantalla de Integración de Signals.

En tu pantalla de Búsqueda de Eventos de SparkPost, deberías ver los eventos aparecer en pocos minutos. Estos incluirán eventos de Injection y Delivery, así como Bounce, y potencialmente Out-of-Band Bounce y eventos de Spam Complaint, si ya has configurado PowerMTA para manejarlos por ti.
Si tienes el Seguimiento de Engagement habilitado, también verás eventos de open, initial_open, y click.
Aquí tienes una vista de SparkPost Signals, conectado a PowerMTA. Puedes ver que la puntuación de salud está variando.

Los nombres de las Campañas están disponibles como facetas de informes, junto con Subaccount, IP Pool, Mailbox Provider, y Sending Domain.
Además de mirar los registros de PowerMTA, puedes verificar que los datos de eventos están llegando a SparkPost mirando la pantalla de Integración de Signals.

En tu pantalla de Búsqueda de Eventos de SparkPost, deberías ver los eventos aparecer en pocos minutos. Estos incluirán eventos de Injection y Delivery, así como Bounce, y potencialmente Out-of-Band Bounce y eventos de Spam Complaint, si ya has configurado PowerMTA para manejarlos por ti.
Si tienes el Seguimiento de Engagement habilitado, también verás eventos de open, initial_open, y click.
Aquí tienes una vista de SparkPost Signals, conectado a PowerMTA. Puedes ver que la puntuación de salud está variando.

Los nombres de las Campañas están disponibles como facetas de informes, junto con Subaccount, IP Pool, Mailbox Provider, y Sending Domain.
Además de mirar los registros de PowerMTA, puedes verificar que los datos de eventos están llegando a SparkPost mirando la pantalla de Integración de Signals.

En tu pantalla de Búsqueda de Eventos de SparkPost, deberías ver los eventos aparecer en pocos minutos. Estos incluirán eventos de Injection y Delivery, así como Bounce, y potencialmente Out-of-Band Bounce y eventos de Spam Complaint, si ya has configurado PowerMTA para manejarlos por ti.
Si tienes el Seguimiento de Engagement habilitado, también verás eventos de open, initial_open, y click.
Usando nombres significativos que aparezcan bien en los informes
Configurar los nombres de los PowerMTA VirtualMTA Pool y los nombres de los trabajos de manera que sean significativos y legibles para los humanos vale la pena hacerlo. Estos aparecen directamente en sus facetas de SparkPost Signals y en el informe de Resumen.
Como se mencionó anteriormente, no necesita crear estos pools en su cuenta de SparkPost. SparkPost los recoge de su configuración de PowerMTA.
Aquí se explica cómo los términos de configuración de PowerMTA se traducen a términos de SparkPost.
Término de PowerMTA / Término de Informes / Signals de SparkPostDominio del destinatario
(domain portion of “rcpt” field in Accounting file).Recipient Domain The domain portion of the “Sender” or “From” header in the message relayed by PowerMTA. (domain portion of “orig” in Accounting file).Sending Domain VirtualMTA (name)—VirtualMTA Pool (name) (“vmtaPool” in accounting file)IP Pool (name) smtp-source-host a.b.c.d (“dlvSourceIp” in accounting file)Sending IP a.b.c.d Job (name) (“jobId” in accounting file)Campaign ID (name)—Template (name) “Subaccount” is not a native PowerMTA concept
Sin embargo, PowerMTA puede etiquetar virtualMTAs, virtual MTA Pools o dominios Sender-or-From con un ID de subcuenta para fines de informes de SparkPost.
Subaccount ID (number) FBL (event) Spam Complaint (event) Remote Bounce (event) Out-of-Band bounce (event)
Configurar al menos una dirección smtp-source-host también permite que SparkPost identifique correctamente la dirección IP de envío para que aparezca en eventos de Inyección y Entrega, así como en la vista del informe de Resumen.
Los nombres de trabajos se establecen en PowerMTA a través de un encabezado en el mensaje inyectado. Además de habilitar el control individual del trabajo (pausar/reanudar, etc.), lo cual es útil en sí mismo, PowerMTA pasa los nombres a través del informe de SparkPost Signals como “ID de campaña”. Ver Guía del Usuario v5.0 sección 12.8 “Seguimiento de una campaña en PowerMTA con un JobID”.
Hay algunas cosas que tener en cuenta sobre el nombramiento de trabajos. Mientras que SparkPost (con formato JSON y escape JSON) permite caracteres como <SPACE> en los nombres de campaña, los encabezados de correo son más restrictivos. Los caracteres válidos permitidos en el encabezado X-Job son:
A-Za-z0-9!#$%&'()*+,-./:;<=>?@[\]^_{|}~
En otras palabras, los caracteres no permitidos incluyen <SPACE>, comillas dobles “ y la comilla invertida `. Si está acostumbrado a trabajar con nombres X-Job, esto no será sorprendente, y los nombres de ID de sus campañas “simplemente funcionarán” en informes de SparkPost. Si, como yo, aprendió SparkPost primero, es posible que desee una herramienta para asegurarse de que sus valores X-Job sean seguros; consulte la función adicional al final de este artículo.
Configurar los nombres de los PowerMTA VirtualMTA Pool y los nombres de los trabajos de manera que sean significativos y legibles para los humanos vale la pena hacerlo. Estos aparecen directamente en sus facetas de SparkPost Signals y en el informe de Resumen.
Como se mencionó anteriormente, no necesita crear estos pools en su cuenta de SparkPost. SparkPost los recoge de su configuración de PowerMTA.
Aquí se explica cómo los términos de configuración de PowerMTA se traducen a términos de SparkPost.
Término de PowerMTA / Término de Informes / Signals de SparkPostDominio del destinatario
(domain portion of “rcpt” field in Accounting file).Recipient Domain The domain portion of the “Sender” or “From” header in the message relayed by PowerMTA. (domain portion of “orig” in Accounting file).Sending Domain VirtualMTA (name)—VirtualMTA Pool (name) (“vmtaPool” in accounting file)IP Pool (name) smtp-source-host a.b.c.d (“dlvSourceIp” in accounting file)Sending IP a.b.c.d Job (name) (“jobId” in accounting file)Campaign ID (name)—Template (name) “Subaccount” is not a native PowerMTA concept
Sin embargo, PowerMTA puede etiquetar virtualMTAs, virtual MTA Pools o dominios Sender-or-From con un ID de subcuenta para fines de informes de SparkPost.
Subaccount ID (number) FBL (event) Spam Complaint (event) Remote Bounce (event) Out-of-Band bounce (event)
Configurar al menos una dirección smtp-source-host también permite que SparkPost identifique correctamente la dirección IP de envío para que aparezca en eventos de Inyección y Entrega, así como en la vista del informe de Resumen.
Los nombres de trabajos se establecen en PowerMTA a través de un encabezado en el mensaje inyectado. Además de habilitar el control individual del trabajo (pausar/reanudar, etc.), lo cual es útil en sí mismo, PowerMTA pasa los nombres a través del informe de SparkPost Signals como “ID de campaña”. Ver Guía del Usuario v5.0 sección 12.8 “Seguimiento de una campaña en PowerMTA con un JobID”.
Hay algunas cosas que tener en cuenta sobre el nombramiento de trabajos. Mientras que SparkPost (con formato JSON y escape JSON) permite caracteres como <SPACE> en los nombres de campaña, los encabezados de correo son más restrictivos. Los caracteres válidos permitidos en el encabezado X-Job son:
A-Za-z0-9!#$%&'()*+,-./:;<=>?@[\]^_{|}~
En otras palabras, los caracteres no permitidos incluyen <SPACE>, comillas dobles “ y la comilla invertida `. Si está acostumbrado a trabajar con nombres X-Job, esto no será sorprendente, y los nombres de ID de sus campañas “simplemente funcionarán” en informes de SparkPost. Si, como yo, aprendió SparkPost primero, es posible que desee una herramienta para asegurarse de que sus valores X-Job sean seguros; consulte la función adicional al final de este artículo.
Configurar los nombres de los PowerMTA VirtualMTA Pool y los nombres de los trabajos de manera que sean significativos y legibles para los humanos vale la pena hacerlo. Estos aparecen directamente en sus facetas de SparkPost Signals y en el informe de Resumen.
Como se mencionó anteriormente, no necesita crear estos pools en su cuenta de SparkPost. SparkPost los recoge de su configuración de PowerMTA.
Aquí se explica cómo los términos de configuración de PowerMTA se traducen a términos de SparkPost.
Término de PowerMTA / Término de Informes / Signals de SparkPostDominio del destinatario
(domain portion of “rcpt” field in Accounting file).Recipient Domain The domain portion of the “Sender” or “From” header in the message relayed by PowerMTA. (domain portion of “orig” in Accounting file).Sending Domain VirtualMTA (name)—VirtualMTA Pool (name) (“vmtaPool” in accounting file)IP Pool (name) smtp-source-host a.b.c.d (“dlvSourceIp” in accounting file)Sending IP a.b.c.d Job (name) (“jobId” in accounting file)Campaign ID (name)—Template (name) “Subaccount” is not a native PowerMTA concept
Sin embargo, PowerMTA puede etiquetar virtualMTAs, virtual MTA Pools o dominios Sender-or-From con un ID de subcuenta para fines de informes de SparkPost.
Subaccount ID (number) FBL (event) Spam Complaint (event) Remote Bounce (event) Out-of-Band bounce (event)
Configurar al menos una dirección smtp-source-host también permite que SparkPost identifique correctamente la dirección IP de envío para que aparezca en eventos de Inyección y Entrega, así como en la vista del informe de Resumen.
Los nombres de trabajos se establecen en PowerMTA a través de un encabezado en el mensaje inyectado. Además de habilitar el control individual del trabajo (pausar/reanudar, etc.), lo cual es útil en sí mismo, PowerMTA pasa los nombres a través del informe de SparkPost Signals como “ID de campaña”. Ver Guía del Usuario v5.0 sección 12.8 “Seguimiento de una campaña en PowerMTA con un JobID”.
Hay algunas cosas que tener en cuenta sobre el nombramiento de trabajos. Mientras que SparkPost (con formato JSON y escape JSON) permite caracteres como <SPACE> en los nombres de campaña, los encabezados de correo son más restrictivos. Los caracteres válidos permitidos en el encabezado X-Job son:
A-Za-z0-9!#$%&'()*+,-./:;<=>?@[\]^_{|}~
En otras palabras, los caracteres no permitidos incluyen <SPACE>, comillas dobles “ y la comilla invertida `. Si está acostumbrado a trabajar con nombres X-Job, esto no será sorprendente, y los nombres de ID de sus campañas “simplemente funcionarán” en informes de SparkPost. Si, como yo, aprendió SparkPost primero, es posible que desee una herramienta para asegurarse de que sus valores X-Job sean seguros; consulte la función adicional al final de este artículo.
Eventos FBL (Spam Complaints) y rebotes remotos (fuera de banda)
PowerMTA puede recibir y procesar eventos FBL (conocidos en SparkPost como eventos de queja por spam) y devoluciones remotas (conocidas en SparkPost como devoluciones fuera de banda, porque la respuesta llega un tiempo después, en lugar de durante la conversación SMTP).
Hay artículos en el Foro de Soporte de Port25 sobre cómo configurar el Procesador de Rebotes y el Procesador de FBL. Si ya eres un usuario de PowerMTA, probablemente ya los tengas.
Aquí está la configuración que hice para una demostración, basada en estos artículos y orientada a alojar PowerMTA en Amazon EC2.
Si estás familiarizado con la configuración de PowerMTA en esta área, puedes saltarte esta parte y pasar a la siguiente línea horizontal.
PowerMTA puede recibir y procesar eventos FBL (conocidos en SparkPost como eventos de queja por spam) y devoluciones remotas (conocidas en SparkPost como devoluciones fuera de banda, porque la respuesta llega un tiempo después, en lugar de durante la conversación SMTP).
Hay artículos en el Foro de Soporte de Port25 sobre cómo configurar el Procesador de Rebotes y el Procesador de FBL. Si ya eres un usuario de PowerMTA, probablemente ya los tengas.
Aquí está la configuración que hice para una demostración, basada en estos artículos y orientada a alojar PowerMTA en Amazon EC2.
Si estás familiarizado con la configuración de PowerMTA en esta área, puedes saltarte esta parte y pasar a la siguiente línea horizontal.
PowerMTA puede recibir y procesar eventos FBL (conocidos en SparkPost como eventos de queja por spam) y devoluciones remotas (conocidas en SparkPost como devoluciones fuera de banda, porque la respuesta llega un tiempo después, en lugar de durante la conversación SMTP).
Hay artículos en el Foro de Soporte de Port25 sobre cómo configurar el Procesador de Rebotes y el Procesador de FBL. Si ya eres un usuario de PowerMTA, probablemente ya los tengas.
Aquí está la configuración que hice para una demostración, basada en estos artículos y orientada a alojar PowerMTA en Amazon EC2.
Si estás familiarizado con la configuración de PowerMTA en esta área, puedes saltarte esta parte y pasar a la siguiente línea horizontal.
Configuración de inyección
Usaremos el puerto 587 para mensajes inyectados, que vendrán por Internet público desde otro host. Necesitamos evitar que actores malintencionados descubran y abusen de este servicio, por lo que aplicamos autenticación de nombre de usuario/contraseña y TLS opcional, similar a los puntos de inyección SMTP de SparkPost.
Queremos poder enviar mensajes desde fuentes que estén debidamente autenticadas a cualquier destino. También queremos un oyente separado en el puerto 25 para respuestas de FBL y rebote remoto que no requieran autenticación.
# 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
En las siguientes declaraciones <source>, estamos usando autenticación de nombre de usuario/contraseña y TLS opcional para defendernos contra la inyección de mensajes no autorizados. También establecemos límites de velocidad en conexiones que realizan intentos de contraseña fallidos.
Su configuración podría ser diferente; por ejemplo, si tiene una red privada entre el inyectador y PowerMTA, no necesitará autenticación de contraseña.
# 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 declaración <source {auth}> (ver aquí. v5.0) se aplica una vez que la autenticación ha pasado. Aquí, permite el reenvío, configura el grupo MTA virtual predeterminado para usar y agrega el encabezado X-Job (que será informado por SparkPost Signals como campaign_id).
La lista de reescritura asigna mensajes inyectados para usar un dominio específico de MAIL FROM (también conocido como dominio de rebote o Return-Path:).
# # Rewrite the MAIL FROM address to match the bounce domain # <rewrite-list mfrom> mail-from *@pmta.signalsdemo.trymsys.net *@bounces.pmta.signalsdemo.trymsys.net </rewrite-list>
Luego configuramos nuestra configuración TLS y nombre de usuario/contraseña SMTP, según las recomendaciones actuales.
# # 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>
Podemos verificar que el TLS v1.0 (inseguro, obsoleto) no se acepta usando mi herramienta de prueba SMTP favorita, swaks.
swaks --server pmta.signalsdemo.trymsys.net --port 587 \ --to test@trymsys.net \ --from any@sparkpost.com \ --tls \ --tls-protocol tlsv1
Vemos:
*** TLS startup failed (connect(): error:00000000:lib(0):func(0):reason(0)) *** STARTTLS attempted but failed
Del mismo modo para –tls-protocol tlsv1_1.
Vamos a aplicar también la firma DKIM a nuestros mensajes salientes, ya que es una buena práctica (seguí estas instrucciones para configurar la clave).
# # DKIM # domain-key mypmta, pmta.signalsdemo.trymsys.net, /etc/pmta/mypmta.pmta.signalsdemo.trymsys.net.pem
Usaremos el puerto 587 para mensajes inyectados, que vendrán por Internet público desde otro host. Necesitamos evitar que actores malintencionados descubran y abusen de este servicio, por lo que aplicamos autenticación de nombre de usuario/contraseña y TLS opcional, similar a los puntos de inyección SMTP de SparkPost.
Queremos poder enviar mensajes desde fuentes que estén debidamente autenticadas a cualquier destino. También queremos un oyente separado en el puerto 25 para respuestas de FBL y rebote remoto que no requieran autenticación.
# 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
En las siguientes declaraciones <source>, estamos usando autenticación de nombre de usuario/contraseña y TLS opcional para defendernos contra la inyección de mensajes no autorizados. También establecemos límites de velocidad en conexiones que realizan intentos de contraseña fallidos.
Su configuración podría ser diferente; por ejemplo, si tiene una red privada entre el inyectador y PowerMTA, no necesitará autenticación de contraseña.
# 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 declaración <source {auth}> (ver aquí. v5.0) se aplica una vez que la autenticación ha pasado. Aquí, permite el reenvío, configura el grupo MTA virtual predeterminado para usar y agrega el encabezado X-Job (que será informado por SparkPost Signals como campaign_id).
La lista de reescritura asigna mensajes inyectados para usar un dominio específico de MAIL FROM (también conocido como dominio de rebote o Return-Path:).
# # Rewrite the MAIL FROM address to match the bounce domain # <rewrite-list mfrom> mail-from *@pmta.signalsdemo.trymsys.net *@bounces.pmta.signalsdemo.trymsys.net </rewrite-list>
Luego configuramos nuestra configuración TLS y nombre de usuario/contraseña SMTP, según las recomendaciones actuales.
# # 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>
Podemos verificar que el TLS v1.0 (inseguro, obsoleto) no se acepta usando mi herramienta de prueba SMTP favorita, swaks.
swaks --server pmta.signalsdemo.trymsys.net --port 587 \ --to test@trymsys.net \ --from any@sparkpost.com \ --tls \ --tls-protocol tlsv1
Vemos:
*** TLS startup failed (connect(): error:00000000:lib(0):func(0):reason(0)) *** STARTTLS attempted but failed
Del mismo modo para –tls-protocol tlsv1_1.
Vamos a aplicar también la firma DKIM a nuestros mensajes salientes, ya que es una buena práctica (seguí estas instrucciones para configurar la clave).
# # DKIM # domain-key mypmta, pmta.signalsdemo.trymsys.net, /etc/pmta/mypmta.pmta.signalsdemo.trymsys.net.pem
Usaremos el puerto 587 para mensajes inyectados, que vendrán por Internet público desde otro host. Necesitamos evitar que actores malintencionados descubran y abusen de este servicio, por lo que aplicamos autenticación de nombre de usuario/contraseña y TLS opcional, similar a los puntos de inyección SMTP de SparkPost.
Queremos poder enviar mensajes desde fuentes que estén debidamente autenticadas a cualquier destino. También queremos un oyente separado en el puerto 25 para respuestas de FBL y rebote remoto que no requieran autenticación.
# 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
En las siguientes declaraciones <source>, estamos usando autenticación de nombre de usuario/contraseña y TLS opcional para defendernos contra la inyección de mensajes no autorizados. También establecemos límites de velocidad en conexiones que realizan intentos de contraseña fallidos.
Su configuración podría ser diferente; por ejemplo, si tiene una red privada entre el inyectador y PowerMTA, no necesitará autenticación de contraseña.
# 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 declaración <source {auth}> (ver aquí. v5.0) se aplica una vez que la autenticación ha pasado. Aquí, permite el reenvío, configura el grupo MTA virtual predeterminado para usar y agrega el encabezado X-Job (que será informado por SparkPost Signals como campaign_id).
La lista de reescritura asigna mensajes inyectados para usar un dominio específico de MAIL FROM (también conocido como dominio de rebote o Return-Path:).
# # Rewrite the MAIL FROM address to match the bounce domain # <rewrite-list mfrom> mail-from *@pmta.signalsdemo.trymsys.net *@bounces.pmta.signalsdemo.trymsys.net </rewrite-list>
Luego configuramos nuestra configuración TLS y nombre de usuario/contraseña SMTP, según las recomendaciones actuales.
# # 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>
Podemos verificar que el TLS v1.0 (inseguro, obsoleto) no se acepta usando mi herramienta de prueba SMTP favorita, swaks.
swaks --server pmta.signalsdemo.trymsys.net --port 587 \ --to test@trymsys.net \ --from any@sparkpost.com \ --tls \ --tls-protocol tlsv1
Vemos:
*** TLS startup failed (connect(): error:00000000:lib(0):func(0):reason(0)) *** STARTTLS attempted but failed
Del mismo modo para –tls-protocol tlsv1_1.
Vamos a aplicar también la firma DKIM a nuestros mensajes salientes, ya que es una buena práctica (seguí estas instrucciones para configurar la clave).
# # DKIM # domain-key mypmta, pmta.signalsdemo.trymsys.net, /etc/pmta/mypmta.pmta.signalsdemo.trymsys.net.pem
FBL and OOB configuración
Ahora... finalmente... declaramos qué dominios específicos están abiertos para respuestas de rebote remoto y FBL. No queremos reenviar esos a ningún lugar (para prevenir ataques de rebote), solo procesar internamente esas respuestas.
# # 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>
Puedes ver que configuré dos dominios de rebote, ya que estaba probando con usar/no usar la regla de reescritura mfrom .
El dominio FBL generalmente se registra con servicios externos como Microsoft SNDS; consulta este artículo para más información. Para esta demostración, los FBL provendrán del Bouncy Sink, por lo que no es necesario registrarse.
Ahora... finalmente... declaramos qué dominios específicos están abiertos para respuestas de rebote remoto y FBL. No queremos reenviar esos a ningún lugar (para prevenir ataques de rebote), solo procesar internamente esas respuestas.
# # 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>
Puedes ver que configuré dos dominios de rebote, ya que estaba probando con usar/no usar la regla de reescritura mfrom .
El dominio FBL generalmente se registra con servicios externos como Microsoft SNDS; consulta este artículo para más información. Para esta demostración, los FBL provendrán del Bouncy Sink, por lo que no es necesario registrarse.
Ahora... finalmente... declaramos qué dominios específicos están abiertos para respuestas de rebote remoto y FBL. No queremos reenviar esos a ningún lugar (para prevenir ataques de rebote), solo procesar internamente esas respuestas.
# # 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>
Puedes ver que configuré dos dominios de rebote, ya que estaba probando con usar/no usar la regla de reescritura mfrom .
El dominio FBL generalmente se registra con servicios externos como Microsoft SNDS; consulta este artículo para más información. Para esta demostración, los FBL provendrán del Bouncy Sink, por lo que no es necesario registrarse.
Probando el SMTP listener
Es importante probar que su oyente SMTP requiera autorización para cualquier destino general, rechazando cualquier mensaje que no esté específicamente dirigido a los dominios FBL y de rebotes remotos.
swaks --server pmta.signalsdemo.trymsys.net \ --port 25 \ --to test@strange.pmta.signalsdemo.trymsys.net \ --from any@sparkpost.com
La respuesta, como se esperaba, muestra que el reenvío está denegado:
550 5.7.1 reenvío denegado para el destinatario en "RCPT TO:<test@strange.pmta.signalsdemo.trymsys.net>
(Fin de la descripción del proceso de demostración).
Es importante probar que su oyente SMTP requiera autorización para cualquier destino general, rechazando cualquier mensaje que no esté específicamente dirigido a los dominios FBL y de rebotes remotos.
swaks --server pmta.signalsdemo.trymsys.net \ --port 25 \ --to test@strange.pmta.signalsdemo.trymsys.net \ --from any@sparkpost.com
La respuesta, como se esperaba, muestra que el reenvío está denegado:
550 5.7.1 reenvío denegado para el destinatario en "RCPT TO:<test@strange.pmta.signalsdemo.trymsys.net>
(Fin de la descripción del proceso de demostración).
Es importante probar que su oyente SMTP requiera autorización para cualquier destino general, rechazando cualquier mensaje que no esté específicamente dirigido a los dominios FBL y de rebotes remotos.
swaks --server pmta.signalsdemo.trymsys.net \ --port 25 \ --to test@strange.pmta.signalsdemo.trymsys.net \ --from any@sparkpost.com
La respuesta, como se esperaba, muestra que el reenvío está denegado:
550 5.7.1 reenvío denegado para el destinatario en "RCPT TO:<test@strange.pmta.signalsdemo.trymsys.net>
(Fin de la descripción del proceso de demostración).
Configuración y nombramiento de VirtualMTA
PowerMTA VirtualMTAs (y los grupos de VirtualMTA) son funciones potentes para gestionar los flujos de mensajes, y las funciones de reporte de PowerMTA / SparkPost Signals funcionan mejor con estos activos.
# # 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>
La configuración de virtual-mta-pool se informa en SparkPost como “IP Pool”, y está disponible como un faceta de reporte de SparkPost Signals (el menú desplegable debajo de los gráficos).

El Informe Resumido también muestra IP Pool como una faceta de reporte “Group By”.

Como se mencionó anteriormente en este artículo, configurar al menos una dirección smtp-source-host también permite que SparkPost identifique correctamente la dirección IP de envío, para que aparezca en los eventos de Inyección y Entrega, y en el Informe Resumido:

Eso es todo lo que necesitas para que funcione una integración básica entre PowerMTA y SparkPost Signals. Encontrarás el ejemplo completo del archivo de configuración aquí.
Antes de que te vayas, aquí está la función bonus que mencioné.
PowerMTA VirtualMTAs (y los grupos de VirtualMTA) son funciones potentes para gestionar los flujos de mensajes, y las funciones de reporte de PowerMTA / SparkPost Signals funcionan mejor con estos activos.
# # 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>
La configuración de virtual-mta-pool se informa en SparkPost como “IP Pool”, y está disponible como un faceta de reporte de SparkPost Signals (el menú desplegable debajo de los gráficos).

El Informe Resumido también muestra IP Pool como una faceta de reporte “Group By”.

Como se mencionó anteriormente en este artículo, configurar al menos una dirección smtp-source-host también permite que SparkPost identifique correctamente la dirección IP de envío, para que aparezca en los eventos de Inyección y Entrega, y en el Informe Resumido:

Eso es todo lo que necesitas para que funcione una integración básica entre PowerMTA y SparkPost Signals. Encontrarás el ejemplo completo del archivo de configuración aquí.
Antes de que te vayas, aquí está la función bonus que mencioné.
PowerMTA VirtualMTAs (y los grupos de VirtualMTA) son funciones potentes para gestionar los flujos de mensajes, y las funciones de reporte de PowerMTA / SparkPost Signals funcionan mejor con estos activos.
# # 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>
La configuración de virtual-mta-pool se informa en SparkPost como “IP Pool”, y está disponible como un faceta de reporte de SparkPost Signals (el menú desplegable debajo de los gráficos).

El Informe Resumido también muestra IP Pool como una faceta de reporte “Group By”.

Como se mencionó anteriormente en este artículo, configurar al menos una dirección smtp-source-host también permite que SparkPost identifique correctamente la dirección IP de envío, para que aparezca en los eventos de Inyección y Entrega, y en el Informe Resumido:

Eso es todo lo que necesitas para que funcione una integración básica entre PowerMTA y SparkPost Signals. Encontrarás el ejemplo completo del archivo de configuración aquí.
Antes de que te vayas, aquí está la función bonus que mencioné.
Función adicional: comprobación/filtrado de X-Job name
Para asegurar que cualquier cadena de caracteres sea segura para usar como un nombre de PowerMTA X-Job, aquí tienes una función simple en Python para mapear cualquier carácter inseguro a un guion bajo “_”
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)
Esto utiliza expresiones regulares de Python de una manera específica. Declara el conjunto de caracteres no permitidos usando el operador de “complemento de conjunto” ^ en lugar de listar todos los caracteres permitidos. Eso significa que capturamos (y hacemos seguros) caracteres más allá del conjunto habitual de 7 bits. Podemos demostrar eso usando este fragmento de prueba:
s='' for i in range(32, 256): s += chr(i) print(pmtaSafeJobID(s))
Que da como resultado
!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^abcdefghijklmnopqrstuvwxyz{|}~_________________________________________________________
Puedes ver que <ESPACIO>, comillas dobles “, y el acento grave `, así como todos los caracteres más allá de ~ se mapean a guion bajo.
Para asegurar que cualquier cadena de caracteres sea segura para usar como un nombre de PowerMTA X-Job, aquí tienes una función simple en Python para mapear cualquier carácter inseguro a un guion bajo “_”
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)
Esto utiliza expresiones regulares de Python de una manera específica. Declara el conjunto de caracteres no permitidos usando el operador de “complemento de conjunto” ^ en lugar de listar todos los caracteres permitidos. Eso significa que capturamos (y hacemos seguros) caracteres más allá del conjunto habitual de 7 bits. Podemos demostrar eso usando este fragmento de prueba:
s='' for i in range(32, 256): s += chr(i) print(pmtaSafeJobID(s))
Que da como resultado
!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^abcdefghijklmnopqrstuvwxyz{|}~_________________________________________________________
Puedes ver que <ESPACIO>, comillas dobles “, y el acento grave `, así como todos los caracteres más allá de ~ se mapean a guion bajo.
Para asegurar que cualquier cadena de caracteres sea segura para usar como un nombre de PowerMTA X-Job, aquí tienes una función simple en Python para mapear cualquier carácter inseguro a un guion bajo “_”
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)
Esto utiliza expresiones regulares de Python de una manera específica. Declara el conjunto de caracteres no permitidos usando el operador de “complemento de conjunto” ^ en lugar de listar todos los caracteres permitidos. Eso significa que capturamos (y hacemos seguros) caracteres más allá del conjunto habitual de 7 bits. Podemos demostrar eso usando este fragmento de prueba:
s='' for i in range(32, 256): s += chr(i) print(pmtaSafeJobID(s))
Que da como resultado
!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^abcdefghijklmnopqrstuvwxyz{|}~_________________________________________________________
Puedes ver que <ESPACIO>, comillas dobles “, y el acento grave `, así como todos los caracteres más allá de ~ se mapean a guion bajo.



