117 di 117 codici
Codici di risposta base
Stato del sistema o risposta di aiuto del sistema. Poco usato nella pratica.
Messaggio di aiuto in risposta al comando HELP, con informazioni sull'uso del server o di un comando specifico.
Saluto iniziale del server all'apertura della connessione: il servizio è pronto. Risponde anche a STARTTLS per indicare che può iniziare la negoziazione TLS.
Il server chiude la connessione, di solito in risposta al comando QUIT.
L'autenticazione con AUTH è riuscita. Di solito è accompagnato dal codice esteso 2.7.0.
L'azione richiesta è stata completata. È la risposta abituale a EHLO, MAIL FROM, RCPT TO e alla fine di DATA, quando il server accetta il messaggio.
Il destinatario non è locale, ma il server accetta il messaggio e lo inoltrerà all'indirizzo indicato.
Il server non conferma se l'utente esiste (VRFY disattivato per evitare l'enumerazione degli account), ma accetterà il messaggio e tenterà di consegnarlo.
Risposta a ETRN: il server ha iniziato a consegnare i messaggi in coda per il dominio o il nodo richiesto.
Challenge del server durante AUTH, codificata in Base64. Il client deve rispondere con il dato successivo del meccanismo (ad esempio, il nome utente o la password in AUTH LOGIN).
Risposta a DATA: il server attende il contenuto del messaggio, che termina con una riga contenente solo un punto.
Il servizio non è disponibile e il server chiude la connessione: spegnimento, sovraccarico, troppe connessioni o limite di invio temporaneo. Il mittente deve riprovare più tardi.
L'utente deve cambiare la password o passare a un altro meccanismo di autenticazione prima di potersi autenticare. È accompagnato dal codice esteso 4.7.12.
La casella di posta non è temporaneamente disponibile: occupata, bloccata o rifiutata temporaneamente per policy. Il greylisting di solito risponde con questo codice o con 451.
L'azione è stata interrotta per un errore locale del server, come una query DNS fallita o un filtro che non ha risposto. Il mittente deve riprovare più tardi.
Al momento il server non ha spazio sufficiente per accettare il messaggio. Indica anche che è stato superato il numero di destinatari per messaggio: il client deve inviare gli altri in un'altra transazione.
Errore temporaneo di autenticazione (ad esempio, il server delle credenziali non risponde) oppure TLS momentaneamente non disponibile quando si richiede STARTTLS.
Al momento il server non può gestire i parametri inviati in MAIL FROM o RCPT TO, ma potrebbe accettarli più tardi.
Risposta a ETRN: al momento il server non può elaborare la coda dei messaggi del nodo richiesto.
Risposta a ETRN: il nodo o dominio richiesto non è autorizzato a chiedere la consegna della propria coda.
Il server non riconosce il comando o la riga è troppo lunga. Lo usa anche AUTH quando una riga dello scambio supera la lunghezza massima consentita.
Il comando è valido, ma i suoi parametri o argomenti no: ad esempio un indirizzo malformato in MAIL FROM o un nome non valido in EHLO.
Il server riconosce il comando ma non lo implementa o lo ha disattivato, come VRFY o EXPN su molti server.
I comandi sono arrivati nell'ordine sbagliato, ad esempio RCPT TO prima di MAIL FROM, o DATA senza destinatari validi. Alcuni server lo restituiscono se si tenta di inviare senza autenticarsi.
Il server non supporta il parametro indicato, ad esempio un meccanismo di AUTH che non gestisce.
L'host non accetta posta di alcun tipo. Viene inviato come saluto al posto di 220 e il client non deve riprovare.
Il server richiede l'autenticazione, o l'avvio di TLS con STARTTLS, prima di accettare il comando. Tipico quando si usa la porta di invio 587 senza credenziali.
Il meccanismo di autenticazione scelto è troppo debole secondo la policy del server. Alcuni provider lo restituiscono quando richiedono password per app o OAuth.
Nome utente o password errati, o credenziali rifiutate. È accompagnato dal codice esteso 5.7.8.
Il meccanismo di autenticazione scelto è consentito solo su una connessione cifrata: bisogna prima eseguire STARTTLS.
La casella di posta non esiste o non è disponibile, oppure il messaggio è stato rifiutato per policy (spam, blacklist, SPF, DKIM o DMARC). Il codice esteso che lo accompagna indica la causa precisa.
Il destinatario non è locale e il server non inoltra il messaggio; può indicare a quale indirizzo inviarlo.
Spazio assegnato superato: la casella del destinatario è piena o il messaggio supera la dimensione massima annunciata dall'estensione SIZE.
L'indirizzo email non è valido o non è consentito, ad esempio per una sintassi errata o perché il mittente non può usare quell'indirizzo.
La transazione è fallita. Come saluto iniziale significa che non c'è servizio SMTP per quel client; dopo DATA, che il messaggio è stato rifiutato, spesso per il contenuto o per la reputazione del mittente.
Il server non riconosce o non implementa un parametro di estensione inviato in MAIL FROM o RCPT TO.
Il dominio del destinatario pubblica un null MX (un record MX che punta a «.»): dichiara di non ricevere posta, quindi non ha senso riprovare.
Codici di stato estesi (RFC 3463)
Stato senza ulteriori dettagli: si usa quando si conosce solo la classe del risultato (successo, errore temporaneo o permanente).
C'è un problema con un indirizzo del messaggio che non rientra nei codici più specifici.
La casella del destinatario non esiste sul server di destinazione. È il classico rimbalzo per un indirizzo scritto male o un account eliminato.
Il dominio o sistema di destinazione non esiste o non può accettare posta, ad esempio perché il dominio non si risolve.
L'indirizzo del destinatario ha una sintassi non valida.
L'indirizzo del destinatario corrisponde a più di una casella nel sistema di destinazione.
L'indirizzo del destinatario è valido. Compare come 2.1.5 nella risposta positiva a RCPT TO.
La casella esisteva ma è stata spostata e non è noto un indirizzo di inoltro.
L'indirizzo del mittente ha una sintassi non valida.
Il dominio del mittente non esiste o non accetta risposte, ad esempio perché non ha record MX né A.
Il messaggio è stato consegnato a un sistema che non supporta le notifiche di stato, quindi non sarà possibile confermarne la consegna finale.
Il dominio del destinatario pubblica un null MX: dichiara di non ricevere posta.
La casella esiste, ma qualcosa legato a essa ha impedito la consegna e non c'è un codice più specifico.
La casella esiste ma è disattivata e non accetta messaggi, ad esempio un account sospeso.
La casella del destinatario ha superato la quota di spazio.
Il messaggio supera la dimensione massima che il destinatario è autorizzato a ricevere.
Il destinatario è una lista di distribuzione che non è stato possibile espandere nei suoi membri.
Il sistema di destinazione ha avuto un problema che non rientra nei codici più specifici.
Lo spazio di archiviazione del sistema di posta di destinazione è pieno.
L'host di destinazione non accetta messaggi, per uno spegnimento imminente, sovraccarico o manutenzione.
Il sistema di destinazione non supporta una funzione richiesta dal messaggio.
Il messaggio supera la dimensione massima che il server accetta per qualsiasi destinatario.
Il sistema di destinazione è configurato male e non può accettare il messaggio.
Il messaggio è stato accettato, ma con una priorità diversa da quella richiesta (estensione MT-PRIORITY).
Si è verificato un problema di rete o di instradamento che non rientra nei codici più specifici.
Il server di destinazione non ha risposto al tentativo di connessione.
La connessione è stata stabilita ma si è interrotta o è diventata instabile prima di completare la consegna.
Si è guastato un servizio di directory necessario alla consegna, tipicamente la risoluzione DNS.
Non è stato trovato un percorso verso la destinazione, ad esempio perché il dominio non ha record MX o A utilizzabili.
Il sistema di posta è congestionato e al momento non può elaborare il messaggio.
È stato rilevato un loop di instradamento: il messaggio è passato troppe volte dagli stessi server.
È scaduto il tempo massimo dei tentativi e il messaggio viene scartato senza essere stato consegnato.
Si è verificato un problema con il protocollo di consegna che non rientra nei codici più specifici.
Il comando non è valido, non è consentito in quel momento o non è riconosciuto.
Il comando contiene un errore di sintassi e il server non riesce a interpretarlo.
Il messaggio ha più destinatari di quanti il server ne accetti in una transazione.
Il comando è valido, ma i suoi argomenti non lo sono o non sono supportati.
C'è un'incompatibilità di versione del protocollo tra client e server.
Una riga dello scambio AUTH supera la lunghezza massima ammessa dal server.
Si è verificato un problema con il contenuto del messaggio che non rientra nei codici più specifici.
La destinazione non supporta il tipo di contenuto del messaggio o di uno dei suoi allegati.
Per consegnare il messaggio bisognerebbe convertirne il contenuto, ma il mittente lo ha vietato.
Per consegnare il messaggio bisognerebbe convertirne il contenuto, e il server non è in grado di farlo.
Il messaggio è stato consegnato, ma la conversione del contenuto ha perso informazioni.
La conversione del contenuto del messaggio è fallita.
Non è stato possibile recuperare il contenuto del messaggio referenziato tramite URL (estensione BURL).
Il mittente o il destinatario non supportano indirizzi con caratteri non ASCII (posta internazionalizzata, SMTPUTF8).
Il server deve rispondere con testo UTF-8, ma il client non ha annunciato il supporto a SMTPUTF8.
Il messaggio ha intestazioni UTF-8 e non può essere trasferito a uno o più destinatari che non le supportano, quindi viene rifiutato.
Stato di sicurezza senza ulteriori dettagli. Compare nelle autenticazioni riuscite (2.7.0), negli errori temporanei di AUTH (4.7.0) e nei rifiuti per policy.
Il mittente non è autorizzato a inviare a quel destinatario: blocco per blacklist, reputazione, antispam o tentativo di relay non consentito. Nella variante 4.7.1 indica di solito il greylisting.
Il mittente non ha il permesso di inviare a quella lista di distribuzione.
Bisognerebbe convertire il messaggio da un protocollo di sicurezza a un altro e non è possibile.
Il messaggio richiede funzioni di sicurezza che la destinazione non supporta.
Un'operazione crittografica nel trasporto è fallita, ad esempio la verifica di una firma o la decifratura.
La destinazione non supporta l'algoritmo crittografico usato nel messaggio.
La verifica di integrità è fallita: il messaggio è stato modificato in transito o il checksum non corrisponde.
Le credenziali di autenticazione non sono valide: nome utente o password errati.
Il meccanismo di autenticazione scelto è più debole di quanto richieda la policy del server.
Serve un livello di cifratura esterno, come TLS, per usare il meccanismo di autenticazione richiesto. Pensato soprattutto per i meccanismi che inviano la password in chiaro.
Il meccanismo di autenticazione richiesto è consentito solo su una connessione cifrata.
L'utente deve cambiare la password o passare a un altro meccanismo di autenticazione.
L'account dell'utente che tenta di autenticarsi è disattivato.
Il server accetta solo messaggi da sistemi con cui ha una relazione di fiducia stabilita.
La priorità del messaggio è troppo bassa per accettarlo in questo momento (estensione MT-PRIORITY).
Il messaggio è troppo grande per la priorità indicata (estensione MT-PRIORITY).
La casella ha cambiato proprietario dopo la data indicata dal mittente, quindi il messaggio non viene consegnato (estensione RRVS).
Il dominio del destinatario ha cambiato proprietario dopo la data indicata dal mittente (estensione RRVS).
Il server non può verificare se la casella ha cambiato proprietario, come richiesto dal mittente (estensione RRVS).
Il messaggio non ha alcuna firma DKIM valida e la policy del destinatario la richiede.
Il messaggio ha firme DKIM valide, ma nessuna rispetta la policy del destinatario (ad esempio per il dominio firmatario o l'algoritmo).
Il messaggio non ha una firma DKIM valida dello stesso dominio che compare nell'intestazione From.
L'IP di invio non è autorizzato nel record SPF del dominio mittente.
La valutazione SPF ha dato errore, ad esempio per un record malformato o troppe query DNS.
L'IP di invio non ha un DNS inverso (PTR), oppure il nome restituito non si risolve di nuovo in quell'IP.
Sono falliti contemporaneamente più controlli di autenticazione del messaggio, come SPF e DKIM.
Il dominio del mittente pubblica un null MX, quindi non potrebbe ricevere risposte né rimbalzi e il messaggio viene rifiutato.
Il messaggio sembra far parte di un invio massivo di messaggi abusivi simili.
La validazione della catena ARC è fallita; ARC conserva i risultati dell'autenticazione quando il messaggio passa per inoltri o mailing list.
Il messaggio richiede REQUIRETLS e il server successivo nel percorso non supporta quell'estensione, quindi non può essere consegnato con garanzia di cifratura.
Incolla la risposta completa del server, ad esempio 550 5.7.1 Message rejected, per vedere insieme il codice base e quello esteso. Per un codice base, la ricerca mostra anche i codici estesi che di solito lo accompagnano.
Come funziona
In una sessione SMTP, ogni comando del client (EHLO, MAIL FROM, RCPT TO, DATA…) riceve una risposta del server che inizia con un codice a tre cifre. La prima dice com'è andata: 2 significa successo, 3 che il server attende altri dati, 4 un errore temporaneo e 5 un errore permanente. La seconda indica l'area: x0z sintassi, x1z informazioni, x2z connessione e x5z sistema di posta. Il testo che segue il codice è libero e ogni server scrive il suo; i programmi guardano solo il numero.
Poiché tre cifre dicono poco sulla causa, la RFC 3463 ha definito i codici di stato estesi, nel formato classe.soggetto.dettaglio: 5.1.1 è un errore permanente (5) di indirizzamento (1) perché la casella non esiste (1). La classe ripete il senso della prima cifra (2, 4 o 5), il soggetto raggruppa la causa e il dettaglio la precisa. I server che li usano lo annunciano con l'estensione ENHANCEDSTATUSCODES nella risposta a EHLO, e lo stesso codice compare nel campo Status dei messaggi di mancata consegna.
La tabella raccoglie i codici base della RFC 5321 e quelli aggiunti dalle estensioni di uso comune (AUTH, STARTTLS, ETRN e null MX), più tutti i codici estesi del registro IANA, ciascuno con i codici base con cui compare di solito. I grandi provider aggiungono testi e link di aiuto propri, ma sempre su questi stessi numeri.
Esempi
550 5.1.1 <nadie@example.com>: Recipient address rejected: User unknown in local recipient table5xx Permanent · X.1.1 Bad destination mailbox addressIl tipico rimbalzo di Postfix quando l'account non esiste. Riprovare non serve: bisogna correggere l'indirizzo. Se lo stesso destinatario funzionava prima, molto probabilmente l'account è stato eliminato.450 4.2.0 <ana@example.com>: Recipient address rejected: Greylisted4xx Transient · X.2.0 Other or undefined mailbox statusGreylisting: il server rifiuta temporaneamente il mittente sconosciuto e si aspetta che riprovi. Un server di posta legittimo lo fa da solo dopo pochi minuti e il messaggio passa; molti programmi di spam non riprovano mai.AUTH LOGIN334 VXNlcm5hbWU6Il 334 contiene la challenge in Base64: VXNlcm5hbWU6 è «Username:» e la successiva, UGFzc3dvcmQ6, è «Password:». Se le credenziali sono errate, il server risponde 535 5.7.8; se richiede prima la cifratura, 538 o 530.Casi d'uso
- Capire perché un'email è stata respinta a partire dal messaggio di errore restituito dal server.
- Distinguere se un errore è temporaneo e la coda riproverà, o permanente e bisogna intervenire.
- Diagnosticare errori di autenticazione quando configuri l'invio di email da un'applicazione, una stampante o un server.
- Interpretare i rifiuti per SPF, DKIM, DMARC, DNS inverso o blacklist nei log del server di posta.
- Classificare i rimbalzi in una piattaforma di invii massivi per rimuovere gli indirizzi inesistenti.
- Leggere una sessione SMTP catturata con telnet, openssl s_client o swaks.
Domande frequenti
Che differenza c'è tra un errore 4xx e uno 5xx?
Un 4xx è temporaneo: il server mittente lascia il messaggio in coda e riprova a intervalli regolari, in genere per quattro o cinque giorni, prima di arrendersi e generare un rimbalzo. Un 5xx è permanente: il rimbalzo è immediato e riprovare lo stesso messaggio senza cambiare nulla fallirà di nuovo.
Perché la risposta contiene due codici, come 550 5.1.1?
Il primo è il codice base a tre cifre richiesto dalla RFC 5321. Il secondo è il codice di stato esteso della RFC 3463, che precisa la causa: un 550 può dipendere da una casella inesistente (5.1.1), da un blocco per policy (5.7.1) o da un errore SPF (5.7.23). Per la diagnosi conviene guardare soprattutto quello esteso.
Cosa significa il trattino in 550-5.7.1?
Che la risposta occupa più righe. Tutte riportano lo stesso codice, ma quelle intermedie lo separano dal testo con un trattino e l'ultima con uno spazio: così il client sa quando la risposta è finita. È lo stesso che si vede nell'elenco delle estensioni restituito da EHLO.
Perché vengo rifiutato con 550 5.7.1 se l'indirizzo esiste?
Perché il 5.7.1 non riguarda il destinatario ma il mittente: il server non ti autorizza a consegnargli quel messaggio. Le cause abituali sono che l'IP di invio è in una blacklist, che fallisce la verifica SPF, DKIM o DMARC del dominio, che l'IP non ha DNS inverso o che si è tentato di usare il server come relay senza autenticarsi. Il testo che accompagna il codice di solito dà l'indizio.
Perché ricevo 530 o 535 quando invio email da un'applicazione?
Il 530 indica che il server richiede l'autenticazione, o l'avvio di TLS, prima di accettare il messaggio; il 535, che nome utente o password sono errati. Verifica che l'applicazione usi la porta 587 con STARTTLS o la 465 con TLS implicito, che abbia l'autenticazione attivata e, con provider come Gmail o Microsoft 365, di usare una password per app o OAuth al posto della password abituale.