referat na temat poczty elektronicznej i innych usługach internetowych
PROSZE PILNE !!!
moze być z netu
Jelcyt91
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 wysłaniu 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.: Proces SMTP Rys.: Proces SMTP Źródło: Komar, B. (2002). TCP/IP dla każdego. Gliwice: Helion, strona 373 Typowe połączenie SMTP składa się z następujących 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 - ready. * 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 - ok. * Klient informuje serwer, kto wysyła wiadomość, wykorzystując polecenie MAIL FROM: -adres-, gdzie -adres- 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 - ok. * Klient określa następnie wszystkich odbiorców, do których wiadomość jest skierowana. Korzysta w tym celu z polecenia RCPT TO: -adres-. 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 - ok. * Klient informuje o gotowości do przesyłania właściwej wiadomości komunikatem DATA. Serwer odpowiada komunikatem 250 -ok-. 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, uencode lub MIME. * Po zakończeniu transmitowania wiadomości, klient wysyła polecenie QUIT kończące sesję SMTP. Serwer odpowiada komunikatem 221 -closing-, 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 Rys.: Droga e-maila od nadawcy do odbiorcy Źró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ą implementacja SMTP musi obsługiwać co najmniej osiem poleceń: POLECENIE OPIS HELO Inicjuje połączenie i identyfikuje nadawcę SMTP dla odbiorcy SMTP MAIL Inicjuje transakcję pocztową RCPT Identyfikuje pojedynczego adresata DATA Identyfikuje wiersze następujące po poleceniu jako dane pocztowe od nadawcy RSET Przerywa bieżącą transakcję pocztową SEND Dostarcza pocztę do terminala SOML Dostarcza pocztę do terminala. Jeżeli ta operacja się nie powiedzie, poczta zostanie dostarczona do skrzynki pocztowej SAML Dostarcza pocztę do terminala. Poczta jest również dostarczana do skrzynki pocztowej VRFY Weryfikuje nazwę użytkownika EXPN Rozwija listę dystrybucyjną HELP Sprawia, że odbiorca wysyła przydatne informacje NOOP Żąda, by odbiorca wysłał odpowiedź OK, ale w przeciwnym razie nie określa żadnych działań QUIT Żąda, by odbiorca wysłał odpowiedź OK, a następnie zamknął kanał transmisyjny TURN Żąda, by odbiorca przejął rolę nadawcy. Jeżeli zostanie otrzymana odpowiedź OK, to nadawca staje się odbiorcą Tabela 1. Polecenia SMTP 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. KOD ZNACZENIE 211 Odpowiedź 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 450 Żądane działanie poczty nie zostało podjęte: skrzynka pocztowa niedostępna 451 Żądane działanie zostało przerwane 452 Żądane działanie nie zostało podjęte: niewystarczająca ilość pamięci 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 550 Żądane działanie poczty nie zostało podjęte: skrzynka pocztowa niedostępna 551 Użytkownik nielokalny; spróbuj wykorzystać ścieżkę przekazywania 552 Żądane działanie poczty zostało przerwane: przekroczona alokacja pamięci 553 Żądane działanie nie zostało podjęte: niedozwolona nazwa skrzynki pocztowej 554 Transakcja nie powiodła się Tabela 2. Kody odpowiedzi SMTP 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 Rys.: DNS i e-mail Źró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. 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 Encoding 7bit, 8bit, binary, quoted-printable Charakteryzuje algorytm kodowania danych Tabela 3. Nagłówek MIME 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". NAZWA TYP OPIS tekst plain tekst niesformatowany richtext tekst z prostym formatowaniem (kursywa) enriched uproszczona i rozszerzona forma richtext multipart mixed wieloczłonowa treść, elementy przetwarzane są sekwencyjnie parallel wieloczłonowa treść, elementy przetwarzane są równolegle digest wyciąg z e-maila alternative wieloczłonowa treść o identycznej zawartości logicznej message rfc882 zawartością jest inna wiadomość rfc822 partial zawartością jest fragment e-maila external-body zawartością jest wskazówka do właściwej wiadomości application octet-stream dane binarne postscript dane postscriptowe image jpeg format iso 10918 gif compuserve graphic interchange format (gif) audio basic kodowany format 8-bitowy video mpeg format iso 11172 Tabela 4. Ważniejsze typy MIME 2.6. Zabezpieczenie sesji SMTP SMTP to protokół notorycznie nadużywany przez hakerów do wysyłania użytkownikom najróżniejszych niespodzianek. Łatwość 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 Internetu. 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ę z 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ą kwalifikowaną 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).