Postmark (ActiveCampaign): Guia tecnico completo para email transacional
Por CaptainDNS
Publicado em 28 de janeiro de 2026

- Postmark, especializado em transacional, adquirido pela ActiveCampaign em 2022, aposta na entregabilidade excepcional com separacao rigorosa transacional/broadcast via Message Streams.
- API REST simples em
api.postmarkapp.comcom headerX-Postmark-Server-Token, 50 destinatarios max por email, 500 mensagens por batch. - DKIM 1024 bits com seletor timestampado (
[timestamp]pm._domainkey), rotacao manual trimestral recomendada. - Return-Path customizado via CNAME
pm-bounces.captaindns.com→pm.mtasv.netpara alinhamento SPF DMARC relaxed apenas (nao strict). - IP dedicado a 50$/mes a partir de 300K emails/mes, warm-up automatico de 3-6 semanas.
- Planos a partir de 15$/mes para 10K emails (Basic), plano Free Developer limitado a 100 emails/mes.
Introducao
Postmark construiu uma reputacao de excelencia em email transacional, com uma filosofia clara: entregabilidade acima de tudo. Adquirido pela ActiveCampaign em maio de 2022, o servico permanece como produto autonomo, mantendo sua equipe e DNA tecnico. A plataforma processa bilhoes de emails com foco exclusivo no transacional (confirmacoes de pedido, redefinicoes de senha, notificacoes).
A particularidade do Postmark reside na separacao rigorosa entre transacional e broadcast via Message Streams. Essa arquitetura garante que seus emails criticos nunca sejam impactados por campanhas de marketing. O pool de IP compartilhado e ativamente monitorado para manter uma reputacao impecavel.
Este guia e direcionado a desenvolvedores, DevOps e arquitetos de sistemas que buscam integrar o Postmark com uma compreensao completa da infraestrutura: configuracao DNS, escolha API vs SMTP, gestao de IPs, webhooks e limites tecnicos.
API REST vs SMTP Relay: arquitetura e escolha de integracao
Postmark oferece dois metodos de integracao, cada um adaptado a casos de uso especificos.

Comparativo tecnico
| Criterio | API REST | SMTP Relay |
|---|---|---|
| Endpoint | POST https://api.postmarkapp.com/email | smtp.postmarkapp.com portas 587/2525 |
| Autenticacao | Header X-Postmark-Server-Token | Username: API key / Password: API key |
| Destinatarios/email | 50 max (To + Cc + Bcc) | 50 max |
| Batch | 500 mensagens/chamada, 50 MB max | 1 email por conexao |
| Tamanho max | 10 MB por email | 10 MB por email |
| Templates | Mustachio (similar ao Handlebars) | Conteudo inline apenas |
| Scheduling | Nao suportado nativamente | Nao suportado nativamente |
| Tracking | Via parametros JSON | Via headers X-PM-* |
| Caso de uso ideal | Apps modernas, batch, templates | Legacy, CMS, servidores de email existentes |
Quando escolher a API REST?
A API REST e o metodo recomendado para qualquer nova integracao. Ela oferece controle preciso sobre cada aspecto do envio.
Endpoint principal: POST https://api.postmarkapp.com/email
Headers necessarios:
Content-Type: application/json
Accept: application/json
X-Postmark-Server-Token: seu-server-token
Exemplo 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: seu-server-token" \
-d '{
"From": "notifications@captaindns.com",
"To": "cliente@captaindns.com",
"Subject": "Sua analise DNS esta pronta",
"TextBody": "Ola, seu relatorio DNS esta disponivel.",
"HtmlBody": "<html><body><strong>Ola</strong>, seu relatorio DNS esta disponivel.</body></html>",
"Tag": "dns-report",
"TrackOpens": true,
"TrackLinks": "HtmlAndText",
"MessageStream": "outbound",
"Metadata": {
"report_id": "RPT-12345",
"user_id": "USR-789"
}
}'
Resposta 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 principais:
- Rate limit: nao publicado explicitamente, monitoramento interno
- Destinatarios: 50 max por email (To + Cc + Bcc)
- Batch: 500 mensagens por chamada, 50 MB total
- Tamanho email: 10 MB max
SDKs oficiais: Ruby, .NET, Java, PHP, Node.js. Nao ha SDK Python oficial (use postmarker ou python-postmark).
Quando escolher o SMTP Relay?
O SMTP Relay e ideal para sistemas legados ou aplicacoes que suportam apenas SMTP.
Configuracao oficial:
# Transacional
SMTP server: smtp.postmarkapp.com
Port: 587 (recomendado) ou 2525 (fallback)
# Broadcast
SMTP server: smtp-broadcasts.postmarkapp.com
Port: 587 ou 2525
# Autenticacao
Username: seu-server-api-token
Password: seu-server-api-token
Portas disponiveis:
| Porta | Suporte | Notas |
|---|---|---|
| 25 | ✅ | SMTP padrao |
| 465 | ❌ | Implicit TLS nao suportado |
| 587 | ✅ | Recomendado - porta submission |
| 2525 | ✅ | Porta alternativa |
Metodos de autenticacao: CRAM-MD5 (recomendado), DIGEST-MD5, PLAIN, LOGIN.
Headers proprietarios X-PM-*:
| Header | Uso | Exemplo |
|---|---|---|
X-PM-Tag | Categorizacao | X-PM-Tag: password-reset |
X-PM-Message-Stream | Especificar o stream | X-PM-Message-Stream: outbound |
X-PM-Metadata-* | Metadados customizados | X-PM-Metadata-user-id: 12345 |
X-PM-TrackOpens | Tracking de abertura | X-PM-TrackOpens: true |
X-PM-TrackLinks | Tracking de links | X-PM-TrackLinks: HtmlAndText |
Domain Authentication: DKIM, Return-Path e alinhamento DMARC
A autenticacao de dominio no Postmark se baseia em DKIM e um Return-Path personalizavel. A configuracao e feita em Sender Signatures ou Domain Authentication.

Configuracao DKIM
Postmark gera uma chave DKIM de 1024 bits com um seletor unico baseado em timestamp.
Formato do seletor: [timestamp]pm._domainkey.captaindns.com
Exemplos de seletores:
20260128pm._domainkey.captaindns.comjan2026pm._domainkey.captaindns.com
Registro DNS a criar:
Type: TXT
Hostname: 20260128pm._domainkey.captaindns.com
Value: k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDO...
Caracteristicas:
- Tamanho da chave: 1024 bits (nao 2048)
- Rotacao: manual, trimestral recomendada
- API de rotacao:
POST /domains/{domainid}/rotatedkim
A rotacao utiliza o sistema de dois seletores: Postmark prepara o novo seletor antes de fazer a troca, garantindo uma transicao sem interrupcao.
SPF: necessario ou nao?
SPF nao e mais necessario para Postmark. Veja por que:
Por padrao, Postmark usa seu proprio dominio para o Return-Path:
Return-Path: <pm_bounces@pm.mtasv.net>
Os servidores receptores verificam SPF contra o dominio Return-Path (pm.mtasv.net), nao contra seu dominio From (captaindns.com). Seus emails passam automaticamente na verificacao SPF sem modificacao DNS do seu lado.
Include opcional (se voce quiser ser explicito):
v=spf1 a mx include:spf.mtasv.net ~all
Return-Path customizado e alinhamento DMARC
Para obter o alinhamento SPF DMARC, voce precisa configurar um Return-Path personalizado.
Registro DNS necessario:
Type: CNAME
Hostname: pm-bounces.captaindns.com
Value: pm.mtasv.net
Apos configuracao:
Return-Path: <pm_bounces@pm-bounces.captaindns.com>
Impacto no alinhamento DMARC:
| Configuracao | SPF Pass | Alinhamento DMARC |
|---|---|---|
| Return-Path padrao | ✅ (dominio Postmark) | ❌ Falha |
| Return-Path customizado | ✅ (subdominio cliente) | ✅ Relaxed apenas |
Ponto critico: o alinhamento strict (aspf=s) nao e possivel com Postmark porque o Return-Path sempre usa um subdominio (pm-bounces.captaindns.com ≠ captaindns.com).
Estrategia recomendada: confiar no DKIM para alinhamento DMARC, que suporta o modo strict (adkim=s).
Tabela resumo DNS completa
| Registro | Tipo | Hostname | Valor | Obrigatorio |
|---|---|---|---|---|
| DKIM | TXT | [timestamp]pm._domainkey.captaindns.com | k=rsa; p=[chave-publica] | ✅ Recomendado |
| Return-Path | CNAME | pm-bounces.captaindns.com | pm.mtasv.net | Para alinhamento DMARC |
| Link Tracking | CNAME | [custom].captaindns.com | [valor-postmark] | Opcional |
| SPF | TXT | captaindns.com | v=spf1 include:spf.mtasv.net ~all | ❌ Nao necessario |
Message Streams: transacional vs broadcast
Postmark impoe uma separacao rigorosa entre emails transacionais e broadcast via Message Streams. Essa arquitetura protege a reputacao dos seus emails criticos.
Arquitetura dos streams
| Aspecto | Transacional | Broadcast |
|---|---|---|
| Uso | Emails disparados por usuario | Emails em massa (newsletters) |
| SMTP host | smtp.postmarkapp.com | smtp-broadcasts.postmarkapp.com |
| Link unsubscribe | Opcional | Obrigatorio |
| Infraestrutura | Pool IP dedicado | Pool IP separado |
| Stream padrao | outbound | broadcast |
Link unsubscribe obrigatorio (Broadcast)
Para streams Broadcast, o link de descadastro e obrigatorio:
<a href="{{{ pm:unsubscribe }}}">Cancelar inscricao</a>
Gestao de descadastros:
UnsubscribeHandlingType: "Postmark": gerenciado automaticamenteUnsubscribeHandlingType: "None": gerenciado manualmente
Limites dos Message Streams
| Recurso | Limite |
|---|---|
| Streams por Server | 10 max (contatar suporte para mais) |
| Inbound Streams por Server | 1 apenas |
| Nome do stream | 100 caracteres max |
| Streams arquivados | Excluidos apos 45 dias |
IP compartilhado vs IP dedicado
Pool IP compartilhado (todos os planos)
Por padrao, todos os clientes Postmark usam um pool de IP compartilhado de alta reputacao.
Filosofia Postmark: "Um pool IP de alta qualidade e alta reputacao oferece entregabilidade melhor e mais confiavel" para a maioria dos remetentes.
Caracteristicas:
- Pool ativamente monitorado
- Alertas de blacklist automaticos
- Sem necessidade de warm-up
- Adequado para a maioria dos volumes
IP dedicado
Para grandes volumes, Postmark oferece IPs dedicados.
| Criterio | Valor |
|---|---|
| Volume minimo | 300.000 emails/mes |
| Custo | 50$/IP/mes (sem taxa de setup) |
| IP adicional | 100.000+ mensagens/dia necessarias |
| Warm-up | Automatico, 3-6 semanas |
| Overflow | Roteado via pool compartilhado durante warm-up |
Warm-up automatico:
- Limites diarios definidos pelo Postmark
- Ajuste conforme resposta dos receptores
- Volume excedente enviado via pool compartilhado
- Monitoramento continuo pela equipe Postmark
Re-warmup necessario: se o volume cair abaixo de 20.000 mensagens/semana por 4 semanas consecutivas.
Reverse DNS: gerenciado pelo Postmark (nao personalizavel pelo cliente).
Precos 2026
Planos e precos
| Plano | Preco/mes (10K) | Excedente /1000 | Servers | Domains | Streams | IP dedicado |
|---|---|---|---|---|---|---|
| Free Developer | 0$ | N/A | 10 | 10 | 30 | ❌ |
| Basic | 15$ | 1,80$ | 5 | 5 | 15 | ❌ |
| Pro | 16,50$ | 1,30$ | 10 | 10 | 30 | ✅ (300K+) |
| Platform | 18$ | 1,20$ | ∞ | ∞ | ∞ | ✅ (300K+) |
Limites do plano Free Developer:
- 100 emails/mes (limite fixo)
- Sem possibilidade de excedente
- Ideal para testes e desenvolvimento
Escala por volume
| Volume mensal | 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+ | Preco customizado |
Add-ons opcionais
| Add-on | Preco |
|---|---|
| IP dedicado | 50$/mes/IP |
| Custom Activity Retention | A partir de 5$/mes |
| DMARC Digests | A partir de 14$/mes/dominio |
Regras de contagem
- Cada mensagem enviada = 1 email
- Cada endereco Cc/Bcc = 1 email adicional
- Mensagens sandbox = contabilizadas
- Emails nao utilizados = nao acumulam
Webhooks e eventos
Postmark oferece um sistema completo de webhooks para acompanhar o ciclo de vida dos seus emails.

Eventos disponiveis
| Evento | Descricao |
|---|---|
| Delivery | Email entregue ao servidor receptor |
| Bounce | Email rejeitado (hard, soft, transient) |
| Open | Destinatario abriu o email |
| Click | Destinatario clicou em um link |
| SpamComplaint | Email marcado como spam |
| SubscriptionChange | Adicao/remocao da lista de Supressao |
| Inbound | Email inbound recebido e parseado |
Exemplo 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 webhook | Politica de retry |
|---|---|
| Bounce, Inbound | 1 min → 5 min → 10 min (×3) → 15 min → 30 min → 1h → 2h → 6h = 10 retries em ~10,5h |
| Click, Open, Delivery | 1 min → 5 min → 15 min = 3 retries |
Importante: uma resposta HTTP 403 interrompe imediatamente os retries.
Seguranca: assinatura HMAC-SHA256
Cada webhook e assinado com o header X-Postmark-Signature.
Verificacao (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)
);
}
Configuracao via API
curl "https://api.postmarkapp.com/webhooks" \
-X POST \
-H "Content-Type: application/json" \
-H "X-Postmark-Server-Token: seu-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 e cotas
Tamanho das mensagens
| Limite | Valor |
|---|---|
| Tamanho max email (API) | 10 MB total |
| Tamanho max batch (Batch API) | 50 MB total |
| TextBody / HtmlBody | 5 MB cada |
| Armazenamento mensagem | 1 MB (truncado alem disso) |
Cotas API
| Recurso | Limite |
|---|---|
| Destinatarios por email | 50 max (To + Cc + Bcc) |
| Mensagens por batch | 500 max |
| URLs webhook por stream | 10 max |
| Tamanho Tag | 1.000 caracteres |
| Busca bounces/mensagens | 10.000 resultados max |
Retencao de dados
| Tipo | Duracao |
|---|---|
| Retencao padrao | 45 dias |
| Retencao minima | 7 dias |
| Retencao maxima | 365 dias (add-on) |
| Bounce dumps | 30 dias max |
| Estatisticas agregadas | Indefinidamente |
| Lista de supressao | Indefinidamente |
Templates com Mustachio
Postmark usa Mustachio, uma linguagem de templating baseada em Mustache com melhorias especificas.
Sintaxe basica
<!-- Variavel com escape HTML -->
{{ primeiro_nome }}
<!-- Variavel sem escape (raw) -->
{{{ html_content }}}
<!-- Notacao ponto -->
{{ pedido.numero }}
Condicoes (blocos truthy/falsy)
{{#tem_desconto}}
<p>Seu desconto: {{ valor_desconto }}</p>
{{/tem_desconto}}
{{^tem_desconto}}
<p>Nenhum desconto aplicado</p>
{{/tem_desconto}}
Loops
{{#each items}}
<li>{{ name }} - R$ {{ price }}</li>
{{/each}}
Limites:
- Sem sintaxe if/else explicita
- Logica complexa nao suportada
- Tags
<link>proibidas no<head> - CSS automaticamente inlined no envio
Seguranca e conformidade
Certificacoes
| Certificacao | Detalhe |
|---|---|
| SOC 2 Type 2 | Nao - certificacoes no nivel do data center (AWS, Deft) |
| ISO 27017/27018 | Via AWS |
| PCI DSS Level 1 | Via Stripe (pagamentos) |
LGPD/GDPR
| Aspecto | Detalhe |
|---|---|
| DPA disponivel | Sim - com SCCs |
| URL DPA | https://postmarkapp.com/dpa |
| Localizacao dados | EUA (sem opcao UE) |
| Representante UE | EU-REP.Global |
HIPAA
| Aspecto | Detalhe |
|---|---|
| Conforme HIPAA | NAO |
| BAA disponivel | NAO |
Postmark declara explicitamente: "Postmark is not HIPAA-compliant so we do not recommend using our platform if you need to send HIPAA-compliant emails".
Autenticacao de conta
| Funcionalidade | Disponibilidade |
|---|---|
| 2FA | ✅ Todos os planos |
| SSO/SAML | ❌ Nao disponivel |
Plano de acao: integrar Postmark passo a passo
- Criar uma conta em https://account.postmarkapp.com/sign_up
- Solicitar aprovacao via "Request approval" (~24h de revisao manual)
- Verificar seu dominio (Sender Signature individual ou dominio completo)
- Configurar os registros DNS:
- DKIM: TXT
[timestamp]pm._domainkey.captaindns.com - Return-Path: CNAME
pm-bounces.captaindns.com→pm.mtasv.net
- DKIM: TXT
- Criar um Server API Token em Settings → API Tokens
- Testar com o token de teste: usar
POSTMARK_API_TESTcomo token para validar sem enviar - Configurar os webhooks para bounces e spam complaints
- Monitorar via Activity Feed e estatisticas
Guias tecnicos: outras plataformas de email transacional
Descubra nossos guias completos para outras solucoes de email transacional:
- SendGrid: autenticacao de dominio e Web API v3 - DKIM 2048 bits com rotacao, IP dedicado a partir de 50k/mes
- Mailgun: DKIM com rotacao automatica - Return-Path nativo, rotacao DKIM 120 dias
- Amazon SES: Easy DKIM e Custom MAIL FROM - $0.10/1000 emails, 7 regioes EU
- Mailjet: API v3.1 e configuracao DKIM - DKIM 2048/4096 bits, aquisicao Sinch
- Mandrill: integracao Mailchimp transacional - Requisito Mailchimp Standard, blocos de 25k emails
- Brevo: configuracao DKIM e SPF - 300 emails/dia gratis, DKIM TXT ou CNAME
FAQ
Postmark e adequado para email marketing?
Nao, Postmark e especializado em email transacional. Emails broadcast (newsletters, anuncios) sao suportados via Message Streams separados, mas a plataforma nao oferece funcionalidades de marketing avancadas (segmentacao, testes A/B, automacao). Para marketing, considere solucoes dedicadas ou a plataforma mae ActiveCampaign.
Qual a diferenca entre Postmark e SendGrid?
Postmark foca exclusivamente na entregabilidade transacional com um pool IP muito controlado. SendGrid oferece mais flexibilidade (DKIM 2048 bits, rate limits publicados, mais SDKs) mas com um posicionamento mais generalista. Postmark usa chaves DKIM de 1024 bits e nao publica seus rate limits explicitamente.
Posso usar Postmark com uma politica DMARC strict?
Sim, via DKIM. O alinhamento DKIM suporta o modo strict (adkim=s). Por outro lado, o alinhamento SPF funciona apenas em modo relaxed (aspf=r) porque o Return-Path usa um subdominio. Configure sua politica DMARC para confiar no DKIM: p=reject; adkim=s; aspf=r.
Quanto custa um IP dedicado no Postmark?
50$/mes por IP, sem taxa de setup. Condicao: enviar no minimo 300.000 emails/mes. O warm-up e automatico em 3-6 semanas. Para um IP adicional, e necessario ultrapassar 100.000 mensagens/dia.
Existe um SDK Python oficial para Postmark?
Nao, Postmark nao mantem um SDK Python oficial. As alternativas da comunidade recomendadas sao postmarker e python-postmark. Os SDKs oficiais cobrem Ruby, .NET, Java, PHP e Node.js.
Postmark e conforme HIPAA?
Nao. Postmark recusa explicitamente assinar BAAs (Business Associate Agreements). Se voce precisa enviar PHI (Protected Health Information), use outra solucao conforme HIPAA.
Glossario
- Message Stream: fluxo de envio separado que permite isolar emails transacionais de broadcasts, cada um com seu proprio pool de IP e suas metricas
- Sender Signature: verificacao de um endereco de email remetente individual, alternativa a verificacao de dominio completo
- Return-Path: endereco de bounce (Envelope From) usado pelos servidores receptores para SPF e notificacoes de bounce
- Mustachio: linguagem de templating do Postmark baseada em Mustache, com suporte a condicoes, loops e variaveis


