guia · API do Postmark
Como uma equipe de produto deve implementar a API do Postmark com segurança?
Implemente a API do Postmark por trás de um worker autorizado no servidor. Verifique o domínio de envio ou a assinatura do remetente, isole cada ambiente e carga de trabalho no servidor e no fluxo de mensagens adequados do Postmark, armazene o token de servidor em um gerenciador de segredos e persista um job de envio durável na aplicação antes de chamar POST /email. Envie apenas campos aprovados, guarde o MessageID e o ErrorCode exato do Postmark e trate a aceitação pela API como evidência de processamento, e não de entrega. Proteja e elimine duplicatas dos webhooks de entrega e de bounce, aplique as supressões de destinatários antes de cada envio, reconcilie timeouts ambíguos e teste rotação, falhas parciais, novas tentativas e exportação antes da produção.
Defina o limite da aplicação antes do Postmark
Comece por um evento de negócio autorizado, como um recibo, uma verificação, um alerta solicitado ou um aviso de segurança. Persista um job de saída durável com uma chave de evento estável, tenant, classe de mensagem, revisão do template, remetente e destinatários aprovados, base de consentimento ou necessidade, decisão atual de supressão e estado inicial. Entradas do navegador, do app móvel, do template e do usuário não podem selecionar um token de servidor do Postmark, uma identidade From arbitrária, um fluxo de mensagens, um webhook, um destinatário sem restrição ou metadados do provedor. Coloque todas as chamadas ao provedor atrás de um único adapter no servidor. Separe o tráfego transacional do tráfego de broadcast ou marketing de acordo com o modelo de consentimento e reputação do produto. A API do Postmark transporta uma mensagem; ela não estabelece a autorização do tenant, o consentimento do destinatário nem a idempotência de negócio. Reivindique o job interno uma única vez, registre cada tentativa no provedor e mantenha os identificadores do provedor como evidência vinculada ao evento da aplicação, em vez de usá-los como o único sistema de registro.
Use tokens de servidor com escopo operacional restrito
A API de e-mail do Postmark documenta o cabeçalho X-Postmark-Server-Token para acesso à API com escopo de servidor. Armazene cada token em um serviço gerenciado de segredos e exponha-o apenas ao worker que precisa daquele servidor e ambiente. Nunca coloque tokens em código do cliente, controle de versão, URLs, logs, ferramentas de analytics, templates, capturas de tela, tickets, prompts ou fixtures de teste. Separe a produção do desenvolvimento e de produtos não relacionados, para que uma revogação ou um uso indevido tenha impacto limitado. Ensaie a rotação: provisione um substituto pela administração aprovada, atualize o worker, envie mensagens controladas, confirme as evidências da API e dos eventos e então revogue o token antigo. Trate erros de autenticação inesperados como condição de pausa, não como convite para testar credenciais repetidamente. Restrinja a administração do painel com autenticação forte e funções. Um token de servidor autoriza operações da API do Postmark para o respectivo servidor; a aplicação ainda precisa autorizar o tenant, o remetente, o destinatário, o template e a classe de mensagem.
Verifique a identidade exata do remetente
Use uma assinatura do remetente ou um domínio verificado controlado pela organização e confirme o endereço From exato usado por cada fluxo. Em amostras brutas recebidas, faça um inventário do domínio do From visível, do caminho de retorno SMTP, do domínio d= e do seletor DKIM, do endereço de resposta e do fluxo de mensagens de envio. Publique apenas os registros DNS que o Postmark exige atualmente para a configuração escolhida, depois de revisar quem é responsável pelos SPF, DKIM e DMARC existentes. Guarde os valores anteriores e as instruções de rollback. A verificação do provedor é evidência de que a checagem de configuração passou; ela não comprova que todos os caminhos da aplicação usam essa identidade, que o DMARC está alinhado, que os destinatários consentiram ou que as mensagens chegam às caixas de entrada. Mantenha a autorização de remetentes por tenant na aplicação e bloqueie valores From de outros tenants. Teste subdomínios, respostas, bounces, ambientes inferiores e caminhos de template. Não enfraqueça a política SPF ou DMARC da organização só para deixar um indicador do painel verde.
Monte uma única requisição POST de e-mail explícita
O Postmark documenta POST /email com campos JSON para remetente, destinatários, assunto, corpo em texto ou HTML, ReplyTo, cabeçalhos, tags ou metadados, fluxo de mensagens, anexos e opções de tracking. Exponha apenas os campos de que o produto precisa. Valide e normalize os endereços, limite a quantidade de destinatários e de anexos, rejeite injeção de cabeçalhos, faça o escape dos valores do template conforme o contexto de saída e gere o texto e o HTML a partir de uma única revisão aprovada. Não coloque segredos nem dados pessoais desnecessários em tags, metadados, cabeçalhos, assuntos ou nomes de anexos, porque eles podem aparecer na atividade e nos eventos do provedor. Selecione o MessageStream a partir de configuração confiável, nunca de uma entrada arbitrária da requisição. Mantenha o payload do provedor em um único adapter, para que o código de negócio não dependa de todos os campos do Postmark. Armazene uma revisão do conteúdo ou um hash seguro para a privacidade quando a auditoria justificar, em vez de registrar em log o corpo completo da mensagem.
Interprete a resposta imediata de forma restrita
O endpoint de e-mail único do Postmark documenta campos de resposta como ErrorCode, Message, MessageID, SubmittedAt e informações dos destinatários. Persista o status HTTP exato e a resposta estruturada do provedor junto com a tentativa da aplicação. Uma resposta de sucesso e um MessageID mostram que o Postmark aceitou a requisição da API segundo a semântica documentada; eles não mostram que o servidor de destino aceitou a mensagem nem que ela chegou a uma caixa de entrada. Classifique os erros de validação, assinatura do remetente, autenticação, payload malformado, cota e política antes de tentar novamente. Um timeout da requisição é ambíguo, porque o Postmark pode ter aceitado a operação enquanto o cliente perdeu a resposta. Mantenha essa tentativa como desconhecida, pesquise a atividade do provedor ou os eventos posteriores usando dados de correlação seguros e aplique uma regra de reconciliação específica da classe de mensagem antes de reenviar. Nunca prometa entrega exatamente uma vez nem crie um novo evento lógico só porque uma requisição HTTP falhou.
Projete as novas tentativas com base em evidências do provedor e do transporte
Tente novamente apenas falhas de rede elegíveis, limites de taxa e erros de servidor do provedor, com backoff exponencial, jitter, número finito de tentativas e limites de idade na fila. Corrija erros permanentes de requisição, remetente, destinatário, token, template e política, em vez de repeti-los. Mantenha a mesma chave de evento da aplicação e registre as tentativas vinculadas. Verifique novamente a supressão e a autorização imediatamente antes de cada nova tentativa, porque o estado do destinatário ou do negócio pode mudar enquanto a mensagem está na fila. Limite a concorrência e a taxa por servidor, tenant, fluxo de mensagens, domínio de remetente e grupo de destinos, para que uma indisponibilidade não monopolize a capacidade. Pare em caso de eventos expirados, identidade de remetente revogada, reclamação, descadastro, falha permanente do destinatário ou pausa por incidente. Monitore a idade das novas tentativas, os resultados desconhecidos, as classes de resposta, as falhas de token e a latência do provedor. Se o Postmark já faz novas tentativas SMTP depois da aceitação, não crie um loop agressivo e duplicado na aplicação por cima desse comportamento de transporte.
Proteja os webhooks de entrega e de bounce
Configure apenas os tipos de webhook do Postmark de que a aplicação precisa e use HTTPS. Aplique os controles de segurança de webhook documentados atualmente, restrinja o endpoint ao servidor ou fluxo de mensagens esperado, imponha limites de tamanho e de content-type da requisição e nunca confie em identificadores de mensagem, destinatários, tags, metadados ou diagnósticos só porque o JSON é válido. Persista ou coloque na fila o evento autenticado, ou admitido de outra forma segura, antes de retornar sucesso. Elimine duplicatas por um identificador de evento estável do provedor, quando disponível, ou por uma chave composta conservadora que não misture destinatários, tipos de evento ou tentativas. Guarde separadamente o momento da ocorrência e o do processamento. Espere atrasos, novas tentativas, duplicações e entregas fora de ordem. Correlacione o MessageID e os metadados confiáveis ao tenant e ao job internos antes de mudar o estado. Faça a rotação de credenciais ou URLs de webhook de forma independente dos tokens de API, monitore requisições não autorizadas e atrasos e retenha payloads brutos apenas pelo tempo que as necessidades operacionais e de política justificarem.
Modele os estados de entrega, bounce e supressão
Mapeie as evidências de entrega e de bounce do Postmark para um modelo interno por destinatário, mantendo o tipo original do provedor, o MessageID, o timestamp, a classificação de status ou de bounce e o diagnóstico. Aceitação pela API, processamento pelo Postmark, aceitação pelo servidor de destino, não entrega posterior, pasta na caixa postal e engajamento são estados diferentes. Um evento delivered normalmente reflete a observação documentada do provedor sobre o servidor de destino, não uma visão da pasta final. Falhas temporárias podem justificar um tratamento de transporte limitado; falhas permanentes de endereço confirmadas devem criar uma supressão com escopo por destinatário. Reclamações e descadastros precisam atualizar a segurança do destinatário antes dos jobs seguintes. Proteja a reativação manual com autorização, motivo e histórico de auditoria. Mantenha no produto o estado de consentimento e de supressão, para que uma migração não descarte a proteção dos destinatários. Não infira leitura humana a partir do tracking de aberturas ou cliques, que é instrumentação de engajamento e pode ser afetada por tecnologias de privacidade.
Teste os caminhos de sandbox, de produção e de falha
Use os recursos de teste ou sandbox documentados pelo Postmark e destinatários controlados dedicados, e não endereços reais de clientes, para falhas determinísticas. Teste tokens válidos e inválidos, identidades From não autorizadas, destinatários aprovados e bloqueados, texto e HTML, Unicode, anexos, minimização de metadados, fluxos de mensagens, timeout da requisição antes e depois da aceitação, resposta de limite de taxa, autenticação de webhooks, entrega duplicada, eventos fora de ordem, classificações de bounce, supressão e rotação de tokens. Verifique os cabeçalhos brutos recebidos, o alinhamento DKIM e DMARC, o Reply-To, a configuração de tracking e a correlação do MessageID. Confirme que os ambientes inferiores não conseguem alcançar destinatários de produção. Execute testes de exportação e migração para supressões e evidências operacionais. Bloqueie o lançamento se houver acesso a remetentes ou eventos de outros tenants, aplicação de supressão indisponível, admissão ambígua de webhooks, segredos em logs, novas tentativas sem limite ou impossibilidade de pausar com segurança o servidor ou o fluxo de mensagens afetado.
Como o SendHQ se encaixa
O SendHQ é uma API de e-mail com escopo por workspace para comunicação de produto esperada. Sua documentação pública abrange envio com domínio verificado, e-mail de entrada, templates hospedados, eventos de entrega, supressões e um painel web.
Perguntas frequentes
Qual endpoint envia um e-mail pelo Postmark?
A API de e-mail atual do Postmark documenta POST /email com um token de servidor e campos de mensagem estruturados em JSON. Chame esse endpoint apenas a partir de código autorizado no servidor.
Onde um token de servidor do Postmark deve ser armazenado?
Em um sistema gerenciado de segredos no servidor, com escopo restrito de ambiente e carga de trabalho, acesso auditado, rotação testada e nenhuma exposição ao cliente.
Uma resposta bem-sucedida da API do Postmark comprova a entrega?
Não. Ela registra a aceitação pelo provedor segundo o contrato imediato da API. Aceitação pelo servidor de destino, bounce, chegada à caixa postal e engajamento exigem evidências posteriores com escopo definido.
Como tentar novamente após timeouts de requisição no Postmark?
Trate um timeout após uma possível submissão como ambíguo. Reconcilie a atividade do provedor ou os eventos posteriores antes de reenviar, usando a mesma chave durável do evento de negócio.
Os webhooks do Postmark podem ser considerados únicos e ordenados?
Não. Projete para atrasos, novas tentativas, duplicações e chegadas fora de ordem. Admita as requisições com segurança, capture os eventos de forma durável, elimine duplicatas e aplique transições monotônicas por destinatário.
Os metadados do Postmark devem conter segredos de clientes?
Não. Use valores de correlação limitados e seguros para a privacidade. Metadados, tags, cabeçalhos, telas de atividade, eventos, logs e exportações podem expor esses campos na operação.
Um evento delivered comprova a chegada à caixa de entrada?
Não. É uma evidência do provedor com escopo limitado, geralmente a aceitação pelo servidor de destino. A filtragem do receptor, as regras da caixa postal, a pasta final e o engajamento humano continuam separados.
Onde posso encontrar a documentação da API do SendHQ?
Consulte a documentação pública do SendHQ sobre sua API de e-mail, envio com domínio verificado, e-mail de entrada, templates, eventos de entrega e supressões.
Fontes
- Postmark Email API — Postmark (em inglês)
- Postmark API overview — Postmark (em inglês)
- Postmark Webhooks overview — Postmark (em inglês)
- Postmark Bounce webhook — Postmark (em inglês)
- RFC 5321: Simple Mail Transfer Protocol — RFC Editor (em inglês)