LABORATORIUM SIECI KOMPUTEROWYCH
TEMAT:
P R O T O K Ó Ł S M T P.
WYKONAŁ: GRUPA:
Matacz Robert ED 7.4
.
SMTP
SMTP (Simple Mail Transfer Protocol) jest jednym z protokołów zestawu TCP/IP.
Architektura TCP/IP w warstwie aplikacyjnej jest niezależna od platformy sprzętowej i wykorzystuje technologię klient-serwer. Klient inicjuje (wywołuje) aplikacje, a serwer odpowiada na żądania klientów. Realizacją tej koncepcji są podstawowe aplikacje TCP/IP:
TELNET - aplikacja umożliwiająca pracę zdalną,
FTP - aplikacja umożliwiająca transfer plikw,
SMTP - aplikacja obsługująca pocztę elektroniczną.
SMTP jest jest mechanizmem umożliwiającym przesyłanie poczty elektronicznej w sieci.
Pojawiają się tutaj pojęcia nadawcy i odbiorcy, które są analogiczne do klienta i serwera dla TELNETU-u i FTP.
Pomysł i sposób funkcjonowania oraz typową strukturę poczty elektronicznej pokazuje rysunek:
Na rysunku przedstawione są dwa komputery połączone w sieci. Na obu komputerach są zainstalowane te same komponenty poczty elektronicznej. Komputer A wysyła, a komputer B odbiera wiadomość.
Po wywołaniu programu obsługi poczty wystąpią następujące zdarzenia:
-Elementem uruchamiającym aplikację pocztową jest specjalny program pośredniczącynazywany User Agent. Jest on wywoływany poleceniem z poziomu systemu operacyjnego i uaktywnia edytor umożliwiający użytkownikowi zredagowanie wiadomoścido wysłania.
- Po utworzeniu wiadomości jest ona przekazywana kolejnemu programowi pośredniczącemu nazwanemu Mesage Transwer Agent (MTA). Program ten odpowiada za nawiązanie połączenia z innymi komputerami i rozesłanie wiadomości
-Na komputerze adresata (odbiorcy wiadomości) działa inny program MTA, który
umieszcza odebraną wiadomość w kolejce odebranych wiadomości.
-Adresat może przejrzeć nadesłane wiadomości po uruchomieniu programu User Agent na swoim komputerze.
Model komunikacji, wykorzystywany przez SMTP
Na samym początku wysyłający pocztę w systemie SMTP ustala dupleksowe połączenie z odbiorcą w systemie SMTP. Odbiorca może być ostatecznym miejscem przeznaczenia, lub też punktem pośrednim. Wysyłający generuje komendy i wysyła je do odbiorcy. Odbiorca wysyła odpowiedzi na dane komendy. Kiedy kanal transmisyjny jest już ustalony, wysyłający przesyła komendę MAIL, zawierającą informację o wysyłającym pocztę. Jeżeli odbiorca może zaakceptować pocztę, odpowiada OK. Nastepnie wysyłający przesyła komendę RPCT, identyfikując ostatecznego adresata (np. czyjąś skrzynkę pocztową). Jeżeli odbiorca może zaakceptować pocztę do danego adresata (do danej skrzynki), odsyła odpowiedź OK. Jezeli nie - jest wysyłana odpowiedź negatywna. Wysyłający i odbierający mogą negocjować w sprawie wielu adresatów naraz. Kiedy wszystko zostanie ustalone, wysyłający przesyła właściwą wiadomość zachowując odpowiednią jej składnię. Gdy odbierający poprawnie odbierze dane dotyczące poczty, odpowiada OK. Na końcu nadawca i odbiorca rozłączają się.
Opis komend SMTP
HELLO (HELO) - komenda wysyłana po to, by wysyłający upewnił się że komunikuje się z właściwymi odbiorcami. Argumentem tej komendy jest adres wysyłającego. Odpowiadający identyfikuje się, zgadzając się na połączenie. Umożliwia odbiorcy identyfikację nadawcy.
Przykład użycia komendy HELLO:
Otwieranie połączenia:
Oznaczenia: N(nadawca) - wysyłający, O (odbiorca) - odbierający ;
O: 220 BBN-UNIX.ARPA Simple Mail Tansfer Service Ready
N: HELO USC-ISIF.ARPA
O: 250 BBN-UNIX.ARPA //standardowa odpowiedź OK
MAIL (MAIL) - komenda ta jest używana do zainicjowania wysyłania właściwej wiadomości do jednej lub większej ilości skrzynek pocztowych. Argument komendy zawiera adres zwrotny, którym może być skrzynka pocztowa wysyłającego lub serwer. Taki adres jest potrzebny, na wypadek gdyby wiadomość nie została dostarczona do odbiorcy.
RECIPIENT (RCPT) - komenda ta jest używana do identyfikowania poszczególnych odbiorców (skrzynek pocztowych), do których ma być dostarczana poczta. Wielu otrzymujących pocztę może być zidentyfikowanych przez wielokrotne użycie tej komendy. Argument komendy zawiera adres skrzynki pocztowej, lub serwera.
DATA (DATA) - po tej komendzie nastepuje wysyłanie właściwej wiadomości. Wiadomości te muszą zawierać znaki ASCII o numerach nie większych niż 128 i kończyć się znakami: "<CRLF>.<CRLF>". Jeżeli cały proces przesyłania wiadomości odbył się poprawnie, odbierający wysyła OK.
Przykład użycia komend: MAIL i RPCT:
Przykład ten pokazuje wysyłanie poczty przez użytkownika Smith z jednostki Alpha.ARPA do użytkowników: Jones, Green, Brown na serwerze Beta.ARPA.
Oznaczenia: N(nadawca) - wysyłający, O (odbiorca) - odbierający ;
N: MAIL FROM:<Smith@Alpha.ARPA>
O: 250 OK
N: RPCT TO:<Jones@Beta.ARPA>
O: 250 OK
N: RPCT TO:<Green@Beta.ARPA>
O: 550 No such user here //Pan Green nie ma skrzynki na serwerze, dlatego
//wiadomosc do niego nie zostala przyjeta
N: RPCT TO:<Brown@Beta.ARPA>
O: 250 OK
N: DATA
O: 354 Start mail input; end with <CRLF>.<CRLF>
N: Ble ble ble...
N: ...etc.etc.etc.
N: <CRLF>.<CRLF>
O: 250 OK
SEND (SEND) - komenda wykorzystywana do zainicjowania wysyłania właściwej wiadomości do jednej lub większej ilości terminali. Argument komendy zawiera adres zwrotny, którym może być skrzynka pocztowa wysyłającego lub serwer. Taki adres jest potrzebny, na wypadek gdyby wiadomość nie została dostarczona do odbiorcy.
SEND OR MAIL (SOML) - komenda wykorzystywana do zainicjowania wysyłania właściwej wiadomości do jednej lub większej ilości terminali lub skrzynek pocztowych. Argument komendy zawiera adres zwrotny, którym może być skrzynka pocztowa wysyłającego lub serwer. Taki adres jest potrzebny, na wypadek gdyby wiadomość nie została dostarczona do odbiorcy.
SEND AND MAIL (SAML) - komenda wykorzystywana do zainicjowania wysyłania właściwej wiadomości do jednej lub większej ilości terminali lub skrzynek pocztowych. Argument komendy zawiera adres zwrotny, którym może być skrzynka pocztowa wysyłającego lub serwer. Taki adres jest potrzebny, na wypadek gdyby wiadomość nie została dostarczona do odbiorcy.
RESET (RESET) - komenda ta służy do zerwania procesu przesyłania wiadomości. Odpowiedzią na tą komendę jest OK.
VERIFY (VRFY) - komenda ta służy do sprawdzenia, czy istnieje taki adresat (skrzynka pocztowa).
EXPAND (EXPN) - komenda ta służy do sprawdzenia, czy istnieje taka lista użytkowników.
Przykład użycia komend: VERIFY, EXPAND
VRFY
Oznaczenia: N(nadawca) - wysyłający, O (odbiorca) - odbierający ;
N: VRFY Smith
O: 250 Fred Smith <Smith@USC-ISIF.ARPA> lub
N: VRFY Jones
O: 551 User not local
EXPN
Oznaczenia: N(nadawca) - wysyłający, O (odbiorca) - odbierający ;
N: EXPN Example-People
O: 250-Jon Postel <Postel@USC-ISIF.ARPA>
O: 250-Fred Fonebone <Fonebone-@USC-ISIQ.ARPA> lub
N: EXPN Example-People
O: 550 Access Denied to You
NOOP (NOOP) - komenda ta nie posiada żadnych parametrów, ani nie ma żadnego efektu w działaniu.
QUIT (QUIT) - komenda ta wymusza na odpowiadającym wysłanie odpowiedzi OK i zamknięcie kanału transmisji.
Przykład użycia komendy QUIT:
N: QUIT
O: 221 BBN-UNIX.ARPA Service closing transmition channel
Wybrane kody odpowiedzi na komendy SMTP:
* 500 Komenda nie rozpoznana;
501 Blad parametru lub argumentu;
502 Komanda nie zaimplementowana;
220 Serwer gotowy;
221 Serwer zamyka kanal transmisji;
421 Serwer nieosiagalny;
250 Pozytywana odpowiedz na komende (OK);
251 Uzytkownik nie jest lokalny;
552 Przerwane wykonywanie komendy;
Rozpoczecie przyjmowania komend po skonczonym procesie
354 przyjmowania danych
(Po znaku "<CRLF>. <CRLF>");
254 Transmisja przerwana;
Przykłady:
Chcąc sprawdzić działanie przykładowych sekwencji komend możemy wejść przez telnet ( port 25 ) na łącze pocztowe któregoś z serwerów unixowych .
Przykładowe sekwencje komend przy wysyłaniu poczty:
Przykład 1.
O: 220 USC-ISIE.ARPA Simple Mail Transfer
N: HELO SU-SCORE.ARPA
O: 250 USC-ISIE.ARPA
N: RCPT TO:<Account.Person@SU-SCORE.ARPA>
O: 250 OK
N: RCPT TO:<@USC-ISIE.ARPA:ABC@IT-MC.ARPA>
O: 250 OK
N: RCPT TO:<@USC-ISIE.ARPA:Fonebone@USC-ISIQA.ARPA>
O: 250 OK
N: RCPT TO:<@USC_ISIE.ARPA:XYZ@MIT-AI.ARPA>
O: 250 OK
N: DATA
O: 354 Start mail input; end with <CRLF>.<CRLF>
N: Ble ble ble
N: ... etc ... etc. etc.
N: .
O: 250 OK
N: QUIT
O: 221 USC-ISIE.ARPA Service closing transmition channel
W przykładzie tym wysyłamy jednocześnie informacje do kilku osób.
*************************************
Przykład 2.
O: 220 BERKLEY.ARPA Simple Mail Transfer Service Ready
N: HELO USC-ISIF.ARPA
O: 250 BERKLEY.ARPA
N: MAIL FROM: <Postel@USC-ISIF.ARPA>
O: 250 OK
N: RCPT TO: <fabry@BERKLAY.ARPA>
O: 250 OK
N: RCPT TO: <eric@BERKLEY.ARPA>
O: 552 Recipient storage full, tyr again in another transaction
N: DATA
O: 354 Start mail input; end with <CRLF>.<CRLF>
N: Received: form MIT-AI.ARPA by USC-ISIF.ARPA;
2 Nov 81 22:40:10 UT
N: Date: 2 Nov 81 22:33:44
N: From: Jonny Postel <Postel@USC-ISIF.ARPA>
N: Subject: The next meeting of the Board
N: TO: fabry@BERKLEY.ARPA
N:
N: The next meeting of the Board directors will be on Tuesday.
N: Jonny
N: .
N: 250 OK
N: MAIL FROM: <Postel@USC-ISIF.ARPA>
O: 250 OK
N: RCPT TO: <eric@BERKLEY.ARPA>
O: 250 OK
N: DATA
O: 354 Start mail input; end with <CRLF>.<CRLF>
N: Ble Ble Ble
N: .....etc.......etc. etc.
N:.
O: 250 OK
N: QUIT
O: 221 BERKLEY.ARPHA Service closing transmition channel
W podanym przykładzie próbujemy wysłać pocztę do dwóch skrzynak pocztowych na raz, z czego jedna jest nieosiągalna w danej chwili. Dlatego też wysyłamy wiadomość najpierw do tej skrzynki, do której się uda. Następnie ponownie sprawdzamy, czy druga skrzynka jest osiągalna i gdy jest, wysyłamy do niej tą samą wiadomość.
***************************************
Przykład 3.
O: 220 SU-SCORE.ARPA Simple mail Transfer Service Ready
N: HELLO MIT-MC.ARPA
O: 250 SU-SCORE.ARPA
N: VRFY Crispin
R: 250 Mark Crispin <Admin.MRC@SU-SCORE.ARPA>
N: SOML FROM: <EAK@MIT-MC.ARPA>
O: 250 OK
N: RCPT TO: <Admin.MRC@SU-SCORE.ARPA>
O: User not active now, so will do mail.
N: DATA
O: 354 Start mail input; end with <CRLF>.<CRLF>
N: ble ble
N: ... etc... etc. etc.
N: .
O: 250 OK
N: QUIT
O: 221 SU-SCORE.ARPA Service closing transmition channel
W przykładzie tym sprawdzamy najpierw, czy adresat ma skrzynkę na danym serwerze, jeśli ma to otrzymujemy jej adres. Następnie wysyłamy mu wiadomość.
********************************************
Literatura wykorzystana w pracy:
1. Ed Taylor - „TCP/IP - bez tajemnic”
2. Wood L. „Poczta elektroniczna - modemy i programy telekomunikacyjne”.
Literatura uzupelniająca:
1. A. Trykozko, M. Jarski „Poczta elektroniczna”
2. Praca zbiorowa „EFF'u - Przewodnik po internecie”
tytuł oryginału „EFF's - Guide to the Internet”
3.Wolisz A. „Podstawy lokalnych sieci komputerowych” t.1 , t.2
4. Schneier B. „Ochrona poczty elektronicznej” .