Supressões
Proteção automática para a sua reputação de remetente.
A lista de supressão protege sua reputação de remetente — e sua capacidade de envio — garantindo que você nunca envie repetidamente para um endereço que teve hard bounce ou marcou você como spam.
Como endereços são suprimidos
- Hard bounce — o servidor de destino rejeitou o endereço permanentemente.
- Reclamação — o destinatário marcou uma mensagem como spam.
- Descadastro — o destinatário saiu de todo e-mail de marketing, pelo
header de um clique ou pela página de preferências hospedada. Em um e-mail
enviado com tópico, o header vale só para aquele tópico, e o descadastro
global é feito pelo botão Cancelar todas as inscrições da página. Além de marcar
o contato, a saída fica registrada aqui para sobreviver à exclusão e à
reimportação do contato; só um
PATCH /contacts/{id}explícito comunsubscribed: falsea remove. Diferente das outras origens, cobre apenas e-mail de marketing (veja abaixo). - Manual — você adicionou o endereço, no painel ou pela API.
Bounces e reclamações chegam como eventos do SES e suprimem o endereço automaticamente. Supressões são por equipe.
Quando o servidor de destino responde que uma caixa está inativa, o endereço
é suprimido na hora. Quando responde duas vezes que a caixa de um contato
está cheia, com um a 30 dias de intervalo, o endereço também é suprimido. Os
dois casos aparecem como hard bounce (origin: "bounce"), mas não contam na
sua taxa de bounce.
O que a supressão faz
- Envios transacionais (
POST /emailse o relay SMTP, semtopic_id): destinatários suprimidos por bounce, reclamação ou entrada manual são removidos deto/cc/bcc. Se todos os destinatários emtoestiverem suprimidos, o envio é rejeitado com422 all_recipients_suppressed(mensagemAll recipients are suppressed; o relay SMTP responde550com essa mensagem). Uma entrada de descadastro não se aplica aqui: quem saiu do marketing continua recebendo redefinições de senha, recibos e outras mensagens da conta — o mesmo significado que o Resend dá aunsubscribed("descadastrado de todos os Broadcasts"). - Envios com tópico (
POST /emailscomtopic_id) e transmissões: toda entrada se aplica, descadastros incluídos, mais a saída do destinatário daquele tópico; as transmissões pulam esses contatos no fan-out.
Uma lista importada com origin: "unsubscribe" bloqueia, portanto, apenas
envios com tópico e transmissões. Importe com manual para bloquear todo envio.
Quando a lista de supressão sozinha deixa um POST /emails sem destinatários
em to, com ou sem topic_id, fica guardado um e-mail com status
suppressed, só com os metadados (sem conteúdo e sem contar na sua cota), e
cada nova tentativa com o mesmo Idempotency-Key deixa mais um. Cada e-mail
guardado assim dispara o
email.suppressed.
Nada fica guardado quando é a saída do tópico que deixa to vazio, nem nos
itens de lote ou no relay SMTP.
Um e-mail que espera antes de sair, como um agendado, é conferido de novo na
hora do envio. Os destinatários suprimidos nesse meio-tempo são removidos e,
num envio com tópico ou numa transmissão, também os que saíram do tópico. Se
não sobrar ninguém em to, o e-mail fica como suppressed, não é enviado e
dispara o
email.suppressed.
Toda mudança na lista publica um evento de webhook suppression.added ou
suppression.removed — veja Webhooks.
Revisando e removendo
O painel lista cada endereço suprimido com o motivo e a data. Você pode remover um endereço para permitir envios de novo — faça isso apenas quando souber que a causa foi corrigida (ex.: uma caixa que sempre existiu mas era rejeitada por um servidor mal configurado). A re-supressão é automática no próximo bounce ou reclamação.
A lista de supressão do próprio SES
Além desta lista por equipe, o Amazon SES mantém uma lista de supressão da
conta, por região, compartilhada por todas as equipes da instância. O
assistente de configuração a define para apenas bounces: uma caixa que deu
hard bounce está morta para todo mundo, então o SES pode recusá-la para a
conta inteira, mas uma denúncia de spam diz respeito ao e-mail de um remetente
e fica só na lista daquela equipe aqui. Um envio que o SES recusa por causa da
própria lista aparece como bounce permanente com o subtipo
OnAccountSuppressionList, e só o console do SES remove essa entrada. O SES
nem tentou entregar esse envio, então ele não conta como hard bounce nas suas
taxas, assim como na taxa de bounce do próprio SES. O mesmo vale para
qualquer bounce ou reclamação que o SES informe sobre um e-mail que ele não
tentou entregar.
API
Os endpoints /suppressions espelham a superfície suppressions do Resend,
então os métodos suppressions.* do SDK do Resend funcionam como estão. Cada
entrada é lida como { id, email, origin, source_id, created_at }, onde
origin é bounce, complaint, manual ou unsubscribe e source_id é o
e-mail cujo bounce ou reclamação a criou.
GET /suppressions?origin=bounce— listagem com paginação por cursor, da mais nova para a mais antiga, opcionalmente filtrada por origem.GET /suppressions/{id}eDELETE /suppressions/{id}— o segmento de caminho é o id da supressão ou o endereço de e-mail.POST /suppressionscom{ "email": "...", "origin": "manual" }— bloqueia o endereço.originé opcional (bounce,complaint,manualouunsubscribe, padrãomanual) e permite que uma importação de outro provedor preserve o histórico de bounces e reclamações, ou que uma lista de opt-outs migrada mantenha seu motivo. Idempotente: um endereço já suprimido por qualquer motivo mantém sua entrada e sua origem, e o id existente é retornado.POST /suppressions/batch/addcom{ "emails": [...], "origin": "bounce" }ePOST /suppressions/batch/removecom{ "emails": [...] }ou{ "ids": [...] }— até 1000 entradas por chamada (o Resend limita a 100). O add aplica o únicooriginopcional a todas as linhas que cria e retorna um id por endereço distinto, na ordem de entrada; o remove lista só as linhas de fato removidas.
Três particularidades do MillionSend: origin no add é aceito (o tipo do SDK
do Resend não tem esse campo, então envie por uma requisição crua),
origin: "unsubscribe" é um valor a mais que o Resend não tem (a união de
tipos do SDK dele não o inclui) e se comporta como um opt-out de um clique —
só uma nova inscrição explícita do contato o remove —, e um
endereço cujos dados pessoais foram apagados (LGPD/GDPR) continua bloqueando
envios mas some da listagem e das buscas por e-mail — fica acessível só pelo
id, com "[erased]" como e-mail, e suprimir o endereço de novo retorna esse
id sem restaurá-lo.
Por que isso importa
O SES acompanha taxas de bounce e reclamação e pausa remetentes que cruzam seus limites. A página de métricas do MillionSend acompanha suas taxas contra esses limites, e o envio de transmissões é bloqueado automaticamente quando uma taxa cruza o limite de pausa.
Na Nuvem, o volume de envio é regido pelos limites do seu plano. Auto-hospedado, os limites são as cotas e a reputação da sua própria conta AWS SES — cruzar os limites do SES pode pausar a conta inteira, que é exatamente do que a supressão protege você.