Cos'è un indirizzo Bounce?
Un indirizzo di rimbalzo, chiamato anche il percorso di ritorno o il mittente di busta, è l'indirizzo e-mail che riceve rapporti non di consegna (NDRs) quando un'email non può essere consegnata. Questo indirizzo è separato dall'indirizzo "Da" visibile ai destinatari ed è utilizzato esclusivamente per le notifiche di consegna automatizzate.
Come Bounce affronta il lavoro
La trasmissione via e-mail utilizza due serie di indirizzi:
Header From (visibile al destinatario):From: John Doe <john@example.com>
Envelope From (livello SMTP, usato per i rimbalzi):
MAIL FROM: <bounces@example.com>
Quando la consegna fallisce, il server ricevente invia il rimbalzo al mittente della busta, non all'intestazione dall'indirizzo.
Esempio di conversazione 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
Tipi di messaggi e-mail
Hard Bounces
Fallimenti di consegna permanenti:
- L'utente non esiste. 550 Nessun utente del genere
- Domain non esiste. 550 Domain non trovato
- Rigettato per politica: 550 Spam bloccato
Soft Bounces
Fallimenti temporanei:
- Mailbox pieno. 452 Memorizzazione del sistema insufficiente
- Server temporaneamente non disponibile: 421 Servizio non disponibile
- Messaggio troppo grande: 552 Dimensione del messaggio supera il limite
Block Bounces
Problemi di consegna:
- IP blacklist: 554 Servizio non disponibile; Sender IP bloccato
- Contenuto filtrato come spam: 550 Spam punteggio troppo alto
- Limitare... 450 Troppe e-mail
Configurazione Indirizzo Bounce
Impostazione percorso di ritorno in e-mail
PHP (funzione di posta):$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
Servizi dedicati alla gestione dei rimbalzi
La maggior parte dei fornitori di servizi e-mail offrono la gestione del rimbalzo:
Amazon SES.
{
"Message": {
"Subject": "Test",
"From": "sender@example.com",
"ReturnPath": "bounces@example.com"
}
}
♪SendGrid ♪
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'
};
Bounce Indirizzo Naming Conventions
Subdomain Approach
bounces@example.com # General bounces
no-reply@example.com # No-reply emails
returns@example.com # Returns/receipts
Campaign-Specific
Rimbalzi per campagna:
bounces-newsletter@example.com
bounces-campaign-123@example.com
bounces-transaction@example.com
Variable Envelope Return Path (VERP)
Encode destinatario in indirizzo di rimbalzo:
Sending to: user@recipient.com
Return path: bounces+user=recipient.com@example.com
When bounce arrives at bounces+*, parse to identify failed recipient
Elaborazione dei messaggi di rimbalzo
Parsing rimbalzante automatizzato
Python Esempio: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
Webhook-Based Bounce Handling
Gli ESP moderni forniscono webhooks:
Traduzione:
POST /bounce-webhook
{
"email": "recipient@example.com",
"event": "bounce",
"reason": "550 5.1.1 User unknown",
"type": "blocked",
"status": "5.0.0"
}
Azione... Aggiorna database per contrassegnare e-mail come rimbalzato.
Indirizzo SPF e Bounce
SPF controlla il mittente della busta (indirizzo di consegna), non l'intestazione 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
Configurazione di Bounce Domain SPF
bounces.example.com. IN TXT "v=spf1 include:_spf.sendgrid.net ~all"
Assicurarsi che il sottodominio di rimbalzo ha i record SPF appropriati per la vostra infrastruttura di invio.
Bounce Indirizzo Migliori Pratiche
Utilizzare un indirizzo di rimbalzo dedicato
Non usare mai la tua email primaria per i rimbalzi:
# Bad
Return-Path: info@example.com
# Good
Return-Path: bounces@example.com
Monitorare le tariffe di rimbalzo
| Tasso di rimbalzo | Valutazione | Azione |
|---|---|---|
| % | Salute | Continua il monitoraggio |
| 2-5% | Per quanto riguarda | Audit qualità dell'elenco email |
| 5-10% | Povero | Pulizia immediata dell'elenco necessaria |
| > 10% | Critica | Liberabilità a rischio |
# Implement Bounce Processing
Rimozione automatica dei rimbalzi duri:
-- 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;
Separato Transactional and Marketing Bounces
transactional-bounces@example.com # Order confirmations, receipts
marketing-bounces@example.com # Newsletters, campaigns
Sono previsti diversi tassi di rimbalzo per ogni tipo.
Impostare l'automazione di elaborazione del rimbalzo
Cron Job Esempio:#!/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 Security
Backscatter Problem
Quando il server accetta lo spam e poi lo rimbalza, stai inviando ad indirizzi forgiati:
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)
# Solution # Rifiutare al momento SMTP, non accettare poi rimbalzare:
# Postfix: Reject unknown users at SMTP time
smtpd_recipient_restrictions = reject_unauth_destination
local_recipient_maps = hash:/etc/postfix/local_recipients
Bounce Forgery #
Gli aggressori possono falsificare i messaggi di rimbalzo a:
- Harvest indirizzi validi
- Consegnare lo spam mascherato come rimbalzi
- credenziali Phish tramite report di consegna falsi
**Validazione *
- Controllare il rimbalzo originato dal server MX
- Verifica il rimbalzo è per email che hai inviato
- Intestazioni di stato di consegna Parse con attenzione
Scenari comuni di rimbalzo
Scenario 1: Tutte le email rimbalzo
********: guasto SPF, elenco IP o reputazione del server
Check: record SPF, reputazione IP del mittente, rapporti DMARCScenario 2: Bounces Not Being Received
Perche'... Indirizzo di rimbalzo mal configurato o non esiste
Check: record MX per il dominio di rimbalzo, casella di posta esisteScenario 3: Alto tasso di rimbalzo morbido
****: server sensibili sovraccaricati, limiti di velocità, messaggi di grandi dimensioni# Controlli # Velocità di invio, dimensione del messaggio, errori del server destinatario
Scenario 4: Bounce Loops
Perche'... L'indirizzo di rimbalzo innesca l'auto-replica, che innesca un altro rimbalzo
# Controlli # Disattivare i risponditori automatici sugli indirizzi di rimbalzo
Testare la gestione dei rimbalzi
Invia email di prova con destinatario non valido:# 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
Verificare SPF per il dominio rimbalzo**:
dig bounces.example.com TXT
# Should show SPF record with authorized senders
La corretta gestione dell'indirizzo di rimbalzo è fondamentale per mantenere la reputazione del mittente, l'igiene della lista e la consegnabilità.