r07


Wysyłanie poczty elektronicznej
PROTOKÓA SMTP
Copyright ©: JaRo
1. Krótka historia
Mimo nowych możliwości, jakie dają komunikatory, e-mail ciągle zyskuje na
popularności i znaczeniu. Z badań rynku przeprowadzonych przez IDC wynika, że w roku
2005 można się spodziewać 36 miliardów e-maili dziennie! W roku 2000 w użyciu było
około 505 milionów skrzynek poczty elektronicznej, w roku 2005 tą formą komunikacji
ma się już posługiwać ok. 1,2 mld użytkowników.
Wszystko zaczęło się w roku 1971 w sposób, który trudno byłoby nazwać
spektakularnym. Technik w BBN, Ray Tomlinson, przestał e-mail między dwoma
komputerami, które były połączone w sieci ARPAnet. Poszukując rzadko używanego
znaku dla wyróżnienia poczty elektronicznej odkrył @ i w ten sposób ustanowił symbol
nowej epoki.
Kolejnym krokiem milowym w historii poczty elektronicznej było opracowane w roku
1981 przez Erica Allmana oprogramowanie Sendmail. Umożliwiło ono po raz pierwszy
wysyłanie za pomocą programu pocztowego wiadomości jednocześnie do wielu sieci.
Dzisiejszy sukces e-maila był nie do przewidzenia w roku 1971 i wynalazek Thomlinsona
zasłużył sobie tylko na kilka wzmianek w prasie. Dziś nie sposób wyobrazić sobie życia
bez poczty elektronicznej, a dla wielu ludzi jest ona wręcz warunkiem funkcjonowania.
Poczta elektroniczna opiera się na trzech protokółach  SMTP do wysyłania oraz POP
i IMAP do odbioru. Specyfikację każdego protokołu opisano w jednym lub kilku RFC.
2. Simple Mail Transfer Protocol  SMTP
Zadaniem SMTP jest niezawodny i wydajny transport wiadomości. Protokół ten jest
niezależny od protokołu sieciowego; zwykle stosowany jest standardowy protokół
Internetu, TCP. Komunikacja odbywa siÄ™ przez port 25.
Za wymianę wiadomości odpowiadają tzw. mail transfer agents (MTA). Najbardziej
znanym MTA jest Sendmail. Użytkownik zwykle nie ma z nimi bezpośrednio do
czynienia. DostawÄ… poczty do i z MTA zajmujÄ… siÄ™ klienty pocztowe, takie jak Outlook
czy KMail. MTA komunikują się między sobą za pomocą zwykłych znaków ASCII.
Klient wysyła polecenia do serwera, który odpowiada za pomocą kodu numerycznego
i opcjonalnego ciągu znaków.
Simple Mail Transfer Protocol ma jednak jednÄ…, istotnÄ… wadÄ™  po wystaniu e-maila nie
otrzymuje się żadnej wiadomości o jego dalszych losach. Specyfikacja przewiduje
wprawdzie powiadomienie nadawcy w sytuacji, gdy wiadomość nie może być
dostarczona. Nie jest określone jednoznacznie, jak taka wiadomość ma wyglądać. Zwykle
jest to e-mail z komunikatem o błędzie i nagłówkiem niedostarczonej wiadomości.
Ze względu na brak standardu w praktyce rzadko udaje się ustalić, gdzie i dlaczego
wystąpił błąd.
Dlatego też opracowano rozszerzenie SMTP, definiujące standardowe powiadomienia
o błędach. Niestety bardzo niewiele serwerów obsługuje obecnie to rozszerzenie.
2.1. Proces SMTP
Rys.: Sieć o topologii magistrali
yródło: Komar, B. (2002). TCP/IP dla każdego. Gliwice: Helion, strona 373
Typowe połącznie SMTP składa się z etapów:
" Klient SMTP inicjuje połączenie z serwerem SMTP. Klient korzysta z losowo
wybranego portu o numerze powyżej 1024 i łączy się z portem serwera
o numerze 25. Serwer sygnalizuje akceptację połączenia komunikatem 220

" Klient żąda ustanowienia sesji poprzez wysłanie polecenia HELO (ang. Hello)
lub EHLO (ang. Extended Hello). Polecenie to powinno zawierać pełną nazwę
(FQDN) klienta. Serwer odpowiada komunikatem 250
" Klient informuje serwer, kto wysyła wiadomość, wykorzystując polecenie MAIL
FROM: , gdzie jest adresem poczty elektronicznej
użytkownika wysyłającego. Zazwyczaj odpowiada on adresowi zwrotnemu
określonemu w programie pocztowym klienta. Serwer ponownie powinien
odpowiedzieć komunikatem 250 .
" Klient określa następnie wszystkich odbiorców, do których wiadomość jest
skierowana. Korzysta w tym celu z polecenia RCPT TO: . Jeżeli serwer
obsługuje wielu odbiorców, dla każdego z nich przesyłane jest kolejne polecenie
RCPT TO:. Odpowiedzią serwera na informację o każdym kolejnym odbiorcy
jest komunikat 250 .
" Klient informuje o gotowości do przesyłania właściwej wiadomości
komunikatem DATA. Serwer odpowiada komunikatem 250 . Określa
również ciąg znaków, który spodziewa się otrzymać na znak końca treści
wiadomości. Najczęściej jest to [CR][LF].[CR][LF]. Potem następuje przesłanie
do serwera tejże treści. Wiadomość przesyłana jest przy użyciu znaków 7-
bitowego ASCII. Jeżeli towarzyszą jej załączniki, muszą one zostać
przetworzone do tej postaci. Wykorzystuje siÄ™ do tego celu mechanizm BinHex,
uuencode lub MIME.
" Po zakończeniu transmitowania wiadomości, klient wysyła polecenie QUIT
kończące sesję SMTP. Serwer odpowiada komunikatem 221 , co
oznacza, że nastąpiło zakończenie sesji. Jeżeli klient wysyła następną
wiadomość, proces ponownie rozpoczyna się od polecenia MAIL FROM:.
Rys.: Droga e-maila od nadawcy do odbiorcy
yródło:  PC World Komputer PRO . Nr 3/2003
2.2. Polecenia protokołu SMTP
Polecenie definiują sposób przesyłania e-maili. Zgodnie ze specyfikacją
implementcaja SMTP musi obsługiwać co najmniej osiem poleceń:
Tabela 1. Polecenia SMTP.
POLECENIE OPIS
HELO Inicjuje połączenie i identyfikuje nadawcę SMTP dla odbiorcy SMTP
MAIL Inicjuje transakcjÄ™ pocztowÄ…
RCPT Identyfikuje pojedynczego adresata
Identyfikuje wiersze następujące po poleceniu jako dane pocztowe od
DATA
nadawcy
RSET Przerywa bieżącą transakcję pocztową
SEND Dostarcza pocztÄ™ do terminala
Dostarcza pocztę do terminala. Jeżeli ta operacja się nie powiedzie,
SOML
poczta zostanie dostarczona do skrzynki pocztowej
Dostarcza pocztę do terminala. Poczta jest również dostarczana do
SAML
skrzynki pocztowej
VRFY Weryfikuje nazwę użytkownika
EXPN Rozwija listÄ™ dystrybucyjnÄ…
HELP Sprawia, że odbiorca wysyła przydatne informacje
Żąda, by odbiorca wysłał odpowiedz OK, ale w przeciwnym razie nie
NOOP
określa żadnych działań
Żąda, by odbiorca wysłał odpowiedz OK, a następnie zamknął kanał
QUIT
transmisyjny
Żąda, by odbiorca przejął rolę nadawcy. Jeżeli zostanie otrzymana
TURN
odpowiedz OK, to nadawca staje siÄ™ odbiorcÄ…
2.3. Kody odpowiedzi SMTP
Kody odpowiedzi SMTP gwarantują, że klient jest na bieżąco informowany o statusie
serwera. Każde polecenie wymaga kodu odpowiedzi od serwera. Klient decyduje
o sposobie dalszego postępowania wyłącznie na podstawie otrzymanych zwrotnie
kodów numerycznych.
Tabela 2. Kody odpowiedzi SMTP
KOD ZNACZENIE
211 Odpowiedz stanu systemu lub pomocy systemowej.
214 Komunikat pomocy.
220 Usługa gotowa.
221 Usługa zamyka kanał transmisyjny.
250 Żądane działanie poczty OK, zakończone.
251 Użytkownik nielokalny; przekażę do ścieżki przekazywania.
354 Rozpocznij wprowadzanie poczty.
421 Usługa niedostępna, zamykam kanał transmisyjny.
Żądane działanie poczty nie zostało podjęte: skrzynka pocztowa
450
niedostępna.
451 Żądane działanie zostało przerwane.
Żądane działanie nie zostało podjęte: niewystarczająca ilość pamięci
452
systemowej.
500 Błąd składniowy, polecenie nierozpoznane.
501 Błąd składniowy w parametrach lub argumentach.
502 Polecenie nie zostało implementowane.
503 Zła kolejność poleceń.
504 Parametr polecenia nie został implementowany.
Żądane działanie poczty nie zostało podjęte: skrzynka pocztowa
550
niedostępna.
551 Użytkownik nielokalny; spróbuj wykorzystać ścieżkę przekazywania.
Żądane działanie poczty zostało przerwane: przekroczona alokacja
552
pamięci.
Żądane działanie nie zostało podjęte: niedozwolona nazwa skrzynki
553
pocztowej.
554 Transakcja nie powiodła się.
2.4. Mail Routing i DNS
Gdy serwer SMTP odbierze wiadomość od klienta, odpowiada za routing e-maila.
System nazw domen (DNS) odgrywa centralną rolę nie tylko w dziedzinie dostępu do
serwerów internetowych i FTP, lecz również w kwestii przesyłania wiadomości
elektronicznych.
W systemie DNS przewidziano specjalne wpisy dla e-maili  rekordy MX. Serwer
identyfikuje komputer docelowy za pomocÄ… tak zwanego mail exchange record
domeny. W tym celu pyta serwer DNS i otrzymuje listę serwerów (mail exchanger),
które odbierają wiadomości dla tej domeny. Każdy mail exchanger ma określony
priorytet o długości 16 bitów. Serwer SMTP próbuje zatem po kolei dostarczyć
wiadomość do któregoś z serwerów zgodnie z priorytetem.
Zasadniczo wiadomość może przechodzić przez wiele serwerów SMTP. Wbrew
szeroko rozpowszechnionemu mniemaniu, jakoby e-maile mogły kilkakrotnie okrążyć
Ziemię, zanim w końcu dotrą do odbiorcy, w rzeczywistości z reguły przechodzą tylko
przez dwa serwery SMTP. Zapobieganie powstawaniu takich pętli jest właśnie
zadaniem rekordów MX. Mimo to w wyjątkowych przypadkach może się zdarzyć, że
taka pętla powstanie, na przykład w sytuacji gdy informacje routingowe są
niekompletne lub nieaktualne. Taki przypadek zachodzi na przykład przy zmianie
dostawcy usług internetowych.
Rys.: DNS i e-mail
yródło:  PC World Komputer PRO . Nr 3/2003
2.5. Multipurpose Internet Mail Extension (MIME)
W treści e-maili stosuje się 7-bitowy tekst ASCII. Zawiera on 128 znaków, jednak bez
narodowych znaków specjalnych. W tej wersji nie można więc pisać z polskimi
ogonkami. RFC 2045 definiuje MIME, który eliminuje problemy, gdy w e-mailu
użyto innego zestawu znaków niż US ASCII.
Treść e-maila MIME może być w dalszym ciągu przesyłana jako tekst ASCII, bez
względu na zawartość. Jedynym warunkiem stosowania jest obsługa przez klienta
pocztowego. MIME dodaje do nagłówka pewne elementy, które objaśniają odbiorcy
strukturę treści.
Tabela 3. Nagłówek MIME
ELEMENT PARAMETR OPIS
Wersja MIME 1.0 Określa wersję MIME.
Typ zawartości Tekst, obraz itp. Określa zawartość e-maila. W przypadku
typów  tekst i  multipart dochodzi
informacja o zestawie znaków oraz
identyfikator części tekstowej.
Content Transfer 7bit, 8bit, binary, quoted- Charakteryzuje algorytm kodowania danych
Encoding printable
2.5.1. Typy MIME
MIME nie tylko umożliwia przesyłanie e-maili z załącznikami, lecz
jednocześnie zapewnia informację, którą klient pocztowy wykorzystuje do
wybrania właściwego programu edycyjnego. Służy do tego element nagłówka
 Typ zawartości". MIME dzieli typy danych (typy mediów) na siedem grup
głównych z wieloma podgrupami. Każde rozszerzenie nazwy pliku przypisane
jest do jednego z  typów mediów .
Tabela 4. Ważniejsze typy MIME
NAZWA TYP OPIS
plain tekst niesformatowany
tekst richtext tekst z prostym formatowaniem (kursywa)
enriched uproszczona i rozszerzona forma richtext
mixed wieloczłomowa treść, elementy przetwarzane są sekwencyjnie
parallel wieloczłonowa treść, elementy przetwarzane są rónolegle
multipart
digest wyciÄ…g z e-maila
alternative wieloczłonowa treść o identycznej zawartości logicznej
rfc882 zawartością jest inna wiadomość rfc822
message partial zawartością jest fragment e-maila
external-body zawartościa jest wskazówka do właściwej wiadomości
octet-stream dane binarne
application
postscript dane postscriptowe
jpeg format iso 10918
image
gif compuserve graphic interchange format (gif)
audio basic kodowany format 8-bitowy µ-law
video mpeg format iso 11172
2.6. Zabezpieczenie sesji SMTP
SMTP to protokół notorycznie nadużywany przez hakerów do wysyłania
użytkownikom najróżniejszych niespodzianek. Aatwość takiego wykorzystania
protokołu pocztowego wynika wprost z jego ,,ufnej natury.
Działanie protokołu SMTP opiera się na technice określanej mianem przekazywanie
SMTP (ang. SMTP relaying). Klient Å‚Ä…czy siÄ™ z serwerem SMTP i przekazuje
wiadomości do odbiorcy przez ich ,,odbicie na serwer SMTP.
Standardowo serwer SMTP pozwala przekazywać (odbijać) wiadomości dowolnym
klientom. Wraz ze wzrostem problemu nieuprawnionego wysyłania wiadomości wiele
organizacji blokuje swoje serwery SMTP, ograniczając możliwości korzystania
z przekazywania SMTP. Typowe rozwiÄ…zania to:
" Ograniczenie przekazywania do wybranych podsieci IP. Można skonfigurować
serwer SMTP tak, aby przyjmował wiadomości wyłącznie od stacji pracujących w
wybranej podsieci IP. Mimo że sprawdza się to w odniesieniu do klientów w sieci
lokalnej, nie może być stosowane przez organizacje, w której użytkownicy
zmieniają miejsca korzystania z poczty elektronicznej. Ponieważ użytkownik
zmieniający miejsce pobytu korzysta z usług różnych ISP, zdefiniowanie
wszystkich wymaganych podsieci jest praktycznie niemożliwe.
" Wprowadzenie uwierzytelniania SMTP. Protokół SMTP przewiduje możliwość
uwierzytelniania klientów jeszcze zanim zaczną oni wysyłać wiadomości. Choć
wydaje się to rozwiązaniem najlepszym, wiąże się z pewnym ryzykiem, ponieważ
uwierzytelnianie opiera się na jawnym przesyłaniu hasła.
" Wyłączanie przekazywania SMTP. W przypadku serwerów poczty, takich jak
Microsoft Exchange Server 2000, pozwalających klientom łączyć i uwierzytelniać
się przy użyciu rozwiązań firmowych, przekazywanie SMTP można wyłączyć.
Wówczas usługi specyficzne dla serwera pocztowego będą przyjmować wyłącznie
wiadomości kierowane do Intemetu. Z opcji tej nie można skorzystać, gdy w sieci
pracują klienty protokołu POP3 lub IMAP4.
Poza ograniczeniami przekazywania, wymiana danych SMTP może być chroniona
przy użyciu SSL, czyli mechanizmów opartych na technologii klucza publicznego.
Zabezpieczenia SSL opierają się na zabezpieczonej wymianie klucza sesji używanego
do szyfrowania całości komunikacji między klientem a serwerem.
Kiedy klient SMTP łączy się usługą SMTP serwera pocztowego, otrzymuje klucz
publiczny serwera. Procedura jest następująca:
" Klient Å‚Ä…czy siÄ™ z serwerem SMTP. W miejsce standardowego portu TCP 25
wykorzystywany jest port TCP 465
" Serwer SMTP przesyła klientowi swój certyfikat. Jednym z jego atrybutów jest
klucz publiczny serwera
" Klient weryfikuje certyfikat serwera: sprawdza powiązanie z zaufanym głównym
organem certyfikującym (CA), kontroluje znacznik czasu, porównuje nazwę
wymienioną w certyfikacie z pełną kwalifikowana nazwą serwera i zestawia
numer seryjny z listami certyfikatów unieważnionych
" Po udanej weryfikacji klient generuje losowy klucz sesji, szyfruje go przy użyciu
klucza publicznego serwera i wysyła klucz do serwera. Serwer z kolei
odszyfrowuje klucz sesji przy użyciu własnego klucza prywatnego i zwraca
potwierdzenie, będące dla klienta zarazem potwierdzeniem tożsamości serwera
" Do serwera przesyłana jest nazwa użytkownika i hasło (zaszyfrowane przy użyciu
klucza sesji)
3. Literatura
3.1. Komar, B. (2002). TCP/IP dla każdego. Gliwice: Helion.
3.2. Scrimger R., LaSalle P., Leitzke C., Parihar M., Gupta M. (2002). TCP/IP. Biblia.
Gliwice: Helion.
3.3.  PC World Komputer PRO . Nr 3/2003.


Wyszukiwarka

Podobne podstrony:
r07 04 ojqz7ezhsgylnmtmxg4rpafsz7zr6cfrij52jhi
R07 (8)
r07 0001
r07 01
r07 03
r07
R07 (5)
r07 02
R07
R07 (19)

więcej podobnych podstron