117 z 117 kodów
Podstawowe kody odpowiedzi
Status systemu lub odpowiedź pomocy systemowej. W praktyce rzadko używany.
Komunikat pomocy w odpowiedzi na polecenie HELP, z informacjami o korzystaniu z serwera lub konkretnego polecenia.
Powitanie serwera po nawiązaniu połączenia: usługa jest gotowa. Serwer odpowiada nim także na STARTTLS, sygnalizując, że można rozpocząć negocjację TLS.
Serwer zamyka połączenie, zwykle w odpowiedzi na polecenie QUIT.
Uwierzytelnianie przez AUTH się powiodło. Zwykle towarzyszy mu rozszerzony kod 2.7.0.
Żądana operacja została wykonana. Typowa odpowiedź na EHLO, MAIL FROM, RCPT TO oraz na końcu DATA, gdy serwer przyjmuje wiadomość.
Odbiorca nie jest lokalny, ale serwer przyjmuje wiadomość i przekaże ją na wskazany adres.
Serwer nie potwierdza, czy użytkownik istnieje (VRFY wyłączone, aby uniemożliwić enumerację kont), ale przyjmie wiadomość i spróbuje ją dostarczyć.
Odpowiedź na ETRN: serwer zaczął dostarczać wiadomości z kolejki dla żądanej domeny lub węzła.
Wyzwanie (challenge) serwera podczas AUTH, zakodowane w Base64. Klient musi odpowiedzieć kolejną daną mechanizmu (na przykład nazwą użytkownika lub hasłem w AUTH LOGIN).
Odpowiedź na DATA: serwer czeka na treść wiadomości, zakończoną linią zawierającą tylko kropkę.
Usługa jest niedostępna i serwer zamyka połączenie: wyłączanie, przeciążenie, zbyt wiele połączeń lub tymczasowy limit wysyłki. Nadawca powinien spróbować ponownie później.
Użytkownik musi zmienić hasło lub przejść na inny mechanizm uwierzytelniania, zanim będzie mógł się uwierzytelnić. Towarzyszy mu rozszerzony kod 4.7.12.
Skrzynka jest tymczasowo niedostępna: zajęta, zablokowana lub przejściowo odrzucona przez zasady. Greylisting zwykle odpowiada tym kodem lub kodem 451.
Operację przerwano z powodu lokalnego błędu serwera, np. nieudanego zapytania DNS lub filtra, który nie odpowiedział. Nadawca powinien spróbować ponownie później.
Serwer nie ma w tej chwili dość miejsca, aby przyjąć wiadomość. Oznacza też przekroczenie liczby odbiorców na wiadomość: klient musi wysłać pozostałych w kolejnej transakcji.
Przejściowy błąd uwierzytelniania (np. serwer poświadczeń nie odpowiada) lub TLS chwilowo niedostępny przy żądaniu STARTTLS.
Serwer nie może w tej chwili obsłużyć parametrów przesłanych w MAIL FROM lub RCPT TO, ale może je przyjąć później.
Odpowiedź na ETRN: serwer nie może w tej chwili przetworzyć kolejki wiadomości żądanego węzła.
Odpowiedź na ETRN: żądany węzeł lub domena nie ma uprawnień do zlecania dostarczenia swojej kolejki.
Serwer nie rozpoznaje polecenia lub linia jest zbyt długa. Używa go też AUTH, gdy linia wymiany przekracza dopuszczalną długość.
Polecenie jest poprawne, ale jego parametry lub argumenty nie: na przykład źle sformatowany adres w MAIL FROM lub nieprawidłowa nazwa w EHLO.
Serwer rozpoznaje polecenie, ale go nie implementuje lub ma je wyłączone, jak VRFY czy EXPN na wielu serwerach.
Polecenia przyszły w złej kolejności, na przykład RCPT TO przed MAIL FROM albo DATA bez poprawnych odbiorców. Niektóre serwery zwracają go przy próbie wysyłki bez uwierzytelnienia.
Serwer nie obsługuje wskazanego parametru, na przykład mechanizmu AUTH, którego nie wspiera.
Host nie przyjmuje żadnej poczty. Wysyłany jako powitanie zamiast 220; klient nie powinien ponawiać próby.
Serwer wymaga uwierzytelnienia lub uruchomienia TLS przez STARTTLS przed przyjęciem polecenia. Typowe przy używaniu portu wysyłkowego 587 bez poświadczeń.
Wybrany mechanizm uwierzytelniania jest według zasad serwera zbyt słaby. Niektórzy dostawcy zwracają go, gdy wymagają haseł aplikacji lub OAuth.
Błędna nazwa użytkownika lub hasło albo odrzucone poświadczenia. Towarzyszy mu rozszerzony kod 5.7.8.
Wybrany mechanizm uwierzytelniania jest dozwolony tylko przez szyfrowane połączenie: najpierw trzeba wykonać STARTTLS.
Skrzynka nie istnieje lub jest niedostępna albo wiadomość odrzucono ze względu na zasady (spam, czarne listy, SPF, DKIM lub DMARC). Towarzyszący mu rozszerzony kod wskazuje konkretną przyczynę.
Odbiorca nie jest lokalny, a serwer nie przekazuje wiadomości; może wskazać, na jaki adres ją wysłać.
Przekroczono przydzielone miejsce: skrzynka odbiorcy jest pełna lub wiadomość przekracza maksymalny rozmiar ogłaszany przez rozszerzenie SIZE.
Adres e-mail jest nieprawidłowy lub niedozwolony, na przykład z powodu błędnej składni albo dlatego, że nadawca nie może używać tego adresu.
Transakcja nie powiodła się. Jako powitanie oznacza, że dla tego klienta nie ma usługi SMTP; po DATA — że wiadomość odrzucono, często z powodu treści lub reputacji nadawcy.
Serwer nie rozpoznaje lub nie implementuje parametru rozszerzenia przesłanego w MAIL FROM lub RCPT TO.
Domena odbiorcy publikuje null MX (rekord MX wskazujący na „.”): deklaruje, że nie odbiera poczty, więc ponawianie nie ma sensu.
Rozszerzone kody statusu (RFC 3463)
Status bez dalszych szczegółów: używany, gdy znana jest tylko klasa wyniku (sukces, błąd przejściowy lub trwały).
Wystąpił problem z którymś adresem wiadomości, niepasujący do bardziej szczegółowych kodów.
Skrzynka odbiorcy nie istnieje na serwerze docelowym. Klasyczny zwrot z powodu literówki w adresie lub usuniętego konta.
Domena lub system docelowy nie istnieje albo nie może przyjmować poczty, na przykład dlatego, że domena się nie rozwiązuje.
Adres odbiorcy ma nieprawidłową składnię.
Adres odbiorcy pasuje do więcej niż jednej skrzynki w systemie docelowym.
Adres odbiorcy jest prawidłowy. Pojawia się jako 2.1.5 w pozytywnej odpowiedzi na RCPT TO.
Skrzynka istniała, ale została przeniesiona i nie jest znany adres przekierowania.
Adres nadawcy ma nieprawidłową składnię.
Domena nadawcy nie istnieje lub nie przyjmuje odpowiedzi, na przykład dlatego, że nie ma rekordów MX ani A.
Wiadomość przekazano do systemu, który nie obsługuje powiadomień o statusie, więc nie da się potwierdzić jej ostatecznego dostarczenia.
Domena odbiorcy publikuje null MX: deklaruje, że nie odbiera poczty.
Skrzynka istnieje, ale coś z nią związanego uniemożliwiło dostarczenie i nie ma bardziej szczegółowego kodu.
Skrzynka istnieje, ale jest wyłączona i nie przyjmuje wiadomości, na przykład zawieszone konto.
Skrzynka odbiorcy przekroczyła limit miejsca.
Wiadomość przekracza maksymalny rozmiar, jaki odbiorca może otrzymać.
Odbiorca to lista dystrybucyjna, której nie udało się rozwinąć na poszczególnych członków.
W systemie docelowym wystąpił problem niepasujący do bardziej szczegółowych kodów.
Pamięć docelowego systemu pocztowego jest pełna.
Host docelowy nie przyjmuje wiadomości z powodu zbliżającego się wyłączenia, przeciążenia lub prac konserwacyjnych.
System docelowy nie obsługuje funkcji wymaganej przez wiadomość.
Wiadomość przekracza maksymalny rozmiar, jaki serwer przyjmuje dla dowolnego odbiorcy.
System docelowy jest błędnie skonfigurowany i nie może przyjąć wiadomości.
Wiadomość przyjęto, ale z innym priorytetem niż żądany (rozszerzenie MT-PRIORITY).
Wystąpił problem z siecią lub routingiem niepasujący do bardziej szczegółowych kodów.
Serwer docelowy nie odpowiedział na próbę połączenia.
Połączenie zostało nawiązane, ale zerwało się lub stało się niestabilne przed zakończeniem dostarczania.
Zawiodła usługa katalogowa potrzebna do dostarczenia, zwykle rozwiązywanie nazw DNS.
Nie znaleziono trasy do celu, na przykład dlatego, że domena nie ma użytecznych rekordów MX ani A.
System pocztowy jest przeciążony i nie może w tej chwili przetworzyć wiadomości.
Wykryto pętlę routingu: wiadomość zbyt wiele razy przeszła przez te same serwery.
Upłynął maksymalny czas ponawiania prób i wiadomość zostaje porzucona bez dostarczenia.
Wystąpił problem z protokołem dostarczania niepasujący do bardziej szczegółowych kodów.
Polecenie jest nieprawidłowe, niedozwolone w tym momencie lub nierozpoznane.
Polecenie zawiera błąd składni i serwer nie może go zinterpretować.
Wiadomość ma więcej odbiorców, niż serwer przyjmuje w jednej transakcji.
Polecenie jest poprawne, ale jego argumenty nie są lub nie są obsługiwane.
Występuje niezgodność wersji protokołu między klientem a serwerem.
Linia wymiany AUTH przekracza maksymalną długość dopuszczaną przez serwer.
Wystąpił problem z treścią wiadomości niepasujący do bardziej szczegółowych kodów.
Cel nie obsługuje typu treści wiadomości lub któregoś z jej załączników.
Aby dostarczyć wiadomość, trzeba by przekonwertować jej treść, ale nadawca tego zabronił.
Aby dostarczyć wiadomość, trzeba by przekonwertować jej treść, a serwer nie potrafi tego zrobić.
Wiadomość dostarczono, ale podczas konwersji treści utracono część informacji.
Konwersja treści wiadomości nie powiodła się.
Nie udało się pobrać treści wiadomości wskazanej przez URL (rozszerzenie BURL).
Nadawca lub odbiorca nie obsługuje adresów ze znakami spoza ASCII (poczta umiędzynarodowiona, SMTPUTF8).
Serwer musi odpowiedzieć tekstem UTF-8, ale klient nie zadeklarował obsługi SMTPUTF8.
Wiadomość ma nagłówki UTF-8 i nie może zostać przekazana do jednego lub kilku odbiorców, którzy ich nie obsługują, więc zostaje odrzucona.
Status bezpieczeństwa bez dalszych szczegółów. Pojawia się przy udanym uwierzytelnieniu (2.7.0), przejściowych błędach AUTH (4.7.0) i odrzuceniach ze względu na zasady.
Nadawca nie ma uprawnień do wysyłania do tego odbiorcy: blokada z powodu czarnej listy, reputacji, filtra antyspamowego lub niedozwolonej próby przekazywania (relay). W wariancie 4.7.1 zwykle oznacza greylisting.
Nadawca nie ma uprawnień do wysyłania na tę listę dystrybucyjną.
Wiadomość trzeba by przekonwertować z jednego protokołu bezpieczeństwa na inny, co nie jest możliwe.
Wiadomość wymaga funkcji bezpieczeństwa, których cel nie obsługuje.
Operacja kryptograficzna w transporcie nie powiodła się, na przykład weryfikacja podpisu lub odszyfrowanie.
Cel nie obsługuje algorytmu kryptograficznego użytego w wiadomości.
Weryfikacja integralności nie powiodła się: wiadomość zmieniono w drodze lub suma kontrolna się nie zgadza.
Poświadczenia uwierzytelniające są nieprawidłowe: błędna nazwa użytkownika lub hasło.
Wybrany mechanizm uwierzytelniania jest słabszy, niż wymagają zasady serwera.
Do użycia żądanego mechanizmu uwierzytelniania potrzebna jest zewnętrzna warstwa szyfrowania, np. TLS. Przeznaczony głównie dla mechanizmów wysyłających hasło otwartym tekstem.
Żądany mechanizm uwierzytelniania jest dozwolony tylko przez szyfrowane połączenie.
Użytkownik musi zmienić hasło lub przejść na inny mechanizm uwierzytelniania.
Konto użytkownika próbującego się uwierzytelnić jest wyłączone.
Serwer przyjmuje wiadomości tylko od systemów, z którymi ma ustanowioną relację zaufania.
Priorytet wiadomości jest zbyt niski, aby przyjąć ją w tej chwili (rozszerzenie MT-PRIORITY).
Wiadomość jest zbyt duża dla wskazanego priorytetu (rozszerzenie MT-PRIORITY).
Skrzynka zmieniła właściciela od daty podanej przez nadawcę, więc wiadomość nie zostanie dostarczona (rozszerzenie RRVS).
Domena odbiorcy zmieniła właściciela od daty podanej przez nadawcę (rozszerzenie RRVS).
Serwer nie może sprawdzić, czy skrzynka zmieniła właściciela, o co prosił nadawca (rozszerzenie RRVS).
Wiadomość nie ma żadnego prawidłowego podpisu DKIM, a zasady odbiorcy go wymagają.
Wiadomość ma prawidłowe podpisy DKIM, ale żaden nie spełnia zasad odbiorcy (na przykład ze względu na domenę podpisującą lub algorytm).
Wiadomość nie ma prawidłowego podpisu DKIM tej samej domeny, która widnieje w nagłówku From.
Wysyłający adres IP nie jest autoryzowany w rekordzie SPF domeny nadawcy.
Ocena SPF zakończyła się błędem, na przykład z powodu źle sformatowanego rekordu lub zbyt wielu zapytań DNS.
Wysyłający adres IP nie ma odwrotnego DNS (PTR) lub zwrócona nazwa nie rozwiązuje się z powrotem na ten adres IP.
Jednocześnie zawiodło kilka kontroli uwierzytelniania wiadomości, np. SPF i DKIM.
Domena nadawcy publikuje null MX, więc nie mogłaby odbierać odpowiedzi ani zwrotów, dlatego wiadomość zostaje odrzucona.
Wiadomość wygląda na część masowej wysyłki podobnych, nadużyciowych wiadomości.
Walidacja łańcucha ARC nie powiodła się; ARC zachowuje wyniki uwierzytelniania, gdy wiadomość przechodzi przez przekierowania lub listy mailingowe.
Wiadomość wymaga REQUIRETLS, a następny serwer na trasie nie obsługuje tego rozszerzenia, więc nie można jej dostarczyć z gwarancją szyfrowania.
Wklej pełną odpowiedź serwera, na przykład 550 5.7.1 Message rejected, aby zobaczyć jednocześnie kod podstawowy i rozszerzony. Dla kodu podstawowego wyszukiwanie pokazuje też rozszerzone kody, które zwykle mu towarzyszą.
Jak to działa
W sesji SMTP każde polecenie klienta (EHLO, MAIL FROM, RCPT TO, DATA…) otrzymuje odpowiedź serwera zaczynającą się od trzycyfrowego kodu. Pierwsza cyfra mówi, jak się zakończyło: 2 oznacza sukces, 3 — że serwer czeka na dalsze dane, 4 — błąd przejściowy, a 5 — błąd trwały. Druga wskazuje obszar: x0z składnia, x1z informacja, x2z połączenie i x5z system pocztowy. Tekst po kodzie jest dowolny i każdy serwer pisze własny; programy patrzą tylko na liczbę.
Ponieważ trzy cyfry niewiele mówią o przyczynie, RFC 3463 zdefiniował rozszerzone kody statusu w formacie klasa.temat.szczegół: 5.1.1 to trwały błąd (5) adresowania (1), bo skrzynka nie istnieje (1). Klasa powtarza znaczenie pierwszej cyfry (2, 4 lub 5), temat grupuje przyczynę, a szczegół ją doprecyzowuje. Serwery, które ich używają, ogłaszają to rozszerzeniem ENHANCEDSTATUSCODES w odpowiedzi na EHLO, a ten sam kod pojawia się w polu Status wiadomości zwrotnych.
Tabela zbiera podstawowe kody z RFC 5321 oraz te dodane przez popularne rozszerzenia (AUTH, STARTTLS, ETRN i null MX), a także wszystkie rozszerzone kody z rejestru IANA, każdy z kodami podstawowymi, z którymi zwykle występuje. Duzi dostawcy dodają własne teksty i linki do pomocy, ale zawsze na bazie tych samych numerów.
Przykłady
550 5.1.1 <nadie@example.com>: Recipient address rejected: User unknown in local recipient table5xx Permanent · X.1.1 Bad destination mailbox addressTypowy zwrot z Postfiksa, gdy konto nie istnieje. Ponawianie nic nie da: trzeba poprawić adres. Jeśli ten sam odbiorca działał wcześniej, najpewniej konto zostało usunięte.450 4.2.0 <ana@example.com>: Recipient address rejected: Greylisted4xx Transient · X.2.0 Other or undefined mailbox statusGreylisting: serwer tymczasowo odrzuca nieznanego nadawcę i czeka, aż ten spróbuje ponownie. Prawidłowy serwer pocztowy robi to sam po kilku minutach i wiadomość przechodzi; wiele programów spamerskich nigdy nie ponawia prób.AUTH LOGIN334 VXNlcm5hbWU6Kod 334 zawiera wyzwanie w Base64: VXNlcm5hbWU6 to „Username:”, a kolejne, UGFzc3dvcmQ6, to „Password:”. Jeśli poświadczenia są błędne, serwer odpowiada 535 5.7.8; jeśli najpierw wymaga szyfrowania — 538 lub 530.Przypadki użycia
- Zrozumieć, dlaczego e-mail wrócił, na podstawie komunikatu błędu zwróconego przez serwer.
- Rozróżnić, czy błąd jest przejściowy i kolejka ponowi próbę, czy trwały i trzeba zareagować.
- Diagnozować błędy uwierzytelniania przy konfigurowaniu wysyłki poczty z aplikacji, drukarki lub serwera.
- Interpretować odrzucenia z powodu SPF, DKIM, DMARC, odwrotnego DNS lub czarnych list w logach serwera pocztowego.
- Klasyfikować zwroty na platformie do wysyłek masowych, aby wypisywać nieistniejące adresy.
- Odczytać sesję SMTP przechwyconą za pomocą telnet, openssl s_client lub swaks.
Najczęstsze pytania
Czym różni się błąd 4xx od 5xx?
Błąd 4xx jest przejściowy: serwer wysyłający zostawia wiadomość w kolejce i co jakiś czas ponawia próbę, zwykle przez cztery–pięć dni, zanim się podda i wygeneruje zwrot. Błąd 5xx jest trwały: zwrot następuje od razu, a ponowne wysłanie tej samej wiadomości bez zmian znów się nie powiedzie.
Dlaczego odpowiedź zawiera dwa kody, np. 550 5.1.1?
Pierwszy to trzycyfrowy kod podstawowy wymagany przez RFC 5321. Drugi to rozszerzony kod statusu z RFC 3463, który doprecyzowuje przyczynę: 550 może wynikać z nieistniejącej skrzynki (5.1.1), blokady ze względu na zasady (5.7.1) lub błędu SPF (5.7.23). Przy diagnozie warto patrzeć przede wszystkim na kod rozszerzony.
Co oznacza myślnik w 550-5.7.1?
Że odpowiedź zajmuje kilka linii. Wszystkie mają ten sam kod, ale linie pośrednie oddzielają go od tekstu myślnikiem, a ostatnia spacją — dzięki temu klient wie, kiedy odpowiedź się skończyła. To samo widać na liście rozszerzeń zwracanej przez EHLO.
Dlaczego dostaję odrzucenie 550 5.7.1, skoro adres istnieje?
Bo 5.7.1 nie dotyczy odbiorcy, lecz nadawcy: serwer nie pozwala ci dostarczyć mu tej wiadomości. Typowe przyczyny to wysyłający adres IP na czarnej liście, nieudana weryfikacja SPF, DKIM lub DMARC domeny, brak odwrotnego DNS dla IP albo próba użycia serwera jako relay bez uwierzytelnienia. Tekst dołączony do kodu zwykle podpowiada, o co chodzi.
Dlaczego dostaję 530 lub 535 przy wysyłaniu poczty z aplikacji?
530 oznacza, że serwer wymaga uwierzytelnienia lub uruchomienia TLS przed przyjęciem wiadomości; 535 — że nazwa użytkownika lub hasło są błędne. Sprawdź, czy aplikacja używa portu 587 ze STARTTLS lub 465 z niejawnym TLS, czy ma włączone uwierzytelnianie i, u dostawców takich jak Gmail czy Microsoft 365, czy używasz hasła aplikacji lub OAuth zamiast zwykłego hasła.