POP, IMAP

Transkrypt

POP, IMAP
Sieci Komputerowe
Protokół POP3
Post Office Protocol version 3
Protokół IMAP4
Internet Mail Access Protocol version 4
dr Zbigniew Lipiński
Instytut Matematyki i Informatyki
ul. Oleska 48
50-204 Opole
[email protected]
POP3. Wstęp
POP3, (ang.) Post Office Protocol version 3.
RFC 1081, M.T. Rose, Post Office Protocol: Version 3, November 1988, Obsoleted-By RFC1225.
RFC 1225, M.T. Rose Post Office Protocol: Version 3, May 1991, Obsoletes RFC 1081, Obsoleted-By RFC 1460
RFC 1460, M. Rose, Post Office Protocol - Version 3, June 1993, Obsoletes RFC 1225, Obsoleted-By RFC 1725
RFC 1725, J. Myers, M. Rose, Post Office Protocol - Version 3, November 1994, Obsoletes RFC 1460, Obsoleted-By RFC 1939
RFC 1939,J. Myers, M. Rose, Post Office Protocol - Version 3, May 1996, Obsoletes RFC 1725, Updated-By RFC 1957,
RFC 2449
RFC 1957, R. Nelson, Some Observations on Implementations of the Post Office Protocol (POP3), June 1996, Updates RFC 1939, Status: INFO.
RFC 2449, R. Gellens, C. Newman, L. Lundblade, POP3 Extension Mechanism, November 1998, Updates RFC 1939, Updated-By RFC 5034.
Protokół słuŜący do odbierania wiadomości email ze skrzynek pocztowych (ang. mailboxes) znajdujących się na
serwerach POP3.
Protokół POP3 jest protokołem warstwy Aplikacji modelu OSI.
W warstwie transportowej POP3 wykorzystuje protokół TCP, port 110,
tzn. port 110 jest portem nasłuchującym serwera POP3.
Protokół POP3 został zaprojektowany tak, aby klient POP mógł pracować w trybie off-line.
2
Struktura wiadomości POP3
Komunikaty POP mają strukturę wiadomości tekstowej w formacie 'Internet text messages‘, RFC 5322.
RFC 5322, P. Resnick, Internet Message Format, 2008, Obsoletes RFC 2822, Status: DRAFT STANDARD
Przykładowe elementy standardu 'Internet text messages':
• Komunikat jest ciągiem znaków podzielonym na linie.
• KaŜda linia oddzielna jest dwoma znakami:
carriage return (CR), kod ASCII 13 i
line feed (LF), kod ASCII 10, (CR + LR ozn. CRLF).
• Wiadomość składa sie z nagłówka (header) i opcjonalnie z danych (body).
• Długość linii tekstu nie moŜe być dłuŜsza niŜ 998 znaków i nie powinna być krótsza niŜ 78 znaków.
3
Obiór wiadomości z serwera POP3
Klient POP3 moŜe połączyć sie z serwerem i pobrać wszystkie wiadomości z katalogu Inbox serwera.
Sesja między klientem a serwerem POP podzielona jest na stany:
•
stan uwierzytelnienia i autoryzacji (AUTHORIZATION state),
•
stan transakcji (TRANSACTION state),
•
stan uaktualniania (UPDATE state).
Po nawiązaniu połączenia TCP klienta z serwerem POP3, następuje rozpoczęcie sesji POP.
Proces odbioru poczty z serwera POP:
• nawiązanie połączenia klienta z serwerem (budowa połączenia TCP),
• serwer wysyła sygnał gotowości (wiadomość 'greeting‘),
• identyfikacja klienta na serwerze (uwierzytelnienie), przyznanie praw dostępu (autoryzacja),
• pytanie o liczbę wiadomości do odbioru (stan transakcji),
• wyznaczenie wielkości kaŜdej wiadomości do odbioru (stan transakcji),
• odbiór wiadomości (stan transakcji),
• uaktualnianie stanu konta pocztowego po otrzymaniu komendy QUIT od klienta (stan aktualniania),
• zamknięcie sesji przez serwer wiadomością 'goodbye', (stan uaktualniania).
4
5
Przykład sesji POP3
S: <wait for connection on TCP port 110>
...
C: <open connection>
S: +OK POP3 server ready
<[email protected]>
C: APOP mrose
c4c9334bac560ecc979e58001b3e22fb
S: +OK mrose's maildrop has 2 messages
(320 octets)
C: STAT
S: +OK 2 320
C: LIST
S: +OK 2 messages (320 octets)
S: 1 120
S: 2 200
S: .
C: RETR 1
S: +OK 120 octets
S: <the POP3 server sends message 1>
S: .
C: DELE 1
S: +OK message 1 deleted
C: RETR 2
S: +OK 200 octets
S: <the POP3 server sends message 2>
S: .
C: DELE 2
S: +OK message 2 deleted
C: QUIT
S: +OK deley POP3 server signing off (maildrop empty)
C: <close connection>
S: <wait for next connection>
6
Komendy klienta POP3 – stan uwierzytelnienia
Komendy klienta POP3 w stanie uwierzytelnienia:
USER name
- nazwa uŜytkownika.
PASS password
- hasło uŜytkownika (string).
QUIT
- koniec sesji, brak argumentów.
Stan uwierzytelnienia sesji POP zaczyna się gdy serwer potwierdzi gotowość odbioru wiadomości:
S: +OK POP3 server ready
W stanie uwierzytelnienia sesji klient wysyła do serwera nazwę skrzynki i hasło.
Przykład: UŜycie komendy USER.
C: USER frated
S: -ERR sorry, no mailbox for frated here
Przykład: UŜycie komendy USER i PASS.
C: USER mrose
S: +OK mrose is a real hoopy frood
C: PASS secret
S: +OK mrose's maildrop has 2 messages (320 octets)
Przykład: UŜycie komendy PASS.
C: PASS secret
S: -ERR maildrop already locked
7
Komendy klienta POP3 – stan uwierzytelnienia
Przed przejściem do stanu transakcji serwer POP blokuje skrzynkę do wyłącznego uŜycia przez
klienta POP w otwartej sesji.
Do momentu przejścia do stanu uaktualniania nie jest moŜliwa modyfikacja lub usunięcie wiadomości
ze skrzynki.
Po potwierdzeniu przez serwer blokady skrzynki komenda +OK, sesja przechodzi w stan transakcji.
8
Komendy klienta POP3 – stan transakcji
Komendy klienta POP w stanie transakcji:
STAT
Pytanie o widomości, brak argumentów.
Składania: STAT
Odpowiedź: +OK liczbaMaili wielkoscMaili
LIST
Pytanie o wszystkie wiadomości lub wiadomości o określonym numerze maila (message-id).
Składania: LIST [message-id]
Odpowiedź: +OK liczbaMaili wielkoscMaili
+OK kolejnyNumerMaila wielkoscMailia
RETR
Polecenie wysłania wiadomości o danym identyfikatorze (id).
Składania: RETR message-id
Odpowiedź: +OK wielkoscMailia, przesyłane są kolejno pakiety z danymi.
DELE
Polecenie usunięcia wiadomości, serwer zaznacza wiadomość jako: 'do usunięcia'. Usunięcie następuje w
stanie uaktualniania.
Składania: DELE message-id
Odpowiedź: +OK message deleted lub -ERR no such message
NOOP
Oznacza brak działania serwera, brak argumentów. Po tej komendzie serwer POP3 zwraca komunikat: +OK.
Składania: NOOP
Odpowiedź: +OK
RSET
Brak argumentów, serwer usuwa status wiadomości 'do usunięcia', ostatnia wiadomość uzyskuje numer 0.
Składania: RSET
Odpowiedz: +OK liczbaWiadomosci.
LAST
Brak argumentów, serwer zwraca numer ostatniej wiadomości.
Składania: LAST
Odpowiedz: +OK nn
9
Komendy klienta POP3 – stan transakcji
Przykład: UŜycie komendy STAT.
C: STAT
S: +OK 2 320
Przykład: UŜycie komendy LIST.
C: LIST
S: +OK 2 messages (320 octets)
S: 1 120
S: 2 200
S: .
Przykład: UŜycie komendy DELE.
C: DELE 1
S: +OK message 1 deleted
...
C: DELE 2
S: -ERR message 2 already deleted
Przykład: UŜycie komendy RSET.
C: RSET
S: +OK maildrop has 2 messages (320 octets)
Przykład: UŜycie komendy LIST, identyfikator wiadomości id = 2.
C: LIST 2
S: +OK 2 200
C: LIST 3
S: -ERR no such message, only 2 messages in maildrop
Przykład: UŜycie komendy RETR.
C: RETR 1
S: +OK 120 octets
S: <serwer POP3 wysyła kolejny pakiety z danymi maila >
S: .
10
Komendy klienta POP3 – stan uaktualniania
Komendy klienta POP w stanie uaktualniania:
QUIT
serwer usuwa odebrane wiadomości przez klienta.
Składania: QUIT
Odpowiedz: +OK
11
Opcjonalne komendy klienta POP3
Komendy opcjonalne w stanie uwierzytelnienia:
APOP
uwierzytelnienie bez wysyłania hasła, serwer przy powitaniu wysyła znacznik czasu (timestamp),
np. <process-ID.clock@nazwa_serweraPOP>, klient POP wysyła user_id i liczbę 'digest‘ wyliczoną ze znacznik
czasu algorytmem MD5).
Składania: C: APOP nazwaSkrzynki digest
Odpowiedź: S: +OK maildrop locked and ready
lub -ERR permission denied
Komendy opcjonalne w stanie transakcji:
TOP
serwer zwraca nagłówek wiadomości i liczbę linii wiadomości.
Składania: TOP message-id n
Odpowiedź: +OK,
kolejne wiadomości zawierają: nagłówek, pusta linia, n linii wiadomości, lub -ERR
UIDL
Komenda 'unique-id listing'.
Serwer zwraca identyfikatory wszystkich wiadomości lub identyfikator wiadomości o danym numerze msg.
Identyfikator wiadomości to max. 70 bajtowy string (z zakresu 0x21 - 0x7E) nadawany przez serwer POP3
kaŜdej wiadomości.
Po komendzie UIDL wiadomości zaznaczone jako usunięte nie są zawracane przez serwer.
Składania: UIDL [msg]
Odpowiedź: +OK
[numerWiadmosci] identyfikatory
12
Opcjonalne komendy klienta POP3
Przykład: UŜycie komendy APOP.
S: +OK POP3 server ready <[email protected]>
C: APOP mrose c4c9334bac560ecc979e58001b3e22fb
S: +OK maildrop has 1 message (369 octets)
Przykład: UŜycie komendy UIDL.
C: UIDL
S: +OK
S: 1 whqtswO00WBw418f9t5JxYwZ
S: 2 QhdPYR:00WBw1Ph7x7
S: .
...
C: UIDL 2
S: +OK 2 QhdPYR:00WBw1Ph7x7
...
C: UIDL 3
S: -ERR no such message, only 2 messages in maildrop
13
Rozszerzania Protokołu POP3. RFC 2449.
RFC 2449 definiują rozszerzania protokołu POP3 o mechanizmy zarządzania serwerem POP.
Wprowadzono nowe polecenia:
SASL, RESP-CODES, LOGIN-DELAY, PIPELINING, EXPIRE, IMPLEMENTATION.
SASL - Simple Authentication and Security Layer.
Lista 'moŜliwości' serwera - capabilities list zwracana jest po komendzie CAPA.
Komenda CAPA moŜe być stosowana w stanie uwierzytelnienia i w stanie transakcji.
Składania: CAPA
Początkowa lista parametrów (Initial Set of Capabilities):
TOP
polecenie TOP jest obsługiwane przez serwer.
USER
polecenia USER, PASS są obsługiwane przez serwer.
SASL
mechanizm identyfikacji SASL jest obsługiwany.
RESP-CODES
informacja, Ŝe tekst odpowiedzi w nawiasach ‘ [ ..] ‘ jest rozszerzeniem kodu odpowiedzi.,
LOGIN-DELAY
określa min. czas (w sekundach) między logowaniami.
PIPELINING
serwer akceptuje przesłanie listy komend, zamiast trybu: polecenie-odpowiedź.
EXPIRE
serwer informuje klienta jak długo wiadomość będzie przechowywana na serwerze.
UIDL
polecenie UIDL jest obsługiwane przez serwer.
IMPLEMENTATION
serwer zwraca informacje o implementacji.
14
Przykład listy parametrów
Przykład listy parametrów zwracanych przez serwer POP:
C: CAPA
S: +OK Capability list follows
S: TOP
S: USER
S: SASL CRAM-MD5 KERBEROS_V4
S: RESP-CODES
S: LOGIN-DELAY 900
S: PIPELINING
S: EXPIRE 60
S: UIDL
S: IMPLEMENTATION Shlemazle-Plotz-v302
S: .
15
IMAP4
IMAP4, (ang.) Internet Mail Access Protocol version 4.
RFC 1730, 1731, 1732, 1733, 2060, 2061
Protokół IMAP4 jest ulepszoną wersją protokołu POP3.
W warstwie transportowej IMAP wykorzystuje protokół TCP, port 143.
IMAP posiada moŜliwości manipulowania danymi na serwerze pocztowym:
•
przeszukiwania skrzynki pocztowej,
•
zaznaczania wiadomości jako przeczytane/nieprzeczytane (zmiana atrybutów wiadomości),
•
ściągania wybranych widomości (klient POP3 ściąga wszystkie),
•
ścigania części wiadomości, np. tylko załącznika wiadomości,
•
klient moŜe na serwerze usuwać, tworzyć, zmieniać nazwę skrzynkom pocztowym.
WaŜną cechą protokołu IMAP4, której nie posiada POP3, jest moŜliwość jednoczesnej obsługi wielu sesji, tzn.
uŜytkownik moŜe mieć otwarte kilka sesji klientami IMAP z serwerem pocztowym.
Klient IMAP4 uŜywa protokołu SMTP do przesyłania wiadomości na serwer pocztowy.
16