Poczta elektroniczna
Transkrypt
Poczta elektroniczna
Poczta elektroniczna Podstawowe protokoły: SMTP - Simple Mail Transfer Protocol - RFC 821 POP - Post Office Protocol - RFC 1939 IMAP - Interactive Message Acces Protocol – RFC 2060 RFC 822 Standard for the Format of ARPA Internet Text Messages RFCs 1521, 1522 Mime 1 Typowe środowisko poczty elektronicznej 2 Terminologia User Agent: aplikacja pocztowa końcowego użytkownika; klient poczty elektronicznej Message Transfer Agent: odpowiedzialny za komunikację ze zdalnymi hostami oraz transmisje i otrzymywanie email-i Mail Exchanger: host odpowiedzialny za pocztę wyslaną na domenę 3 SMTP Używany do wymiany komunikatów pomiędzy klientem pocztowym i serwerem pocztowym oraz serwerami pocztowymi (Message Transfer Agents). MTA SMTP MTA SMTP MTA File System UA UA 4 Komendy SMTP Komendy SMTP definiują transfer pocztowy lub funkcje systemu pocztowego żądane przez użytkownika. Komendy SMTP są ciągami znaków zakończonymi <CRLF>. Każda komenda związana jest z pewną odpowiedzią, reprezentowaną przez kod numeryczny. Komendy i odpowiedzi nie są „case sensitive” (nie dotyczy to nazw skrzynek pocztowych). Przedstawimy teraz komendy SMTP, a następnie możliwe odpowiedzi. 5 Komendy SMTP HELO argument Komenda ma na celu identyfikację nadawcy SMTP dla odbiorcy SMTP. Pole argument zawiera nazwę hosta nadawcy. Odbiorca SMTP wysyłając odpowiedź identyfikuje siebie dla nadawcy. Komenda ta i odpowiedź OK. oznacza że nadawca i odbiorca zainicjowali połączenie, wyczyścili tablice stanu oraz bufory. 6 HELO 7 Komendy SMTP MAIL FROM: argument Komenda ta inicjuje transakcję pocztową, w której dane będą dostarczone do jednej lub kilku skrzynek pocztowych. Argument zawiera ścieżkę nadawcy („reverse-path”). Ścieżka nadawcy składa się z listy hostów oraz skrzynki nadawcy. Lista zawiera informacje o hostach, przez które przeszła wiadomość. Jest używana dla odesłania wiadomości, która nie może być dostarczona. Każdy „relay host” dodaje siebie na początek listy. 8 MAIL from: 9 Komendy SMTP RCPT TO: argument Komenda ta jest używana do identyfikacji indywidualnego odbiorcy wiadomości; wielu odbiorców uzyskujemy przez wielokrotne użycie tej komendy. Argumentem jest ścieżka docelowa („forward-path” składająca się z opcjonalnej listy hostów i wymaganej skrzynki docelowej. Lista hostów jest wyznacznikiem trasy i oznacza że wiadomość musi być przekazana do następnego hosta na liście. Host przekazujący usuwa siebie z początku listy i umieszcza na początku „reverse-path”. Kiedy wiadomość osiągnie przeznaczenie odbiorca SMTP umieszcza ją w odpowiedniej skrzynce pocztowej. 10 RCPT TO: 11 Komendy SMTP DATA Odbiorca traktuje linie występujące za tą komendą jako wiadomość od nadawcy. Dane mogą zawierać znaki z alfabetu ASCII. Dane są zakończone przez linię składająca się tylko z kropki tj. przez sekwencję znaków "<CRLF>.<CRLF>„. Odbiór zakończenia wymaga, aby odbiorca opracował otrzymane informacje: „reverse-path”, „forward-path”, dane. Jeżeli opracowanie zakończy się sukcesem odbiorca musi wysłać kod OK, w przeciwnym razie wysyła komunikat o błędzie. 12 DATA 13 Komendy SMTP RSET Komenda ta przerywa aktualną transakcję pocztową. Adresy nadawców, odbiorców i dane są porzucane – wszystkie tablice stanów i bufory są czyszczone. NOOP Komenda ta nie wpływa na parametry wcześniej wydanych komend tj. bufory „reverse-path”, „forward-path” i danych. Obiorca wysyła odpowiedź OK. Wykorzystywana do sprawdzenia połączenia. QUIT Komenda określa, że odbiorca musi wysłać odpowiedź OK i następnie zamykany jest kanał transmisyjny. 14 Przykład przerwanej sesji – wielu odbiorców R: 220 MIT-Multics.ARPA Simple Mail Transfer Service Ready S: HELO ISI-VAXA.ARPA R: 250 MIT-Multics.ARPA S: MAIL FROM:<[email protected]> R: 250 OK S: RCPT TO:<[email protected]> R: 250 OK S: RCPT TO:<[email protected]> R: 550 No such user here S: RSET R: 250 OK S: QUIT R: 221 MIT-Multics.ARPA Service closing transmission channel 15 Komunikaty odpowiedzi Serwer dla każdej otrzymanej komendy generuje i wysyła odpowiedź – 3 cyfrowy kod ze słownym opisem: 16 Komunikaty odpowiedzi Każda cyfra kodu ma specjalne znaczenie: pierwsza określa status komunikatu: 1-3 – sukces 4 - błąd tymczasowy 5 - błąd druga umieszcza odpowiedź w określonej kategorii 0 - składnia (błąd składni) 1 - informacja (odpowiedź jest informacją:status, help) 2 - odpwiedż związana z obsługą kanału transmisyjnego 3,4 – nieokreślone 5 – odpowiedź systemu plikowego na żadanie transferu lub konkretnej operacji pocztowej trzecia cyfra dokładniej określa komunikat 17 Komunikaty odpowiedzi Możliwe sekwencje komend i odpowiedzi: CONNECTION ESTABLISHMENT S:220 <domain> Service ready E: 421 <domain> Service not available, closing transmission channel HELO S: 250 Requested mail action okay, completed E: 500 Syntax error, command unrecognized 501 Syntax error in parameters or arguments 504 Command parameter not implemented 421 <domain> Service not available, closing transmission channel 18 Komunikaty odpowiedzi MAIL S: 250 Requested mail action okay, completed E: 552 Requested mail action aborted: exceeded storage allocation 451 Requested action aborted: local error in processing 452 Requested action not taken: insufficient system storage 500 Syntax error, command unrecognized 501 Syntax error in parameters or arguments 421 <domain> Service not available, closing transmission channel 19 Komunikaty odpowiedzi RCPT S: 250 Requested mail action okay, completed 251 User not local; will forward to <forward-path> E: 550 Requested action not taken: mailbox unavailable [E.g., mailbox not found, no access] 551 User not local; please try <forward-path> 552 Requested mail action aborted: exceeded storage allocation 553 Requested action not taken: mailbox name not allowed 450 Requested mail action not taken: mailbox unavailable [E.g., mailbox busy] 451 Requested action aborted: local error in processing 452 Requested action not taken: insufficient system storage 500 Syntax error, command unrecognized 501 Syntax error in parameters or arguments 503 Bad sequence of commands 421 domain> Service not available, closing transmission channel 20 Komunikaty odpowiedzi DATA I: 354 Start mail input; end with <CRLF>.<CRLF> S: 250 E: 552, 554, 451, 452 F: 451, 554, 500, 501, 503, 421 RSET S: 250 E: 500, 501, 504, 421 NOOP S: 250 E: 500, 421 QUIT S: 221 <domain> Service closing transmission channel E: 500 21 Format danych – RFC 822 SMTP dopuszcza tylko dane 128 znakowego alfabetu ASCII (7-mio bitowe). Dane binarne muszą być przekodowane np. używając algorytmu Base64 22 Wiadomość Wysyłany komunikat składa się z nagłówka oraz treści Nagłówek ma postać: Pole: wartość Obowiązkowe są pola: From: Date: i przynajmniej jedno z: To: Cc: Bcc: 23 Wiadomość Przykładowe opcjonalne pola: Sender: Reply-To: Subject: Priority: Część nagłówka jest tworzona przez UA, część zaś dodawana automatycznie przez MTA np. pole: Received Treść wiadomości jest oddzielona od nagłówka pustą linią. 24 MIME (Multipurpose Internet Mail Extensions) – RFC 2045, 2056 MIME definiuje poprzez odpowiednie kodowanie definiuje rozszerzenie wiadomości SMTP dla obsługi binarnych załączników. MIME dołącza do wiadomości dodatkowe nagłówki, które opisują sposób kodowania, poszczególne części, z których składa się wiadomość, typ załączników (pozwala klientowi odpowiednio je zinterpretować i przedstawić). 25 MIME From: [email protected] To: [email protected] Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data 26 MIME MIME types Content-Type: type/subtype; parameters Text example subtypes: plain, html Image example subtypes: jpeg, gif Audio exampe subtypes: basic (8-bit mu-law encoded), 32kadpcm (32kbps coding) Video example subtypes: mpeg, quicktime Application other data that must be processed by reader before “viewable” example subtypes: msword, octet-stream 27 MIME – wiadomość z załącznikami Multipart Type From: [email protected] To: [email protected] Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=98766789 --98766789 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain Dear Bob, Please find a picture of a crepe. --98766789 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data --98766789-- 28 Protokoły transferu poczty na stację roboczą POP 3 Post Office Protocol [RFC 1939] Autoryzacja Transfer poczty z serwera na stację roboczą Usuwanie poczty z serwera IMAP Internet Mail Access Protocol [RFC 1730] Autoryzacja Operacje na poczcie na serwerze lub transfer poczty na stację roboczą i synchronizcja operacji 29 POP – Post Office Protocol Mail Server POP UA File System Używany do transferu poczty na stację roboczą Trzy fazy działania: Autoryzacji Transakcji Uaktualnienia 30 Komendy POP3 Faza autoryzacji: USER nazwa użytkownika PASS hasło Faza transakcji: STAT Informuje nas o liczbie wiadomośći i ich rozmiarze LIST [nr] - Informuje nas o rozmiarze konkrtenej wiadomośći lib daje listę zawierającą numer wiadomości i jej rozmiar RETR nr - pobiera wiadomość 31 Komendy POP3 DELE nr – zaznacza wiadomość do usunięcia NOOP - testuje połączenie Faza uaktualnienia: RSET - odznacza zaznaczone do usunięcia wiadomośći i kończy sesję. QUIT - usuwa zanaczone wiadomości i kończy sesję. 32 Sesja POP3 S: +OK POP3 server ready C: user alice S: +OK C: pass hungry S: +OK user successfully logged on C: list S: 1 498 S: 2 912 S: . C: retr 1 S: <message 1 contents> S: . C: dele 1 C: retr 2 S: <message 2 contents> S: . C: dele 2 C: quit S: +OK POP3 server signing off 33 Komendy opcjonalne TOP – wysyła linie nagłówka wiadomości APOP - alternatywna autentyfikacja 34 IMAP Zarządzanie wiadomościami na serwerze Współpraca z wieloma serwerami Silniejsza autentyfikacja np. w oparciu o Kerberos 35