Blazalek.com

5.5.2SMTP 5.5.2: Błąd składni polecenia protokołu

Odpowiedź 5.5.2 oznacza, że system odbierający nie zdołał zinterpretować czegoś, co dostał: polecenia transakcji pocztowej o błędnej składni, polecenia, którego nie rozpoznał, albo — jak w zaakceptowanych przykładach — odpowiedzi, której nie umiał zdekodować, lub adresu w postaci, której nie przyjmuje. Zachowaj dokładne dane wejściowe, kompletną odpowiedź i poprzedzający ślad, ustal, który z tych warunków wystąpił, popraw go i dopiero po tej zmianie wyślij ponownie.

Kategoria
Protokół dostarczania
Klasa
Niepowodzenie trwałe
Ponowienie
Nie ponawiaj bez zmian
Supresja
Sprawdź pełny kontekst

W skrócie

System odbierający nie zdołał zinterpretować fragmentu wymiany: zniekształconego polecenia, danych, których nie umiał zdekodować, albo adresu w niedopuszczalnej dla niego postaci. Niepowodzenie trwałe: niezmienione ponowienia dają ten sam wynik. Pierwszy działa administrator platformy wysyłającej, pracując na śladzie i pełnej odpowiedzi, zanim wina zostanie przypisana klientowi albo serwerowi.

Co oznacza ten kod

Gdy host odbierający odrzuca polecenie transakcji pocztowej jako niemożliwe do zinterpretowania, wzorzec rejestru X.5.2 występuje jako kod 5.5.2: składnia wiersza jest nieprawidłowa albo komenda nie jest rozpoznawana przez ten system. Klasa trwała 5 jest tym, co rejestr rozszerzonych statusów zapisuje dla tej próby. Szczegół statusu nie podaje dokładnego wiersza polecenia, nie rozróżnia błędu składni od nieobsługiwanego czasownika ani nie wskazuje, po której stronie leży błąd. Zawężenie przyczyny wymaga pełnej odpowiedzi SMTP oraz śladu transakcji poprzedzającego odrzucone polecenie. Przykłady zaakceptowane dla tej strony pochodzą z dokumentacji dwóch produktów i pokazują, jakim językiem oba nazywają ten warunek.

Przykłady od dostawców

Przykład Rackspace
554 5.5.2 <user@nonqualifieddomain>: Invalid data in message> #SMTP#
Przykład Rackspace
504 5.5.2 <user@nonqualifieddomain>: Sender address rejected: need fully-qualified address
Przykład Gmail
501 5.5.2 Syntax error, cannot decode response. For more information, go to About SMTP error messages. - gsmtp
Przykład Gmail
555 5.5.2 Syntax error. For more information, go to About SMTP error messages and review RFC 5321 specifications. - gsmtp
Przykład Gmail
555 5.5.2 Syntax error, goodbye. For more information, go to About SMTP error messages and review RFC 5321 specifications. - gsmtp
Przykład proofpoint
smtp;550 5.5.2 <email@example.com>: Sender address rejected: need fully-qualified address (in reply to RCPT TO command)

Znaczenie techniczne

Polecenie protokołu transakcji pocztowej, którego nie można było zinterpretować z powodu błędnej składni lub nierozpoznanego polecenia, to X.5.2. Opis w rejestrze wskazuje, że ten szczegół jest użyteczny wyłącznie jako błąd trwały, a konkretny wariant 5.5.2 ma odpowiadającą mu klasę 5.

Status dostarczenia

Wiodąca cyfra 5 oznacza trwałe niepowodzenie tej wiadomości w bieżącym kontekście. Sam kod nie wskazuje ani dokładnego polecenia, ani jego błędnej części, nie rozstrzyga, czy przyczyną była nieprawidłowa składnia, nierozpoznane polecenie, czy dane, których system nie umiał zdekodować, i nie ustala, po której stronie jest problem. Podstawowa odpowiedź zawęża gałąź wyłącznie jako poszlaka: w RFC 5248 powiązanie z podstawowym kodem statusu jest niewyłączne, a zaakceptowane przykłady 5.5.2 rozkładają się na 501, 504, 554 i 555.

Klasa
Niepowodzenie trwałe
Ponowienie
Nie ponawiaj bez zmian
Supresja
Sprawdź pełny kontekst

Decyzja o ponowieniu

Zalecenie operacyjne: zatrzymaj automatyczne i ręczne ponawianie tego samego polecenia w niezmienionym kontekście, bo system, który nie zdołał zinterpretować danych wejściowych, nie zinterpretuje tych samych danych przy kolejnej próbie. Warunkiem odblokowania jest wykazana zmiana w tym, co wysyła klient, albo w tym, jak obsługuje to system odbierający: poprawiona składnia, zastąpione polecenie, poprawiona postać adresu albo zmieniony parser po stronie odbierającej. Wysyłka do innego celu jest osobną trasą i osobną wymianą, nie powtórzeniem tej próby; policz ją jako pierwszą próbę i nadaj jej klucz idempotencji, aby żaden odbiorca nie dostał wiadomości dwukrotnie.

Decyzja o supresji

Zalecenie operacyjne: 5.5.2 nie jest podstawą do dodania adresu na listę wykluczeń. Kod mówi, że jakiś system nie zdołał zinterpretować fragmentu wymiany, i nie ocenia skrzynki stojącej za adresem: nie rozstrzyga, czy skrzynka istnieje, czy jest pełna, czy została wyłączona ani czy odmawia przyjmowania poczty. Jeden z zaakceptowanych przykładów odrzuca wręcz adres nadawcy z powodu jego postaci, a więc w ogóle nie ocenia odbiorcy. Wykluczenie wymaga osobnego sygnału o samej skrzynce, wziętego z właściwej polityki wraz z pełną odpowiedzią i historią zdarzeń zapisaną dla tego adresu.

Najczęstsze przyczyny

  • Wiersz polecenia transakcji pocztowej był zniekształcony i system odbierający nie zdołał go zinterpretować. Dokumentacja komunikatów błędów SMTP dla Gmaila zgłasza to z podstawową odpowiedzią 555 jako „555 5.5.2 Syntax error.” oraz „555 5.5.2 Syntax error, goodbye.”
  • System odbierający nie zdołał zdekodować odpowiedzi, którą otrzymał w trakcie wymiany. To awaria odpowiedzi wewnątrz sesji, a nie czasownika polecenia, i formatowanie poleceń po stronie klienta może być całkowicie poprawne. Dokumentacja Gmaila zgłasza to z podstawową odpowiedzią 501 jako „501 5.5.2 Syntax error, cannot decode response.”
  • Adres podany przez klienta nie miał postaci przyjmowanej przez system odbierający — na przykład adres nadawcy bez w pełni kwalifikowanej domeny. Dokumentacja typowych odbić Rackspace zgłasza to z podstawową odpowiedzią 504 jako „504 5.5.2 <user@nonqualifieddomain>: Sender address rejected: need fully-qualified address”; token w nawiasach ostrokątnych jest w tej dokumentacji zaślepką, którą serwer wypełnia odrzuconym adresem w chwili odrzucenia.

Kroki diagnostyczne

  1. Potwierdź na surowej odpowiedzi SMTP albo raporcie dostarczenia, że rozszerzony kod to dokładnie 5.5.2, i zanotuj, która podstawowa odpowiedź go przyniosła. Zaakceptowane przykłady niosą go na 501, 504, 554 i 555 — rozrzut na tyle szeroki, że sama podstawowa odpowiedź niczego nie rozstrzyga, skoro RFC 5248 uznaje to powiązanie za niewyłączne.
  2. Powiąż odpowiedź z zamierzoną wiadomością, czasem próby, systemem, który zwrócił kod, oraz dokładnym poleceniem; zachowaj też poprzedzający ślad transakcji.
  3. Zamiast wybierać między składnią błędną a poleceniem nierozpoznanym, rozdziel warunki opisane przez zaakceptowane odpowiedzi: wiersz polecenia, którego system odbierający nie zdołał sparsować; odpowiedź wewnątrz wymiany, której nie umiał zdekodować, a która wcale nie jest awarią polecenia; oraz przekazany mu adres w postaci, której nie przyjmuje, na przykład adres nadawcy bez w pełni kwalifikowanej domeny. Niektóre systemy zwracają 5.5.2 także dla treści wiadomości, której nie zdołały sparsować. Nie przypisuj wady klientowi ani serwerowi, dopóki ślad i pełny tekst odpowiedzi tego nie potwierdzą.
  4. Zatrzymaj ponawianie bez zmian; przed nową wysyłką potwierdź istotną korektę albo zmianę obsługi po stronie systemu odbierającego i ponownie sprawdź stan wykluczenia.

Działania z podziałem na role

Administrator nadawcy

  • Zachowaj kompletną odpowiedź wraz z podstawowym kodem, dokładne dane wejściowe wysłane przez klienta i poprzedzający je ślad transakcji, a następnie — zanim cokolwiek zmienisz — przypisz odrzucenie do jednego z warunków opisanych przez zaakceptowane odpowiedzi: polecenia nie do sparsowania, danych nie do zdekodowania albo adresu w nieprzyjmowanej postaci.
  • Popraw potwierdzony warunek, na przykład doprowadzając wiersz polecenia do właściwej składni albo podając w pełni kwalifikowany adres nadawcy; wstrzymaj ponowienia do czasu wdrożenia korekty i przed kolejną wysyłką ponownie odczytaj stan wykluczenia dla tego adresu.

Dostawca

  • Dla wskazanego czasu i systemu sprawdź logi, parser protokołu i ślad transakcji, aby nazwać dokładne dane wejściowe, których nie dało się zinterpretować, i podaj, który warunek zaszedł, zamiast zgłaszać ogólny błąd składni.
  • Napraw potwierdzony problem w zarządzanej implementacji albo przekaż administratorowi nadawcy wymaganą składnię i postać adresu, jakiej system oczekuje, bez zmiany dokładnego kodu statusu i tekstu opisowego w odpowiedzi.

Źródła

Poniższe źródła określają znaczenie tego kodu rozszerzonego — przede wszystkim rejestr IANA i powiązane RFC. Jeśli na stronie są przykłady od dostawców, pochodzą z ich opublikowanej dokumentacji. Otwórz link, żeby zobaczyć oryginalne brzmienie w kontekście.

Ostatnia weryfikacja:

Znalazłeś błąd lub nieścisłość? Zgłoś poprawkę.

Wskaż element tej strony, który wymaga sprawdzenia. Każde zgłoszenie jest weryfikowane ręcznie.

Rodzaj problemu

Opisz problem i, jeśli chcesz, zaproponuj poprawione brzmienie.

Przy zgłoszeniu merytorycznym podaj publiczne źródło, jeśli je masz.

Możesz wysłać zgłoszenie anonimowo. Odpowiedź nie jest gwarantowana.

Nie wklejaj pełnych odpowiedzi bounce, nagłówków, adresów e-mail, Message-ID, tokenów ani innych danych osobowych. Przed wysłaniem zredaguj materiał dowodowy.

Wysłanie korekty przekazuje wpisane dane do Formspree, żebym mógł zweryfikować i poprawić tę stronę. Przeczytaj informację o prywatności.

Poradnik

Incydenty

Wojtek Blazalek

Ekspert ds. dostarczalności e-mail

Utknąłeś na tym kodzie błędu? Pomagam zespołom ustalać przyczyny odrzuceń oraz naprawiać uwierzytelnianie i reputację, żeby wiadomości trafiały do skrzynki.

Praktyczna praca nad dostarczalnością dla firm wysyłających na dużą skalę.