Podróż wiadomości e-mail
Moduł 1: Jak działa poczta e-mail · Czas czytania: 9 minut
Cel lekcji: Po tej lekcji będą Państwo potrafili krok po kroku opisać, jak wiadomość e-mail trafia od nadawcy do odbiorcy, oraz wskazać przy każdym kroku, który program lub serwer wykonuje daną pracę.
Kluczowe pojęcia: program pocztowy (MUA), serwer wysyłający (MSA, submission), serwer pocztowy (MTA), rekord MX, kolejka, doręczenie (MDA), skrzynka pocztowa, pobieranie (IMAP/POP3), koperta (envelope), nagłówki
Poczta elektroniczna to poczta, nie wiadomość na czacie
Gdy wysyłają Państwo wiadomość na czacie, przechodzi ona przez jedną firmę: aplikacja nadawcy i aplikacja odbiorcy rozmawiają z tymi samymi serwerami. Poczta e-mail działa inaczej. Nadawca i odbiorca mogą korzystać z usług różnych dostawców: jeden u firmy hostingowej, drugi w Gmail, trzeci w Microsoft 365 lub na własnym serwerze firmowym. Mimo to wiadomość dociera do celu. Jest to możliwe, ponieważ wszystkie serwery pocztowe na świecie stosują te same zasady.
Pocztę e-mail można dobrze porównać do tradycyjnej poczty. Piszą Państwo list (wiadomość), wkładają go do koperty z adresem (koperta, envelope), zanoszą do skrzynki pocztowej (serwer wysyłający), firma pocztowa ustala, gdzie znajduje się ten adres (sprawdzenie rekordu MX), przewozi list do właściwej sortowni (odbierający serwer pocztowy), a ta umieszcza go w skrzynce odbiorcy (skrzynka pocztowa). Odbiorca odbiera go stamtąd, kiedy mu to odpowiada.
Poszczególne etapy
Załóżmy, że Anna wysyła wiadomość z adresu anna@example.com do jan@example.net. Dzieje się wtedy co następuje:
| Krok | Kto | Co się dzieje | Protokół |
|---|---|---|---|
| 1 | Program pocztowy Anny (MUA, mail user agent) | Anna klika Wyślij. Program loguje się do serwera wysyłającego jej dostawcy i przekazuje wiadomość. | SMTP-submission, port 587 lub 465, z logowaniem |
| 2 | Serwer wysyłający example.com (MSA, mail submission agent) | Sprawdza, czy Anna rzeczywiście jest Anną (nazwa użytkownika i hasło), umieszcza wiadomość w kolejce. | |
| 3 | Wychodzący serwer pocztowy (MTA, mail transfer agent) | Sprawdza w DNS: który serwer przyjmuje pocztę dla example.net? To są rekordy MX. | DNS |
| 4 | Wychodzący MTA do odbierającego MTA | Nawiązuje połączenie z serwerem wskazanym w rekordzie MX i dostarcza wiadomość. | SMTP, port 25 |
| 5 | Serwer odbierający example.net | Sprawdza wiadomość (spam, wirusy, SPF, DKIM, DMARC) i umieszcza ją w skrzynce Jana. Ta ostatnia część nazywa się MDA (mail delivery agent). | |
| 6 | Program pocztowy Jana lub poczta internetowa | Pobiera wiadomość lub wyświetla ją bezpośrednio z serwera. | IMAP (port 993) lub POP3 (port 995) |
U małych dostawców MSA, MTA i MDA są często jednym i tym samym programem na jednym serwerze. U dużych dostawców są to osobne klastry. Dla Państwa nie ma to większego znaczenia: są to role, a nie urządzenia.
Proszę zwrócić uwagę na różnicę między krokiem 1 a krokiem 4. Oba wykorzystują SMTP, czyli Simple Mail Transfer Protocol (RFC 5321). Jednak w kroku 1 logują się Państwo i korzystają z portu 587 lub 465; nazywa się to submission (RFC 6409). W kroku 4 dwa serwery rozmawiają ze sobą na porcie 25, bez logowania: serwer odbierający przyjmuje pocztę dla swoich własnych domen od kogokolwiek. W lekcji 1.4 zobaczą Państwo, dlaczego istnieje ten podział.
Krok 3 z bliska: sprawdzenie rekordu MX
Serwer wysyłający nie wie z góry, gdzie example.net odbiera swoją pocztę. Pyta o to DNS:
example.net. 3600 IN MX 10 mx1.mailprovider.example.
example.net. 3600 IN MX 20 mx2.mailprovider.example.Niższa liczba ma pierwszeństwo. Serwer próbuje najpierw mx1, a jeśli ten nie odpowiada, mx2. Następnie sprawdza adres IP tej nazwy (rekord A lub AAAA) i nawiązuje połączenie.
Dwa szczególne przypadki, z którymi można się spotkać w praktyce:
- Brak rekordu MX. Wtedy nadawca próbuje skorzystać z rekordu A lub AAAA samej domeny (tzw. „domniemany MX” z RFC 5321, paragraf 5.1). Jest to pozostałość z przeszłości i nie działa niezawodnie; każda domena odbierająca pocztę powinna mieć rekord MX.
- Null MX:
0 .Oznacza to: „ta domena nigdy nie odbiera poczty” (RFC 7505). Domenaexample.comma właśnie taki rekord. Nadawca od razu rezygnuje i odsyła komunikat o błędzie, zamiast przez wiele dni ponawiać próby.
O tym, jak dokładnie działają rekordy MX i priorytety, mogą Państwo przeczytać w lekcji 4.1 kursu DNS.
Kolejka: poczta e-mail może trochę potrwać
Wiadomość e-mail nie zawsze dociera w ciągu sekundy. Jeśli serwer odbierający nie odpowiada lub mówi „proszę spróbować później” (kod zaczynający się od 4), wiadomość pozostaje w kolejce serwera wysyłającego. Ten próbuje ponownie później, z coraz dłuższymi odstępami czasu. RFC 5321 (paragraf 4.5.4.1) zaleca co najmniej 30 minut między próbami i rezygnację dopiero po 4 do 5 dniach. Wiele serwerów wysyła po kilku godzinach wstępne ostrzeżenie („delayed”, jeszcze niedostarczone), a po kilku dniach ostateczny komunikat o błędzie.
To mocna strona poczty e-mail: jeśli serwer pocztowy przez godzinę nie działa, żadna wiadomość się nie zgubi. Jest to też powód, dla którego wiadomość czasem dociera dopiero po kilku godzinach. W module 6 zobaczą Państwo, jak rozpoznać takie opóźnienie.
Koperta i nagłówki: dwa adresy
Podobnie jak w przypadku zwykłej poczty, wiadomość e-mail ma dwa rodzaje adresów:
- Koperta (envelope). Są to adresy, których serwery używają między sobą podczas rozmowy SMTP:
MAIL FROM(nadawca na potrzeby komunikatów o błędach, widoczny później jako Return-Path) orazRCPT TO(odbiorca). Serwery dostarczają wiadomość na podstawie koperty. - Nagłówki (headers). To jest to, co znajduje się w samym liście:
From:,To:,Cc:,Subject:,Date:. Wyświetla je Państwa program pocztowy.
Zazwyczaj są one takie same, ale nie zawsze. Odbiorca w UDW (BCC) jest wprawdzie w kopercie, ale nie w nagłówkach; dlatego inni odbiorcy go nie widzą. Usługa wysyłki newsletterów umieszcza swój własny adres jako nadawcę w kopercie, dzięki czemu komunikaty o błędach trafiają do niej, podczas gdy w polu From: widnieje Państwa adres. A oszust może wpisać w polu From: cokolwiek zechce.
Dlaczego to ma znaczenie: SPF sprawdza nadawcę w kopercie, użytkownik widzi pole From:. Dlatego właśnie istnieje DMARC, który łączy te dwa elementy ze sobą (moduł 4).
Gdzie może coś pójść nie tak
Mając ten obraz, przy każdym problemie mogą Państwo zadać sobie pytanie: na którym etapie coś poszło nie tak?
- Wysyłanie się nie udaje (komunikat o błędzie pojawia się od razu w Państwa programie): krok 1 lub 2. Niemal zawsze chodzi o ustawienia: port, logowanie, hasło (moduł 2).
- Otrzymują Państwo zwrot (bounce): krok 4 lub 5. Serwer odbierający odrzucił wiadomość albo adres nie istnieje (moduł 6).
- Wiadomość dociera, ale trafia do folderu ze spamem: krok 5. Odbiorca nie ufa wiadomości (moduły 4 i 5).
- Odbiorca nic nie widzi, a Państwo nie otrzymują komunikatu o błędzie: wiadomość być może nadal znajduje się w kolejce albo została po cichu odfiltrowana u odbiorcy. Pomocne są wtedy dzienniki (logi) serwera wysyłającego (moduł 6).
- Poczta w ogóle nie dociera do Państwa domeny: krok 3. Rekordy MX są nieprawidłowe, na przykład po przeprowadzce (moduł 8).
W praktyce: jak to wygląda w pakiecie hostingowym
W pakiecie hostingowym WebOké jeden serwer na pakiet obsługuje wszystkie role: Państwa program pocztowy dostarcza wiadomość do tego serwera (krok 1 i 2), serwer wysyła ją na zewnątrz (krok 3 i 4) oraz odbiera pocztę dla Państwa domeny (krok 5). W DirectAdmin można za pomocą funkcji Śledzenie e-mail sprawdzić dla każdej wiadomości, czy została dostarczona. U innych dostawców działa to podobnie; taka funkcja nazywa się tam na przykład „śledzenie wiadomości” lub „mail log”.
Podsumowanie
- Wiadomość e-mail przechodzi z Państwa programu pocztowego (MUA) przez serwer wysyłający (MSA/MTA) do serwera odbierającego (MTA/MDA), a stamtąd do programu pocztowego odbiorcy.
- Wysyłanie z poziomu programu to SMTP-submission z logowaniem (587/465); serwery rozmawiają między sobą przez SMTP na porcie 25; pobieranie odbywa się przez IMAP lub POP3.
- Serwer wysyłający sprawdza rekordy MX domeny znajdującej się za znakiem @. Null MX (
0 .) oznacza: ta domena nie odbiera poczty. - Wiadomość, która nie może zostać od razu dostarczona, pozostaje w kolejce i jest ponawiana przez kilka dni.
- Koperta (Return-Path) i nagłówki (From) to dwaj różni nadawcy. SPF sprawdza tego pierwszego, użytkownik widzi tego drugiego.
Quiz
Zadanie
Zadanie Z1.1: Znalezienie pierwszego serwera pocztowego. Proszę sprawdzić rekordy MX domeny gmail.com (lub własnej domeny). Proszę podać, który serwer zostanie wypróbowany jako pierwszy, wraz z jego liczbą priorytetu, oraz jeden adres IP (IPv4 lub IPv6) tego serwera. Program na żywo sprawdzi te same dane i je zweryfikuje.
Dalsza lektura
Kroki opisane w tych artykułach dotyczą paneli WebOké; u innych dostawców działa to podobnie.
- Jak działa wysyłanie wiadomości e-mail / SMTP
- Instrukcja DirectAdmin 8.7: IMAP czy POP3: jaka jest różnica?
- Bezpłatny kurs DNS 4.1: Rekordy MX i priorytet
- RFC 5321 (SMTP), paragraf 5.1 (MX i domniemany MX) oraz 4.5.4.1 (ponawianie prób); RFC 7505 (null MX)
