Ir al contenido principal

Postmark (ActiveCampaign): Guia tecnica completa para el email transaccional

Por CaptainDNS
Publicado el 28 de enero de 2026

Dashboard Postmark con Message Streams y configuracion DNS DKIM
TL;DR
  • Postmark, especializado en transaccional, adquirido por ActiveCampaign en 2022, apuesta por la entregabilidad excepcional con separacion estricta transaccional/broadcast via Message Streams.
  • API REST simple en api.postmarkapp.com con header X-Postmark-Server-Token, 50 destinatarios max por email, 500 mensajes por batch.
  • DKIM 1024 bits con selector timestamped ([timestamp]pm._domainkey), rotacion manual trimestral recomendada.
  • Return-Path custom via CNAME pm-bounces.captaindns.compm.mtasv.net para alineacion SPF DMARC relaxed unicamente (no strict).
  • IP dedicada a 50$/mes a partir de 300K emails/mes, warm-up automatico en 3-6 semanas.
  • Planes desde 15$/mes para 10K emails (Basic), plan Free Developer limitado a 100 emails/mes.

Introduccion

Postmark se ha forjado una reputacion de excelencia en el email transaccional, con una filosofia clara: la entregabilidad ante todo. Adquirido por ActiveCampaign en mayo de 2022, el servicio sigue siendo un producto autonomo, conservando su equipo y su ADN tecnico. La plataforma procesa miles de millones de emails con un enfoque exclusivo en lo transaccional (confirmaciones de pedido, restablecimientos de contrasena, notificaciones).

La particularidad de Postmark reside en su separacion estricta entre transaccional y broadcast via los Message Streams. Esta arquitectura garantiza que tus emails criticos nunca se vean impactados por campanas de marketing. El pool de IP compartido es monitoreado activamente para mantener una reputacion impecable.

Esta guia esta dirigida a desarrolladores, DevOps y arquitectos de sistemas que buscan integrar Postmark con una comprension completa de la infraestructura: configuracion DNS, eleccion API vs SMTP, gestion de IP, webhooks y limites tecnicos.

API REST vs SMTP Relay: arquitectura y eleccion de integracion

Postmark ofrece dos metodos de integracion, cada uno adaptado a casos de uso especificos.

Comparacion entre API REST y SMTP Relay Postmark

Comparativo tecnico

CriterioAPI RESTSMTP Relay
EndpointPOST https://api.postmarkapp.com/emailsmtp.postmarkapp.com puertos 587/2525
AutenticacionHeader X-Postmark-Server-TokenUsername: API key / Password: API key
Destinatarios/email50 max (To + Cc + Bcc)50 max
Batch500 mensajes/llamada, 50 MB max1 email por conexion
Tamano max10 MB por email10 MB por email
TemplatesMustachio (similar a Handlebars)Contenido inline unicamente
SchedulingNo soportado nativamenteNo soportado nativamente
TrackingVia parametros JSONVia headers X-PM-*
Caso de uso idealApps modernas, batch, templatesLegacy, CMS, servidores mail existentes

Cuando elegir la API REST?

La API REST es el metodo recomendado para cualquier nueva integracion. Ofrece un control preciso sobre cada aspecto del envio.

Endpoint principal: POST https://api.postmarkapp.com/email

Headers requeridos:

Content-Type: application/json
Accept: application/json
X-Postmark-Server-Token: tu-server-token

Ejemplo de envio completo:

curl "https://api.postmarkapp.com/email" \
  -X POST \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Postmark-Server-Token: tu-server-token" \
  -d '{
    "From": "notifications@captaindns.com",
    "To": "cliente@captaindns.com",
    "Subject": "Tu analisis DNS esta listo",
    "TextBody": "Hola, tu reporte DNS esta disponible.",
    "HtmlBody": "<html><body><strong>Hola</strong>, tu reporte DNS esta disponible.</body></html>",
    "Tag": "dns-report",
    "TrackOpens": true,
    "TrackLinks": "HtmlAndText",
    "MessageStream": "outbound",
    "Metadata": {
      "report_id": "RPT-12345",
      "user_id": "USR-789"
    }
  }'

Respuesta esperada (200 OK):

{
  "To": "cliente@captaindns.com",
  "SubmittedAt": "2026-01-28T10:30:00.1234567-05:00",
  "MessageID": "b7bc2f4a-e38e-4336-af7d-e6c392c2f817",
  "ErrorCode": 0,
  "Message": "OK"
}

Limites clave:

  • Rate limit: no publicado explicitamente, monitoreo interno
  • Destinatarios: 50 max por email (To + Cc + Bcc)
  • Batch: 500 mensajes por llamada, 50 MB total
  • Tamano email: 10 MB max

SDKs oficiales: Ruby, .NET, Java, PHP, Node.js. No hay SDK Python oficial (usar postmarker o python-postmark).

Cuando elegir el SMTP Relay?

El SMTP Relay es ideal para sistemas legacy o aplicaciones que solo soportan SMTP.

Configuracion oficial:

# Transaccional
SMTP server: smtp.postmarkapp.com
Port: 587 (recomendado) o 2525 (fallback)

# Broadcast
SMTP server: smtp-broadcasts.postmarkapp.com
Port: 587 o 2525

# Autenticacion
Username: tu-server-api-token
Password: tu-server-api-token

Puertos disponibles:

PuertoSoporteNotas
25SiSMTP estandar
465NoImplicit TLS no soportado
587SiRecomendado - puerto submission
2525SiPuerto alternativo

Metodos de autenticacion: CRAM-MD5 (recomendado), DIGEST-MD5, PLAIN, LOGIN.

Headers propietarios X-PM-*:

HeaderUsoEjemplo
X-PM-TagCategorizacionX-PM-Tag: password-reset
X-PM-Message-StreamEspecificar el streamX-PM-Message-Stream: outbound
X-PM-Metadata-*Metadatos customX-PM-Metadata-user-id: 12345
X-PM-TrackOpensTracking de aperturaX-PM-TrackOpens: true
X-PM-TrackLinksTracking de enlacesX-PM-TrackLinks: HtmlAndText

Domain Authentication: DKIM, Return-Path y alineacion DMARC

La autenticacion de dominio en Postmark se basa en DKIM y un Return-Path personalizable. La configuracion se realiza en Sender Signatures o Domain Authentication.

Flujo de autenticacion DNS con Postmark

Configuracion DKIM

Postmark genera una clave DKIM de 1024 bits con un selector unico basado en un timestamp.

Formato del selector: [timestamp]pm._domainkey.captaindns.com

Ejemplos de selectores:

  • 20260128pm._domainkey.captaindns.com
  • jan2026pm._domainkey.captaindns.com

Registro DNS a crear:

Type: TXT
Hostname: 20260128pm._domainkey.captaindns.com
Value: k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDO...

Caracteristicas:

  • Tamano de clave: 1024 bits (no 2048)
  • Rotacion: manual, trimestral recomendada
  • API rotacion: POST /domains/{domainid}/rotatedkim

La rotacion utiliza el sistema de dos selectores: Postmark prepara el nuevo selector antes de cambiar, garantizando una transicion sin interrupcion.

SPF: requerido o no?

SPF ya no es requerido para Postmark. Aqui esta el por que:

Por defecto, Postmark usa su propio dominio para el Return-Path:

Return-Path: <pm_bounces@pm.mtasv.net>

Los servidores receptores verifican SPF contra el dominio Return-Path (pm.mtasv.net), no contra tu dominio From (captaindns.com). Tus emails pasan automaticamente SPF sin modificacion DNS de tu lado.

Include opcional (si quieres ser explicito):

v=spf1 a mx include:spf.mtasv.net ~all

Return-Path custom y alineacion DMARC

Para obtener la alineacion SPF DMARC, debes configurar un Return-Path personalizado.

Registro DNS requerido:

Type: CNAME
Hostname: pm-bounces.captaindns.com
Value: pm.mtasv.net

Despues de la configuracion:

Return-Path: <pm_bounces@pm-bounces.captaindns.com>

Impacto en la alineacion DMARC:

ConfiguracionSPF PassAlineacion DMARC
Return-Path por defectoSi (dominio Postmark)No - Falla
Return-Path customSi (subdominio cliente)Si - Relaxed unicamente

Punto critico: la alineacion strict (aspf=s) no es posible con Postmark porque el Return-Path siempre usa un subdominio (pm-bounces.captaindns.comcaptaindns.com).

Estrategia recomendada: apoyarse en DKIM para la alineacion DMARC, que soporta el modo strict (adkim=s).

Tabla resumen DNS completa

RegistroTipoHostnameValorObligatorio
DKIMTXT[timestamp]pm._domainkey.captaindns.comk=rsa; p=[clave-publica]Si - Recomendado
Return-PathCNAMEpm-bounces.captaindns.compm.mtasv.netPara alineacion DMARC
Link TrackingCNAME[custom].captaindns.com[valor-postmark]Opcional
SPFTXTcaptaindns.comv=spf1 include:spf.mtasv.net ~allNo - No requerido

Message Streams: transaccional vs broadcast

Postmark impone una separacion estricta entre emails transaccionales y broadcast via los Message Streams. Esta arquitectura protege la reputacion de tus emails criticos.

Arquitectura de los streams

AspectoTransaccionalBroadcast
UsoEmails disparados por usuarioEmails bulk (newsletters)
SMTP hostsmtp.postmarkapp.comsmtp-broadcasts.postmarkapp.com
Enlace unsubscribeOpcionalRequerido
InfraestructuraPool IP dedicadoPool IP separado
Stream por defectooutboundbroadcast

Enlace unsubscribe obligatorio (Broadcast)

Para los streams Broadcast, el enlace de desuscripcion es obligatorio:

<a href="{{{ pm:unsubscribe }}}">Darse de baja</a>

Gestion de desuscripciones:

  • UnsubscribeHandlingType: "Postmark": gestionado automaticamente
  • UnsubscribeHandlingType: "None": a gestionar manualmente

Limites de los Message Streams

RecursoLimite
Streams por Server10 max (contactar soporte para mas)
Inbound Streams por Server1 unicamente
Nombre de stream100 caracteres max
Streams archivadosEliminados despues de 45 dias

IP compartida vs IP dedicada

Pool IP compartido (todos los planes)

Por defecto, todos los clientes Postmark usan un pool de IP compartido de alta reputacion.

Filosofia Postmark: "Un pool IP de alta calidad y alta reputacion ofrece una entregabilidad mejor y mas confiable" para la mayoria de los remitentes.

Caracteristicas:

  • Pool monitoreado activamente
  • Alertas de blacklist automaticas
  • No requiere warm-up
  • Adaptado para la mayoria de los volumenes

IP dedicada

Para grandes volumenes, Postmark ofrece IP dedicadas.

CriterioValor
Volumen minimo300 000 emails/mes
Costo50$/IP/mes (sin cargo de setup)
IP adicional100 000+ mensajes/dia requeridos
Warm-upAutomatico, 3-6 semanas
OverflowEnrutado via pool compartido durante warm-up

Warm-up automatico:

  • Limites diarios definidos por Postmark
  • Ajuste segun la respuesta de los receptores
  • Volumen excedente enviado via pool compartido
  • Monitoreo continuo por el equipo Postmark

Re-warmup requerido: si el volumen baja de 20 000 mensajes/semana durante 4 semanas consecutivas.

Reverse DNS: gestionado por Postmark (no personalizable por el cliente).

Precios 2026

Planes y precios

PlanPrecio/mes (10K)Overage /1000ServersDomainsStreamsIP dedicada
Free Developer0$N/A101030No
Basic15$1,80$5515No
Pro16,50$1,30$101030Si (300K+)
Platform18$1,20$IlimitadoIlimitadoIlimitadoSi (300K+)

Limites del plan Free Developer:

  • 100 emails/mes (limite estricto)
  • No hay overage posible
  • Ideal para pruebas y desarrollo

Escalamiento por volumen

Volumen mensualTarifa aproximada
10 00015-18$/mes
50 00050-60$/mes
125 000~100$/mes
300 000~200$/mes
700 000~400$/mes
5 000 000+Precios personalizados

Add-ons opcionales

Add-onPrecio
IP dedicada50$/mes/IP
Custom Activity RetentionDesde 5$/mes
DMARC DigestsDesde 14$/mes/dominio

Reglas de conteo

  • Cada mensaje enviado = 1 email
  • Cada direccion Cc/Bcc = 1 email adicional
  • Mensajes sandbox = contabilizados
  • Emails no utilizados = no se transfieren

Webhooks y eventos

Postmark ofrece un sistema de webhooks completo para seguir el ciclo de vida de tus emails.

Arquitectura webhooks Postmark

Eventos disponibles

EventoDescripcion
DeliveryEmail entregado al servidor receptor
BounceEmail rebotado (hard, soft, transient)
OpenDestinatario abrio el email
ClickDestinatario hizo clic en un enlace
SpamComplaintEmail marcado como spam
SubscriptionChangeAlta/baja de la lista Suppression
InboundEmail inbound recibido y parseado

Ejemplo de payload Bounce

{
  "RecordType": "Bounce",
  "ID": 692560173,
  "Type": "HardBounce",
  "TypeCode": 1,
  "Name": "Hard bounce",
  "Tag": "dns-report",
  "MessageID": "2c1b63fe-43f2-4db5-91b0-8bdfa44a9316",
  "ServerID": 23,
  "MessageStream": "outbound",
  "Description": "The server was unable to deliver your message",
  "Email": "invalido@captaindns.com",
  "From": "notifications@captaindns.com",
  "BouncedAt": "2026-01-28T16:09:19Z",
  "Inactive": true,
  "CanActivate": true
}

Politica de retry

Tipo webhookPolitica retry
Bounce, Inbound1 min → 5 min → 10 min (x3) → 15 min → 30 min → 1h → 2h → 6h = 10 retries en ~10,5h
Click, Open, Delivery1 min → 5 min → 15 min = 3 retries

Importante: una respuesta HTTP 403 detiene inmediatamente los retries.

Seguridad: firma HMAC-SHA256

Cada webhook esta firmado con el header X-Postmark-Signature.

Verificacion (Node.js):

const crypto = require('crypto');

function verifyWebhookSignature(payload, signature, secret) {
  const computedSignature = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('base64');
  return crypto.timingSafeEqual(
    Buffer.from(computedSignature),
    Buffer.from(signature)
  );
}

Configuracion via API

curl "https://api.postmarkapp.com/webhooks" \
  -X POST \
  -H "Content-Type: application/json" \
  -H "X-Postmark-Server-Token: tu-server-token" \
  -d '{
    "Url": "https://captaindns.com/webhooks/postmark",
    "MessageStream": "outbound",
    "Triggers": {
      "Delivery": { "Enabled": true },
      "Bounce": { "Enabled": true, "IncludeContent": false },
      "SpamComplaint": { "Enabled": true },
      "Open": { "Enabled": true, "PostFirstOpenOnly": true },
      "Click": { "Enabled": true }
    }
  }'

Limites tecnicos y cuotas

Tamano de los mensajes

LimiteValor
Tamano max email (API)10 MB total
Tamano max batch (Batch API)50 MB total
TextBody / HtmlBody5 MB cada uno
Almacenamiento mensaje1 MB (truncado mas alla)

Cuotas API

RecursoLimite
Destinatarios por email50 max (To + Cc + Bcc)
Mensajes por batch500 max
URLs webhook por stream10 max
Tamano Tag1 000 caracteres
Busqueda bounces/mensajes10 000 resultados max

Retencion de datos

TipoDuracion
Retencion por defecto45 dias
Retencion minima7 dias
Retencion maxima365 dias (add-on)
Bounce dumps30 dias max
Estadisticas agregadasIndefinidamente
Lista supresionesIndefinidamente

Templates con Mustachio

Postmark utiliza Mustachio, un lenguaje de templating basado en Mustache con mejoras especificas.

Sintaxis basica

<!-- Variable con escape HTML -->
{{ nombre }}

<!-- Variable sin escape (raw) -->
{{{ html_content }}}

<!-- Notacion punto -->
{{ pedido.numero }}

Condiciones (bloques truthy/falsy)

{{#has_discount}}
  <p>Tu descuento: {{ discount_amount }}</p>
{{/has_discount}}

{{^has_discount}}
  <p>Ningun descuento aplicado</p>
{{/has_discount}}

Bucles

{{#each items}}
  <li>{{ name }} - {{ price }} $</li>
{{/each}}

Limites:

  • No hay sintaxis if/else explicita
  • Logica compleja no soportada
  • Tags <link> prohibidos en <head>
  • CSS automaticamente inlineado al enviar

Seguridad y cumplimiento

Certificaciones

CertificacionDetalle
SOC 2 Type 2No - certificaciones a nivel data center (AWS, Deft)
ISO 27017/27018Via AWS
PCI DSS Level 1Via Stripe (pagos)

RGPD

AspectoDetalle
DPA disponibleSi - con SCCs
URL DPAhttps://postmarkapp.com/dpa
Localizacion datosUS (sin opcion EU)
Representante EUEU-REP.Global

HIPAA

AspectoDetalle
Cumple HIPAANO
BAA disponibleNO

Postmark declara explicitamente: "Postmark is not HIPAA-compliant so we do not recommend using our platform if you need to send HIPAA-compliant emails".

Autenticacion de cuenta

FuncionalidadDisponibilidad
2FASi - Todos los planes
SSO/SAMLNo - No disponible

Plan de accion: integrar Postmark paso a paso

  1. Crear una cuenta en https://account.postmarkapp.com/sign_up
  2. Solicitar la aprobacion via "Request approval" (~24h de revision manual)
  3. Verificar tu dominio (Sender Signature individual o dominio completo)
  4. Configurar los registros DNS:
    • DKIM: TXT [timestamp]pm._domainkey.captaindns.com
    • Return-Path: CNAME pm-bounces.captaindns.compm.mtasv.net
  5. Crear un Server API Token en Settings → API Tokens
  6. Probar con el token test: usar POSTMARK_API_TEST como token para validar sin enviar
  7. Configurar los webhooks para bounces y spam complaints
  8. Monitorear via el Activity Feed y las estadisticas

Guias tecnicas: otras plataformas de email transaccional

Descubre nuestras guias completas para otras soluciones de email transaccional:

FAQ

Es Postmark adecuado para email marketing?

No, Postmark esta especializado en email transaccional. Los emails broadcast (newsletters, anuncios) son soportados via Message Streams separados, pero la plataforma no ofrece funcionalidades de marketing avanzadas (segmentacion, A/B testing, automatizacion). Para marketing, considera soluciones dedicadas o la plataforma madre ActiveCampaign.

Cual es la diferencia entre Postmark y SendGrid?

Postmark se concentra exclusivamente en la entregabilidad transaccional con un pool IP muy controlado. SendGrid ofrece mas flexibilidad (DKIM 2048 bits, rate limits publicados, mas SDKs) pero con un posicionamiento mas generalista. Postmark usa claves DKIM de 1024 bits y no publica sus rate limits explicitamente.

Se puede usar Postmark con una politica DMARC estricta?

Si, via DKIM. La alineacion DKIM soporta el modo strict (adkim=s). En cambio, la alineacion SPF solo funciona en modo relaxed (aspf=r) porque el Return-Path usa un subdominio. Configura tu politica DMARC para apoyarse en DKIM: p=reject; adkim=s; aspf=r.

Cuanto cuesta una IP dedicada en Postmark?

50$/mes por IP, sin cargo de setup. Condicion: enviar al menos 300 000 emails/mes. El warm-up es automatico en 3-6 semanas. Para una IP adicional, hay que superar 100 000 mensajes/dia.

Hay un SDK Python oficial para Postmark?

No, Postmark no mantiene un SDK Python oficial. Las alternativas comunitarias recomendadas son postmarker y python-postmark. Los SDKs oficiales cubren Ruby, .NET, Java, PHP y Node.js.

Es Postmark conforme a HIPAA?

No. Postmark rechaza explicitamente firmar BAAs (Business Associate Agreements). Si necesitas enviar PHI (Protected Health Information), usa otra solucion conforme a HIPAA.

Glosario

  • Message Stream: flujo de envio separado que permite aislar los emails transaccionales de los broadcasts, cada uno con su propio pool de IP y sus metricas
  • Sender Signature: verificacion de una direccion email remitente individual, alternativa a la verificacion de dominio completo
  • Return-Path: direccion de rebote (Envelope From) usada por los servidores receptores para SPF y las notificaciones de bounce
  • Mustachio: lenguaje de templating de Postmark basado en Mustache, con soporte de condiciones, bucles y variables

Fuentes oficiales

Artículos relacionados