Endereço de Retorno

E-mail e segurança
O endereço usado para relatórios de não entrega (bounces) quando um e-mail não pode ser entregue.
← Voltar ao Glossário

O que é um endereço Bounce?

Um endereço de rejeição, também chamado de caminho de retorno ou remetente de envelope, é o endereço de e-mail que recebe relatórios de não entrega (NDRs) quando um e-mail não pode ser entregue. Este endereço é separado do endereço "De" visível para os destinatários e é usado exclusivamente para notificações de entrega automatizadas.

Como os endereços de Bounce funcionam

A transmissão por e-mail utiliza dois conjuntos de endereços:

Cabeçalho De (visível para destinatário):
From: John Doe <john@example.com>
Envelope From (SMTP-level, usado para saltos):
MAIL FROM: <bounces@example.com>

Quando a entrega falha, o servidor receptor envia o salto para o remetente do envelope, não o cabeçalho Do endereço.

Exemplo de conversação SMTP

Client: MAIL FROM: <bounces@example.com>

Server: 250 OK

Client: RCPT TO: <invalid@recipient.com>

Server: 550 No such user here

Client: QUIT

# Later, server sends bounce to bounces@example.com

Tipos de E-mail Bounces

"Duro balança"

Falhas permanentes de entrega:

Ação: Remover endereço da lista de discussão imediatamente.

# # Balanças suaves

Falhas temporárias:

Ação: Retentar a entrega, remover após múltiplos saltos suaves.

# # Block Bounces

Problemas de entrega:

Ação: Investigar reputação do remetente e autenticação.

Configuração do Endereço de Salto

Configuração do Caminho de Retorno nos Cabeçalhos de E- mail

PHP (função de correio):
$to = "recipient@example.com";

$subject = "Test Email";

$message = "Email body";

$headers = "From: sender@example.com\r\n";

$headers .= "Return-Path: bounces@example.com\r\n";

mail($to, $subject, $message, $headers, "-f bounces@example.com");

PHPMailer:
$mail = new PHPMailer();

$mail->From = "sender@example.com";

$mail->Sender = "bounces@example.com"; // Return path

$mail->addAddress("recipient@example.com");

$mail->Subject = "Test Email";

$mail->send();

Postfix (SMTP):
# /etc/postfix/main.cf

sender_canonical_maps = hash:/etc/postfix/sender_canonical

# /etc/postfix/sender_canonical

@example.com bounces@example.com

# Apply changes

postmap /etc/postfix/sender_canonical

systemctl reload postfix

Serviços de Manuseamento de Salto Dedicado

A maioria dos provedores de serviços de email oferecem gerenciamento de rejeição:

Amazon SES:
{

"Message": {

"Subject": "Test",

"From": "sender@example.com",

"ReturnPath": "bounces@example.com"

}

}

EnviarGrid:
const msg = {

to: 'recipient@example.com',

from: 'sender@example.com',

replyTo: 'reply@example.com',

return_path: 'bounces@example.com',

subject: 'Test Email',

text: 'Email body'

};

Convenções de nomeação de endereços

Abordagem do Subdomínio

bounces@example.com           # General bounces

no-reply@example.com # No-reply emails

returns@example.com # Returns/receipts

# Específico da Campanha

Faixa de saltos por campanha:

bounces-newsletter@example.com

bounces-campaign-123@example.com

bounces-transaction@example.com

Caminho de Retorno do Envelope Variável (VERP)

Codificar o destinatário no endereço de rejeição:

Sending to: user@recipient.com

Return path: bounces+user=recipient.com@example.com

When bounce arrives at bounces+*, parse to identify failed recipient

Processando mensagens de salto

Processamento automático de salto

Exemplo de Python:
import email

from email import policy

def parse_bounce(raw_email):

msg = email.message_from_string(raw_email, policy=policy.default)

# Extract bounce type

if "550" in msg.get_payload():

return "hard_bounce"

elif "452" in msg.get_payload():

return "soft_bounce"

# Extract failed recipient

for part in msg.walk():

if part.get_content_type() == "message/delivery-status":

# Parse delivery status

pass

return bounce_info

# Integrate with mailing list to remove hard bounces

Manuseamento de salto baseado em webhook

ESPs modernos fornecem webhooks:

SendGrid Webhook:
POST /bounce-webhook

{

"email": "recipient@example.com",

"event": "bounce",

"reason": "550 5.1.1 User unknown",

"type": "blocked",

"status": "5.0.0"

}

Acção: Atualizar o banco de dados para marcar o e- mail como rebatido.

Endereços SPF e Bounce

O SPF verifica o remetente do envelope (endereço de salto), não o cabeçalho From:

Message:

From: newsletter@example.com (header)

Return-Path: bounces@mail-server.com (envelope)

SPF Check:

Queries: mail-server.com TXT record (not example.com)

Must include sending IP in mail-server.com's SPF

Configuração do SPF de Domínio de Salto

bounces.example.com.    IN    TXT    "v=spf1 include:_spf.sendgrid.net ~all"

Certifique-se de que seu subdomínio de salto tenha registros SPF apropriados para sua infraestrutura de envio.

Melhores práticas de discurso

# # # Use um endereço de salto dedicado

Nunca use seu e-mail primário para saltos:

# Bad

Return-Path: info@example.com

# Good

Return-Path: bounces@example.com

Monitorar as Taxas de Salto

Taxa de SaltoAvaliaçãoAcção
< 2%SaudávelContinuar o acompanhamento
2-5%AcercaQualidade da lista de e- mail de auditoria
5-10%PobreLimpeza imediata da lista necessária
> 10%CríticoEntregabilidade em risco

Implementar o Processamento de Salto

Automatize a remoção de saltos rígidos:

-- Mark emails with hard bounces

UPDATE mailing_list

SET status = 'bounced', bounce_count = bounce_count + 1

WHERE email IN (SELECT email FROM recent_hard_bounces);

-- Remove after 3 hard bounces

DELETE FROM mailing_list

WHERE bounce_count >= 3;

# # # Separação Transacional e Marketing Salta

transactional-bounces@example.com  # Order confirmations, receipts

marketing-bounces@example.com # Newsletters, campaigns

Taxas de rejeição diferentes são esperadas para cada tipo.

Configurar a Automação de Processamento Bounce

Exemplo de Trabalho de Cron:
#!/bin/bash

# Process bounces every hour

# Fetch bounces from IMAP

fetchmail -c /etc/fetchmailrc

# Parse and update database

/usr/local/bin/process-bounces.py

# Clean up processed bounces older than 30 days

find /var/mail/bounces -mtime +30 -delete

Backscatter e Bounce Segurança

# Problemas com o espalhador de costas

Quando o seu servidor aceita spam e, em seguida, salta-lo, você está enviando para endereços falsificados:

1. Spammer sends email with forged From

2. Your server accepts it

3. Your server realizes it's spam/invalid

4. Your server bounces to forged From address

5. Innocent party receives bounce (backscatter)

Solução: Rejeitar no tempo SMTP, não aceitar em seguida, saltar:
# Postfix: Reject unknown users at SMTP time

smtpd_recipient_restrictions = reject_unauth_destination

local_recipient_maps = hash:/etc/postfix/local_recipients

Falsificação de Salto

Os atacantes podem forjar mensagens de rejeição para:

Validação:

Cenários comuns de salto

Cenário 1: Todos os e-mails

Causa: Falha SPF, lista negra IP ou reputação do servidor Check: Registros SPF, reputação do remetente IP, relatórios DMARC

Cenário 2: Salta Não Ser Recebido

Causa: Endereço de salto mal configurado ou não existe Check: Registros MX para domínio de salto, caixa de correio existe

Cenário 3: Alta Taxa de Salto Macio

Causa: Servidores beneficiários sobrecarregados, limitantes de taxa, mensagens grandes Verificar: Taxa de envio, tamanho da mensagem, erros no servidor destinatário

Cenário 4: Saltitar

Causa: O endereço Bounce aciona a resposta automática, que aciona outro salto Verificar: Desactivar as respostas automáticas nos endereços de rejeição

Tratamento de Salto de Testes

Enviar email de teste com destinatário inválido:
# Test bounce to invalid address

swaks --to invalid-user@test-domain.com \

--from bounces@example.com \

--server mx.test-domain.com

# Check if bounce arrives at bounces@example.com

Verifique o SPF para o domínio de rejeição:
dig bounces.example.com TXT

# Should show SPF record with authorized senders

O gerenciamento adequado do endereço de rejeição é fundamental para manter a reputação do remetente, a higiene da lista e a entregabilidade.

Coloque este Conhecimento em Prática

Use a API DomScan para verificar disponibilidade de domínio, saúde e muito mais.