Ir al contenido principal

Postmark (ActiveCampaign): Guía técnica completa para el email transaccional

Por CaptainDNS
Publicado el 28 de enero de 2026

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

Introducción

Postmark se ha forjado una reputación de excelencia en el email transaccional, con una filosofía clara: la entregabilidad ante todo. Adquirido por ActiveCampaign en mayo de 2022, el servicio sigue siendo un producto autónomo, conservando su equipo y su ADN técnico. La plataforma procesa miles de millones de emails con un enfoque exclusivo en lo transaccional (confirmaciones de pedido, restablecimientos de contraseña, notificaciones).

La particularidad de Postmark reside en su separación estricta entre transaccional y broadcast vía los Message Streams. Esta arquitectura garantiza que tus emails críticos nunca se vean impactados por campañas de marketing. El pool de IP compartido es monitoreado activamente para mantener una reputación impecable.

Esta guía está dirigida a desarrolladores, DevOps y arquitectos de sistemas que buscan integrar Postmark con una comprensión completa de la infraestructura: configuración DNS, elección API vs SMTP, gestión de IP, webhooks y límites técnicos.

API REST vs SMTP Relay: arquitectura y elección de integración

Postmark ofrece dos métodos de integración, cada uno adaptado a casos de uso específicos.

Comparación entre API REST y SMTP Relay Postmark

Comparativo técnico

CriterioAPI RESTSMTP Relay
EndpointPOST https://api.postmarkapp.com/emailsmtp.postmarkapp.com puertos 587/2525
AutenticaciónHeader 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 conexión
Tamaño max10 MB por email10 MB por email
TemplatesMustachio (similar a Handlebars)Contenido inline únicamente
SchedulingNo soportado nativamenteNo soportado nativamente
TrackingVía parámetros JSONVía headers X-PM-*
Caso de uso idealApps modernas, batch, templatesLegacy, CMS, servidores mail existentes

¿Cuándo elegir la API REST?

La API REST es el método recomendado para cualquier nueva integración. Ofrece un control preciso sobre cada aspecto del envío.

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 envío 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"
}

Límites clave:

  • Rate limit: no publicado explícitamente, monitoreo interno
  • Destinatarios: 50 max por email (To + Cc + Bcc)
  • Batch: 500 mensajes por llamada, 50 MB total
  • Tamaño email: 10 MB max

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

¿Cuándo elegir el SMTP Relay?

El SMTP Relay es ideal para sistemas legacy o aplicaciones que sólo soportan SMTP.

Configuración 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
25SMTP estándar
465NoImplicit TLS no soportado
587Recomendado - puerto submission
2525Puerto alternativo

Métodos de autenticación: CRAM-MD5 (recomendado), DIGEST-MD5, PLAIN, LOGIN.

Headers propietarios X-PM-*:

HeaderUsoEjemplo
X-PM-TagCategorizaciónX-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 alineación DMARC

La autenticación de dominio en Postmark se basa en DKIM y un Return-Path personalizable. La configuración se realiza en Sender Signatures o Domain Authentication.

Flujo de autenticación DNS con Postmark

Configuración DKIM

Postmark genera una clave DKIM de 1024 bits con un selector único 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...

Características:

  • Tamaño de clave: 1024 bits (no 2048)
  • Rotación: manual, trimestral recomendada
  • API rotación: POST /domains/{domainid}/rotatedkim

La rotación utiliza el sistema de dos selectores: Postmark prepara el nuevo selector antes de cambiar, garantizando una transición sin interrupción.

SPF: ¿requerido o no?

SPF ya no es requerido para Postmark. Aquí está el por qué:

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 automáticamente SPF sin modificación DNS de tu lado.

Include opcional (si quieres ser explícito):

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

Return-Path custom y alineación DMARC

Para obtener la alineación SPF DMARC, debes configurar un Return-Path personalizado.

Registro DNS requerido:

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

Después de la configuración:

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

Impacto en la alineación DMARC:

ConfiguraciónSPF PassAlineación DMARC
Return-Path por defectoSí (dominio Postmark)No - Falla
Return-Path customSí (subdominio cliente)Sí - Relaxed únicamente

Punto crítico: la alineación 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 alineación DMARC, que soporta el modo strict (adkim=s).

Tabla resumen DNS completa

RegistroTipoHostnameValorObligatorio
DKIMTXT[timestamp]pm._domainkey.captaindns.comk=rsa; p=[clave-pública]Sí - Recomendado
Return-PathCNAMEpm-bounces.captaindns.compm.mtasv.netPara alineación 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 separación estricta entre emails transaccionales y broadcast vía los Message Streams. Esta arquitectura protege la reputación de tus emails críticos.

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 desuscripción es obligatorio:

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

Gestión de desuscripciones:

  • UnsubscribeHandlingType: "Postmark": gestionado automáticamente
  • UnsubscribeHandlingType: "None": a gestionar manualmente

Límites de los Message Streams

RecursoLímite
Streams por Server10 max (contactar soporte para más)
Inbound Streams por Server1 únicamente
Nombre de stream100 caracteres máx
Streams archivadosEliminados después de 45 días

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 reputación.

Filosofía Postmark: "Un pool IP de alta calidad y alta reputación ofrece una entregabilidad mejor y más confiable" para la mayoría de los remitentes.

Características:

  • Pool monitoreado activamente
  • Alertas de blacklist automáticas
  • No requiere warm-up
  • Adaptado para la mayoría de los volúmenes

IP dedicada

Para grandes volúmenes, Postmark ofrece IP dedicadas.

CriterioValor
Volumen mínimo300 000 emails/mes
Costo50$/IP/mes (sin cargo de setup)
IP adicional100 000+ mensajes/día requeridos
Warm-upAutomático, 3-6 semanas
OverflowEnrutado vía pool compartido durante warm-up

Warm-up automático:

  • Límites diarios definidos por Postmark
  • Ajuste según la respuesta de los receptores
  • Volumen excedente enviado vía 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$101030Sí (300K+)
Platform18$1,20$IlimitadoIlimitadoIlimitadoSí (300K+)

Límites del plan Free Developer:

  • 100 emails/mes (límite 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 dirección 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

EventoDescripción
DeliveryEmail entregado al servidor receptor
BounceEmail rebotado (hard, soft, transient)
OpenDestinatario abrió 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
}

Política de retry

Tipo webhookPolítica 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 está firmado con el header X-Postmark-Signature.

Verificación (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)
  );
}

Configuración vía 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 }
    }
  }'

Límites técnicos y cuotas

Tamaño de los mensajes

LímiteValor
Tamaño max email (API)10 MB total
Tamaño max batch (Batch API)50 MB total
TextBody / HtmlBody5 MB cada uno
Almacenamiento mensaje1 MB (truncado más allá)

Cuotas API

RecursoLímite
Destinatarios por email50 max (To + Cc + Bcc)
Mensajes por batch500 max
URLs webhook por stream10 max
Tamaño Tag1 000 caracteres
Búsqueda bounces/mensajes10 000 resultados max

Retención de datos

TipoDuración
Retención por defecto45 días
Retención mínima7 días
Retención máxima365 días (add-on)
Bounce dumps30 días max
Estadísticas agregadasIndefinidamente
Lista supresionesIndefinidamente

Templates con Mustachio

Postmark utiliza Mustachio, un lenguaje de templating basado en Mustache con mejoras específicas.

Sintaxis básica

<!-- 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}}

Límites:

  • No hay sintaxis if/else explícita
  • Lógica compleja no soportada
  • Tags <link> prohibidos en <head>
  • CSS automáticamente inlineado al enviar

Seguridad y cumplimiento

Certificaciones

CertificaciónDetalle
SOC 2 Type 2No - certificaciones a nivel data center (AWS, Deft)
ISO 27017/27018Vía AWS
PCI DSS Level 1Vía Stripe (pagos)

RGPD

AspectoDetalle
DPA disponibleSí - con SCCs
URL DPAhttps://postmarkapp.com/dpa
Localización datosUS (sin opción EU)
Representante EUEU-REP.Global

HIPAA

AspectoDetalle
Cumple HIPAANO
BAA disponibleNO

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

Autenticación de cuenta

FuncionalidadDisponibilidad
2FASí - Todos los planes
SSO/SAMLNo - No disponible

Plan de acción: integrar Postmark paso a paso

  1. Crear una cuenta en https://account.postmarkapp.com/sign_up
  2. Solicitar la aprobación vía "Request approval" (~24h de revisión 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 vía el Activity Feed y las estadísticas

Guías técnicas: otras plataformas de email transaccional

Descubre nuestras guías completas para otras soluciones de email transaccional:

FAQ

¿Es Postmark adecuado para email marketing?

No, Postmark está especializado en email transaccional. Los emails broadcast (newsletters, anuncios) son soportados vía Message Streams separados, pero la plataforma no ofrece funcionalidades de marketing avanzadas (segmentación, A/B testing, automatización). Para marketing, considera soluciones dedicadas o la plataforma madre ActiveCampaign.

¿Cuál es la diferencia entre Postmark y SendGrid?

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

¿Se puede usar Postmark con una política DMARC estricta?

Sí, vía DKIM. La alineación DKIM soporta el modo strict (adkim=s). En cambio, la alineación SPF sólo funciona en modo relaxed (aspf=r) porque el Return-Path usa un subdominio. Configura tu política DMARC para apoyarse en DKIM: p=reject; adkim=s; aspf=r.

¿Cuánto cuesta una IP dedicada en Postmark?

50$/mes por IP, sin cargo de setup. Condición: enviar al menos 300 000 emails/mes. El warm-up es automático en 3-6 semanas. Para una IP adicional, hay que superar 100 000 mensajes/día.

¿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 explícitamente firmar BAAs (Business Associate Agreements). Si necesitas enviar PHI (Protected Health Information), usa otra solución conforme a HIPAA.

Glosario

  • Message Stream: flujo de envío separado que permite aislar los emails transaccionales de los broadcasts, cada uno con su propio pool de IP y sus métricas
  • Sender Signature: verificación de una dirección email remitente individual, alternativa a la verificación de dominio completo
  • Return-Path: dirección 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