Kody statusu SMTP informują o wyniku każdego etapu sesji, od nawiązania połączenia po przyjęcie wiadomości.
Jak czytać trzycyfrowy kod odpowiedzi SMTP
Kody statusu SMTP są trzycyfrowymi odpowiedziami serwera wysyłanymi po poleceniach klienta, takich jak EHLO, MAIL FROM, RCPT TO i DATA. Pierwsza cyfra określa ogólny charakter odpowiedzi. Kod zaczynający się od 2 oznacza pomyślne wykonanie żądania, kod z pierwszą cyfrą 3 informuje o odpowiedzi pośredniej i konieczności przesłania kolejnej części danych, a kod z pierwszą cyfrą 4 oznacza przejściową odmowę wykonania operacji. Pierwsza cyfra 5 wskazuje błąd trwały, którego ponowienie bez zmiany warunków zwykle nie rozwiąże.
Dwie pozostałe cyfry doprecyzowują etap oraz przyczynę odpowiedzi. Przykładowo 220 jest standardową odpowiedzią powitalną po ustanowieniu połączenia z serwerem, 221 oznacza zakończenie sesji, a 250 potwierdza poprawne wykonanie polecenia. Kod 354 nie oznacza jeszcze przyjęcia wiadomości: serwer zezwala nim na rozpoczęcie transmisji treści po komendzie DATA. Koniec danych wiadomości jest oznaczany osobną linią zawierającą kropkę, po której serwer zwraca kolejną odpowiedź, często 250.
Najczęstsze odpowiedzi przy wysyłaniu wiadomości
Podczas typowej sesji klient najpierw otrzymuje powitanie 220, następnie wysyła EHLO albo starsze HELO. Odpowiedź 250 potwierdza rozpoznanie klienta i może zawierać listę rozszerzeń obsługiwanych przez serwer, na przykład AUTH lub STARTTLS. Polecenie STARTTLS może zakończyć się kodem 220, który oznacza gotowość serwera do rozpoczęcia negocjacji TLS. Dopiero po pomyślnym ustanowieniu szyfrowania klient powinien ponownie wykonać EHLO, ponieważ możliwości serwera mogą zostać przedstawione ponownie w ramach zabezpieczonej sesji.
Po komendzie MAIL FROM serwer może odpowiedzieć kodem 250, jeśli zaakceptował adres nadawcy na potrzeby bieżącej transakcji. Kolejne polecenia RCPT TO dotyczą adresatów i mogą być akceptowane niezależnie. Kod 251 oznacza, że adresat nie jest lokalny, lecz serwer przekaże wiadomość do innego miejsca; kod 252 informuje, że serwer nie może zweryfikować adresata, ale spróbuje przyjąć wiadomość. Po przesłaniu treści wiadomości odpowiedź 250 zwykle potwierdza przyjęcie jej przez serwer do dalszego przetwarzania, jednak nie jest równoznaczna z dostarczeniem do skrzynki odbiorcy.
Kody z grupy 4 wskazują problemy przejściowe. 421 oznacza zamknięcie kanału przez serwer, często w związku z przeciążeniem lub ograniczeniem czasu sesji. 450 może informować o chwilowej niedostępności skrzynki lub zasobu, 451 o błędzie lokalnym podczas przetwarzania, a 452 o niewystarczającej pojemności systemu. W takich sytuacjach ponowienie próby po czasie może zadziałać, dlatego klient pocztowy lub system dostarczający wiadomość często stosuje opóźnione ponawianie zamiast natychmiastowego uznania wiadomości za trwale odrzuconą.
Odrzucenie adresu, uwierzytelniania lub treści
Kody z grupy 5xx wymagają sprawdzenia konkretnego komunikatu tekstowego oraz etapu, na którym wystąpiły. 500 oznacza błąd składni polecenia, 501 błąd składni argumentów, a 503 nieprawidłową kolejność poleceń albo brak wymaganego wcześniejszego etapu sesji. Jeśli serwer zwraca 530, może wymagać uwierzytelnienia lub zabezpieczonego połączenia. Kod 535 jest używany między innymi przy nieudanym uwierzytelnianiu, na przykład po podaniu nieakceptowanego loginu, hasła albo mechanizmu logowania. Sama zmiana portu nie naprawi błędnych danych uwierzytelniających.
Odpowiedź 550 oznacza trwałe odrzucenie żądania, często z powodu niedostępnego adresata, niedozwolonej relacji nadawca–odbiorca albo polityki serwera. 551 wskazuje, że adresat nie jest lokalny i serwer może podać właściwy adres przekierowania, natomiast 553 zwykle odnosi się do niedozwolonej lub niepoprawnej nazwy skrzynki. Kod 554 jest ogólnym odrzuceniem transakcji i bez tekstu odpowiedzi nie pozwala ustalić przyczyny. Przy analizie komunikatu należy zapisać pełny kod wraz z rozszerzeniem, takim jak 5.1.1 dla niedostępnej skrzynki adresata, ponieważ dopiero rozszerzony status precyzuje klasę problemu.
Nie każdy kod SMTP opisuje błąd konfiguracji programu. Odrzucenie może wynikać z nieistniejącego adresu, limitu wysyłki, braku wymaganej autoryzacji, blokady połączenia lub odrzucenia polityki nadawcy. Z tego powodu istotne są: nazwa hosta, numer portu, informacja o użyciu TLS, moment wystąpienia błędu oraz pełny tekst odpowiedzi. Kod otrzymany po RCPT TO wskazuje inny problem niż kod pojawiający się po DATA. Nie należy też utożsamiać kodu 250 z potwierdzeniem odbioru przez człowieka, ponieważ SMTP potwierdza jedynie przyjęcie określonego etapu przez dany serwer.
Sprawdzanie odpowiedzi SMTP na komputerze użytkownika
Diagnostykę warto rozpocząć od ustalenia, czy błąd dotyczy wysyłania, czy odbierania poczty. SMTP jest używany do przekazywania wiadomości do serwera wysyłającego, natomiast odbieranie wiadomości przez klienta odbywa się zwykle za pomocą IMAP albo POP3. W programie pocztowym należy porównać adres serwera SMTP, numer portu, metodę szyfrowania oraz sposób uwierzytelniania z wymaganiami dostawcy poczty. Często spotykany port 587 służy do przesyłania poczty przez mechanizm submission z możliwością użycia STARTTLS, a port 465 jest używany do SMTP z TLS ustanawianym od początku połączenia. O tym, który wariant jest właściwy, decyduje konkretny operator usługi.
Jeżeli klient pokazuje kod 535, należy sprawdzić hasło, nazwę użytkownika i wymaganie dodatkowego hasła aplikacyjnego, jeśli dostawca je stosuje. Przy kodzie 530 trzeba zweryfikować uwierzytelnienie oraz szyfrowanie. Kod 550 lub rozszerzony status 5.1.1 kieruje uwagę na adres odbiorcy, a 452 może wymagać odczekania i ponowienia wysyłki. Warto zachować pełny komunikat z programu, ponieważ skrócone powiadomienie typu „wysyłanie nie powiodło się” nie zawiera wystarczających danych do rozróżnienia tych przypadków.
Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i ich podzespołów, a przy problemach z klientem pocztowym można rozpocząć od sprawdzenia konfiguracji systemu, połączenia sieciowego oraz sposobu prezentowania pełnej odpowiedzi SMTP.