Spotkania grup offline

Biuletyny zabezpieczeń

Microsoft w Polsce

Statystyka

  • W tej chwili mamy:
    527 czytelników online
    116 410 zarejestrowanych
  • Do dziś zanotowaliśmy:
    118 315 627 odsłon
    49 336 odsłon / 24h
Microsoft Most Valuable Professional

Testowanie połączenia z serwerem SMTP przy użyciu programu Telnet

  • Data publikacji: 2007-02-19 10:54|
  • Odsłon: 22003|
  • Dodał: Wojciech Kowasz|
  • Odbiorcy: IT PRO|

  • Poziom trudności: Nieokreślony|
  • Komentarze (11)

Często pojawiającym się pytaniem dotyczącym programu Outlook jest problem z wysyłaniem poczty przez serwer SMTP. Problem ten może występować bezpośrednio po skonfigurowaniu konta lub pojawić się nagle. W takich wypadkach użytkownicy często starają się szukać przyczyny problemu w samym programie Outlook. Tymczasem bardzo rzadko Outlook jest odpowiedzialny za brak możliwości wysyłania wiadomości. Zazwyczaj problem jest spowodowany błędną konfiguracją konta lub blokowaniem portów komunikacyjnych przez inne programy, takie jak programy antywirusowe, czy zapory sieciowe, co uniemożliwia połączenie się z serwerem SMTP.

Typowy błąd zgłaszany przez program Outlook, wygląda następująco:


Łączenie z serwerem nie powiodło się. Konto: 'outlook.pl', Serwer: 
'smtp.outlook.pl', Protokół: SMTP, Port: 25, Zabezpieczenie (SSL): Nie, 
Błąd łączy: 10060, Numer błędu: 0x800CCC0E.

Najprostszym i najszybszym testem na sprawdzenie, czy winna leży po stronie Outlook'a, jest próba wysłania wiadomości pocztowej na swój własny adres przy użyciu programu telnet. Jest to program, który umożliwia nam nawiązanie z konsoli linii poleceń połączenia bezpośrednio z serwerem pocztowym na poziomie protokołu komunikacyjnego TCP/IP i konwersację z serwerem przy wykorzystaniu protokołu SMTP (Simple Mail Transport Protocol). Podstawowy protokół SMTP jest bardzo prostym protokołem tekstowym, dlatego nawet mało doświadczony użytkownik nie będzie miał problemów z wysłaniem wiadomości pocztowej przy użyciu komend SMTP.

W poniższym przykładzie przetestujemy połączenie do serwera SMTP o nazwie outlook.pl dla konta pocztowego info@outlook.pl i wyślemy wiadomość testową. Pogrubioną zieloną czcionką zaznaczone zostały te komendy, które wpisywane są przez użytkownika. Czcionką zieloną niepogrubioną zaznaczone zostały komendy wyświetlane przez serwer SMTP. Po wpisaniu tekstu komendy, należy wcisnąć przycisk Enter, aby ją wykonać. Aby przeprowadzić test, należy postąpić w następujący sposób:

Kliknąć przycisk Start, wybrać polecenie Uruchom i w polu edycji wpisać:

cmd

Uruchomiona zostanie konsola linii poleceń. Należy uruchomić w niej program telnet z dwoma argumentami. Pierwszym powinna być nazwa serwera, z którym chcemy się połączyć, drugim - numer portu TCP, na którym chcemy połączyć się z serwerem. Ponieważ łączymy się z serwerem SMTP dlatego używamy dobrze znanego numeru portu SMTP - 25:

telnet outlook.pl 25

Jeśli łączenie z serwerem nie powiedzie się, to wyświetlony zostanie następujący komunikat:


Łączenie z outlook.pl...Nie można nawiązać połączenia z hostem na porcie 25:
Połączenie nie powiodło się 

W tym momencie już wiemy, że istnieją jakieś problemy z połączeniem i że należy ich szukać w konfiguracji komputera i sieci, a nie w programie Outlook.

Jeśli połączenie z serwerem się uda, to na ekranie zobaczymy komunikat powitalny, na przykład:


220-adi.ehost.pl ESMTP Exim 4.52 #1 Tue, 13 Feb 2007 22:36:18 +0100
220-We do not authorize the use of this system to transport unsolicited,
220 and/or bulk e-mail.

Teraz możemy zacząć wysyłać komendy do serwera SMTP. Pierwsza z nich to komenda EHLO, po której powinna nastąpić nazwa naszego komputera:

EHLO codetwo

Serwer odpowie nam wyświetlając informacje o obsługiwanych rozszerzeniach protokołu SMTP, np.:


250-adi.ehost.pl Hello alfa [193.239.56.225]
250-SIZE 52428800
250-PIPELINING
250-AUTH PLAIN LOGIN
250-STARTTLS
250 HELP

Wpisujemy komendę MAIL FROM z adresem, z jakiego wysyłana jest wiadomość, możemy podać własny adres (lepiej jest jednak podać adres zewnętrzny - zobacz komentarz do artykułu poniżej):

MAIL FROM:info@outlook.pl

Serwer powinien zaakceptować adres odpowiadając na przykład:

250 OK

Teraz wpisujemy komendę RCPT TO i podajemy adres, na który chcemy wysłać wiadomość. Powinien to być adres, którego konto znajduje się na serwerze SMTP, z którym się połączyliśmy. Tutaj również użyjmy naszego adresu:

RCPT TO:info@outlook.pl

Serwer powinien zaakceptować adres odbiorcy odpowiadając na przykład:

250 Accepted

Teraz możemy wydać komendę DATA, aby poinformować serwer, że jesteśmy gotowi do wpisania treści wiadomości:

DATA

Serwer odpowie, że jest gotowy do przyjęcia wiadomości, na przykład:

354 Enter message, ending with "." on a line by itself

Możemy wprowadzać treść wiadomości, jej koniec powinien być oznaczony przez pojedynczy znak kropki w nowej linii:


Subject:test z telnetu

To jest wiadomosc testowa.
.

Serwer potwierdzi odebranie wiadomości, na przykład:

250 OK id=1HHFZx-0006L4-Oy

Teraz pozostaje nam jeszcze tylko podanie komendy QUIT, aby zakończyć połączenie z serwerem:

QUIT

Przebieg całego procesu wysyłania wiadomości widoczny jest na obrazku poniżej. Tekst zaznaczony na zielono to komendy wprowadzane przez użytkownika. Pozostały tekst to odpowiedzi serwera.

Rysunek

Jeśli uda nam się wysłać wiadomość testową ze swojego na swój własny adres przy użyciu programu telnet, a takiej samej wiadomości nie możemy wysłać używając programu Outlook, oznacza to, że faktycznie problem jest związany z programem Outlook. Jeśli jednak nie uda nam się wysłać poprawnie wiadomości przy użyciu programu telnet, to znaczy, że wina nie leży po stronie Outlook'a i powinniśmy szukać przyczyn problemu w konfiguracji naszego komputera lub połączenia do sieci Internet.

  • Ocena: 100,00% 0,00% (głosów: 3)
Autor

Komentarz


m.bednarz
Senior

wypowiedzi: 866
od: 2005-06-29

Testowanie połączenia z serwerem SMTP przy użyciu programu Telnet 2007-02-19 (Pn) 11:45
Jedna uwaga do artykułu:

W komendzie MAIL FROM lepiej jest podać adres SMTP z serwera innego niż ten, który testujemy. W przykładzie z artykułu nie powinien to więc być adres obsługiwany przez serwer outlook.pl. Jeśli w komendzie MAIL FROM podamy adres z testowanego serwera, to możemy otrzymać odpowiedź, że najpierw powinniśmy się uwierzytelnić.

W komendzie RCPT TO powinniśmy jednak zawsze podawać adres z serwera, który testujemy, tak jak jest to w artykule.

_______________________
Pozdrawiam,
Michał [Microsoft Outlook MVP]
5" target="_blank">C2ExchangeRules - dodawanie stopek do wiadomości na serwerze Exchange
Zaloguj się, żeby odpowiedzieć

burzak
Senior

wypowiedzi: 676
od: 2005-06-28


Odp: Testowanie połączenia z serwerem SMTP przy użyciu programu Telnet 2007-02-19 (Pn) 16:47
A nie powinno być HELO codetwo

Edytowany 1 raz, ostatnio 2007-02-19 16:47 przez burzak
Zaloguj się, żeby odpowiedzieć

m.bednarz
Senior

wypowiedzi: 866
od: 2005-06-29



Odp: Testowanie połączenia z serwerem SMTP przy użyciu programu Telnet 2007-02-19 (Pn) 17:18
Chodzi o to, że powinno być HELO zamiast EHLO? Ja radziłbym użyć raczej EHLO, bo celem naszym jest próba komunikacji z serwerem SMTP podobnie, jak robi to Outlook. A Outlook użyje komendy EHLO. Może po komendzie EHLO okaże się, że serwer jej nie obsługuje i dzięki temu poznamy przyczynę, dlaczego nie możemy wysłać wiadomości z Outlook'a. Choć prawdę mówiąc nie wiem, czy spotyka się jeszcze serwery, które nie obsługują EHLO.

_______________________
Pozdrawiam,
Michał [Microsoft Outlook MVP]
5" target="_blank">C2ExchangeRules - dodawanie stopek do wiadomości na serwerze Exchange
Zaloguj się, żeby odpowiedzieć

burzak
Senior

wypowiedzi: 676
od: 2005-06-28




Odp: Testowanie połączenia z serwerem SMTP przy użyciu programu Telnet 2007-02-19 (Pn) 20:39
Dzięki za wyjaśnienia :)
Zaloguj się, żeby odpowiedzieć

dany28
Gość

wypowiedzi: 3
od: 2006-01-22


Odp: Testowanie połączenia z serwerem SMTP przy użyciu programu Telnet 2007-02-21 (Śr) 04:23
Oj, sam się niepotrzebnie zamieszałeś :)

"Często pojawiającym się pytaniem dotyczącym programu Outlook jest problem z odbieraniem poczty z serwera SMTP"

Outlook, ani żaden inny program nie odbiera nic z serwera STMP, tylko wysyła.

"W komendzie MAIL FROM lepiej jest podać adres SMTP z serwera innego niż ten, który testujemy"

Bardzo często stosowanym rozwiązaniem jest rozdzielenie serwera przyjmującego pocztę (MX) od serwera służącego wysyłaniu poczty (SMTP). Outlook łączy się z tym drugim, więc raczej MAIL FROM powinien zawierać mail z domeny obsługiwanej przez serwer, tak właśnie robi to Outlook którego to chcemy przetestować, a czy wymaga logowania to już inna sprawa.

Nawet jeśli to ten sam serwer, to przy podaniu adresu z domeny nieobsługiwanej przez serwer możemy zostać odrzuceni przez filtr SPF (sprawdzający czy możemy z tego IP wysyłać maile tej domeny).

Zaloguj się, żeby odpowiedzieć

m.bednarz
Senior

wypowiedzi: 866
od: 2005-06-29



Odp: Testowanie połączenia z serwerem SMTP przy użyciu programu Telnet 2007-02-21 (Śr) 09:47
"Często pojawiającym się pytaniem dotyczącym programu Outlook jest problem z odbieraniem poczty z serwera SMTP"
A to jest ewidentny błąd, zaraz poprawię.

Bardzo często stosowanym rozwiązaniem jest rozdzielenie serwera przyjmującego pocztę (MX) od serwera służącego wysyłaniu poczty (SMTP). Outlook łączy się z tym drugim, więc raczej MAIL FROM powinien zawierać mail z domeny obsługiwanej przez serwer, tak właśnie robi to Outlook którego to chcemy przetestować, a czy wymaga logowania to już inna sprawa.

W artykule chodzi o szybkie sprawdzenie możliwości połączenia się z serwerem SMTP, przez który wysyłamy pocztę. I chodzi o to żeby uniknąć potrzeby uwierzytelniania się, bo to może być zbyt czasochłonne (trudne) dla średnio-doświadczonego użytkownika, który być może po raz pierwszy korzysta z telnetu - stąd rada, aby użyć adresu zewnętrznego do wysłania wiadomości. Oczywiste, że nie zadziała to w 100% przypadków, bo może zostać sprawdzony rekord SPF, czy adres IP komputera. Chodzi o prosty test, czy wina leży po stronie Outlook'a, czy konfiguracji komputera/sieci. Aby dokładnie zdiagnozować Outlook'a, nie ma potrzeby używania telnetu, bo można włączyć opcję, by Outlook tworzył plik loga z przebiegu komunikacji z serwerem SMTP.

_______________________
Pozdrawiam,
Michał [Microsoft Outlook MVP]
5" target="_blank">C2ExchangeRules - dodawanie stopek do wiadomości na serwerze Exchange
Zaloguj się, żeby odpowiedzieć

pioruncr
Gość

wypowiedzi: 97
od: 2004-10-14

Testowanie połączenia z serwerem SMTP przy użyciu programu Telnet 2007-02-19 (Pn) 21:30
A co jeśli serwer wymaga uwierzytelniania??

Zaloguj się, żeby odpowiedzieć

m.bednarz
Senior

wypowiedzi: 866
od: 2005-06-29


Odp: Testowanie połączenia z serwerem SMTP przy użyciu programu Telnet 2007-02-20 (Wt) 08:17
Serwery SMTP przeznaczone do odbierania poczty z zewnątrz zawsze pozwalają na wysłanie wiadomości do obsługiwanego przez nie adresu bez uwierzytelniania. W innym wypadku nie byłoby możliwe wysyłanie wiadomości do użytkowników tego serwera, bo inne serwery SMTP nie mogą przecież wiedzieć na jakie konto mają się zalogować, aby wysłać wiadomość do "naszego" serwera.

Warunkiem jest jednak wysyłanie wiadomości na adres SMTP konta, które znajduje się na tym serwerze, z którym łączymy się przez telneta.

Drugi warunek, to użycie podczas wysyłania wiadomości adresu nadawcy, który nie jest obsługiwany przez ten serwer. W przeciwnym wypadku serwer może właśnie żądać uwierzytelnienia się - patrz pierwszy post w komentarzach.

_______________________
Pozdrawiam,
Michał [Microsoft Outlook MVP]
5" target="_blank">C2ExchangeRules - dodawanie stopek do wiadomości na serwerze Exchange
Zaloguj się, żeby odpowiedzieć

dany28
Gość

wypowiedzi: 3
od: 2006-01-22


Odp: Testowanie połączenia z serwerem SMTP przy użyciu programu Telnet 2007-02-21 (Śr) 04:39
jesli serwer wymaga uwierzyteniania, to możemy sie zalogowac, serwer przewaznie obsługuje wiele metod logowania, najczęsciej stosowaną jest AUTH LOGIN

witamy się:
EHLO costam
potem:
AUTH LOGIN
serwer poprosi o nazwe uzytkownika:
334 VXNlcm5hbWU6
my wpisujemy nazwe użytkownika zakodowaną base64, np:
VXNlcm5hbWU6
serwer poprosi o haslo
334 UGFzc3dvcmQ6
my wpisujemy hasło, tez zakodowane base64, np:
UGFzc3dvcmQ6

serwer odpowie czy się udało zalogowac czy nie, jesli tak to dalej jedziemy normalnie, czyli MAIL FROM, RCPT TO, DATA, QUIT








Infocity - aplikacje internetowe, systemy pocztowe
Zaloguj się, żeby odpowiedzieć

tapis
Gość

wypowiedzi: 57
od: 2004-07-22



Odp: Testowanie połączenia z serwerem SMTP przy użyciu programu Telnet 2008-02-29 (Pt) 14:35
A czy wie ktoś jak przesyłać tą metodą polskie znaki (temat,treść maila), aby po odebraniu tak wysłanej wiadomości były polskie znaki w liście, a nie "krzaczki"?
Dzięki za odp.
Pozdrawiam
Wojtek

Zaloguj się, żeby odpowiedzieć

tapis
Gość

wypowiedzi: 57
od: 2004-07-22




Odp: Testowanie połączenia z serwerem SMTP przy użyciu programu Telnet 2008-02-29 (Pt) 17:00
Z tematem w mailu gdzie są polskie znaki sobie poradziłem.
Subject:=?ISO-8859-2?Q? temat listu z polskimi znakami ?=

W miejsce polskich znaków wstawiamy odpowiednie kody: np. ó to =F3, ł to =B3.

Nie wiem nadal jak należy przesłać polskie znaki w treści maila.

pozdr.
Wojtek

Zaloguj się, żeby odpowiedzieć