Jak sprawdzić połączenie SMTP za pomocą ręcznej sesji Telnet
Ptak
7 lut 2020
1 min read

Kluczowe Wnioski
Manual telnet testing to szybki sposób o niskiej technologii do diagnozowania problemów z łącznością i konfiguracją SMTP.
Użyj go, aby zweryfikować, czy serwer SMTP jest dostępny, odpowiednio skonfigurowany i akceptuje połączenia.
Test może ujawnić zablokowane porty, ograniczenia relay, błędy DNS lub problemy z kompatybilnością TLS.
Podstawowe polecenia SMTP to EHLO/HELO, MAIL FROM, RCPT TO, DATA, and QUIT.
Port 25 jest standardowy dla relay, podczas gdy 465 i 587 są używane do bezpiecznego przesyłania.
Base64-encoded authentication (AUTH LOGIN) jest wymagana, gdy serwery wymagają danych do logowania.
Narzędzia takie jak Swaks lub zintegrowane platformy do testowania e-maili mogą automatyzować i rozszerzać kroki diagnostyczne telnetu.
Q&A Highlights
Dlaczego używać telnetu zamiast dedykowanego narzędzia do testowania emaili?
Telnet zapewnia bezpośrednią widoczność w surowy dialog SMTP. Jest to nieocenione w przypadku rozwiązywania problemów na poziomie protokołu i potwierdzania odpowiedzi serwera bez warstw pośredników.
Jaki jest najszybszy sposób, aby sprawdzić, czy mój port SMTP jest zablokowany?
Uruchom
telnet mail.example.com 25. Jeśli otrzymasz „Połączenie odrzucone”, prawdopodobnie twój ISP lub host blokuje port.Czy muszę się uwierzytelnić podczas testowania z telnet?
Tylko jeśli serwer poczty wymaga uwierzytelnienia. Użyj polecenia
AUTH LOGINi wyślij swoją nazwę użytkownika oraz hasło zakodowane w Base64.Czy mogę wysłać pełny email przez telnet?
Tak. Po
DATA, dodaj nagłówki i treść, zakończ pojedynczą kropką(.)w osobnej linii, a następnie wpiszQUIT.Czy telnet jest bezpieczny do testowania SMTP?
Nie. Telnet przesyła dane w postaci zwykłego tekstu. Używaj go tylko do testowania w bezpiecznych, kontrolowanych środowiskach. Aby uzyskać bezpieczne połączenia, testuj za pomocą TLS, używając narzędzi obsługujących STARTTLS.
W świecie emaili istnieje wiele aspektów testowania, ale jednym z najbardziej podstawowych testów, które możesz przeprowadzić, jest po prostu telnet do danego serwera SMTP. Ten test SMTP jest przydatny do określenia, czy najbardziej podstawowe problemy istnieją, czy nie.
W świecie e-maili istnieje wiele aspektów testowania, ale jednym z najbardziej podstawowych testów, które możesz wykonać, jest po prostu połączenie się telnetem do danego serwera SMTP. Ta kontrola SMTP jest użyteczna do określenia, czy występują najbardziej podstawowe problemy, czy też nie.
Czy serwer działa?
Czy firewall blokuje komunikację?
Czy serwer pocztowy pozwala na przekazywanie wiadomości określonej domeny/adresu e-mail?
Jakie polecenia SMTP obsługuje serwer pocztowy?
Czy serwer odpowiada poprawną nazwą hosta?
Czy połączenie działa poza jakimkolwiek oprogramowaniem firm trzecich lub API?
Wszystkie te pytania i wiele innych można odpowiedzieć za pomocą prostego testu telnet.
Zanim zaczniemy, upewnij się, że otworzyłeś w nowej karcie nasz artykuł towarzyszący do tego postu: Dokąd są wysyłane wiadomości zwrotne? aby przeczytać go po zakończeniu tego bloga.
Dla przypomnienia, polecenia użyte w poniższych przykładach (a także dodatkowe polecenia) są omówione w sekcji 4.1 RFC 2821.
Jak wysłać Email używając Telnet?
Wysyłanie e-maili przez telnet może pomóc zidentyfikować problemy z dostarczalnością w bieżącej konfiguracji.
Zanim wyślesz e-mail przy użyciu telnet, upewnij się, że telnet jest zainstalowany i włączony na Twoim komputerze. Większość komputerów jest fabrycznie wyposażona w klienta telnet. W przypadku wersji Windows, które tego nie mają, możesz go zainstalować, otwierając sekcję „Programy i funkcje” w panelu sterowania i wybierając „Włącz lub wyłącz funkcje systemu Windows”. Z tym oknem otwartym, wybierz „klient telnet”, a następnie kliknij OK.
Po zweryfikowaniu, że klient telnet jest zainstalowany na serwerze, otwórz okno terminala, w którym wpiszesz polecenia. W systemie Windows użyj skrótu Windows + R, wpisz „cmd”, i naciśnij enter. Dla użytkowników Mac, znajdziesz ikonę terminala, otwierając Finder i szukając „Narzędzia” na stronie Aplikacje, lub wpisując „terminal” w funkcji wyszukiwania Launchpad.
Następnie musimy znaleźć serwer pocztowy, aby się zalogować. Do tego potrzebujemy rekordu DNS MX dla danego domeny. Można to znaleźć za pomocą następującego polecenia (dla tych przykładów używane będzie port25.com, ale można podstawić dowolną domenę):
Windows:
Linux:
SMTP używa jednego z trzech portów — 25, 465 lub 587, co jest często używane przez Microsoft Outlook. Dla zaawansowanej konfiguracji i optymalizacji serwera pocztowego, zobacz nasz przewodnik na temat PowerMTA configuration tips. Jeśli twój przekaźnik SMTP używa innego portu niż ten pokazany w przykładzie, użyjesz portu określonego przez odpowiedź serwera wymiany poczty na nslookup. Możesz także zweryfikować port, na którym opiera się Twój SMTP, pytając administratora lub logując się na serwer wymiany poczty i przeglądając protokoły.
Następnie potrzebujemy rekordu DNS PTR dla IP, z którego zamierzamy korzystać. Najpierw musimy wiedzieć, jaki adres IP widzi nasz internet. Aby się tego dowiedzieć, możemy skorzystać z takiej witryny jak:
Z adresem IP uruchom następujące polecenie, gdzie A.B.C.D to adres IP.
Windows:
Linux:
server.example.com to tylko przykład, a Twoje wyniki będą inne.
Teraz, gdy mamy rekord MX dla port25.com i PTR dla IP, którego zamierzamy użyć, nadszedł czas na zalogowanie się do serwera SMTP. Aby to zrobić, użyj następującego polecenia:
telnet mail.port25.com 25
Powinno pojawić się coś podobnego do następującego:
Jeśli w tym momencie otrzymasz komunikat o błędzie „cannot connect”, oznacza to, że numer portu jest niewłaściwy lub serwer poczty napotyka problemy.
Pierwsze polecenie, które musimy wydać serwerowi poczty do naszego testera e-mail SMTP to EHLO lub HELO. To podstawowe powitanie, które inicjuje komunikację pomiędzy klientem telnet a serwerem SMTP. Również przekazywany jest rekord DNS PTR dla adresu IP, z którego łączymy się zgodnie z wcześniejszym ustaleniem.
EHLO server.example.com
Powinno pojawić się coś podobnego do następującego:
To pokazuje komendy SMTP, które serwer SMTP akceptuje. Nie wszystkie serwery SMTP wspierają ten sam zestaw komend. Na przykład, yahoo wyświetla tylko następujące:
A aol pokazuje tylko jedną z nimi:
250 DSN
Następne polecenie, które musimy wydać, to polecenie MAIL FROM. Określa ono adres, na który przesyłane są odbicia. To nie jest to samo co nagłówek from, który jest widoczny w kliencie pocztowym.
MAIL FROM: <support@port25.com> 250 2.1.0 MAIL ok
Upewnij się, że używasz nazwy domeny, która odpowiada domenie Twojego serwera poczty. Na przykład, jeśli domena e-mail to anycompany.com, będziesz chciał użyć you@anycompany.com zamiast zewnętrznego e-maila jak you@free-mail-provider.com. Wariacje w nazwach domen mogą spowodować pojawienie się komunikatu o błędzie.
Teraz, gdy polecenie MAIL FROM zostało wysłane, możemy wysłać polecenie RCPT TO. To polecenie informuje serwer poczty SMTP, do kogo powinna zostać wysyłana wiadomość. Może to być to samo lub inne niż nagłówek to, który jest adresem e-mail wyświetlanym w kliencie pocztowym.
RCPT TO: <support@port25.com> 250 2.1.5 <support@port25.com> ok
Przed wysłaniem polecenia RCPT TO dokładnie sprawdź adres odbiorcy — komunikat o błędzie wyświetlany tutaj może wskazywać na błąd ortograficzny lub blokowanego odbiorcę e-mail.
Ostatnie polecenie do uruchomienia przed rozpoczęciem treści wiadomości to polecenie DATA. To polecenie informuje serwer poczty SMTP, że wszystko co teraz zostanie wysłane, to treść wiadomości (która zawiera również nagłówki).
DATA 354 wyślij wiadomość
Ważne jest, aby pamiętać, że jeśli serwer pocztowy obsługuje PIPELINING, jak mail.port25.com, serwer poczty SMTP może poczekać z odpowiedzią na inne polecenia po EHLO/HELO aż do momentu wydania polecenia DATA. W takim przypadku wprowadź polecenia MAIL FROM, RCPT TO i DATA bez czekania na odpowiedź.
Teraz gdy polecenie DATA zostało wysłane, możemy zacząć wysyłać treść wiadomości. Zaczyna się to od różnych nagłówków. Minimalnie wiadomość powinna zawierać nagłówek to, from, subject i date. Nagłówki wprowadzone tutaj będą wyświetlane użytkownikowi w ich kliencie pocztowym.
Po ustawieniu nagłówków dodajemy teraz jedną pustą linię z powrotem wiersza (naciśnij enter dwa razy) i zaczynamy właściwą treść wiadomości.
Hello World, This is a test message sent from a manual telnet session. Yours truly, SMTP administrator
Po zakończeniu wiadomości musimy poinformować serwer SMTP, że skończyliśmy z wiadomością i chcemy, aby serwer ją zaakceptował. Robimy to za pomocą kropki na linii samodzielnie. Jeśli podczas pisania wiadomości potrzebujesz kropki na linii samodzielnie, musisz wprowadzić 2 kropki, pierwsza z nich unika drugiej.
. 250 2.6.0 message received
Jeśli zamiast powiadomienia „received” otrzymasz wiadomość o błędzie, zanotuj odpowiednie szczegóły i skontaktuj się z dostawcą usług e-mail w celu uzyskania dalszej pomocy. Problemy z połączeniem mogą być również związane z protokołami bezpieczeństwa - upewnij się, że using TLS 1.2 or higher dla bezpiecznych połączeń.
Na koniec wysyłamy polecenie QUIT aby zamknąć połączenie:
QUIT 221 2.0.0 mail.port25.com says goodbye
W ten sposób serwer pocztowy zaakceptował wiadomość do dostarczenia, Twój test wysyłania e-maili przez telnet został zakończony, a powinien on znajdować się w skrzynce odbiorczej adresu RCPT TO!!!
Oto wszystkie polecenia bez przerwania:
Wysyłanie e-maila przy użyciu telnet pozwala szybko przetestować możliwości połączenia, a koszty są mniejsze niż przy intensywnym sprzęcie diagnostycznym lub oprogramowaniu. Dla bardziej zaawansowanych narzędzi testujących SMTP, rozważ using Swaks with SparkPost dla kompleksowego testowania e-maili.



