W świecie e-maili istnieje wiele aspektów testowania, ale jednym z najprostszych testów, które możesz przeprowadzić, jest po prostu połączenie się z danym serwerem SMTP za pomocą telnetu. Sprawdzenie SMTP jest przydatne do ustalenia, czy niektóre z podstawowych problemów istnieją lub ich brak.
Czy serwer działa?
Czy zapora blokuje komunikację?
Czy serwer pocztowy zezwala na forwardowanie dla konkretnej domeny/adresu e-mail?
Jakie polecenia SMTP obsługuje serwer pocztowy?
Czy serwer odpowiada prawidłową nazwą hosta?
Czy połączenie działa poza oprogramowaniem lub API firm trzecich?
Na te i wiele innych pytań można odpowiedzieć za pomocą prostego testu telnet.
Przed rozpoczęciem upewnij się, że otworzyłeś nasz towarzyszący artykuł do tego wpisu: Dokąd są wysyłane wiadomości o zwrotach? w nowej karcie, abyś mógł go przeczytać po zakończeniu tego bloga.
Jako uwaga, polecenia używane w poniższych przykładach (jak również dodatkowe polecenia) są omówione w sekcji 4.1 RFC 2821.
Jak wysłać e-mail za pomocą telnetu?
Wysyłanie e-maili przez telnet może pomóc zidentyfikować problemy z dostarczalnością w Twojej bieżącej konfiguracji.
Przed wysłaniem e-maila za pomocą telnetu, upewnij się, że telnet jest zainstalowany i włączony na Twoim komputerze. Większość komputerów ma preinstalowany klient telnet. Dla tych wersji Windowsa, które go nie mają, można go zainstalować, otwierając sekcję „Programy i funkcje” w Panelu sterowania i wybierając „Włącz lub wyłącz funkcje systemu Windows”. Gdy to okno jest otwarte, zaznacz „klient telnet” i kliknij OK.
Gdy klient telnetu został zweryfikowany jako zainstalowany na serwerze, otwórz okno terminala, w którym wpiszesz swoje polecenia. Na Windowsie użyj klawiszy Windows + R, wpisz „cmd” i naciśnij enter. Użytkownicy Maca znajdą ikonę terminala, otwierając Finder i szukając „Narzędzi” na stronie Aplikacji lub wpisując „terminal” w funkcji wyszukiwania Launchpada.
Następnie musimy znaleźć serwer pocztowy, na który się zalogujemy. W tym celu potrzebujemy rekordu DNS MX dla danej domeny. Można go znaleźć za pomocą następującego polecenia (w tych przykładach zostanie użyta port25.com, ale można podstawić dowolną domenę):
Windows:
nslookup -type=mx port25.com
Odpowiedź nieautorytatywna:
port25.com preferencja MX = 100, wymiana poczty = mail.port25.com
Linux:
nslookup -type=mx port25.com
Odpowiedź nieautorytatywna:
port25.com wymiana poczty = 100 mail.port25.com.
SMTP używa jednego z trzech portów — 25, 465 lub 587, z których Microsoft Outlook zwykle korzysta. Jeśli Twój relay SMTP używa innego portu niż 25, jak pokazano w przykładzie, użyjesz portu określonego w odpowiedzi serwera wymiany mailowej na nslookup. Możesz również zweryfikować port, na którym opiera się Twój SMTP, pytając swojego administratora lub logując się do serwera wymiany poczty i przeglądając protokoły.
Następnie potrzebujemy rekordu DNS PTR dla IP, którego zamierzamy użyć. Najpierw musimy wiedzieć, jaki adres IP postrzega nas internet. Aby to ustalić, możemy użyć strony internetowej, takiej jak:
Z uzyskanym adresem IP uruchom następujące polecenie, gdzie A.B.C.D to adres IP.
Windows:
nslookup -type=ptr A.B.C.D
Odpowiedź nieautorytatywna:
D.C.B.A.in-addr.arpa nazwa = server.example.com
Linux:
nslookup -type=ptr A.B.C.D
Odpowiedź nieautorytatywna:
D.C.B.A.in-addr.arpa nazwa = server.example.com
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ć, czas zalogować się na serwer SMTP. W tym celu użyj następującego polecenia:
telnet mail.port25.com 25
Czegoś podobnego do poniższego powinno być teraz wyświetlone:
Próba 69.63.149.30... Połączono z mail.port25.com (69.63.149.30). Znak ucieczki to '^]'. 220 mail.port25.com (PowerMTA(TM) v4.0) usługa ESMTP gotowa
Jeśli w tym momencie otrzymasz komunikat o błędzie „nie można się połączyć”, to bądź numer portu jest prawidłowy, albo serwer pocztowy ma problemy.
Pierwsze polecenie, które musimy wydać do serwera pocztowego dla naszego testera e-mailowego SMTP, to EHLO lub HELO. To podstawowe powitanie rozpoczyna komunikację między klientem telnet a serwerem SMTP. Także przekazywany jest DNS PTR dla adresu IP, z którego się łączymy, co ustalono wcześniej.
EHLO server.example.com
Coś podobnego do poniższego powinno zostać zwrócone:
250-mail.port25.com mówi cześć 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250-8BITMIME 250-XACK 250-XMRG 250-SIZE 54525952 250-VERP 250 DSN
To pokazuje polecenia SMTP, które akceptuje serwer SMTP. Nie wszystkie serwery SMTP obsługują te same zestawy poleceń. Na przykład, yahoo pokazuje tylko następujące:
250-8BITMIME 250-SIZE 41943040 250 PIPELINING
A aol pokazuje tylko jedno z:
250 DSN
Następnym poleceniem, które musimy wydawać, jest polecenie MAIL FROM. Określa ono adres, na który będą wysyłane wiadomości zwrotne. To nie jest to samo, co nagłówek nadawcy, który jest adresem e-mail widocznym w kliencie pocztowym.
MAIL FROM: <support@port25.com> 250 2.1.0 MAIL ok
Upewnij się, że używasz nazwy domeny odpowiadającej domenie Twojego serwera pocztowego. Na przykład, jeśli domena Twojego e-maila to anycompany.com, powinieneś użyć you@anycompany.com, zamiast zewnętrznego e-maila, jak you@free-mail-provider.com. Różnice w nazwach domen mogą powodować pojawienie się komunikatu o błędzie.
Teraz, gdy polecenie MAIL FROM zostało wysłane, możemy wysłać polecenie RCPT TO . To polecenie mówi serwerowi pocztowemu SMTP, do kogo wiadomość powinna być wysłana. To może być to samo lub różne od nagłówka do, który jest adresem e-mail widocznym w kliencie e-mailowym.
RCPT TO: <support@port25.com> 250 2.1.5 <support@port25.com> ok
Sprawdź jeszcze raz adres odbiorcy przed wysłaniem polecenia RCPT TO — komunikat o błędzie wyświetlający się tutaj może wskazywać na błędnie napisany lub zablokowany adres e-mail odbiorcy.
Ostatnie polecenie do uruchomienia przed rozpoczęciem treści wiadomości to polecenie DATA . To polecenie informuje serwer pocztowy SMTP, że wszystko, co zostanie wysłane następnie, jest treścią wiadomości (która zawiera również nagłówki).
DATA 354 wyślij wiadomość
Ważne jest, aby zauważyć, że jeśli serwer pocztowy wspiera PIPELINING, jak mail.port25.com, serwer pocztowy SMTP może czekać, aż polecenie DATA zostanie wydane, zanim odpowie na jakiekolwiek inne polecenia po EHLO/HELO. W takim przypadku wprowadź polecenia MAIL FROM, RCPT TO i DATA przed oczekiwaniem na odpowiedź.
Teraz, gdy polecenie DATA zostało wysłane, możemy rozpocząć wysyłanie treści wiadomości. Zaczyna się to od różnych nagłówków. W minimum wiadomość powinna zawierać nagłówki do, od, temat i datę. Nagłówki wprowadzone tutaj będą wyświetlane użytkownikowi w jego kliencie e-mailowym.
Od: "John Smith" <jsmith@port25.com> Do: "Jane Doe" <jdoe@port25.com> Temat: testowa wiadomość wysłana z manualnej sesji telnetu Data: Śr, 11 maja 2011 16:19:57 -0400
Gdy nagłówki są ustawione, dodajemy jedną pustą linię z powrotem/spadkiem linii (po prostu naciśnij enter dwa razy), a następnie rozpoczynamy właściwą treść wiadomości.
Cześć świecie, To jest testowa wiadomość wysłana z manualnej sesji telnetu. Z poważaniem, administrator SMTP
Gdy wiadomość jest gotowa, musimy poinformować serwer SMTP, że skończyliśmy z wiadomością i chcemy, aby serwer pocztowy SMTP ją zaakceptował. Robimy to poprzez umieszczenie kropki w osobnej linii. Jeśli podczas pisania wiadomości konieczna jest kropka na osobnej linii, musisz umieścić 2 kropki, z których pierwsza ucieka drugą.
. 250 2.6.0 wiadomość otrzymana
Jeśli otrzymasz komunikat o błędzie zamiast powiadomienia „otrzymana”, zanotuj szczegóły i skontaktuj się ze swoim dostawcą e-mail w celu uzyskania dalszej pomocy.
Na koniec wysyłane jest polecenie QUIT aby zamknąć połączenie:
QUIT 221 2.0.0 mail.port25.com mówi do widzenia
W ten sposób serwer pocztowy zaakceptował teraz wiadomość do dostarczenia, test e-mailowy telnetu jest zakończony, a ona powinna znajdować się w skrzynce odbiorczej adresu RCPT TO!!!
Oto wszystkie polecenia bez przerwy:
telnet mail.port25.com 25 Próba 69.63.149.30... Połączono z mail.port25.com (69.63.149.30). Znak ucieczki to '^]'. 220 mail.port25.com (PowerMTA(TM) v4.0) usługa ESMTP gotowa EHLO server.example.com 250-mail.port25.com mówi cześć 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250-8BITMIME 250-XACK 250-XMRG 250-SIZE 54525952 250-VERP 250 DSN MAIL FROM: <support@port25.com> 250 2.1.0 MAIL ok RCPT TO: <support@port25.com> 250 2.1.5 <support@port25.com> ok DATA 354 wyślij wiadomość Od: "John Smith" <jsmith@port25.com> Do: "Jane Doe" <jdoe@port25.com> Temat: testowa wiadomość wysłana z manualnej sesji telnetu Data: Śr, 11 maja 2011 16:19:57 -0400 Cześć świecie, To jest testowa wiadomość wysłana z manualnej sesji telnetu. Z poważaniem, administrator SMTP . 250 2.6.0 wiadomość otrzymana QUIT 221 2.0.0 mail.port25.com mówi do widzenia
Wysłanie e-maila za pomocą telnetu pozwala na szybkie przetestowanie możliwości połączeniowych i jest tańsze niż solidny sprzęt diagnostyczny lub oprogramowanie.
Jak przetestować SMTP za pomocą uwierzytelniania telnetu?
Teraz, gdy wiesz, jak sprawdzić połączenie SMTP za pomocą telnetu, omówimy procedury uwierzytelniania. Uwierzytelnianie SMTP pomaga zapobiegać przedostawaniu się dużej ilości spamu do skrzynek odbiorczych czytelników, chociaż nie wszystkie serwery wymiany pocztowej tego wymagają.
Podstawową różnicą w nowoczesnych protokołach uwierzytelniania jest obecność kodowania base64. Base64 konwertuje dane binarne na format ASCII, który jest wymagany przez serwery pocztowe do udanego przesyłania danych. Jest to sposób reprezentowania swoich danych logowania — pewnej kombinacji tekstów — w formacie numerycznym, który komputer może zrozumieć.
Możesz wygenerować swoje base64 za pomocą oprogramowania lub darmowych narzędzi online. Gdy przekażesz te informacje serwerowi pocztowemu, porówna te dane ze swoimi rekordami, aby określić uwierzytelnienie.
Aby przetestować uwierzytelnianie SMTP przez telnet, wykonaj następujące kroki:
Otwórz terminal i połącz się z serwerem pocztowym, używając polecenia nazwy serwera telnet oraz polecenia dostępu — mail.port25.com w powyższym przykładzie.
Przywitaj serwer poleceniem EHLO lub HELO, wprowadź AUTH LOGIN i poczekaj na odpowiedź komputera.
Wprowadź nazwę użytkownika zakodowaną w base64 i pozwól serwerowi odpowiedzieć.
Wprowadź hasło zakodowane w base64, a powinieneś otrzymać odpowiedź, taką jak „uwierzytelnienie powiodło się”.
Postępuj zgodnie z MAIL FROM, RCPT TO, DATA i QUIT, aby wysłać swój uwierzytelniony e-mail.