117 van 117 codes
Basisantwoordcodes
Systeemstatus of systeemhulpantwoord. In de praktijk weinig gebruikt.
Helpbericht als antwoord op het commando HELP, met informatie over het gebruik van de server of van een specifiek commando.
Begroeting van de server bij het openen van de verbinding: de dienst is gereed. Antwoordt ook op STARTTLS om aan te geven dat de TLS-onderhandeling kan beginnen.
De server sluit de verbinding, meestal als antwoord op het commando QUIT.
De authenticatie met AUTH is geslaagd. Gaat meestal samen met de uitgebreide code 2.7.0.
De gevraagde actie is voltooid. Het gebruikelijke antwoord op EHLO, MAIL FROM, RCPT TO en aan het einde van DATA, wanneer de server het bericht accepteert.
De ontvanger is niet lokaal, maar de server accepteert het bericht en stuurt het door naar het opgegeven adres.
De server bevestigt niet of de gebruiker bestaat (VRFY uitgeschakeld om het opsommen van accounts te voorkomen), maar accepteert het bericht en probeert het af te leveren.
Antwoord op ETRN: de server is begonnen met het afleveren van de berichten in de wachtrij voor het gevraagde domein of de gevraagde node.
Challenge van de server tijdens AUTH, gecodeerd in Base64. De client moet antwoorden met het volgende gegeven van het mechanisme (bijvoorbeeld de gebruikersnaam of het wachtwoord bij AUTH LOGIN).
Antwoord op DATA: de server wacht op de inhoud van het bericht, die eindigt met een regel die alleen een punt bevat.
De dienst is niet beschikbaar en de server sluit de verbinding: afsluiten, overbelasting, te veel verbindingen of een tijdelijke verzendlimiet. De afzender moet het later opnieuw proberen.
De gebruiker moet zijn wachtwoord wijzigen of overstappen op een ander authenticatiemechanisme voordat hij zich kan aanmelden. Gaat samen met de uitgebreide code 4.7.12.
De mailbox is tijdelijk niet beschikbaar: bezet, geblokkeerd of tijdelijk geweigerd door beleid. Greylisting antwoordt meestal met deze code of met 451.
De actie is afgebroken door een lokale fout op de server, zoals een mislukte DNS-query of een filter dat niet reageerde. De afzender moet het later opnieuw proberen.
De server heeft momenteel niet genoeg ruimte om het bericht te accepteren. Geeft ook aan dat het aantal ontvangers per bericht is overschreden: de client moet de rest in een andere transactie versturen.
Tijdelijke authenticatiefout (bijvoorbeeld omdat de server voor inloggegevens niet reageert) of TLS tijdelijk niet beschikbaar bij STARTTLS.
De server kan de parameters die in MAIL FROM of RCPT TO zijn meegestuurd momenteel niet verwerken, maar kan ze later mogelijk wel accepteren.
Antwoord op ETRN: de server kan de berichtenwachtrij van de gevraagde node momenteel niet verwerken.
Antwoord op ETRN: de gevraagde node of het gevraagde domein mag de aflevering van zijn wachtrij niet aanvragen.
De server herkent het commando niet of de regel is te lang. Wordt ook door AUTH gebruikt wanneer een regel van de uitwisseling de maximaal toegestane lengte overschrijdt.
Het commando is geldig, maar de parameters of argumenten niet: bijvoorbeeld een onjuist opgemaakt adres in MAIL FROM of een ongeldige naam bij EHLO.
De server herkent het commando maar heeft het niet geïmplementeerd of uitgeschakeld, zoals VRFY of EXPN op veel servers.
De commando's kwamen in de verkeerde volgorde binnen, bijvoorbeeld RCPT TO vóór MAIL FROM, of DATA zonder geldige ontvangers. Sommige servers geven dit terug als je probeert te verzenden zonder authenticatie.
De server ondersteunt de opgegeven parameter niet, bijvoorbeeld een AUTH-mechanisme dat hij niet kent.
De host accepteert geen enkele e-mail. Wordt als begroeting verstuurd in plaats van 220 en de client moet het niet opnieuw proberen.
De server vereist authenticatie, of het starten van TLS met STARTTLS, voordat hij het commando accepteert. Typisch bij gebruik van submissionpoort 587 zonder inloggegevens.
Het gekozen authenticatiemechanisme is volgens het serverbeleid te zwak. Sommige providers geven dit terug wanneer ze app-wachtwoorden of OAuth vereisen.
Onjuiste gebruikersnaam of wachtwoord, of inloggegevens geweigerd. Gaat samen met de uitgebreide code 5.7.8.
Het gekozen authenticatiemechanisme is alleen toegestaan via een versleutelde verbinding: eerst moet STARTTLS worden uitgevoerd.
De mailbox bestaat niet of is niet beschikbaar, of het bericht is geweigerd door beleid (spam, blacklists, SPF, DKIM of DMARC). De bijbehorende uitgebreide code geeft de precieze oorzaak aan.
De ontvanger is niet lokaal en de server stuurt het bericht niet door; hij kan aangeven naar welk adres het moet worden gestuurd.
De toegewezen opslagruimte is overschreden: de mailbox van de ontvanger is vol of het bericht overschrijdt de maximale grootte die de SIZE-extensie aankondigt.
Het e-mailadres is ongeldig of niet toegestaan, bijvoorbeeld door een onjuiste syntaxis of omdat de afzender dat adres niet mag gebruiken.
De transactie is mislukt. Als begroeting betekent het dat er voor die client geen SMTP-dienst is; na DATA dat het bericht is geweigerd, vaak vanwege de inhoud of de reputatie van de afzender.
De server herkent of implementeert een extensieparameter die in MAIL FROM of RCPT TO is meegestuurd niet.
Het domein van de ontvanger publiceert een null MX (een MX-record dat naar „.” wijst): het verklaart geen e-mail te ontvangen, dus opnieuw proberen heeft geen zin.
Uitgebreide statuscodes (RFC 3463)
Status zonder verdere details: wordt gebruikt wanneer alleen de klasse van het resultaat bekend is (geslaagd, tijdelijke of permanente fout).
Er is een probleem met een adres van het bericht dat niet onder de specifiekere codes valt.
De mailbox van de ontvanger bestaat niet op de doelserver. De klassieke bounce door een verkeerd getypt adres of een opgeheven account.
Het doeldomein of doelsysteem bestaat niet of kan geen e-mail accepteren, bijvoorbeeld omdat het domein niet resolvet.
Het adres van de ontvanger heeft een ongeldige syntaxis.
Het adres van de ontvanger komt overeen met meer dan één mailbox op het doelsysteem.
Het adres van de ontvanger is geldig. Verschijnt als 2.1.5 in het positieve antwoord op RCPT TO.
De mailbox bestond, maar is verplaatst en er is geen doorstuuradres bekend.
Het adres van de afzender heeft een ongeldige syntaxis.
Het domein van de afzender bestaat niet of accepteert geen antwoorden, bijvoorbeeld omdat het geen MX- of A-records heeft.
Het bericht is afgeleverd bij een systeem dat geen statusmeldingen ondersteunt, dus de uiteindelijke aflevering kan niet worden bevestigd.
Het domein van de ontvanger publiceert een null MX: het verklaart geen e-mail te ontvangen.
De mailbox bestaat, maar iets wat ermee te maken heeft verhinderde de aflevering en er is geen specifiekere code.
De mailbox bestaat, maar is uitgeschakeld en accepteert geen berichten, bijvoorbeeld een opgeschort account.
De mailbox van de ontvanger heeft zijn opslagquotum overschreden.
Het bericht is groter dan de maximale grootte die de ontvanger mag ontvangen.
De ontvanger is een distributielijst die niet naar haar leden kon worden uitgevouwen.
Het doelsysteem had een probleem dat niet onder de specifiekere codes valt.
De opslag van het doelmailsysteem is vol.
De doelhost accepteert geen berichten, vanwege een naderende afsluiting, overbelasting of onderhoud.
Het doelsysteem ondersteunt een functie die het bericht vereist niet.
Het bericht is groter dan de maximale grootte die de server voor welke ontvanger dan ook accepteert.
Het doelsysteem is verkeerd geconfigureerd en kan het bericht niet accepteren.
Het bericht is geaccepteerd, maar met een andere prioriteit dan gevraagd (extensie MT-PRIORITY).
Er was een netwerk- of routeringsprobleem dat niet onder de specifiekere codes valt.
De doelserver reageerde niet bij de verbindingspoging.
De verbinding werd opgezet, maar werd verbroken of instabiel voordat de aflevering voltooid was.
Een directorydienst die nodig is voor de aflevering is mislukt, meestal de DNS-resolutie.
Er is geen route naar de bestemming gevonden, bijvoorbeeld omdat het domein geen bruikbare MX- of A-records heeft.
Het mailsysteem is overbelast en kan het bericht momenteel niet verwerken.
Er is een routeringslus gedetecteerd: het bericht is te vaak langs dezelfde servers gegaan.
De maximale tijd voor nieuwe pogingen is verstreken en het bericht wordt verwijderd zonder te zijn afgeleverd.
Er was een probleem met het afleveringsprotocol dat niet onder de specifiekere codes valt.
Het commando is ongeldig, op dat moment niet toegestaan of wordt niet herkend.
Het commando bevat een syntaxisfout en de server kan het niet interpreteren.
Het bericht heeft meer ontvangers dan de server in één transactie accepteert.
Het commando is geldig, maar de argumenten niet of ze worden niet ondersteund.
Er is een incompatibiliteit in protocolversie tussen client en server.
Een regel van de AUTH-uitwisseling overschrijdt de maximale lengte die de server toestaat.
Er was een probleem met de berichtinhoud dat niet onder de specifiekere codes valt.
De bestemming ondersteunt het inhoudstype van het bericht of van een van de bijlagen niet.
Om het bericht af te leveren zou de inhoud moeten worden geconverteerd, maar de afzender heeft dat verboden.
Om het bericht af te leveren zou de inhoud moeten worden geconverteerd, en de server kan dat niet.
Het bericht is afgeleverd, maar bij de conversie van de inhoud is informatie verloren gegaan.
De conversie van de berichtinhoud is mislukt.
De via een URL gerefereerde berichtinhoud kon niet worden opgehaald (extensie BURL).
De afzender of de ontvanger ondersteunt geen adressen met niet-ASCII-tekens (geïnternationaliseerde e-mail, SMTPUTF8).
De server moet antwoorden met UTF-8-tekst, maar de client heeft geen ondersteuning voor SMTPUTF8 aangekondigd.
Het bericht heeft UTF-8-headers en kan niet worden overgedragen aan een of meer ontvangers die deze niet ondersteunen, dus wordt het geweigerd.
Beveiligingsstatus zonder verdere details. Verschijnt bij geslaagde authenticatie (2.7.0), bij tijdelijke AUTH-fouten (4.7.0) en bij weigeringen door beleid.
De afzender is niet gemachtigd om naar die ontvanger te sturen: blokkade door blacklist, reputatie, antispam of een niet-toegestane relaypoging. In de variant 4.7.1 wijst het meestal op greylisting.
De afzender heeft geen toestemming om naar die distributielijst te sturen.
Het bericht zou van het ene beveiligingsprotocol naar het andere moeten worden geconverteerd en dat is niet mogelijk.
Het bericht vereist beveiligingsfuncties die de bestemming niet ondersteunt.
Een cryptografische bewerking tijdens het transport is mislukt, bijvoorbeeld de verificatie van een handtekening of de ontsleuteling.
De bestemming ondersteunt het cryptografische algoritme dat in het bericht wordt gebruikt niet.
De integriteitscontrole is mislukt: het bericht is onderweg gewijzigd of de checksum komt niet overeen.
De inloggegevens zijn ongeldig: onjuiste gebruikersnaam of wachtwoord.
Het gekozen authenticatiemechanisme is zwakker dan het serverbeleid vereist.
Er is een externe versleutelingslaag, zoals TLS, nodig om het gevraagde authenticatiemechanisme te gebruiken. Vooral bedoeld voor mechanismen die het wachtwoord als platte tekst versturen.
Het gevraagde authenticatiemechanisme is alleen toegestaan via een versleutelde verbinding.
De gebruiker moet zijn wachtwoord wijzigen of overstappen op een ander authenticatiemechanisme.
Het account van de gebruiker die zich probeert aan te melden is uitgeschakeld.
De server accepteert alleen berichten van systemen waarmee hij een gevestigde vertrouwensrelatie heeft.
De prioriteit van het bericht is te laag om het op dit moment te accepteren (extensie MT-PRIORITY).
Het bericht is te groot voor de opgegeven prioriteit (extensie MT-PRIORITY).
De mailbox is sinds de door de afzender opgegeven datum van eigenaar veranderd, dus het bericht wordt niet afgeleverd (extensie RRVS).
Het domein van de ontvanger is sinds de door de afzender opgegeven datum van eigenaar veranderd (extensie RRVS).
De server kan niet controleren of de mailbox van eigenaar is veranderd, zoals de afzender vroeg (extensie RRVS).
Het bericht heeft geen enkele geldige DKIM-handtekening en het beleid van de ontvanger vereist die.
Het bericht heeft geldige DKIM-handtekeningen, maar geen enkele voldoet aan het beleid van de ontvanger (bijvoorbeeld vanwege het ondertekenende domein of het algoritme).
Het bericht heeft geen geldige DKIM-handtekening van hetzelfde domein dat in de From-header staat.
Het verzendende IP-adres is niet geautoriseerd in het SPF-record van het afzenderdomein.
De SPF-evaluatie gaf een fout, bijvoorbeeld door een onjuist opgemaakt record of te veel DNS-query's.
Het verzendende IP-adres heeft geen reverse DNS (PTR), of de teruggegeven naam resolvet niet terug naar dat IP-adres.
Meerdere authenticatiecontroles van het bericht zijn tegelijk mislukt, zoals SPF en DKIM.
Het domein van de afzender publiceert een null MX, dus het zou geen antwoorden of bounces kunnen ontvangen en het bericht wordt geweigerd.
Het bericht lijkt deel uit te maken van een massale verzending van vergelijkbare misbruikberichten.
De validatie van de ARC-keten is mislukt; ARC bewaart de authenticatieresultaten wanneer het bericht via doorstuurders of mailinglijsten gaat.
Het bericht vereist REQUIRETLS en de volgende server op de route ondersteunt die extensie niet, dus het kan niet met gegarandeerde versleuteling worden afgeleverd.
Plak het volledige antwoord van de server, bijvoorbeeld 550 5.7.1 Message rejected, om de basiscode en de uitgebreide code tegelijk te zien. Bij een basiscode toont de zoekfunctie ook de uitgebreide codes die er meestal bij horen.
Hoe het werkt
In een SMTP-sessie krijgt elk commando van de client (EHLO, MAIL FROM, RCPT TO, DATA…) een antwoord van de server dat begint met een driecijferige code. Het eerste cijfer zegt hoe het afliep: 2 betekent geslaagd, 3 dat de server meer gegevens verwacht, 4 een tijdelijke fout en 5 een permanente fout. Het tweede geeft het gebied aan: x0z syntaxis, x1z informatie, x2z verbinding en x5z mailsysteem. De tekst na de code is vrij en elke server schrijft zijn eigen tekst; programma's kijken alleen naar het getal.
Omdat drie cijfers weinig over de oorzaak zeggen, definieerde RFC 3463 de uitgebreide statuscodes, in het formaat klasse.onderwerp.detail: 5.1.1 is een permanente fout (5) in de adressering (1) omdat de mailbox niet bestaat (1). De klasse herhaalt de betekenis van het eerste cijfer (2, 4 of 5), het onderwerp groepeert de oorzaak en het detail preciseert die. Servers die ze gebruiken kondigen dat aan met de extensie ENHANCEDSTATUSCODES in het antwoord op EHLO, en dezelfde code verschijnt in het veld Status van bouncemeldingen.
De tabel bevat de basiscodes uit RFC 5321 en die van veelgebruikte extensies (AUTH, STARTTLS, ETRN en null MX), plus alle uitgebreide codes uit het IANA-register, elk met de basiscodes waarmee ze meestal voorkomen. Grote providers voegen hun eigen teksten en helplinks toe, maar altijd bovenop deze nummers.
Voorbeelden
550 5.1.1 <nadie@example.com>: Recipient address rejected: User unknown in local recipient table5xx Permanent · X.1.1 Bad destination mailbox addressDe typische bounce van Postfix wanneer het account niet bestaat. Opnieuw proberen helpt niet: het adres moet worden gecorrigeerd. Werkte dezelfde ontvanger eerder wel, dan is het account waarschijnlijk opgeheven.450 4.2.0 <ana@example.com>: Recipient address rejected: Greylisted4xx Transient · X.2.0 Other or undefined mailbox statusGreylisting: de server weigert de onbekende afzender tijdelijk en verwacht dat die het opnieuw probeert. Een legitieme mailserver doet dat na een paar minuten vanzelf en het bericht komt binnen; veel spamprogramma's proberen het nooit opnieuw.AUTH LOGIN334 VXNlcm5hbWU6De 334 bevat de challenge in Base64: VXNlcm5hbWU6 is „Username:” en de volgende, UGFzc3dvcmQ6, is „Password:”. Zijn de inloggegevens onjuist, dan antwoordt de server 535 5.7.8; vraagt hij eerst om versleuteling, dan 538 of 530.Gebruiksscenario's
- Begrijpen waarom een e-mail bounced aan de hand van de foutmelding die de server teruggaf.
- Onderscheiden of een fout tijdelijk is en de wachtrij het opnieuw probeert, of permanent en je moet ingrijpen.
- Authenticatiefouten diagnosticeren bij het instellen van e-mailverzending vanuit een applicatie, een printer of een server.
- Weigeringen door SPF, DKIM, DMARC, reverse DNS of blacklists in de logs van de mailserver interpreteren.
- Bounces classificeren in een platform voor bulkmail om niet-bestaande adressen uit te schrijven.
- Een SMTP-sessie lezen die is vastgelegd met telnet, openssl s_client of swaks.
Veelgestelde vragen
Wat is het verschil tussen een 4xx- en een 5xx-fout?
Een 4xx is tijdelijk: de verzendende server zet het bericht in de wachtrij en probeert het met tussenpozen opnieuw, meestal vier à vijf dagen lang, voordat hij opgeeft en een bounce genereert. Een 5xx is permanent: de bounce volgt direct en hetzelfde bericht zonder wijzigingen opnieuw versturen mislukt weer.
Waarom bevat het antwoord twee codes, zoals 550 5.1.1?
De eerste is de driecijferige basiscode die RFC 5321 voorschrijft. De tweede is de uitgebreide statuscode uit RFC 3463, die de oorzaak preciseert: een 550 kan komen door een niet-bestaande mailbox (5.1.1), een blokkade door beleid (5.7.1) of een SPF-fout (5.7.23). Kijk voor de diagnose vooral naar de uitgebreide code.
Wat betekent het streepje in 550-5.7.1?
Dat het antwoord meerdere regels beslaat. Alle regels hebben dezelfde code, maar de tussenliggende scheiden die met een streepje van de tekst en de laatste met een spatie, zodat de client weet wanneer het antwoord klaar is. Hetzelfde zie je in de lijst met extensies die EHLO teruggeeft.
Waarom word ik geweigerd met 550 5.7.1 terwijl het adres bestaat?
Omdat 5.7.1 niet over de ontvanger gaat, maar over de afzender: de server staat je niet toe dat bericht bij hem af te leveren. Gebruikelijke oorzaken zijn dat het verzendende IP-adres op een blacklist staat, dat de SPF-, DKIM- of DMARC-controle van het domein mislukt, dat het IP-adres geen reverse DNS heeft of dat geprobeerd werd de server zonder authenticatie als relay te gebruiken. De tekst bij de code geeft meestal de hint.
Waarom krijg ik 530 of 535 bij het verzenden van e-mail vanuit een applicatie?
530 betekent dat de server authenticatie, of het starten van TLS, vereist voordat hij het bericht accepteert; 535 dat de gebruikersnaam of het wachtwoord onjuist is. Controleer of de applicatie poort 587 met STARTTLS of 465 met impliciete TLS gebruikt, of authenticatie is ingeschakeld en, bij providers zoals Gmail of Microsoft 365, of je een app-wachtwoord of OAuth gebruikt in plaats van je gewone wachtwoord.