6. Rilevamento e gestione dei problemi (Problem Detection and Handling)
Questa sezione descrive come le implementazioni SMTP dovrebbero gestire vari problemi che si verificano durante l'invio di posta.
6.1. Consegna affidabile e risposte via e-mail (Reliable Delivery and Replies by Email)
Notifiche di stato della consegna (Delivery Status Notifications, DSN)
Quando la posta non può essere consegnata, il sistema mittente DOVREBBE (SHOULD) generare una notifica di stato della consegna (messaggio di rimbalzo) per informare il mittente.
Requisiti DSN: DEVE (MUST) essere inviata al percorso inverso (indirizzo MAIL FROM), DEVE (MUST) usare percorso inverso nullo (MAIL FROM:<>) per evitare loop.
Timeout e retry
Pianificazione retry: Primo fallimento: Riprovare dopo 30 minuti. Fallimenti successivi: Backoff esponenziale. Periodo massimo di retry: Almeno 4-5 giorni. Fallimento finale: Inviare rimbalzo al mittente.
6.2. Messaggi indesiderati, non richiesti e "di attacco" (Unwanted, Unsolicited, and "Attack" Messages)
I server SMTP DOVREBBERO (SHOULD) implementare protezioni contro gli abusi: Validazione destinatari, verifica mittente (SPF, DKIM, DMARC), rate limiting, greylisting, filtri contenuto, sistemi di reputazione.
Protezione DoS (Denial of Service Protection)
Limiti di connessione, rate limiting, tarpit, limiti di risorse, applicazione timeout.
Attacchi di raccolta directory (Directory Harvest Attacks, DHA)
Gli attaccanti inviano comandi RCPT TO con indirizzi indovinati per trovare mailbox valide. Contromisure: Ritardare risposte RCPT, usare stessa risposta per validi e non validi, validare destinatari solo durante/dopo DATA.
Prevenzione backscatter
Rifiutare destinatari non validi durante la transazione SMTP (prima di DATA), verificare mittenti, non generare rimbalzi per posta di origine sconosciuta/sospetta.
6.3. Rilevamento di loop (Loop Detection)
I loop di posta si verificano quando un messaggio viene inoltrato ripetutamente attraverso gli stessi server.
Metodi di rilevamento: Contare header Received (rifiutare dopo 50-100), analizzare header Received, tracciamento Message-ID.
6.4. Compensazione per irregolarità (Compensating for Irregularities)
Le implementazioni robuste DOVREBBERO (SHOULD) gestire con grazia le irregolarità comuni: Spazi extra, maiuscole/minuscole miste, parentesi angolari mancanti, solo CR o LF (non CRLF), righe lunghe.
Principio di robustezza: "Sii conservativo in ciò che invii, liberale in ciò che accetti"