Postmark (ActiveCampaign): Guia técnico 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 separação rigorosa transacional/broadcast via Message Streams.
- API REST simples em
api.postmarkapp.comcom headerX-Postmark-Server-Token, 50 destinatários max por email, 500 mensagens por batch. - DKIM 1024 bits com seletor timestampado (
[timestamp]pm._domainkey), rotação manual trimestral recomendada. - Return-Path customizado via CNAME
pm-bounces.captaindns.com→pm.mtasv.netpara alinhamento SPF DMARC relaxed apenas (não strict). - IP dedicado a 50$/mês a partir de 300K emails/mês, warm-up automático de 3-6 semanas.
- Planos a partir de 15$/mês para 10K emails (Basic), plano Free Developer limitado a 100 emails/mês.
Introdução
Postmark construiu uma reputação de excelência em email transacional, com uma filosofia clara: entregabilidade acima de tudo. Adquirido pela ActiveCampaign em maio de 2022, o serviço permanece como produto autônomo, mantendo sua equipe e DNA técnico. A plataforma processa bilhões de emails com foco exclusivo no transacional (confirmações de pedido, redefinições de senha, notificações).
A particularidade do Postmark reside na separação rigorosa entre transacional e broadcast via Message Streams. Essa arquitetura garante que seus emails críticos nunca sejam impactados por campanhas de marketing. O pool de IP compartilhado é ativamente monitorado para manter uma reputação impecável.
Este guia é direcionado a desenvolvedores, DevOps e arquitetos de sistemas que buscam integrar o Postmark com uma compreensão completa da infraestrutura: configuração DNS, escolha API vs SMTP, gestão de IPs, webhooks e limites técnicos.
API REST vs SMTP Relay: arquitetura e escolha de integração
Postmark oferece dois métodos de integração, cada um adaptado a casos de uso específicos.

Comparativo técnico
| Critério | API REST | SMTP Relay |
|---|---|---|
| Endpoint | POST https://api.postmarkapp.com/email | smtp.postmarkapp.com portas 587/2525 |
| Autenticação | Header X-Postmark-Server-Token | Username: API key / Password: API key |
| Destinatários/email | 50 max (To + Cc + Bcc) | 50 max |
| Batch | 500 mensagens/chamada, 50 MB max | 1 email por conexão |
| Tamanho max | 10 MB por email | 10 MB por email |
| Templates | Mustachio (similar ao Handlebars) | Conteúdo inline apenas |
| Scheduling | Não suportado nativamente | Não suportado nativamente |
| Tracking | Via parâmetros 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 é o método recomendado para qualquer nova integração. Ela oferece controle preciso sobre cada aspecto do envio.
Endpoint principal: POST https://api.postmarkapp.com/email
Headers necessários:
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: não publicado explicitamente, monitoramento interno
- Destinatários: 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. Não há SDK Python oficial (use postmarker ou python-postmark).
Quando escolher o SMTP Relay?
O SMTP Relay é ideal para sistemas legados ou aplicações que suportam apenas SMTP.
Configuração 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 disponíveis:
| Porta | Suporte | Notas |
|---|---|---|
| 25 | ✅ | SMTP padrão |
| 465 | ❌ | Implicit TLS não suportado |
| 587 | ✅ | Recomendado - porta submission |
| 2525 | ✅ | Porta alternativa |
Métodos de autenticação: CRAM-MD5 (recomendado), DIGEST-MD5, PLAIN, LOGIN.
Headers proprietários X-PM-*:
| Header | Uso | Exemplo |
|---|---|---|
X-PM-Tag | Categorização | 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 autenticação de domínio no Postmark se baseia em DKIM e um Return-Path personalizável. A configuração é feita em Sender Signatures ou Domain Authentication.

Configuração DKIM
Postmark gera uma chave DKIM de 1024 bits com um seletor único 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...
Características:
- Tamanho da chave: 1024 bits (não 2048)
- Rotação: manual, trimestral recomendada
- API de rotação:
POST /domains/{domainid}/rotatedkim
A rotação utiliza o sistema de dois seletores: Postmark prepara o novo seletor antes de fazer a troca, garantindo uma transição sem interrupção.
SPF: necessário ou não?
SPF não é mais necessário para Postmark. Veja por quê:
Por padrão, Postmark usa seu próprio domínio para o Return-Path:
Return-Path: <pm_bounces@pm.mtasv.net>
Os servidores receptores verificam SPF contra o domínio Return-Path (pm.mtasv.net), não contra seu domínio From (captaindns.com). Seus emails passam automaticamente na verificação SPF sem modificação DNS do seu lado.
Include opcional (se você quiser ser explícito):
v=spf1 a mx include:spf.mtasv.net ~all
Return-Path customizado e alinhamento DMARC
Para obter o alinhamento SPF DMARC, você precisa configurar um Return-Path personalizado.
Registro DNS necessário:
Type: CNAME
Hostname: pm-bounces.captaindns.com
Value: pm.mtasv.net
Após configuração:
Return-Path: <pm_bounces@pm-bounces.captaindns.com>
Impacto no alinhamento DMARC:
| Configuração | SPF Pass | Alinhamento DMARC |
|---|---|---|
| Return-Path padrão | ✅ (domínio Postmark) | ❌ Falha |
| Return-Path customizado | ✅ (subdomínio cliente) | ✅ Relaxed apenas |
Ponto crítico: o alinhamento strict (aspf=s) não é possível com Postmark porque o Return-Path sempre usa um subdomínio (pm-bounces.captaindns.com ≠ captaindns.com).
Estratégia recomendada: confiar no DKIM para alinhamento DMARC, que suporta o modo strict (adkim=s).
Tabela resumo DNS completa
| Registro | Tipo | Hostname | Valor | Obrigatório |
|---|---|---|---|---|
| DKIM | TXT | [timestamp]pm._domainkey.captaindns.com | k=rsa; p=[chave-pública] | ✅ 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 | ❌ Não necessário |
Message Streams: transacional vs broadcast
Postmark impõe uma separação rigorosa entre emails transacionais e broadcast via Message Streams. Essa arquitetura protege a reputação dos seus emails críticos.
Arquitetura dos streams
| Aspecto | Transacional | Broadcast |
|---|---|---|
| Uso | Emails disparados por usuário | Emails em massa (newsletters) |
| SMTP host | smtp.postmarkapp.com | smtp-broadcasts.postmarkapp.com |
| Link unsubscribe | Opcional | Obrigatório |
| Infraestrutura | Pool IP dedicado | Pool IP separado |
| Stream padrão | outbound | broadcast |
Link unsubscribe obrigatório (Broadcast)
Para streams Broadcast, o link de descadastro é obrigatório:
<a href="{{{ pm:unsubscribe }}}">Cancelar inscrição</a>
Gestão 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 | Excluídos após 45 dias |
IP compartilhado vs IP dedicado
Pool IP compartilhado (todos os planos)
Por padrão, todos os clientes Postmark usam um pool de IP compartilhado de alta reputação.
Filosofia Postmark: "Um pool IP de alta qualidade e alta reputação oferece entregabilidade melhor e mais confiável" para a maioria dos remetentes.
Características:
- Pool ativamente monitorado
- Alertas de blacklist automáticos
- Sem necessidade de warm-up
- Adequado para a maioria dos volumes
IP dedicado
Para grandes volumes, Postmark oferece IPs dedicados.
| Critério | Valor |
|---|---|
| Volume mínimo | 300.000 emails/mês |
| Custo | 50$/IP/mês (sem taxa de setup) |
| IP adicional | 100.000+ mensagens/dia necessárias |
| Warm-up | Automático, 3-6 semanas |
| Overflow | Roteado via pool compartilhado durante warm-up |
Warm-up automático:
- Limites diários definidos pelo Postmark
- Ajuste conforme resposta dos receptores
- Volume excedente enviado via pool compartilhado
- Monitoramento contínuo pela equipe Postmark
Re-warmup necessário: se o volume cair abaixo de 20.000 mensagens/semana por 4 semanas consecutivas.
Reverse DNS: gerenciado pelo Postmark (não personalizável pelo cliente).
Preços 2026
Planos e preços
| Plano | Preço/mês (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/mês (limite fixo)
- Sem possibilidade de excedente
- Ideal para testes e desenvolvimento
Escala por volume
| Volume mensal | Tarifa aproximada |
|---|---|
| 10.000 | 15-18$/mês |
| 50.000 | 50-60$/mês |
| 125.000 | ~100$/mês |
| 300.000 | ~200$/mês |
| 700.000 | ~400$/mês |
| 5.000.000+ | Preço customizado |
Add-ons opcionais
| Add-on | Preço |
|---|---|
| IP dedicado | 50$/mês/IP |
| Custom Activity Retention | A partir de 5$/mês |
| DMARC Digests | A partir de 14$/mês/domínio |
Regras de contagem
- Cada mensagem enviada = 1 email
- Cada endereço Cc/Bcc = 1 email adicional
- Mensagens sandbox = contabilizadas
- Emails não utilizados = não acumulam
Webhooks e eventos
Postmark oferece um sistema completo de webhooks para acompanhar o ciclo de vida dos seus emails.

Eventos disponíveis
| Evento | Descrição |
|---|---|
| Delivery | Email entregue ao servidor receptor |
| Bounce | Email rejeitado (hard, soft, transient) |
| Open | Destinatário abriu o email |
| Click | Destinatário clicou em um link |
| SpamComplaint | Email marcado como spam |
| SubscriptionChange | Adição/remoção da lista de Supressão |
| 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
}
Política de retry
| Tipo webhook | Política 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.
Segurança: assinatura HMAC-SHA256
Cada webhook é assinado com o header X-Postmark-Signature.
Verificação (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)
);
}
Configuração 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 técnicos 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 além disso) |
Cotas API
| Recurso | Limite |
|---|---|
| Destinatários 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 |
Retenção de dados
| Tipo | Duração |
|---|---|
| Retenção padrão | 45 dias |
| Retenção mínima | 7 dias |
| Retenção máxima | 365 dias (add-on) |
| Bounce dumps | 30 dias max |
| Estatísticas agregadas | Indefinidamente |
| Lista de supressão | Indefinidamente |
Templates com Mustachio
Postmark usa Mustachio, uma linguagem de templating baseada em Mustache com melhorias específicas.
Sintaxe básica
<!-- Variavel com escape HTML -->
{{ primeiro_nome }}
<!-- Variavel sem escape (raw) -->
{{{ html_content }}}
<!-- Notacao ponto -->
{{ pedido.numero }}
Condições (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 explícita
- Lógica complexa não suportada
- Tags
<link>proibidas no<head> - CSS automaticamente inlined no envio
Segurança e conformidade
Certificações
| Certificação | Detalhe |
|---|---|
| SOC 2 Type 2 | Não - certificações no nível do data center (AWS, Deft) |
| ISO 27017/27018 | Via AWS |
| PCI DSS Level 1 | Via Stripe (pagamentos) |
LGPD/GDPR
| Aspecto | Detalhe |
|---|---|
| DPA disponível | Sim - com SCCs |
| URL DPA | https://postmarkapp.com/dpa |
| Localização dados | EUA (sem opção UE) |
| Representante UE | EU-REP.Global |
HIPAA
| Aspecto | Detalhe |
|---|---|
| Conforme HIPAA | NÃO |
| BAA disponível | NÃO |
Postmark declara explicitamente: "Postmark is not HIPAA-compliant so we do not recommend using our platform if you need to send HIPAA-compliant emails".
Autenticação de conta
| Funcionalidade | Disponibilidade |
|---|---|
| 2FA | ✅ Todos os planos |
| SSO/SAML | ❌ Não disponível |
Plano de ação: integrar Postmark passo a passo
- Criar uma conta em https://account.postmarkapp.com/sign_up
- Solicitar aprovação via "Request approval" (~24h de revisão manual)
- Verificar seu domínio (Sender Signature individual ou domínio 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 estatísticas
Guias técnicos: outras plataformas de email transacional
Descubra nossos guias completos para outras soluções de email transacional:
- SendGrid: autenticação de domínio e Web API v3 - DKIM 2048 bits com rotação, IP dedicado a partir de 50k/mês
- Mailgun: DKIM com rotação automática - Return-Path nativo, rotação DKIM 120 dias
- Amazon SES: Easy DKIM e Custom MAIL FROM - $0.10/1000 emails, 7 regiões EU
- Mailjet: API v3.1 e configuração DKIM - DKIM 2048/4096 bits, aquisição Sinch
- Mandrill: integração Mailchimp transacional - Requisito Mailchimp Standard, blocos de 25k emails
- Brevo: configuração DKIM e SPF - 300 emails/dia grátis, DKIM TXT ou CNAME
FAQ
Postmark é adequado para email marketing?
Não, Postmark é especializado em email transacional. Emails broadcast (newsletters, anúncios) são suportados via Message Streams separados, mas a plataforma não oferece funcionalidades de marketing avançadas (segmentação, testes A/B, automação). Para marketing, considere soluções dedicadas ou a plataforma mãe ActiveCampaign.
Qual a diferença 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 não publica seus rate limits explicitamente.
Posso usar Postmark com uma política 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 subdomínio. Configure sua política DMARC para confiar no DKIM: p=reject; adkim=s; aspf=r.
Quanto custa um IP dedicado no Postmark?
50$/mês por IP, sem taxa de setup. Condição: enviar no mínimo 300.000 emails/mês. O warm-up é automático em 3-6 semanas. Para um IP adicional, é necessário ultrapassar 100.000 mensagens/dia.
Existe um SDK Python oficial para Postmark?
Não, Postmark não mantém um SDK Python oficial. As alternativas da comunidade recomendadas são postmarker e python-postmark. Os SDKs oficiais cobrem Ruby, .NET, Java, PHP e Node.js.
Postmark é conforme HIPAA?
Não. Postmark recusa explicitamente assinar BAAs (Business Associate Agreements). Se você precisa enviar PHI (Protected Health Information), use outra solução conforme HIPAA.
Glossário
- Message Stream: fluxo de envio separado que permite isolar emails transacionais de broadcasts, cada um com seu próprio pool de IP e suas métricas
- Sender Signature: verificação de um endereço de email remetente individual, alternativa à verificação de domínio completo
- Return-Path: endereço de bounce (Envelope From) usado pelos servidores receptores para SPF e notificações de bounce
- Mustachio: linguagem de templating do Postmark baseada em Mustache, com suporte a condições, loops e variáveis


