Protokół SMTP – co to jest i jak działa?
Protokół SMTP jest podstawą współczesnej komunikacji e-mailowej. Dzięki niemu możemy korzystać z internetowej poczty, takiej jak Gmail, Outlook czy jakiejkolwiek innej. Czym dokładnie jest protokół SMTP, jak działa i czy ma jakieś wady?
W tym artykule:
Co to jest SMTP?
Definicja protokołu SMTP
SMTP (Simple Mail Transfer Protocol) to protokół TCP/IP warstwy aplikacji służący do wysyłania poczty elektronicznej pomiędzy sieciami komputerowymi. Protokół SMTP określa podstawowe zasady dostarczania wiadomości na serwer pocztowy, skąd można pobrać ich zawartość za pomocą poczty e-mail. Jest to kluczowa część wielu popularnych usług mailowych, w tym Gmaila i Outlooka.
Protokół SMTP nie jest jednak doskonały. Po pierwsze, może przesyłać tylko zwykłe wiadomości tekstowe bez żadnych załączników. Co gorsza, wiadomości te muszą być zapisane w 7-bitowych znakach ASCII, ograniczając tym samym tekst do angielskiego alfabetu i cyfr. Aby pokonać te ograniczenia, protokół SMTP musi być połączony z protokołem MIME (Multipose Internet Mail Extensions), który konwertuje całą zawartość inną niż ASCII do formatu obsługiwanego przez SMTP.
Czym jest serwer SMTP?
Na początku swojej kariery protokół SMTP używał portu 25 do komunikacji niezaszyfrowanej, ale czasy się zmieniły. Obecnie należy unikać portu 25 – niektóre zapory sieciowe blokują go nawet automatycznie w celu ochrony przed spamem. Nowoczesna komunikacja SMTP zazwyczaj wykorzystuje port 587 lub 465 zgodnie z RFC 8314.
Pomyśl o serwerach SMTP jak o wirtualnych urzędach pocztowych. Kiedy wysyłasz klasyczny list, listonosz nie odbiera go od Ciebie i nie zanosi bezpośrednio aż do skrzynki pocztowej adresata. List musi przejść przez lokalną placówkę pocztową, która przekazuje go do placówki w obszarze odbiorcy. Serwery SMTP zbierają i przekazują wiadomości e-mail w ten sam sposób – tylko szybciej.
Rodzaje serwerów SMTP
Pojedynczy serwer SMTP może wysyłać, odbierać i przekazywać wiadomości jednocześnie. Biorąc to pod uwagę, możliwe jest rozróżnienie serwerów SMTP na podstawie roli, jaką odgrywają w konkretnej transakcji pocztowej.
Serwery poczty wychodzącej
Serwery poczty wychodzącej są najczęściej kojarzone z SMTP – w logistyce poczty elektronicznej „serwer poczty wychodzącej” jest często synonimem „serwera SMTP”. Serwery poczty wychodzącej są odpowiedzialne za odebranie wiadomości z aplikacji poczty e-mail i dostarczenie jej na serwer poczty przychodzącej odbiorcy.
Aby zapobiec spamowi, serwery zwykłej poczty wychodzącej mają ścisłe dzienne limity wysyłanych wiadomości – na przykład serwery SMTP Gmaila są ograniczone do 500 e-maili dziennie dla bezpłatnych użytkowników. Ograniczenia te, choć hojne dla przeciętnego użytkownika, sprawiają, że zwykłe serwery SMTP są niepraktyczne do wysyłania masowych aktualizacji lub marketingowych wiadomości e-mail.
Dedykowane serwery SMTP
Na szczęście dla miłośników spamu na całym świecie nadal można wypełniać miliony skrzynek odbiorczych gorącymi ofertami, korzystając z dedykowanych serwerów SMTP. Dedykowany serwer SMTP to specjalny serwer poczty wychodzącej, który został skonfigurowany do obsługi dużego ruchu wyłącznie dla jednego klienta (zazwyczaj konta firmowego). Dedykowane serwery SMTP oferują swoim użytkownikom większą elastyczność i większe limity niż współdzielone publiczne serwery SMTP.
Serwery przekaźnikowe SMTP
Chociaż każdy wychodzący serwer SMTP jest technicznie serwerem przekaźnikowym, ponieważ przekazuje wiadomości e-mail do innych serwerów, nazwa „serwer przekaźnikowy SMTP” (ang. SMTP relay server) jest często zarezerwowana dla serwerów używanych przez usługę SMTP relay do masowej wysyłki e-maili. Podobnie jak serwery dedykowane, usługi przekaźnikowe SMTP umożliwiają firmom wysyłanie tysięcy wiadomości na raz – tylko tym razem odpowiedzialna jest zakontraktowana firma zewnętrzna.
Serwery poczty przychodzącej
Serwery poczty przychodzącej przechowują wiadomości e-mail otrzymane z przekaźników SMTP do czasu, aż będą mogły zostać odebrane przez pocztę e-mail odbiorcy. W przeciwieństwie do serwerów poczty wychodzącej, które prawie wyłącznie korzystają z protokołu SMTP, serwery poczty przychodzącej zazwyczaj opierają się na protokole pocztowym POP (Post Office Protocol) lub protokole dostępu do wiadomości internetowych IMAP (Message Access Protocol).
Fałszywe serwery SMTP
Fałszywe serwery SMTP są używane głównie do testowania wiadomości e-mail. Podobnie jak prawdziwy serwer SMTP, fałszywy serwer SMTP będzie akceptował twoje wiadomości e-mail z poczty i udawał, że je wysyła – tylko bez faktycznego dostarczenia. Fałszywe serwery SMTP pozwalają programistom testować, jak aplikacje i strony internetowe obsługują wiadomości e-mail, bez konieczności tworzenia jednorazowych kont e-mail.
Jak działa protokół SMTP?
Jak sama nazwa wskazuje, protokół Simple Mail Transfer jest dość prosty w porównaniu do wielu innych protokołów TCP/IP. Protokół SMTP nie wymaga uwierzytelniania (chociaż uwierzytelnianie można dodać za pomocą rozszerzenia SMTP AUTH) i można podzielić jego działanie na kilka kroków:
- Aby zainicjować sesję, klient SMTP (nazywany „user-agentem użytkownika poczty” lub MUA) kończy uzgadnianie SMTP, łącząc się z serwerem SMTP swojej domeny (znanym jako „agent przesyłania poczty” lub MTA).
- Sesja SMTP rozpoczyna się po nawiązaniu połączenia. Twój klient poczty e-mail (klient SMTP, o którym mowa powyżej) przesyła wszystkie wymagane informacje do przesłania wiadomości e-mail – adres e-mail nadawcy, adres e-mail odbiorcy, treść wiadomości i wszelkie załączniki (przy użyciu protokołu MIME).
- Zanim wykona cokolwiek innego, serwer SMTP najpierw sprawdza, czy nazwy domen nadawcy i odbiorcy są takie same. Jeśli tak, wiadomość e-mail jest natychmiast wysyłana na serwer poczty przychodzącej odbiorcy.
- Jeśli domeny są różne, serwer SMTP prosi serwer systemu nazw domen (DNS) o podanie adresu IP serwera pocztowego odbiorcy. Mając ten adres IP, serwer SMTP nadawcy łączy się z serwerem SMTP odbiorcy (zwanym „user-agentem dostarczania poczty” lub MDA), aby przekazać wiadomość.
- Jeśli serwer SMTP odbiorcy jest w danej chwili niedostępny, wiadomość e-mail jest albo dodawana do kolejki SMTP (bufora, w którym przechowywane są wiadomości e-mail), albo wysyłana na serwer zapasowy.
- Serwer SMTP odbiorcy weryfikuje nazwę domeny i nazwę użytkownika wiadomości e-mail. Jeśli informacje się potwierdzą, serwer SMTP dostarcza wiadomość e-mail do odpowiedniego serwera poczty przychodzącej.
Polecenia SMTP
Aby komunikować się z serwerami SMTP, poczta e-mail i aplikacje internetowe używają specjalnych poleceń SMTP. Polecenia SMTP informują serwer SMTP o statusie transmisji e-mail i informują go, co ma dalej zrobić. Oto kilka przykładów poleceń SMTP używanych w przesyłaniu e-maili:
- HELO. Polecenie HELO (podobne do ang. hello, czyli cześć) służy do inicjowania sesji SMTP. Polecenie HELO umożliwia klientowi poczty elektronicznej formalne przedstawienie się serwerowi SMTP w celu nawiązania połączenia. Żaden przekaz pocztowy nie może odbyć się bez HELO. Obecnie polecenie HELO zostało w dużej mierze zastąpione przez polecenie EHLO używane w protokole Extended Simple Message Transfer Protocol (ESMTP).
- MAIL FROM. Polecenie MAIL FROM rozpoczyna przesyłanie wiadomości e-mail i wskazuje adres e-mail nadawcy (ścieżka zwrotna). W niektórych przypadkach adres może pozostać pusty – na przykład, gdy zautomatyzowany system odpowiada komuś w związku z niedostarczeniem wiadomości.
- RCPT TO. Polecenie RCPT TO udostępnia docelową skrzynkę pocztową (ścieżkę przesyłania) do dostarczenia. Możliwe jest dodanie więcej niż jednego odbiorcy, ale każdy z nich musi zostać dodany osobno za pomocą RCPT TO.
- DATA. Polecenie DATA to proste żądanie od serwera pozwolenia na przesłanie zawartości wiadomości. Jeśli klient poczty e-mail otrzyma w odpowiedzi kod 354, rozpocznie przesyłanie wiadomości e-mail wiersz po wierszu, łącznie ze wszystkimi załącznikami. Ostatnia linia zawiera tylko jedną kropkę („.”) oznaczającą zakończenie przesyłania danych.
- HELP. Polecenie HELP instruuje serwer SMTP, aby odpowiedział listą obsługiwanych poleceń. Jest zwykle używany przez klientów poczty e-mail lub administratorów systemu w celu sprawdzenia, jakie funkcje może wykonywać przypisany im serwer SMTP.
- RSET. Polecenie RSET czyści tablicę bez przerywania połączenia SMTP. Usuwając bufory i tabele stanów nadawcy i odbiorcy, klient poczty elektronicznej może rozpocząć przesyłanie nowej wiadomości.
- QUIT. Polecenie QUIT nakazuje serwerowi SMTP zakończenie sesji. Sesja nie jest jednak zamykana od razu – serwer musi najpierw odpowiedzieć kodem 221, aby potwierdzić jej zakończenie.
Dostawcy usług SMTP
Jeśli nie jesteś przywiązany(-na) do serwerów SMTP swojego dostawcy poczty e-mail, możesz wybrać innego dostawcę usług SMTP, a nawet skonfigurować serwery SMTP samodzielnie.
Jeśli szukasz najlepszych darmowych serwerów SMTP w 2023 r., koniecznie sprawdź Google (smtp.gmail.com, port 465 lub port 587) lub Yahoo (smtp.mail.yahoo.com, port 465 lub port 587). Ci dostawcy SMTP oferują niezawodne usługi i umożliwiają wysyłanie do 500 e-maili dziennie, co – dla przeciętnego użytkownika i małych firm – w zupełności wystarczy.
W przypadku większych przedsiębiorstw, które regularnie wysyłają kampanie e-mailowe, warto sprawdzić Brevo (smtp.brevo.io, port 587) i SendGrid (smtp.sendgrid.net, port 587). Ci dostawcy usług SMTP oferują więcej funkcji i wsparcie dla firm, jednak limity darmowych usług są małe – 300 wiadomości dziennie w przypadku Brevo i tylko 100 wiadomości dziennie w przypadku SendGrid.
Różnice między SMTP, IMAP i POP3
SMTP nie jest jedynym znanym protokołem e-mail. Omawiając serwery poczty przychodzącej, krótko wspomnieliśmy o protokole Post Office Protocol (POP) i Internet Message Access Protocol (IMAP). Przyjrzyjmy się bliżej, jak radzą sobie z wiadomościami przychodzącymi.
Protokół IMAP
IMAP (obecnie w czwartej wersji jako IMAP4) to protokół TCP/IP służący do odbierania wiadomości e-mail z serwerów. Podczas korzystania z protokołu IMAP klient poczty e-mail początkowo pobiera tylko daty, informacje o nadawcy i tematy wiadomości e-mail z serwera poczty przychodzącej, przechowując te dane w lokalnej pamięci podręcznej. Ma to na celu oszczędzanie przepustowości – reszta zawartości jest pobierana, gdy użytkownik zdecyduje się otworzyć wiadomość.
Dużą zaletą protokołu IMAP jest to, że po dostarczeniu nie usuwa wiadomości e-mail z serwera, co oznacza, że użytkownicy mogą mieć do nich dostęp na wielu urządzeniach z różnych lokalizacji. Przechowuje również wszelkie zmiany w wiadomościach (takie jak to, czy zostały przeczytane lub usunięte) na serwerze e-mail, dzięki czemu status skrzynki odbiorczej użytkownika jest taki sam na wszystkich urządzeniach.
Protokół POP
Podobnie jak IMAP, protokół POP (obecnie w trzeciej oficjalnej wersji POP3, przy czym POP4 istnieje jedynie jako nieformalna propozycja) jest protokołem TCP/IP służącym do odbierania wiadomości e-mail z serwerów. Jednak w przeciwieństwie do protokołu IMAP, który pobiera zawartość wiadomości e-mail dopiero wtedy, gdy użytkownik otworzy wiadomość, protokół POP automatycznie pobiera wszystkie oczekujące wiadomości e-mail (w tym wszelkie załączniki) z serwera poczty przychodzącej na Twoje urządzenie i usuwa kopie serwerowe.
Pobieranie wszystkiego za jednym razem ma jedną zasadniczą zaletę – możesz czytać e-maile w wolnym czasie, nawet jeśli nie masz połączenia z internetem. Ponieważ jednak serwer w ramach tego procesu usuwa kopie wiadomości, nie możesz uzyskać dostępu do swoich e-maili z innych urządzeń. Po pobraniu będziesz musiał ręcznie przenieść zawartość.
SMTP kontra IMAP kontra POP3
Da się zauważyć, że protokół SMTP omawiamy przede wszystkim w kontekście wysyłania e-maili. Dzieje się tak, ponieważ SMTP jest protokołem push – protokołem zaprojektowanym specjalnie do przesyłania danych z serwera na serwer. Protokoły push (z ang. push – pchać) wymuszają na serwerach nastawionych na tryb nasłuchiwania automatyczne przekazywanie (wypychanie) danych do miejsca docelowego.
Tymczasem IMAP i POP to protokoły pull (z ang. pull – ciągnąć) przeznaczone do odbierania wiadomości e-mail z serwerów poczty przychodzącej. Protokoły te pobierają (ściągają) wiadomości z serwera jedynie na żądanie użytkownika. Protokoły IMAP i POP nie odgrywają żadnej roli w przekazywaniu wiadomości e-mail od nadawcy do serwera poczty przychodzącej.
Aby nowoczesne systemy poczty elektronicznej działały, potrzebne są zarówno protokoły push, jak i pull. Oznacza to, że SMTP nie stanowi konkurencji dla protokołów IMAP ani POP – raczej współpracuje z nimi, dostarczając wiadomości ludziom na całym świecie.
Podsumowanie
Bez protokołu Simple Mail Transfer Protocol nowoczesna poczta e-mail po prostu by nie istniała. Protokół SMTP zapewnia łatwą metodę wymiany wiadomości pomiędzy różnymi dostawcami poczty e-mail, domenami i sieciami, które występują w dzisiejszej komunikacji internetowej. Jednak SMTP nie jest arcydziełem dziedziny inżynierii oprogramowania – powstawał fragmentarycznie przez prawie cztery dekady.
SMTP wszedł do użytku w latach 80 XX wieku jako prosty sposób wysyłania prostych wiadomości. Zgodnie z pierwotnymi przewidywaniami SMTP mógł przesyłać jedynie 7-bitowy tekst ASCII, co znacznie ograniczało jego użycie. Nie zawierał również żadnych przepisów dotyczących szyfrowania, co doprowadziło do eksplozji spamu i ataków typu spoofing w latach 90.
Z biegiem czasu te wady zostały wyeliminowane przez rozszerzenia protokołu SMTP i nowe techniki bezpieczeństwa. MIME dodał możliwość wysyłania znaków innych niż ASCII i załączników. Uwierzytelnianie zostało włączone dzięki SMTP AUTH. Oprogramowania szyfrujące oferują nowe sposoby ochrony zawartości wiadomości e-mail. Dzięki tym narzędziom protokół SMTP ma się dziś dobrze pomimo licznych ograniczeń.