Ir para o conteúdo principal

Mailgun: Guia técnico completo para email transacional

Por CaptainDNS
Publicado em 21 de janeiro de 2026

Painel Mailgun com configuração Domain Authentication e REST API
TL;DR
  • 📢 O Mailgun utiliza o seu domínio no Return-Path (bounce+id@oseudominio.com), permitindo o alinhamento SPF nativo para DMARC logo a partir do plano base.
  • A REST API é o método recomendado: até 1 000 destinatários por chamada, rate limits não documentados (exceto Domains API: 300 req/min).
  • Automatic Sender Security gera 2 CNAME DKIM com rotação automática a cada 120 dias, chaves de 2048 bits por predefinição.
  • IP dedicado recomendado a partir de 1 milhão de emails/mês, com warm-up automático ao longo de 15+ dias e custo adicional de 59$/IP/mês.
  • Plano Flex aumentado para 2,00$/1000 emails desde dezembro de 2025 (duplicação do tarifário).

Introdução

O Mailgun impôs-se como uma das plataformas de email transacional mais robustas do mercado, processando mais de 600 mil milhões de emails por ano para mais de 100 000 clientes. Adquirido pela Sinch em dezembro de 2021 por 1,9 mil milhões de dólares, o serviço combina uma REST API potente, um relay SMTP universal e funcionalidades de autenticação avançadas que o distinguem da concorrência.

A força do Mailgun assenta em três pilares técnicos principais: uma abordagem API-first orientada para programadores, uma Domain Verification que utiliza o seu próprio domínio para o Return-Path (alinhamento SPF nativo para DMARC), e um sistema de rotação automática das chaves DKIM 2048 bits a cada 120 dias sem interrupção de serviço.

Este guia destina-se a programadores, DevOps e arquitetos de sistemas que procuram integrar o Mailgun para email transacional com uma compreensão completa da infraestrutura: configuração DNS, escolha entre API e SMTP, gestão dos IP dedicados, limites técnicos e webhooks de eventos.

REST API vs SMTP Relay: arquitetura e escolha de integração

O Mailgun propõe dois métodos de integração para email transacional, ambos disponíveis desde o plano gratuito (100 emails/dia).

Comparação entre REST API e SMTP Relay

Comparativo técnico

CritérioREST APISMTP Relay
Endpointhttps://api.mailgun.net/v3/{domain}/messages (US)smtp.mailgun.org portas 587/465
AutenticaçãoHTTP Basic Auth (api:YOUR_API_KEY)SASL/PLAIN (postmaster@ + password SMTP)
Rate limitNão documentado (Domains API: 300 req/min)Depende do IP e do plano
Destinatários/reqAté 1 000 (to + cc + bcc combinados)1 email = 1 ligação SMTP
TemplatesVariáveis com sintaxe {{variable}}Via header X-Mailgun-Variables
Schedulingo:deliverytime (até 3 dias, 7 dias se storage 7d+)Via header X-Mailgun-Deliver-By
TrackingNativo (o:tracking, o:track-clicks, o:track-opens)Via headers X-Mailgun-Track*
CompatibilidadeRequer SDK ou cliente HTTPQualquer sistema compatível com SMTP
Caso de uso idealApps modernas, batch, personalização avançadaLegacy, plugins CMS, servidores de mail

Quando escolher a REST API?

A REST API é o método recomendado pelo Mailgun para qualquer nova integração. Está acessível em POST https://api.mailgun.net/v3/{domain}/messages para a região US, ou em api.eu.mailgun.net para a UE.

Vantagens principais:

  • Batch sending: envio até 1 000 destinatários num único pedido, com personalização através de recipient variables
  • Templates armazenados: sintaxe Handlebars com condições, ciclos e helpers personalizados
  • Scheduling: programação de envio até 3 dias de antecedência (7 dias se o plano incluir 7 ou mais dias de storage)
  • Rate limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset para monitorização

Exemplo de envio com personalização:

curl -s --user 'api:YOUR_API_KEY' \
  https://api.mailgun.net/v3/mail.captaindns.com/messages \
  -F from='Notificacoes <no-reply@mail.captaindns.com>' \
  -F to='user1@captaindns.com' \
  -F to='user2@captaindns.com' \
  -F subject='Nova notificacao' \
  -F text='Ola {{nome}}, tem {{count}} notificacoes.' \
  -F recipient-variables='{"user1@captaindns.com":{"nome":"Joao","count":"3"},"user2@captaindns.com":{"nome":"Maria","count":"7"}}' \
  -F o:tag='notification' \
  -F o:tracking='yes'

SDK oficiais: o Mailgun mantém SDK para Go, Node.js, PHP, Python, Ruby e Java que encapsulam a REST API e simplificam a integração.

Quando escolher o SMTP Relay?

O SMTP Relay é ideal para sistemas legacy ou para aplicações que apenas suportam SMTP.

Configuração oficial:

SMTP server: smtp.mailgun.org (US) ou smtp.eu.mailgun.org (UE)
SMTP user: postmaster@mail.captaindns.com (ou utilizador SMTP personalizado)
SMTP password: [palavra-passe SMTP do dominio]
Port: 587 (STARTTLS recomendado) ou 465 (TLS direto) ou 2525 (fallback GCE)

Ponto crítico: a autenticação SMTP utiliza a palavra-passe SMTP do domínio, distinta da chave API. O username é o endereço postmaster@ do domínio verificado (ou um utilizador SMTP personalizado criado no painel).

Headers proprietários X-Mailgun-*: permitem aceder às funcionalidades avançadas através de SMTP (tags, tracking, templates, scheduling, variáveis). Lista completa:

  • X-Mailgun-Tag: tag para estatísticas (vários possíveis)
  • X-Mailgun-Track: ativar/desativar o tracking global
  • X-Mailgun-Track-Clicks: tracking de cliques (yes/no/htmlonly)
  • X-Mailgun-Track-Opens: tracking de aberturas (yes/no)
  • X-Mailgun-Deliver-By: planeamento (formato RFC 2822 ou timestamp Unix)
  • X-Mailgun-Template-Name: nome do template a utilizar
  • X-Mailgun-Variables: variáveis do template (JSON)

Domain Verification: SPF, DKIM 2048 bits e alinhamento DMARC nativo

A configuração DNS no Mailgun gera os registos necessários para SPF, DKIM e o alinhamento DMARC. O processo é efetuado em Sending > Domains > Domain settings > Domain verification.

Arquitetura com Automatic Sender Security (recomendado)

Com a opção Automatic Sender Security ativada (recomendado), o Mailgun gera 2 registos CNAME DKIM para a rotação automática das chaves:

Configuração Domain Verification do Mailgun

Registos necessários (exemplo para mail.captaindns.com):

TipoName/HostValorObjetivo
TXTmail.captaindns.comv=spf1 include:mailgun.org ~allSPF
CNAMEpdk1._domainkey.mail.captaindns.compdk1._domainkey.XXXX.dkim1.mailgun.comRotação DKIM (seletor 1)
CNAMEpdk2._domainkey.mail.captaindns.compdk2._domainkey.XXXX.dkim1.mailgun.comRotação DKIM (seletor 2)
MXmail.captaindns.commxa.mailgun.org (prioridade 10)Bounces/Inbound
MXmail.captaindns.commxb.mailgun.org (prioridade 10)Bounces/Inbound

Nota região UE: para a UE, os registos MX utilizam mxa.eu.mailgun.org e mxb.eu.mailgun.org.

Vantagens desta arquitetura:

  • Rotação automática das chaves DKIM: os dois seletores (pdk1 e pdk2) permitem ao Mailgun mudar as chaves a cada 120 dias sem interrupção de serviço
  • Chaves DKIM de 2048 bits por predefinição (as configurações manuais em TXT podem usar 1024 bits, mas recomenda-se 2048)
  • Nenhum registo CNAME de tracking necessário por predefinição: o Mailgun utiliza mailgun.org (ou eu.mailgun.org para a UE)
  • Seletores DKIM: pdk1 e pdk2 para o Automatic Security, ou mx para a configuração manual em TXT

Return-Path e alinhamento SPF: uma vantagem determinante

O Return-Path (Envelope From) é crucial para o alinhamento DMARC. O Mailgun utiliza automaticamente o seu domínio no Return-Path, no formato bounce+UNIQUEID@mail.captaindns.com:

  • O SPF passa automaticamente, porque o registo include:mailgun.org autoriza os IP do Mailgun a enviar em nome do seu domínio
  • O alinhamento SPF funciona em modo relaxed (o Return-Path bounce+id@mail.captaindns.com corresponde ao domínio pai mail.captaindns.com)
  • Sem necessidade de configuração separada: ao contrário de outros fornecedores, o Mailgun não exige um subdomínio dedicado para o bounce domain

Diferença face à concorrência:

  • SendGrid: utiliza um subdomínio personalizável (em1234.captaindns.com)
  • Amazon SES: exige Custom MAIL FROM para o alinhamento SPF
  • Mailgun: utiliza diretamente o domínio verificado

Com uma política DMARC estrita (aspf=s), o alinhamento SPF falha se o envio for feito a partir de um subdomínio diferente do Return-Path. A solução passa por apoiar-se no DKIM para o alinhamento DMARC, que suporta o modo estrito (adkim=s).

O tracking domain substitui os domínios do Mailgun nas ligações rastreadas pelo seu próprio domínio. Por predefinição, o Mailgun utiliza email.mail.captaindns.com a apontar para mailgun.org (US) ou eu.mailgun.org (UE) através de CNAME.

Configuração opcional HTTPS: o Mailgun gera automaticamente um certificado Let's Encrypt assim que o CNAME é verificado.

Migração para DKIM 2048 bits

Para migrar uma configuração TXT manual (chaves de 1024 bits) para Automatic Sender Security (2048 bits), basta ativar o Automatic Sender Security no painel e criar depois os 2 novos CNAME DKIM. A transição é fluida graças aos dois seletores.

Fluxo de autenticação de email: da API à entregabilidade

Fluxo de autenticação de email do Mailgun com DKIM, SPF e DMARC

Ao enviar através do Mailgun:

  1. A sua aplicação chama a REST API ou utiliza SMTP
  2. O Mailgun assina a mensagem com a sua chave DKIM (domínio d=mail.captaindns.com)
  3. O Mailgun utiliza o seu domínio no Return-Path (bounce+id@mail.captaindns.com)
  4. O servidor destinatário verifica o SPF (IP de envio), o DKIM (assinatura) e depois o DMARC (alinhamento)
  5. O SPF passa: include:mailgun.org autoriza os IP do Mailgun, o Return-Path utiliza o seu domínio
  6. O DKIM passa: a assinatura d=mail.captaindns.com corresponde ao header From
  7. O DMARC passa: pelo menos SPF E DKIM estão alinhados (dupla validação)

Alinhamento DMARC: configuração para p=reject

O que funciona (e o que falha)

Alinhamento DKIM:

ConfiguraçãoAlinhado?DMARC via DKIM?
Domínio com DKIM ativado (TXT ou CNAME)SimSim

Alinhamento SPF:

ConfiguraçãoAlinhado?DMARC via SPF?
Return-Path utiliza o seu domínio (nativo)SimSim
aspf=r (relaxed, predefinição)SimSim
aspf=s (strict) + envio a partir de subdomínioNãoNão (mismatch de subdomínio)

Registo DMARC recomendado

_dmarc.captaindns.com  TXT  "v=DMARC1;p=reject;adkim=r;aspf=r;rua=mailto:dmarc@captaindns.com"

Pontos-chave:

  • adkim=r e aspf=r: alinhamento relaxed (autoriza os subdomínios)
  • Progredir de p=nonep=quarantinep=reject
  • Vigiar os relatórios rua antes de endurecer a política
  • Vantagem Mailgun: duplo alinhamento (SPF + DKIM) nativo, melhor proteção do que apenas com DKIM

Tabela recapitulativa DNS completa

TipoHost/NameValorObrigatórioNotas
TXTmail.captaindns.comv=spf1 include:mailgun.org ~all✅ SimSPF idêntico US/UE
CNAMEpdk1._domainkey.mail.captaindns.compdk1._domainkey.XXXX.dkim1.mailgun.com✅ SimRotação DKIM auto
CNAMEpdk2._domainkey.mail.captaindns.compdk2._domainkey.XXXX.dkim1.mailgun.com✅ SimRotação DKIM auto
MXmail.captaindns.commxa.mailgun.org (prioridade 10)✅ SimBounces/Inbound
MXmail.captaindns.commxb.mailgun.org (prioridade 10)✅ SimBounces/Inbound
TXT_dmarc.captaindns.comv=DMARC1;p=reject;adkim=r;aspf=r;...RecomendadoPolítica DMARC
CNAMEemail.mail.captaindns.commailgun.org ou eu.mailgun.orgOpcionalTracking domain

IP dedicado vs IP partilhado: estratégia de entregabilidade

O Mailgun recomenda oficialmente um IP dedicado a partir de 1 milhão de emails por mês. Abaixo desse volume, o IP partilhado oferece geralmente melhor entregabilidade.

IP partilhado (planos Free, Foundation e Growth de base)

Vantagens:

  • Não é necessário qualquer warm-up
  • Reputação mantida pelo Mailgun
  • Ideal para volumes baixos ou irregulares
  • Melhor entregabilidade inicial do que num IP dedicado ainda frio

Inconvenientes:

  • Exposição aos riscos de reputação ligados aos outros remetentes do pool (raro no Mailgun, graças aos controlos rigorosos)

IP dedicado (Foundation 100k+, Growth, Scale, Enterprise)

O plano Foundation 100k inclui 1 IP dedicado (a partir de 75$/mês). Cada IP adicional custa 59$/IP/mês.

Recomendação oficial: 1 IP dedicado para cerca de 1 milhão de emails por mês, no mínimo.

Vantagens:

  • Reputação isolada e controlável
  • Função de IP Warmup automático ao longo de 15 etapas (~15+ dias)
  • Possibilidade de separar os fluxos (transacional vs marketing) através de IP Pools

IP Warmup automático: o Mailgun propõe um warm-up em 15 etapas progressivas:

EtapaLimite diárioLimite horárioDuração
11 00010024h
22 500~10024h
35 000Progressivo24h
...ProgressivoProgressivo...
15Capacidade totalSem limiteAtingido no D15+

O sistema avança uma etapa a cada 24 horas se os limites forem atingidos. O tráfego excedente é encaminhado automaticamente para os IP partilhados ou para outros IP dedicados disponíveis.

IP Pools: disponíveis nos planos Scale e superiores. Permitem:

  • Separar emails transacionais e de marketing
  • Distinguir clientes/marcas (multi-tenant)
  • Dynamic IP Pools: atribuição automática com base na saúde da reputação

Nota importante: os IP dedicados estão associados a uma região (US ou UE). Uma migração de região exige um novo IP e um novo warm-up.

Quando escolher um IP dedicado?

É necessário um IP dedicado se:

  • O volume regular for superior a 1 milhão de emails/mês
  • For preciso separar a reputação transacional da de marketing
  • Existirem exigências de whitelisting por parte do cliente ou de conformidade regulamentar
  • O volume ultrapassar 2,5 milhões de emails/mês: recomendam-se vários IP dedicados

Convém manter o IP partilhado se:

  • O volume for inferior a 1 milhão de emails/mês
  • Os envios forem irregulares ou esporádicos
  • A atividade estiver a arrancar, sem histórico
  • O tráfego for puramente transacional e de baixo volume

Tarifário 2026 e evolução recente

Planos Send (janeiro de 2026)

PlanoPreço/mêsEmails incluídosOverage (/1000)Retenção de logsIP dedicado
Free0 $100/diaN/D1 diaNão
FlexPay-per-use1 000 gratuitos/mês2,00 $ ⚠️5 diasNão
Foundation 50k35 $50 000~1,30 $5 diasNão
Foundation 100k75 $100 000~1,30 $5 dias1 incluído
Growth80-650 $100k-1MVariável15 dias1 incluído
Scale 100k90 $100 000~0,80-1,10 $30 dias1 incluído
Scale (máx.)1 250 $2,5MVariável30 dias1 incluído
EnterpriseSob consulta2,5M+Negociado30 diasMúltiplos

Evolução tarifária recente

⚠️ Alteração importante (1 de dezembro de 2025): o plano Flex passou de 1,00 $ para 2,00 $ por cada 1 000 emails, um aumento de 100%. Esta subida significativa torna os planos Foundation muito mais atrativos para volumes superiores a 25 000 emails/mês.

Análise económica:

  • Plano Flex: 50 000 emails = 49 000 pagos × 0,002 = 98 $
  • Plano Foundation 50k: 50 000 emails = 35 $ (poupança de 63 $)
  • Limiar de rentabilidade: o plano Foundation torna-se rentável a partir de cerca de 18 000 emails/mês

Planos Optimize (ferramentas de entregabilidade)

PlanoPreço/mêsValidaçõesTestes de inboxPreviews
Pilot49 $2 50025500
Starter99 $5 000501 000
ContractSob consultaPersonalizadoPersonalizadoPersonalizado

Descontos anuais

Não estão documentados publicamente. Os clientes Enterprise referem descontos de 10%+ negociáveis.

Tarifário US vs UE

O tarifário é normalizado a nível mundial em USD. Não há diferença regional documentada entre US e UE.

Limites técnicos e quotas

LimiteValorNotas
Tamanho máx. do email25 MBCorpo + anexos + cabeçalhos
Destinatários/mensagem1 000To + Cc + Bcc combinados
Parâmetros send options16 KBParâmetros o:, h:, v:, t:
Templates/domínio100Limite rigoroso
Versões/template10-
Domínios (Free)5-
Domínios (pago)1 000-
Destinatários sandbox5Têm de estar verificados
Rate limit Domains API300 req/minÚnico endpoint documentado
Rate limit de envio (contas novas)100 mensagens/horaAntes da verificação de negócio
Scheduling máx.3 dias7 dias com plano de storage 7d+

Retenção de dados

DadosRetenção
Logs de eventos (Free)1 dia
Logs de eventos (Foundation)5 dias
Logs de eventos (Growth)15 dias
Logs de eventos (Scale)30 dias (máx.)
Conteúdo das mensagens1-7 dias (configurável)
Estatísticas horárias60 dias
Estatísticas diárias1 ano
Estatísticas mensaisIndefinido
Logs de segurança críticos365 dias

Gestão de bounces e supressões

Hard bounce (falha permanente)

ComportamentoDetalhe
AçãoEndereço adicionado à lista de supressão
Duração do bloqueioIndefinida (até remoção manual)
Erro devolvido"Not delivering to previously bounced address"

Soft bounce (falha temporária)

ComportamentoDetalhe
RetryAutomático para os soft bounces imediatos
DuraçãoAté ao sucesso ou à classificação como permanente
ConversãoApós várias falhas, adição à lista de bounces

Spam complaints (FBL)

O Mailgun inscreve-se automaticamente nos Feedback Loops dos principais operadores. As queixas desencadeiam:

  • Adição automática à lista Complaints
  • Envio do webhook complained
  • Bloqueio dos envios futuros para esse endereço

Operadores suportados: Yahoo, Microsoft/Outlook, Comcast, Cox, Fastmail e outros através do Universal Feedback Loop. Nota: o Gmail não fornece um FBL tradicional.

Unsubscribe automático

O Mailgun adiciona automaticamente:

  • Cabeçalho List-Unsubscribe
  • Cabeçalho List-Unsubscribe-Post: List-Unsubscribe=One-Click

Em conformidade com a RFC 8058 e com as exigências do Gmail/Yahoo para remetentes em massa (5000+ mensagens/dia).

API de listas de supressão

ListaEndpoint
BouncesGET/POST/DELETE /v3/{domain}/bounces
ComplaintsGET/POST/DELETE /v3/{domain}/complaints
UnsubscribesGET/POST/DELETE /v3/{domain}/unsubscribes
AllowlistGET/POST/DELETE /v3/{domain}/allowlist

A Allowlist impede que endereços sejam adicionados à lista de bounces, mas não se sobrepõe às Complaints nem às Unsubscribes.

Event Webhook e tracking em tempo real

O webhook de eventos permite receber em tempo real as notificações de entrega, envolvimento e conformidade.

Eventos disponíveis

  • Entrega: accepted, delivered, temporary_fail, permanent_fail
  • Envolvimento: opened, clicked
  • Conformidade: complained, unsubscribed

Formato do payload JSON

{
  "signature": {
    "timestamp": "1529006854",
    "token": "a8ce0edb2dd8301dee6c2405235584e45aa91d1e9f979f3de0",
    "signature": "d2271d12299f6592d9d44cd9d250f0704e4674c30d79d07c47a66f95ce71cf55"
  },
  "event-data": {
    "event": "delivered",
    "timestamp": 1529006854.329574,
    "id": "DACSsAdVSeGpLid7TN03WA",
    "recipient": "recipient@captaindns.com",
    "tags": [],
    "message": {
      "headers": {
        "message-id": "20180618211821.captaindns.com"
      }
    }
  }
}

Retry policy

Código de respostaAção
200Sucesso, sem retry
406Rejeitado, sem retry
OutroRetry segundo o calendário

Calendário de retry: 5min → 10min → 15min → 1h → 2h → 4h (total: 8 horas)

Segurança (assinatura HMAC)

ElementoValor
AlgoritmoHMAC-SHA256
ChaveWebhook Signing Key (Control Panel → Account Security)
CálculoHMAC-SHA256(timestamp + token, signingKey)

Exemplo em Python:

import hmac, hashlib
def verify(api_key, token, timestamp, signature):
    expected = hmac.new(api_key.encode(), f"{timestamp}{token}".encode(), 
                        hashlib.sha256).hexdigest()
    return signature == expected

Configuração

  • Até 3 URL por tipo de evento e por domínio
  • Configuração ao nível do domínio (não da conta)
  • API: POST /v3/domains/{domain}/webhooks

Templates Handlebars

O Mailgun utiliza Handlebars (versão personalizada) para os templates armazenados.

Sintaxe das variáveis

ContextoSintaxe
Templates armazenados{{variable}}
Batch sending inline (API)%recipient.variable%

Condições e ciclos

{{#if condicao}}
  Conteudo se verdadeiro
{{else if outraCondicao}}
  Conteudo alternativo
{{else}}
  Conteudo predefinido
{{/if}}

{{#unless condicao}}
  Conteudo se falso
{{/unless}}

{{#equal variavel "valor"}}
  Conteudo se igual
{{/equal}}

{{#each tabela}}
  <li>{{this.propriedade}}</li>
{{/each}}

{{#with objeto}}
  {{propriedadeAninhada}}
{{/with}}

Limites dos templates

LimiteValor
Templates por domínio100
Versões por template10
Tamanho do templateNão documentado
Partials (import)Não suportado

Funcionalidades adicionais

Email Validation API

AtributoValor
Endpoint singleGET /v4/address/validate?address=...
Endpoint bulkPOST /v4/address/validate/bulk/{list_id}
Base de dados450+ mil milhões de emails
Tarifa Foundation1,20 $/100 validações
Tarifa Scale5 000 incluídas, depois 0,80 $/100

Validações efetuadas: sintaxe RFC, registos MX, existência da mailbox, bounces da rede Mailgun, endereços de risco, endereços role-based, emails descartáveis, gralhas de domínio, domínios catch-all.

Inbound Parse (Routes)

Permite receber emails e encaminhá-los para um URL de webhook:

Filtros: match_recipient(), match_header(), catch_all()
Acoes: forward("https://url"), forward("email@"), store(), stop()

Retry inbound: até 8 horas (10min, 15min, 30min, 1h, 2h, 4h) Retenção das mensagens armazenadas: 3 dias

Anexos

LimiteValor
Tamanho total da mensagem25 MB (corpo + anexos + headers)
Tipos de ficheiroSem restrição documentada
Inline (CID)Suportado através do parâmetro inline

AMP for Email

Suportado desde 2019 através do parâmetro amp-html. Exige:

  • Registo como remetente AMP junto da Google
  • SPF, DKIM e DMARC configurados
  • Fallback HTML obrigatório

Segurança e conformidade

Certificações

CertificaçãoEstado
ISO 27001✅ Certificado
ISO 27701✅ Certificado (privacidade)
SOC 2 Type I✅ Certificado
SOC 2 Type II✅ Certificado
SOC 1 (SSAE-16)✅ Certificado
PCI-DSS✅ Conforme (SAQ-A)
CSA Star Level 1✅ Conforme

RGPD

ElementoDetalhe
DPADisponível: mailgun.com/legal/dpa/
Localização dos dados UEAlemanha
Endpoints UEapi.eu.mailgun.net, smtp.eu.mailgun.org
Residência dos dadosAs mensagens nunca são transferidas para fora da região
DPODedicado, sediado na UE

HIPAA

ElementoDetalhe
Estado✅ Conforme
BAADisponível: mailgun.com/legal/hipaa-baa/
Pré-requisitosConfiguração de encriptação do lado do cliente, consentimento do paciente, assinatura do BAA

Encriptação TLS

VersãoEstado
TLS 1.0❌ Descontinuado (março de 2021)
TLS 1.1❌ Descontinuado (março de 2021)
TLS 1.2✅ Suportado
TLS 1.3✅ Suportado

Encriptação em repouso: AES-256

Autenticação avançada

FuncionalidadeDisponibilidade
2FA✅ Todos os planos
SSO✅ Scale e Enterprise
SAML 2.0✅ Scale e Enterprise
IdP suportadosOkta, Auth0, OneLogin, Azure AD, ADFS, AWS IAM
RBAC✅ Scale e Enterprise (Admin, Developer, Analyst, Support)

Plano de ação: configuração em 6 passos

1. Criar a conta e configurar o domínio

  • Criar uma conta Mailgun em mailgun.com/signup
  • Escolher a região (US ou UE, consoante as necessidades de RGPD)
  • É criado automaticamente um domínio sandbox (100 emails/dia)

2. Verificar o domínio (Domain Verification)

  • Aceder a Sending > Domains > Add New Domain
  • Introduzir o domínio de envio (por exemplo, mail.captaindns.com)
  • Ativar o Automatic Sender Security (recomendado)
  • Criar os registos DNS no registrar:
    1. TXT SPF: v=spf1 include:mailgun.org ~all
    2. CNAME DKIM pdk1: pdk1._domainkey.mail.captaindns.com
    3. CNAME DKIM pdk2: pdk2._domainkey.mail.captaindns.com
    4. MX mxa: mxa.mailgun.org (prioridade 10)
    5. MX mxb: mxb.mailgun.org (prioridade 10)
  • Verificar a propagação DNS (24-48h)

3. Publicar o registo DMARC

Criar o registo DMARC no domínio principal:

_dmarc.captaindns.com  TXT  "v=DMARC1;p=none;rua=mailto:dmarc@captaindns.com;aspf=r;adkim=r"

Começar por p=none para monitorização, passar depois a p=quarantine e finalmente a p=reject assim que os relatórios estiverem validados.

4. Escolher e configurar o método de envio

Opção A: REST API

  • Gerar uma API key em Settings > API Keys
  • Escolher as permissões (Full Access ou Domain sending keys para âmbito limitado)
  • Implementar o endpoint POST /v3/{domain}/messages
  • Criar templates em Sending > Templates, se necessário

Opção B: SMTP Relay

  • Obter a palavra-passe SMTP do domínio em Sending > Domains > Domain settings > SMTP credentials
  • Configurar a aplicação, o plugin ou o servidor de mail:
    • Host: smtp.mailgun.org (US) ou smtp.eu.mailgun.org (UE)
    • Porta: 587 (STARTTLS recomendado)
    • User: postmaster@mail.captaindns.com
    • Password: a palavra-passe SMTP do domínio

5. Configurar os webhooks

  • Aceder a Sending > Webhooks
  • Definir o URL do endpoint (HTTPS recomendado)
  • Selecionar os eventos (delivered, bounced, opened, clicked, etc.)
  • Obter a Webhook Signing Key para validar as assinaturas HMAC

6. Testar e monitorizar

  • Enviar um email de teste através da API ou de SMTP
  • Confirmar em Sending > Logs que o email foi entregue
  • Verificar os eventos de webhook no seu endpoint
  • Controlar as estatísticas (entregabilidade, taxa de abertura, taxa de bounce)
  • Para passar a produção, sair do modo sandbox contactando o suporte do Mailgun (verificação de negócio)

Guias técnicos: outras plataformas de email transacional

Conheça os nossos guias completos para outras soluções de email transacional:

FAQ

Qual a diferença entre a chave API primária e as Domain Sending Keys?

A chave API primária (Primary Account API Key) dá acesso CRUD completo a todas as API da conta. As Domain Sending Keys estão limitadas ao envio (POST /messages) para um domínio específico. Convém usar as Domain Sending Keys nas aplicações, para limitar a superfície de ataque em caso de comprometimento.

Porque é que o Mailgun gera dois seletores DKIM (pdk1 e pdk2)?

Os dois seletores permitem a rotação automática das chaves DKIM a cada 120 dias sem interrupção de serviço. Quando o Mailgun pretende renovar as chaves por razões de segurança, gera uma nova chave em pdk2 enquanto pdk1 ainda está ativo, passando depois o tráfego progressivamente. Isto evita qualquer interrupção da entregabilidade durante a mudança de chave.

É preciso configurar um Custom MAIL FROM como no Amazon SES?

Não. Ao contrário do Amazon SES, que exige Custom MAIL FROM para o alinhamento SPF, o Mailgun utiliza automaticamente o domínio verificado no Return-Path (bounce+id@mail.captaindns.com). O alinhamento SPF para DMARC funciona nativamente logo após a configuração do domínio, sem qualquer configuração adicional.

Como funciona o modo de teste sem consumir créditos?

Basta usar o parâmetro o:testmode=yes (API) ou o header X-Mailgun-Drop-Message: yes (SMTP). As mensagens são aceites mas não entregues, gerando um evento delivered com o código 650. Ideal para testar a estrutura dos pedidos e o formato dos payloads sem enviar emails de verdade.

Qual é o limite real de destinatários por chamada à API?

1 000 destinatários no máximo por chamada (to + cc + bcc combinados). Acima disso, é preciso dividir em várias chamadas. Para enviar para 10 000 pessoas são necessárias 10 chamadas à API. As recipient variables permitem personalizar o conteúdo de cada destinatário dentro do mesmo batch.

O plano Flex é adequado para produção com volume variável?

Desde a duplicação do tarifário (2,00$/1000 emails em dezembro de 2025), o plano Flex tornou-se menos competitivo. Acima de 18 000 emails/mês, o plano Foundation 50k (35$/mês) é mais rentável. O Flex continua interessante para volumes muito baixos e irregulares (menos de 10 000/mês) ou para testar antes de assumir um compromisso.

Vale a pena adotar um IP dedicado para o meu projeto?

Provavelmente não. Um IP dedicado exige um volume mínimo de 1 milhão de emails por mês, com envios regulares. Impõe um warm-up de 15 ou mais dias e custa 59$/IP/mês adicionais (ou vem incluído a partir do Foundation 100k). Se o volume for inferior ou se os envios forem irregulares, convém manter o IP partilhado. A reputação do Mailgun em IP partilhado é excelente.

Os rate limits da API estão documentados?

Não. O Mailgun não documenta publicamente os rate limits específicos por endpoint, exceto no caso da API Domains (300 req/min). As contas novas podem estar limitadas a 100 mensagens/hora antes da verificação de negócio. Os headers X-RateLimit-* nas respostas indicam a quota em tempo real. Em caso de 429, convém implementar um backoff exponencial.

Glossário

  • REST API: API HTTP do Mailgun para o envio de emails transacionais. Endpoint principal: POST /v3/{domain}/messages. Autenticação: HTTP Basic Auth (api:YOUR_API_KEY). Método recomendado para qualquer nova integração.

  • SMTP Relay: servidor SMTP do Mailgun (smtp.mailgun.org) que permite enviar através do protocolo SMTP padrão. Autenticação: SASL/PLAIN (postmaster@ + palavra-passe SMTP). Portas disponíveis: 587 (STARTTLS), 465 (TLS direto), 2525 (fallback GCE).

  • Domain Verification: configuração DNS para autenticar o domínio junto do Mailgun. Gera os registos SPF, DKIM e MX. Com Automatic Sender Security: 2 CNAME DKIM (pdk1 e pdk2) para rotação automática a cada 120 dias, chaves de 2048 bits por predefinição.

  • Return-Path (Envelope From): endereço técnico usado no encaminhamento SMTP e nos bounces. O Mailgun utiliza automaticamente o seu domínio (bounce+id@mail.captaindns.com), permitindo o alinhamento SPF relaxed para DMARC sem configuração separada. Diferença importante face ao SendGrid (subdomínio em1234) e ao Amazon SES (Custom MAIL FROM obrigatório).

  • Automatic Sender Security: opção recomendada para a Domain Verification. Gera 2 CNAME DKIM em vez de TXT, permite a rotação automática das chaves DKIM a cada 120 dias e utiliza chaves de 2048 bits por predefinição.

  • Recipient Variables: mecanismo para personalizar o conteúdo de cada destinatário num envio em batch. Sintaxe: %recipient.variable% na mensagem, com um JSON que associa cada email às respetivas variáveis. Permite enviar até 1 000 versões personalizadas numa única chamada à API.

  • IP Warmup: processo automático de subida de carga de um IP dedicado novo. Calendário em 15 etapas: de 1 000 emails/dia (D1) até à capacidade total (D15+). O sistema avança uma etapa a cada 24h se os limites forem atingidos. O tráfego excedente é encaminhado para os IP partilhados.

  • IP Pools: grupos de IP dedicados atribuíveis a fluxos distintos (transacional vs marketing, por cliente, por marca). Disponíveis nos planos Scale e Enterprise. Permitem separar a reputação. Dynamic IP Pools: atribuição automática com base na saúde da reputação.

  • Event Webhook: endpoint HTTP invocado pelo Mailgun em cada evento (accepted, delivered, opened, clicked, bounced, complained, unsubscribed). Configuração: até 3 URL por tipo de evento. Retry durante 8h em caso de falha. Segurança: assinatura HMAC-SHA256.

  • Handlebars: linguagem de templating utilizada pelo Mailgun para os templates armazenados. Suporta variáveis {{variable}}, condições {{#if}}, ciclos {{#each}} e helpers {{#equal}}. Limite: 100 templates por domínio, 10 versões por template. Sem suporte para partials.

  • Sandbox Mode: modo de teste que valida o formato dos pedidos sem enviar emails de verdade. Ativa-se com o:testmode=yes (API) ou X-Mailgun-Drop-Message: yes (SMTP). Gera um evento delivered com o código 650. Não consome créditos. Limite: 5 destinatários verificados.

  • Suppressions: listas de bloqueio mantidas automaticamente pelo Mailgun (Bounces, Complaints, Unsubscribes). Os endereços são suprimidos por tempo indefinido por predefinição. Gestão através da API: GET/POST/DELETE /v3/{domain}/{bounces|complaints|unsubscribes}. Allowlist: impede a adição à lista Bounces, mas não se sobrepõe a Complaints nem a Unsubscribes.

  • Domain Sending Keys: chaves API limitadas ao envio (POST /messages) para um domínio específico. Ao contrário da chave API primária (acesso CRUD completo), reduzem a superfície de ataque. Recomendadas para aplicações em produção.

  • RBAC API Keys (Scale+): chaves API com funções predefinidas: Admin (leitura/escrita completa), Developer (acesso técnico completo), Analyst (apenas leitura de métricas), Support (leitura + gestão das supressões). Disponíveis apenas nos planos Scale e Enterprise.

Fontes oficiais

Artigos relacionados