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:<Smith@ISI-VAXA.ARPA> R: 250 OK S: RCPT TO:<Jones@MIT-Multics.ARPA> R: 250 OK S: RCPT TO:<Green@MIT-Multics.ARPA> 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: alice@crepes.fr To: bob@hamburger.edu 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: alice@crepes.fr To: bob@hamburger.edu 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 File System Mail Server POP UA 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