Postmark (ActiveCampaign): Guía técnica completa para el email transaccional
Por CaptainDNS
Publicado el 28 de enero de 2026

- 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.comcon headerX-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.com→pm.mtasv.netpara 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.

Comparativo técnico
| Criterio | API REST | SMTP Relay |
|---|---|---|
| Endpoint | POST https://api.postmarkapp.com/email | smtp.postmarkapp.com puertos 587/2525 |
| Autenticación | Header X-Postmark-Server-Token | Username: API key / Password: API key |
| Destinatarios/email | 50 max (To + Cc + Bcc) | 50 max |
| Batch | 500 mensajes/llamada, 50 MB max | 1 email por conexión |
| Tamaño max | 10 MB por email | 10 MB por email |
| Templates | Mustachio (similar a Handlebars) | Contenido inline únicamente |
| Scheduling | No soportado nativamente | No soportado nativamente |
| Tracking | Vía parámetros JSON | Vía headers X-PM-* |
| Caso de uso ideal | Apps modernas, batch, templates | Legacy, 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:
| Puerto | Soporte | Notas |
|---|---|---|
| 25 | Sí | SMTP estándar |
| 465 | No | Implicit TLS no soportado |
| 587 | Sí | Recomendado - puerto submission |
| 2525 | Sí | Puerto alternativo |
Métodos de autenticación: CRAM-MD5 (recomendado), DIGEST-MD5, PLAIN, LOGIN.
Headers propietarios X-PM-*:
| Header | Uso | Ejemplo |
|---|---|---|
X-PM-Tag | Categorización | X-PM-Tag: password-reset |
X-PM-Message-Stream | Especificar el stream | X-PM-Message-Stream: outbound |
X-PM-Metadata-* | Metadatos custom | X-PM-Metadata-user-id: 12345 |
X-PM-TrackOpens | Tracking de apertura | X-PM-TrackOpens: true |
X-PM-TrackLinks | Tracking de enlaces | X-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.

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.comjan2026pm._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ón | SPF Pass | Alineación DMARC |
|---|---|---|
| Return-Path por defecto | Sí (dominio Postmark) | No - Falla |
| Return-Path custom | Sí (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.com ≠ captaindns.com).
Estrategia recomendada: apoyarse en DKIM para la alineación DMARC, que soporta el modo strict (adkim=s).
Tabla resumen DNS completa
| Registro | Tipo | Hostname | Valor | Obligatorio |
|---|---|---|---|---|
| DKIM | TXT | [timestamp]pm._domainkey.captaindns.com | k=rsa; p=[clave-pública] | Sí - Recomendado |
| Return-Path | CNAME | pm-bounces.captaindns.com | pm.mtasv.net | Para alineación DMARC |
| Link Tracking | CNAME | [custom].captaindns.com | [valor-postmark] | Opcional |
| SPF | TXT | captaindns.com | v=spf1 include:spf.mtasv.net ~all | No - 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
| Aspecto | Transaccional | Broadcast |
|---|---|---|
| Uso | Emails disparados por usuario | Emails bulk (newsletters) |
| SMTP host | smtp.postmarkapp.com | smtp-broadcasts.postmarkapp.com |
| Enlace unsubscribe | Opcional | Requerido |
| Infraestructura | Pool IP dedicado | Pool IP separado |
| Stream por defecto | outbound | broadcast |
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áticamenteUnsubscribeHandlingType: "None": a gestionar manualmente
Límites de los Message Streams
| Recurso | Límite |
|---|---|
| Streams por Server | 10 max (contactar soporte para más) |
| Inbound Streams por Server | 1 únicamente |
| Nombre de stream | 100 caracteres máx |
| Streams archivados | Eliminados 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.
| Criterio | Valor |
|---|---|
| Volumen mínimo | 300 000 emails/mes |
| Costo | 50$/IP/mes (sin cargo de setup) |
| IP adicional | 100 000+ mensajes/día requeridos |
| Warm-up | Automático, 3-6 semanas |
| Overflow | Enrutado 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
| Plan | Precio/mes (10K) | Overage /1000 | Servers | Domains | Streams | IP dedicada |
|---|---|---|---|---|---|---|
| Free Developer | 0$ | N/A | 10 | 10 | 30 | No |
| Basic | 15$ | 1,80$ | 5 | 5 | 15 | No |
| Pro | 16,50$ | 1,30$ | 10 | 10 | 30 | Sí (300K+) |
| Platform | 18$ | 1,20$ | Ilimitado | Ilimitado | Ilimitado | Sí (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 mensual | Tarifa aproximada |
|---|---|
| 10 000 | 15-18$/mes |
| 50 000 | 50-60$/mes |
| 125 000 | ~100$/mes |
| 300 000 | ~200$/mes |
| 700 000 | ~400$/mes |
| 5 000 000+ | Precios personalizados |
Add-ons opcionales
| Add-on | Precio |
|---|---|
| IP dedicada | 50$/mes/IP |
| Custom Activity Retention | Desde 5$/mes |
| DMARC Digests | Desde 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.

Eventos disponibles
| Evento | Descripción |
|---|---|
| Delivery | Email entregado al servidor receptor |
| Bounce | Email rebotado (hard, soft, transient) |
| Open | Destinatario abrió el email |
| Click | Destinatario hizo clic en un enlace |
| SpamComplaint | Email marcado como spam |
| SubscriptionChange | Alta/baja de la lista Suppression |
| Inbound | Email 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 webhook | Política retry |
|---|---|
| Bounce, Inbound | 1 min → 5 min → 10 min (x3) → 15 min → 30 min → 1h → 2h → 6h = 10 retries en ~10,5h |
| Click, Open, Delivery | 1 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ímite | Valor |
|---|---|
| Tamaño max email (API) | 10 MB total |
| Tamaño max batch (Batch API) | 50 MB total |
| TextBody / HtmlBody | 5 MB cada uno |
| Almacenamiento mensaje | 1 MB (truncado más allá) |
Cuotas API
| Recurso | Límite |
|---|---|
| Destinatarios por email | 50 max (To + Cc + Bcc) |
| Mensajes por batch | 500 max |
| URLs webhook por stream | 10 max |
| Tamaño Tag | 1 000 caracteres |
| Búsqueda bounces/mensajes | 10 000 resultados max |
Retención de datos
| Tipo | Duración |
|---|---|
| Retención por defecto | 45 días |
| Retención mínima | 7 días |
| Retención máxima | 365 días (add-on) |
| Bounce dumps | 30 días max |
| Estadísticas agregadas | Indefinidamente |
| Lista supresiones | Indefinidamente |
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ón | Detalle |
|---|---|
| SOC 2 Type 2 | No - certificaciones a nivel data center (AWS, Deft) |
| ISO 27017/27018 | Vía AWS |
| PCI DSS Level 1 | Vía Stripe (pagos) |
RGPD
| Aspecto | Detalle |
|---|---|
| DPA disponible | Sí - con SCCs |
| URL DPA | https://postmarkapp.com/dpa |
| Localización datos | US (sin opción EU) |
| Representante EU | EU-REP.Global |
HIPAA
| Aspecto | Detalle |
|---|---|
| Cumple HIPAA | NO |
| BAA disponible | NO |
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
| Funcionalidad | Disponibilidad |
|---|---|
| 2FA | Sí - Todos los planes |
| SSO/SAML | No - No disponible |
Plan de acción: integrar Postmark paso a paso
- Crear una cuenta en https://account.postmarkapp.com/sign_up
- Solicitar la aprobación vía "Request approval" (~24h de revisión manual)
- Verificar tu dominio (Sender Signature individual o dominio completo)
- Configurar los registros DNS:
- DKIM: TXT
[timestamp]pm._domainkey.captaindns.com - Return-Path: CNAME
pm-bounces.captaindns.com→pm.mtasv.net
- DKIM: TXT
- Crear un Server API Token en Settings → API Tokens
- Probar con el token test: usar
POSTMARK_API_TESTcomo token para validar sin enviar - Configurar los webhooks para bounces y spam complaints
- 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:
- SendGrid: autenticación de dominio y Web API v3 - DKIM 2048 bits con rotación, IP dedicada desde 50k/mes
- Mailgun: DKIM con rotación automática - Return-Path nativo, rotación DKIM 120 días
- Amazon SES: Easy DKIM y Custom MAIL FROM - $0.10/1000 emails, 7 regiones EU
- Mailjet: API v3.1 y configuración DKIM - DKIM 2048/4096 bits, adquisición Sinch
- Mandrill: integración Mailchimp transaccional - Requisito Mailchimp Standard, bloques de 25k emails
- Brevo: configuración DKIM y SPF - 300 emails/día gratis, DKIM TXT o CNAME
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


