SMTP (ang.) Simple Mail Transfer Protocol – protokół komunikacyjny opisujący sposób przekazywania poczty elektronicznej w Internecie. Standard stał się zdefiniowany w dokumencie RFC 821 a następnie zaktualizowany w 2008 roku w dokumencie RFC 5321
Opis
SMTP to względnie prosty, tekstowy protokół, w którym wyznacza się przynajmniej jednego odbiorcę wiadomości (w większości przypadków weryfikowane jest jego istnienie), a następnie przekazuje treść wiadomości. Demon SMTP działa najczęściej na porcie 25. Łatwo przetestować serwer SMTP przy użyciu programu telnet.
Historia
SMTP zaczęło być szeroko używane we wczesnych latach osiemdziesiątych dwudziestego wieku. W tamtym okresie było to uzupełnienie UUCP, który lepiej sprawdzał się przy przekazywaniu poczty pomiędzy maszynami posiadającymi zaledwie okresowe połączenie. SMTP natomiast lepiej działa, kiedy zarówno maszyna nadająca jak odbierająca są na stałe przyłączone do sieci.
Jednym z pierwszych (jeśli nie pierwszym) programów poczty elektronicznej, w którym zastosowano SMTP był sendmail. W roku 2001 istniało przynajmniej 50 programów implementujących SMTP jako klient (nadawca) albo serwer (odbiorca wiadomości). Pewne inne popularne programy serwerów SMTP to exim, Postfix, Qmail, MDaemon, GroupWise firmy Novell oraz Microsoft Exchange.
Protokół ten nie radził sobie dobrze z plikami binarnymi, albowiem zbudowany był w oparciu o czysty tekst ASCII. W kwestii kodowania plików binarnych do przesyłu przez SMTP stworzono standardy takie jak MIME. W dzisiejszych czasach przeważajaca ilość serwerów SMTP obsługuje rozszerzenie 8BITMIME pozwalające przesyłać pliki binarne równie łatwo jak tekst.
SMTP nie dopuszcza na pobieranie wiadomości ze zdalnego serwera. Do tego celu służą POP3 albo IMAP.
Ograniczenia
Jednym z ograniczeń pierwotnego SMTP jest niedobór mechanizmu weryfikacji nadawcy, co ułatwia rozpowszechnianie niepożądanych treści poprzez pocztę elektroniczną (wirusy komputerowe, spam). Żeby temu zaradzić stworzono rozszerzenie SMTP-AUTH, które jednak jest tylko częściowym rozwiązaniem dylematu - ogranicza wykorzystanie serwera wymagającego autoryzacji do zwielokrotniania poczty. Nadal nie istnieje metoda, dzięki której odbiorca autoryzowałby nadawcę – nadawca może "udawać" serwer oraz wysłać dowolny komunikat do dowolnego odbiorcy.
Przykład sesji SMTP
Poniżej przedstawiona jest przykładowa sesja SMTP (z serwerem exim), w której klient kolejno:
- rozpoczyna połączenie z serwerem (polecenie helo),
- podaje adres nadawcy (polecenie mail from),
- podaje adres odbiorcy (polecenie rcpt to),
- wpisuje wiadomość (polecenie data),
- kończy sesję (polecenie quit).
Podane nazwy oraz adresy użytkowników oraz serwerów są przykładowe.
220 serwer ESMTP Exim 4.43 Wed, 12 Jan 2005 23:14:13 +0100
helo serwer.email.com
250 uzytkownik.internet.com Hello uzytkownik at uzytkownik.internet.com [1.1.1.1]
mail from: <nadawca@example.org>
250 OK
rcpt to: <odbiorca@example.org>
250 Accepted
data
354 Enter message, ending with "." on a line by itself
Date: 03 Jan 07 21:21:21
From: nadawca@example.org
To: odbiorca@example.org
Subject: temat wiadomosci
tresc wiadomosci
.
250 OK id=1Coql6-0003Qi-MP
quit
221 serwer.email.com closing connection
Warto zauważyć, że wprowadzanie treści wiadomości kończymy kropką po której istnieje znak nowej linii.
Dokumenty RFC
- RFC 2821 - "The Simple Mail Transfer Protocol", definicja SMTP, zastąpił starsze RFC 821
- RFC 1869 - "SMTP Service Extensions", wyznacza ramy dla rozszerzeń SMTP (ESMTP), pozwalające klientom oraz serwerom rozpoznać nawzajem swoje możliwości
- RFC 1891 - "SMTP Service Status Notifications", rozszerzenie SMTP o potwierdzenie odbioru
Sprawdź też