Przejdź do treści

Ustawienia plików cookie

Prosimy wybrać, na które rodzaje plików cookie Państwo zezwalają. Wybór można zmienić w dowolnym momencie w Ustawieniach plików cookie na dole każdej strony. Polityka prywatności

Niezbędne

Zawsze włączone

Potrzebne do logowania, zachowania koszyka i zapamiętania wyborów. Są zawsze włączone.

Jakie pliki cookie?
  • weboke_sessie, weboke_klant, weboke_remember: sesja i pozostanie zalogowanym
  • weboke_basket: koszyk
  • wkBtwIncl: wyświetlanie cen z VAT lub bez VAT
  • wok_cookies: wybór dotyczący plików cookie, 12 miesięcy

Mierzą, która reklama prowadzi do odwiedzin lub zamówienia, abyśmy nie płacili za reklamy, które nic nie dają.

Jakie pliki cookie?
  • Google Ads przez Google Tag Manager (_gcl_au, _gcl_aw), do 90 dni
  • OpenAI Ads, reklamy w ChatGPT
  • wok_aff: przez którego partnera trafili Państwo do nas (program partnerski), 60 dni

4,6

Kraj i język

Każdy kraj ma własną stronę z cenami i stawką VAT tego kraju.

Wyświetl

SMTP: rozmowa między serwerami pocztowymi

Moduł 1: Jak działa poczta e-mail · Czas czytania: 10 minut

Cel lekcji: Po tej lekcji będą Państwo potrafili odczytać rozmowę SMTP, wyjaśnić, do czego służą EHLO, MAIL FROM, RCPT TO i DATA, oraz rozpoznać na podstawie kodu odpowiedzi, czy błąd jest tymczasowy, czy ostateczny.

Kluczowe pojęcia: SMTP (RFC 5321), sesja, EHLO/HELO, MAIL FROM, RCPT TO, DATA, QUIT, kod odpowiedzi (2xx, 3xx, 4xx, 5xx), rozszerzony kod statusu, rozszerzenia (STARTTLS, AUTH, SIZE), null MX

Rozmowa w zwykłym tekście

SMTP to bardzo stary protokół (pierwsza wersja pochodzi z 1982 roku) i dlatego jest wyjątkowo czytelny. Dwa serwery wysyłają do siebie linijki tekstu. Nadawca (klient) wysyła polecenie, odbiorca (serwer) odpowiada trzycyfrową liczbą wraz z krótkim wyjaśnieniem. Taką rozmowę można dosłownie odczytać w komunikacie o błędzie lub w logu, i właśnie dlatego warto ją rozumieć.

Poniżej pełna rozmowa. S: oznacza serwer odbierający, C: serwer wysyłający. Wiadomość trafia z anna@example.com do jan@example.net.

S: 220 mx1.mailprovider.example ESMTP ready
C: EHLO out.hosting.example
S: 250-mx1.mailprovider.example Hello out.hosting.example [192.0.2.25]
S: 250-SIZE 52428800
S: 250-8BITMIME
S: 250-STARTTLS
S: 250 SMTPUTF8
C: STARTTLS
S: 220 2.0.0 Ready to start TLS
   (od tego momentu połączenie jest szyfrowane; klient ponownie wysyła EHLO)
C: EHLO out.hosting.example
S: 250 ...
C: MAIL FROM:<anna@example.com> SIZE=24310
S: 250 2.1.0 Ok
C: RCPT TO:<jan@example.net>
S: 250 2.1.5 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: Anna <anna@example.com>
C: To: Jan <jan@example.net>
C: Subject: Offerte
C: Date: Sun, 8 Nov 2026 10:15:00 +0100
C: Message-ID: <a1b2c3@example.com>
C:
C: Hoi Jan, hierbij de offerte.
C: .
S: 250 2.0.0 Ok: queued as 4F2A1B
C: QUIT
S: 221 2.0.0 Bye

Polecenia po kolei

PolecenieZnaczenieNa co zwrócić uwagę
(nawiązanie połączenia)Serwer wita się kodem 220 i swoją nazwą.Nazywa się to banerem. Jeśli serwer od razu odpowie 554, oznacza to, że w ogóle nie chce rozmawiać z Państwa adresem IP (często z powodu wpisu na listę blokującą).
EHLO nazwa"Witam, jestem out.hosting.example." Serwer odpowiada rozszerzeniami, które obsługuje.Nazwa powinna być rzeczywistą nazwą serwera wysyłającego, najlepiej zgodną z jego rekordem PTR (lekcja 5.1). HELO to starszy wariant bez rozszerzeń.
STARTTLS"Od teraz szyfrujmy połączenie."Tylko jeśli serwer to oferuje. Między serwerami jest to zwykle opcjonalne (lekcja 5.4).
MAIL FROM:<adres>Nadawca koperty: tutaj trafiają komunikaty o błędach.Później staje się nagłówkiem Return-Path. SPF sprawdza właśnie ten adres. Pusty nadawca <> jest używany przez serwery do własnych komunikatów o błędach, dzięki czemu zwrot (bounce) nigdy nie generuje kolejnego zwrotu.
RCPT TO:<adres>Odbiorca. Może wystąpić wielokrotnie, po jednym razie na odbiorcę.Już tutaj serwer powinien powiedzieć, czy adres istnieje. Kod 550 5.1.1 w tym momencie to czytelny, natychmiastowo rozpoznawalny błąd.
DATA"Teraz nadejdzie sama wiadomość." Serwer odpowiada kodem 354.Następnie podawane są nagłówki, pusta linia i treść. Linia zawierająca wyłącznie kropkę kończy wiadomość.
QUITKoniec rozmowy.

Najważniejsza zasada: wszystko przed DATA to koperta, wszystko po DATA to treść. To, co znajduje się w MAIL FROM, i to, co znajduje się w nagłówku From:, są podawane oddzielnie i nie muszą być takie same. Serwer dostarcza wiadomość na podstawie RCPT TO; linia To: w treści nie ma przy doręczaniu żadnego znaczenia.

Kody odpowiedzi

Najważniejsza jest pierwsza cyfra kodu:

Zaczyna się odZnaczenieCo robi nadawca?
2Sukces.Przejście do kolejnego kroku. Kod 250 po DATA oznacza, że serwer przyjął wiadomość i od tej chwili to on jest za nią odpowiedzialny.
3Kontynuuj, czekam na dalsze dane.Występuje tylko przy 354 po DATA (oraz przy logowaniu).
4Błąd tymczasowy: nie teraz, proszę spróbować później.Wiadomość pozostaje w kolejce i jest ponownie przesyłana później.
5Błąd ostateczny: to się nie uda.Nadawca rezygnuje i wysyła komunikat o błędzie (zwrot, bounce) do nadawcy koperty.

Za trzema cyframi na nowoczesnych serwerach pojawia się rozszerzony kod statusu w postaci class.subject.detail (RFC 3463), na przykład 5.1.1. Pierwsza cyfra to znowu 2, 4 lub 5. Druga cyfra wskazuje, czego dotyczy problem: 1 = adres, 2 = skrzynka pocztowa, 3 = system pocztowy, 4 = sieć i trasowanie, 5 = protokół, 6 = treść, 7 = bezpieczeństwo i polityka. Kilka przykładów, które często można spotkać:

550 5.1.1  The email account that you tried to reach does not exist
452 4.2.2  Mailbox full (tymczasowo)
552 5.3.4  Message size exceeds fixed limit
451 4.7.1  Greylisted, please try again later
550 5.7.1  Message rejected (polityka: spam, lista blokująca, DMARC)

W module 6 nauczą się Państwo odczytywać pełny zwrot (bounce) i znajdą tam tabelę z najczęściej występującymi kodami.

Dlaczego rozróżnienie na tymczasowy i ostateczny jest tak ważne

Serwer, który ma wątpliwości, często odpowiada kodem 4xx. Znanym przykładem jest greylisting: serwer, który jeszcze nie zna danego nadawcy, za pierwszym razem odpowiada "proszę spróbować później". Prawdziwy serwer pocztowy wraca po kilku minutach, wiele programów rozsyłających spam tego nie robi. Również duzi odbiorcy stosują kod 4xx, aby spowolnić tempo, jeśli jeszcze nie ufają danemu adresowi IP. Dla Państwa jako nadawcy oznacza to: opóźnienie, ale nie utratę wiadomości. System zwykle sam sobie z tym radzi.

Kod 5xx jest inny. W tym przypadku nadawca nie podejmuje ponownej próby. Jeśli otrzymają Państwo kod 5xx, ktoś musi coś zmienić: adres, treść lub ustawienia domeny wysyłającej.

Pułapka: niektóre serwery zwracają kod 5xx, mimo że problem jest tymczasowy (na przykład przy pełnej skrzynce pocztowej 552 5.2.2), a inne zwracają kod 4xx dla czegoś, co nigdy się nie uda. Dlatego zawsze należy czytać tekst znajdujący się za kodem, nie tylko samą liczbę.

Kto ponosi odpowiedzialność?

Po kodzie 250 na zakończenie DATA odpowiedzialność przechodzi na serwer odbierający. Jeśli później nie uda mu się umieścić wiadomości w skrzynce pocztowej, musi sam odesłać komunikat o błędzie. To właśnie źródło trudnego zjawiska zwanego backscatter. Serwer, który najpierw przyjmuje wszystko, a dopiero później stwierdza, że adres nie istnieje, wysyła zwrot (bounce) do nadawcy koperty. Jeśli ten adres został sfałszowany przez spamera, zwrot trafia do niewinnej osoby trzeciej. Dlatego serwery powinny odrzucać to, co niemożliwe, już na etapie RCPT TO (zob. również catch-all w lekcji 3.3).

W praktyce: SMTP we własnym środowisku

Zwykły użytkownik rzadko widzi całą rozmowę SMTP, ale widzi jej fragmenty:

  • w zwrocie (bounce) znajduje się ostatnia linia rozmowy, na przykład Remote-MTA: mx1.mailprovider.example oraz Diagnostic-Code: smtp; 550 5.1.1 ...;
  • w nagłówkach otrzymanej wiadomości dla każdego serwera znajduje się linia Received: z nazwą EHLO i adresem IP (lekcja 1.5);
  • w panelu z logiem poczty, takim jak Śledzenie e-mail w DirectAdmin u WebOké, widzą Państwo odpowiedź serwera odbierającego dla każdej wiadomości. U innych dostawców taka funkcja może nazywać się na przykład śledzeniem wiadomości lub dziennikiem poczty (mail log), a jej zawartość jest podobna.

Nie muszą więc Państwo sami łączyć się z serwerem pocztowym, aby to odczytać. Dla osób, które chciałyby spróbować: za pomocą openssl s_client -starttls smtp -connect server:25 można prowadzić taką rozmowę ręcznie, jednak wielu dostawców usług domowych blokuje ruch wychodzący na porcie 25 (lekcja 1.4).

Podsumowanie

  • SMTP to czytelna rozmowa: EHLO, (STARTTLS), MAIL FROM, RCPT TO, DATA, QUIT.
  • Wszystko przed DATA to koperta (doręczenie i komunikaty o błędach), wszystko po DATA to treść wraz z widocznymi nagłówkami.
  • 2xx = sukces, 4xx = tymczasowo (ponowna próba później), 5xx = ostatecznie (zwrot, bounce).
  • Rozszerzony kod X.Y.Z wskazuje, czego dotyczy problem: X.1 adres, X.2 skrzynka pocztowa, X.7 polityka i bezpieczeństwo.
  • Zawsze należy czytać tekst znajdujący się za kodem; serwery nie zawsze są konsekwentne.

Quiz

1. Które polecenie zawiera adres, na który trafia komunikat o błędzie?



2. Serwer odpowiada kodem 451 4.7.1 Greylisted, please try again later. Co robi dobrze skonfigurowany serwer wysyłający?



3. W której części rozmowy znajduje się nagłówek Subject:?



4. Co oznacza druga cyfra w kodzie 550 5.1.1?



5. Dlaczego lepiej, aby serwer odrzucał nieistniejący adres już na etapie RCPT TO, zamiast najpierw przyjąć wiadomość?



Zadanie

Zadanie Z1.2: Domena, która nie odbiera poczty. Proszę wyszukać rekordy MX domeny example.com. Proszę wpisać, co Państwo znaleźli, i wybrać, co zrobi serwer wysyłający z wiadomością do info@example.com: (a) dostarczy ją do serwera z priorytetem 0, (b) spróbuje skorzystać z rekordu A, (c) od razu zrezygnuje, czy (d) spróbuje ponownie później. Program na bieżąco sprawdza rekord MX i weryfikuje odpowiedź.

Zadanie Z1.2: Domena, która nie odbiera poczty

Proszę sprawdzić rekordy MX domeny example.com i wybrać, co serwer wysyłający robi z pocztą dla info@example.com.



Wprowadzone dane i wyniki sprawdzania nie są zapisywane. Przeglądarka zapamiętuje udzielone odpowiedzi oraz informację, czy zadanie zostało zaliczone. Po zalogowaniu w Moje kursy zapisywana jest jedynie informacja, że zadanie zostało zaliczone (lub prawie zaliczone); tam można ją również usunąć.

Dowiedz się więcej

Kroki opisane w tych artykułach dotyczą paneli WebOké; u innych dostawców działa to w podobny sposób.

Chwileczkę…

Konfiguracja domen

Dla każdej domeny można ustawić serwery nazw, powiązanie z hostingiem oraz to, kto zostanie właścicielem.

Wczytywanie domen…