Serwery SMTP i POP3, czyli jak działa e-mail


2012-08-01

Temat serwerów SMTP i POP3 sprawia trudności wielu użytkownikom próbującym skonfigurować konto pocztowe w Outlook Express lub innym programie pocztowym. Typowym przykładem jest następujący, dosyć częsty komunikat:

Nie można odnaleźć hosta "POP3". Zweryfikuj poprawność wprowadzonej nazwy serwera. Konto: 'POP3', Serwer: 'POP3', Protokół: POP3, Port: 110, Zabezpieczenie (SSL): Nie, Błąd łączy: 11001, Numer błędu: 0x800CCC0D

Widać tutaj, że użytkownik nie zrozumiał, co należy wpisać w kreatorze konta w polu podpisanym "Serwer poczty przychodzącej (POP3, IMAP lub HTTP):". Otóż w tym polu, a także w polu serwera poczty wychodzącej, trzeba wpisać adres serwera a nie jego typ. Adres ten zależy od tego, gdzie mamy konto. Np. serwer POP3 dla Onetu to pop3.poczta.onet.pl a dla mojej poczty grzegorz.net będzie to mail.grzegorz.net. Adres serwera POP3 lub SMTP często łatwo zgadnąć, ale zwykle nie ma takiej potrzeby, gdyż dane te są zwykle wyświetlane przy zakładaniu konta w serwisie, w którym mamy pocztę. A jeśli nie są, to są podane w pomocy technicznej (przykład dla o2.pl). Adres serwera SMTP można też sprawdzić odczytując rekord MX danej domeny pocztowej, np. programem host:

grzegorz@duch:~$ host -t MX grzegorz.net
grzegorz.net mail is handled by 10 mail.grzegorz.net.

A tak właściwie to do czego są te serwery? Jak można domyślić się z opisu, jeden służy do wysyłania poczty (SMTP), a drugi do odbierania (POP3). Wiąże się to z tym, że kiedyś raczej nie odczytywało się poczty na własnym komputerze, ale łączyło się do serwera, na którym miało się konto shellowe. Tam można było uruchomić sobie program pocztowy, np. pine, i przesyłać pocztę. Do przesyłania tej poczty służył protokół SMTP i na każdym takim serwerze działała usługa/daemon SMTP pozwalająca na wymianę poczty. Taka usługa działała na porcie 25 i odbierała pocztę, którą wysyłali użytkownicy z innych serwerów. Oczywiście poczta mogła być przesyłana także w obrębie jednego serwera. Potem czasy się zmieniły i ludzie chcieli mieć pocztę na swoich domowych komputerach. Poza tym konta shellowe nie były potrzebne przeciętnym użytkownikom, korzystanie z nich było też dla nich zbyt kłopotliwe. Trzeba było więc jakoś ściągać pocztę z serwera. Do tego celu wymyślono protokół POP, którego trzecia, używana obecnie wersja nosi nazwę POP3. W ten oto sposób komputer domowy łączy się ze swoim serwerem pocztowym protokołem POP3 aby ściągnąć pocztę oraz protokołem SMTP aby ją wysłać. Pocztę dla danej domeny może jednak obsługiwać kilka serwerów SMTP. Przykładowo:

grzegorz@duch:~$ host -t MX gmail.com
gmail.com mail is handled by 20 alt2.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 5 gmail-smtp-in.l.google.com.
gmail.com mail is handled by 10 alt1.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 30 alt3.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 40 alt4.gmail-smtp-in.l.google.com.

Tak więc serwerem SMTP może być zupełnie inny komputer niż serwer POP3. Wynika to z tego, że wysyłanie poczty nie jest związane z odbieraniem, tak naprawdę obie te usługi mogą działać zupełnie oddzielnie. Dlatego przy konfiguracji konta mamy pytanie o oba serwery. O tym, przez jakie serwery SMTP przeszła wiadomość, możemy przekonać się zaglądając do jej nagłówków i analizując nagłówki Received. W Outlook Express możemy je obejrzeć we właściwościach danego e-maila, na zakładce Szczegóły, lub też w źródle (Ctrl+F3). Przykładowe nagłówki:

Received: from mx.poczta.onet.pl (unresolved [10.174.34.83]:50012)
	by ps16.m5r2.onet (Ota) with LMTP id E3E07EE6F758
	for ; Thu, 26 Jul 2012 22:31:31 +0200 (CEST)
Received: from moh1-ve3.go2.pl (moh1-ve3.go2.pl [193.17.41.134])
	by mx.poczta.onet.pl (Onet) with ESMTP id DFEC0801F51A2
	for ; Thu, 26 Jul 2012 22:31:31 +0200 (CEST)
Received: from moh1-ve3.go2.pl (unknown [10.0.0.134])
	by moh1-ve3.go2.pl (Postfix) with ESMTP id C9F9E9D8006
	for ; Thu, 26 Jul 2012 22:31:31 +0200 (CEST)
Received: from unknown (unknown [10.0.0.108])
	by moh1-ve3.go2.pl (Postfix) with SMTP
	for ; Thu, 26 Jul 2012 22:31:30 +0200 (CEST)
Received: from cmy73.neoplus.adsl.tpnet.pl [83.31.152.73]
	by poczta.o2.pl with ESMTP id GXIAIE;
	Thu, 26 Jul 2012 22:31:30 +0200

Kolejne serwery SMTP dopisują swoje nagłówki na górze, w związku z tym należy je czytać od dołu. Widzimy, że wiadomość została wysłana z Neostrady i odebrana przez serwer poczta.o2.pl. Potem dwukrotnie przeszła przez moh1-ve3.go2.pl i trafiła na mx.poczta.onet.pl i ostatecznie do ps16.m5r2.onet. W ten oto sposób e-mail wysłany z Neostrady z konta w serwisie o2.pl, trafił na konto na Onecie.

Warto jeszcze wspomnieć o portach. Generalnie usługa SMTP działa na porcie 25 i to z niego korzystały serwery wymieniające pocztę. Gdy użytkownicy zapragnęli obsługiwać pocztę ze swoich komputerów, także wysyłali pocztę przez port 25, zachowując się de facto jak serwery pocztowe. Co prawda łączyli się tylko ze swoim serwerem, a ten dopiero przesyłał wiadomość do serwera odbiorcy, jednak wprowadziło to pewne zamieszanie. W związku z tym wprowadzono port 587 (submission) właśnie dla tych użytkowników. Równolegle wielu dostawców Internetu zaczęło blokować swoim klientom dostęp do portu 25 w związku z faktem, że był on wykorzystywany do rozsyłania spamu, a przeciętny użytkownik i tak nie ma serwera SMTP na swoim komputerze. W praktyce jednak nie nastąpiło całkowite przejście na port 587. Alternatywnym portem okazał się być port 465, który jest odpowiednikiem portu 25 ale z szyfrowaniem. Tak więc obecnie oba te porty są wykorzystywane do komunikacji programu pocztowego z serwerem SMTP. Co do POP3, to historycznie wykorzystywano port 110 i jest on popularny nadal. W międzyczasie powszechnie zaczęto wykorzystywać port 995, na którym transmisja jest dodatkowo szyfrowana. Dlatego też w miarę możliwości należy łączyć się z serwerem POP3 na tym właśnie porcie.

Copyright(C) Grzegorz Niemirowski 2006-2012