PROTOKOŁY OBSŁUGI POCZTY ELEKTRONICZNEJ
Poczta elektroniczna służy do przesyłania komunikatów tekstowych, jak również
dołączonych do nich
informacji nietekstowych (obraz, dźwięk) pomiędzy użytkownikami różnych
komputerów - zarówno
w obrębie sieci lokalnej, jak i w sieciach rozległych - a w szczególnym przypadku
również pomiędzy
użytkownikami jednego komputera.
Omówimy protokoły pocztowe oparte na TCP/IP, to jest zbudowane na TCP i
wykorzystujące system
adresowania IP. Poczta może być też wymieniana pomiędzy komputerami
umieszczonymi w różnych
rodzajach sieci - w takim przypadku musi przechodzić przez odpowiednie bramy.
Komputery indywidualnych użytkowników rzadko włączone są przez całą dobę -
gdyby przesyłki
były kierowane bezpośrednio do nich, często mogłyby wracać nie doręczone.
System poczty
elektronicznej zakłada istnienie serwerów pocztowych, to jest komputerów, które
są włączone przez
cały czas i są zawsze dostępne. Indywidualni użytkownicy mogą posiadać na nich
konta pocztowe,
zwane też skrzynkami pocztowymi (
mailbox
), których zawartość mogą pobierać
okresowo do
własnego komputera i oglądać (bądź oglądać bezpośrednio w skrzynce, jeśli mają
prawo wykonywania
programów obsługi poczty bezpośrednio na serwerze).
Protokoły pocztowe można podzielić na protokoły dostarczające przesyłki do
serwerów pocztowych
(„wrzucające do skrzynki”) i protokoły pobierające przesyłki z serwerów
(„wyjmujące ze skrzynki”).
Podobnie jak w tradycyjnej poczcie, każdy użytkownik sieci może nadać
przesyłkę do dowolnego
innego użytkownika, ale pobrać wiadomości ze skrzynki może tylko jej właściciel
(po podaniu hasła).
Uwaga
Teoretycznie może dochodzić (i w praktyce ostatnio coraz częściej dochodzi) do
dowolnego
zaśmiecania cudzych skrzynek pocztowych reklamówkami i innymi nie
zamówionymi materiałami.
Przed zjawiskiem tym można się bronić stosując filtry pocztowe
uniemożliwiające dostarczanie
poczty na przykład spod wybranego adresu lub grupy adresów. Do wykonywania
bardziej
zaawansowanych („programowalnych”) operacji w zakresie obsługi poczty
elektronicznej może
służyć na przykład unixowy program procmail.
Typowym przykładem protokołu dostarczania poczty jest SMTP (
Simple Mail
Transfer Protocol
).
Do odbioru poczty może służyć POP (
Post Office Protocol
) w wersji POP2 lub
POP3, oraz IMAP
(
Interactive Mail Access Protocol
) - aktualnie w wersji IMAP4. Protokoły te zostały
zaprojektowane
do przesyłania informacji tekstowych. Gdy pojawiła się potrzeba przesyłania
załączników nieteksto-
wych (multimedialnych lub programów wykonywalnych), opracowano standard
MIME (
Multipurpose
Internet Mail Extensions
), który rozszerzył możliwości tradycyjnych protokołów
tekstowych (MIME
nie jest samodzielnym protokołem), a jednocześnie okazał się pożyteczny i w
innych zastosowaniach
(na przykład w protokole HTTP służącym do przesyłania stron domowych).
Procesy realizujące protokoły pocztowe porozumiewają się ze sobą za pomocą
komend oraz ich
potwierdzeń (lub odpowiedzi), które (w przeciwieństwie do informacji binarnych
wymienianych przez
protokoły niższych poziomów) mają postać czytelną dla człowieka, co ułatwia
ewentualną diagnostykę
występujących problemów.
Protokół SMTP.
SMTP służy do dostarczania poczty do serwerów pocztowych. Wykorzystuje
port TCP nr 25.
Lista komend:
HELO <host nadawcy> umożliwia identyfikację hosta i
nawiązanie połączenia
MAIL FROM:<adres nadawcy> podaje adres nadawcy
RCPT TO:<adres odbiorcy> podaje adres odbiorcy
DATA oznacza początek wiadomości
RSET unieważnienie nadawanej wiadomości
QUIT zakończenie sesji i zerwanie połączenia
Znacznikiem końca wiadomości jest kropka . umieszczona jako jedyny znak w
oddzielnej linii.
Komendy pomocnicze:
HELP podaje listę dostępnych komend
HELP KOMENDA podaje skrótowy opis danej komendy
VRFY <użytkownik> podaje informacje związane z nazwą
użytkownika (np. aliasy)
EXPN <lista> podaje zawartość listy adresowej o
podanej nazwie
Komendy VRFY i EXPN są rzadko udostępniane przez administratorów
systemów pocztowych
(powiększają ryzyko włamania do systemu).
Jeżeli serwer pocztowy jest w danej chwili nieosiągalny (na przykład
uszkodzony), nadawca
otrzymuje komunikat o błędzie. Systemy pocztowe często w takim przypadku
buforują wiadomość
i usiłują przekazać ją ponownie po pewnym czasie.
Protokół POP
POP służy do odbierania poczty ze skrzynki pocztowej. Wersje POP2 i POP3
dość istotnie różnią się
od siebie zestawami komend (choć funkcjonalnie zapewniają prawie to samo).
POP2 wykorzystuje
port TCP nr 109, a POP3 - port TCP nr 110.
Lista komend POP2:
HELO użytkownik hasło nazwa konta i hasło użytkownika,
nawiązanie połączenia
FOLD folder wybór foldera pocztowego
READ odczytanie wszystkich wiadomości
READ n odczytanie wszystkich wiadomości od
numeru n
RETR pobranie wszystkich wiadomości
ACKS potwierdzenie odbioru i polecenie
dalszego zachowania
wiadomości
ACKD potwierdzenie odbioru i polecenie
usunięcia wiadomości
NACK zawiadomienie o nie odebraniu
wiadomości
QUIT zakończenie sesji i zerwanie
połączenia
Lista komend POP3:
USER użytkownik nazwa konta użytkownika
PASS hasło podanie hasła
Uwaga:
wyświetla się !
STAT zwraca liczbę nie odebranych wiadomości i ich łączną
objętość w bajtach
RETR n pobranie wiadomości o numerze n
DELE n usunięcie wiadomości o numerze n
LAST zwraca numer wiadomości, na której ostatnio
wykonano jakieś polecenie
LIST zwraca objętość (w bajtach) wszystkich
przechowywanych wiadomości
LIST n zwraca objętość (w bajtach) wiadomości o numerze n
RSET usuwa zaznaczenia wszystkich wiadomości
zaznaczonych do usunięcia
TOP n k podaje nagłówek i k początkowych linii wiadomości
o numerze n
NOOP nic nie wykonuje
QUIT zakończenie sesji i zerwanie połączenia
W stosunku do POP2, POP3 ułatwia operowanie na pojedynczych
wiadomościach (umożliwia
wycinanie fragmentów pliku z pocztą po stronie serwera).
Protokół IMAP.
IMAP w jeszcze większym stopniu niż POP3 ułatwia operowanie na pojedynczych
wiadomościach.
Umożliwia też synchronizację skrzynek pocztowych serwera i klienta -
skasowanie pojedynczej
wiadomości po jednej stronie powoduje też skasowanie jej po drugiej stronie i na
odwrót.
Rozszerzenie MIME.
MIME określa:
- typ przesyłanej informacji;
- sposób jej zakodowania.
Standard MIME podlega ciągłemu rozwojowi. Informacje na temat jego
aktualnych możliwości są
dostępne w Internecie.
Typy zawartości (
Content-Type
) zdefiniowane w pierwotnym standardzie mają
swoje podtypy
(
subtype
), ich liczba cały czas się zwiększa. Najczęściej używane:
text (plain , richtext , html , ...)
application (octet-stream , postscript , msword , ...)
image (jpeg , gif , ...)
video (mpeg , ...)
audio (basic , ...)
multipart (mixed , alternative , encrypted , ...)
message (rfc822 , partial , external-body , news , ...)
Zazwyczaj stosowany jest zapis o postaci typ / podtyp , np. text / html .
Sposób kodowania (
Content-Transfer-Encoding
) informuje o sposobie
przekształcenia informacji
do postaci możliwej do przesłania przy użyciu tradycyjnych systemów SMTP (kod
7-bitowy ASCII,
długość linii mniejsza, niż 100 bajtów). Dostępne sposoby:
7bit (podstawowy ASCII, brak kodowania)
8bit (rozszerzony ASCII)
binary (dowolny ciąg bajtów)
quoted-printable (znaki specjalne uwidocznione w tekście)
base64 (zamiana bajtów 8-bitowych na znaki 6-bitowe)
x-nazwa (własne kodowanie użytkownika, które ma nadaną
nazwę)
Różne rozszerzone realizacje SMTP mogą obsługiwać różne rodzaje danych. Za
rozszerzone SMTP
(
Extended SMTP, ESMTP
) są uważane takie realizacje SMTP, które reagują na
dodatkową komendę
EHLO (
Extended HELO
), podając w odpowiedzi listę rozszerzeń, które obsługują
(każde rozszerzenie
ma swoją nazwę i jest związane z dodatkową listą obsługiwanych komend).