Jak funkcjonuje e-mail?

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 mln skrzynek poczty elektronicznej, w roku 2005 tą formą komunikacji ma się już posługiwać ok. 1,2 mld użytkowników.

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 mln skrzynek poczty elektronicznej, w roku 2005 tą formą komunikacji ma się już posługiwać ok. 1,2 mld użytkowników.

A wszystko zaczęło się w roku 1971 w sposób, który trudno byłoby nazwać spektakularnym. Technik w BBN Ray Tomlinson przesłał e-mail między dwoma komputerami, które były połączone w sieci ARPAnet. Poszukując rzadko używanego znaku do wyróżnienia poczty elektronicznej, odkrył @ i w ten sposób ustanowił symbol nowej epoki.

Kolejnym krokiem milowym w historii poczty elektronicznej było opracowanie w roku 1981 przez Erica Allmana oprogramowania Sendmail. Umożliwiło ono po raz pierwszy wysyłanie za pomocą programu pocztowego wiadomości jednocześnie do wielu sieci.

Ważniejsze polecenia SMTP

Ważniejsze polecenia SMTP

Dzisiejszy sukces e-mailu 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 protokołach - SMTP do wysyłania oraz POP i IMAP do odbioru. Specyfikację każdego z nich opisano w jednym lub kilku RFC.

SMTP - Simple Mail Transfer Protocol

Zadaniem Simple Mail Transfer Protocol (SMTP) jest niezawodny i wydajny transport wiadomości. SMTP nie zależy 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 ( http://www.sendmail.org ), z którego skorzystamy również w trakcie naszych ćwiczeń w rozdziale 2.1. 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.

SMTP - kody odpowiedzi

SMTP - kody odpowiedzi

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, gdy wiadomość nie może być dostarczona, ale nie określa jednoznacznie, jak 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. Ponieważ bardzo niewiele serwerów obecnie je obsługuje, nie będziemy go bliżej omawiać. Zainteresowani mogą znaleźć więcej informacji w RFC 1891 i 1894.

SMTP - polecenia

Polecenia SMTP sterują przesyłaniem e-maili. Zgodnie ze specyfikacją, implementacja SMTP musi obsługiwać co najmniej osiem następujących poleceń:

SMTP - kody odpowiedzi

DNS i e-mail - po przekazaniu wiadomości do serwera SMTP tenostatni kontaktuje się z serwerem DNS, żeby zidentyfikować odbiorcę.

DNS i e-mail - po przekazaniu wiadomości do serwera SMTP tenostatni kontaktuje się z serwerem DNS, żeby zidentyfikować odbiorcę.

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.

W dalszej części opiszemy budowę e-mailu.

SMTP - koperta, nagłówek i treść

E-mail składa się z trzech części:

  • koperty, która zawiera dane nadawcy i odbiorcy wiadomości; koperta jest niezbędna do MTA;

  • nagłówka, w którym klient pocztowy zamieszcza dalsze informacje, jak identyfikator klienta czy wiadomości;

  • treści, czyli właściwego tekstu wiadomości (zgodnie z RFC 822 ma ona postać czystego tekstu ASCII).
W trakcie wysyłania e-mailu za pomocą polecenia DATA klient pocztowy przesyła nagłówek oraz treść oddzieloną od niego jednym pustym wierszem. Żaden przesyłany wiersz nie może być dłuższy niż 1000 bajtów.

Oto przykładowy nagłówek:

Return-Path: <ania@server1.office>

Received: from localhost by test.idg.pl (SuSE Linux 8.11.1-0.5) id i1LCeLp02526;

Sat, 21 Feb 2004 13:40:21 +0100

Content-Type: text/plain;

charset="iso-8859-15"

From: Ania Malinowska <ania@server1.office>

To: ania@test.idg.pl

Subject: Test

Date: Sat, 21 Feb 2004 13:40:20 +0100

X-Mailer: KMail [version 1.2]

Cc: kasia@test.idg.pl

MIME-Version: 1.0

Message-Id: <04022113402000.02518@test>

Content-Transfer-Encoding: 8bit

Status: R

X-Status: N

Ważniejsze typy MIME

Ważniejsze typy MIME

W wierszu Received wpisywane są wszystkie serwery SMTP, przez które e-mail przeszedł na drodze od nadawcy do odbiorcy. Każda wiadomość otrzymuje jednoznaczny identyfikator, Message-ID. Jest to najczęściej kombinacja cyfr i liczb, po której następuje adres hosta nadawcy. Wiersze rozpoczynające się od X to z reguły informacje dodane przez klienta pocztowego, które nie są niezbędne do przesłania wiadomości. Wiersze Mime-Version, Content-Type oraz Content-Transfer-Encoding charakteryzują e-mail zgodny z MIME. Pozostałe, jak Date czy Subject, nie wymagają oddzielnych objaśnień.

SMTP - przykład wysyłania e-mailu

W naszym przykładzie wiadomość licząca trzy wiersze wysyłana jest do dwóch odbiorców:

S: 220 test.idg.pl SMTP server ready

C: HELO abc.idg.pl.

S: 250 test.idg.pl Hello abc.idg.pl [192.168.0.228], pleased to meet you

C: MAIL From:<admin@abc.idg.pl>

S: 250 2.1.0 <admin@abc.idg.pl>... Sender ok

C: R

CPT To:<ania@test.idg.pl>

S: 250 2.1.5 <ania@test.idg.pl>... Recipient ok

C: RCPT To:<kasia@test.idg.pl>

S: 250 2.1.5 <kasia@test.idg.pl>... Recipient ok

C: DATA

S: 354 Enter mail, end with "." on a line by itself

C: Czesc Ania, czesc Kasia!

C: To jest mail przeslany przez SMTP

C: Admin

C: .

S: 250 2.0.0 i1LCRWD02093 Message accepted for delivery

C: QUIT

S: 221 2.0.0 test.idg.pl closing connection

Do wysłania wiadomości potrzeba pięciu poleceń. Klient pocztowy po nawiązaniu połączenia TCP z serwerem SMTP czeka na tekst powitalny z kodem odpowiedzi 220. Następnie identyfikuje się poleceniem HELO, a jako argument przesyła Fully Qualified Domain Name swojego hosta, w tym przypadku abc.idg.pl. Polecenie MAIL identyfikuje twórcę wiadomości. Polecenie RCPT podaje odbiorcę. Zawartość wiadomości klient przesyła poleceniem DATA. Końcem wiadomości jest wiersz zawierający tylko kropkę. QUIT kończy połączenie, a serwer wysyła wiadomość.


Zobacz również