Porty, szyfrowanie i logowanie
Moduł 1: Jak działa poczta e-mail · Czas czytania: 10 minut
Cel lekcji: Po tej lekcji będą Państwo potrafili określić, do czego służy każdy port pocztowy, wyjaśnić różnicę między STARTTLS a bezpośrednim TLS oraz wytłumaczyć komunikat o certyfikacie lub odrzucone logowanie.
Kluczowe pojęcia: port 25, 587, 465, 993, 995, 143, 110, STARTTLS, bezpośredni TLS (implicit TLS, RFC 8314), certyfikat, nazwa serwera, uwierzytelnianie SMTP (SMTP AUTH), open relay, blokada portu 25, hasło aplikacji, OAuth
Port to drzwi
Serwer ma jeden adres IP, ale wiele drzwi. Każda usługa nasłuchuje na swoim własnym porcie, czyli numerze. Przeglądarka internetowa puka do drzwi na porcie 443, program pocztowy na porcie 993, aby czytać pocztę, oraz na 587 lub 465, aby ją wysyłać. Jeśli wybiorą Państwo niewłaściwe drzwi, nikt nie odpowie albo odpowie ktoś, kto mówi innym językiem. Daje to niejasne komunikaty błędów, takie jak "nie można nawiązać połączenia" lub "serwer nie odpowiada".
Porty pocztowe w jednym zestawieniu:
| Port | Do czego służy | Szyfrowanie | Logowanie |
|---|---|---|---|
| 25 | Komunikacja między serwerami (doręczanie, lekcja 1.1 krok 4) | STARTTLS, jeśli obie strony to obsługują | Nie |
| 587 | Wysyłanie z programu pocztowego (submission, RFC 6409) | STARTTLS | Tak, obowiązkowo |
| 465 | Wysyłanie z programu pocztowego (submissions) | Bezpośredni TLS | Tak, obowiązkowo |
| 993 | Czytanie poczty przez IMAP | Bezpośredni TLS | Tak |
| 995 | Pobieranie poczty przez POP3 | Bezpośredni TLS | Tak |
| 143 | IMAP, stary | Ewentualnie STARTTLS | Tak |
| 110 | POP3, stary | Ewentualnie STARTTLS | Tak |
Dlaczego nie zwyczajnie port 25 do wysyłania?
Dawniej w programie pocztowym ustawiało się port 25. Z dwóch powodów to już przeszłość.
Po pierwsze: na porcie 25 serwer pocztowy przyjmuje pocztę od każdego, przeznaczoną dla jego własnych domen. Nie ma logowania. Serwer, który na porcie 25 przekazuje dalej także pocztę od każdego do innych domen, nazywa się open relay i w ciągu kilku godzin zostaje wykorzystany przez spamerów. Dlatego wysyłanie własnej poczty do całego świata stało się osobną usługą: submission na porcie 587 (i 465), gdzie zawsze najpierw trzeba się zalogować.
Po drugie: wielu dostawców internetu blokuje ruch wychodzący na port 25 z łączy domowych. Zainfekowany komputer w domu nie może wtedy wysyłać spamu bezpośrednio do serwerów pocztowych. Skutek dla Państwa: jeśli spróbują Państwo wysyłać z programu pocztowego przez port 25, może to nie działać w domu, a działać w biurze, albo odwrotnie.
Proszę zapamiętać: programy pocztowe wysyłają przez 587 lub 465, z logowaniem. Port 25 służy do komunikacji między serwerami.
STARTTLS czy bezpośredni TLS?
Istnieją dwa sposoby szyfrowania połączenia pocztowego.
Bezpośredni TLS (implicit TLS): połączenie jest szyfrowane od pierwszego bajtu, podobnie jak strona internetowa z https. Dzieje się tak na portach 465, 993 i 995.
STARTTLS: połączenie zaczyna się niezaszyfrowane. Serwer mówi "potrafię szyfrować", klient odpowiada STARTTLS i od tego momentu wszystko jest szyfrowane. Dzieje się tak na porcie 587 (oraz na 25, 143 i 110).
Dla bezpieczeństwa nie ma to większego znaczenia, dopóki program wymaga STARTTLS. Ryzyko STARTTLS tkwi na początku: ktoś, kto znajduje się między Państwem a serwerem, może usunąć ofertę "potrafię szyfrować". Program, który wtedy po cichu kontynuuje bez szyfrowania, wysyła Państwa hasło w postaci czytelnej przez sieć. Dlatego RFC 8314 (2018) zaleca dla programów pocztowych bezpośredni TLS (465, 993, 995) zamiast STARTTLS. W praktyce zarówno 587 ze STARTTLS, jak i 465 z SSL/TLS są dobre, jeśli ustawią Państwo szyfrowanie w swoim programie na "obowiązkowe", a nie na "jeśli dostępne".
Częstym błędem jest niewłaściwe połączenie: port 587 z "SSL/TLS" albo port 465 z "STARTTLS". Program oczekuje wtedy czegoś innego niż robi serwer, a połączenie zawiesza się lub kończy niepowodzeniem. Proszę zapamiętać pary: 587 + STARTTLS oraz 465 + SSL/TLS. Programy czasem nazywają bezpośredni TLS "SSL", "SSL/TLS" lub "TLS"; STARTTLS też bywa nazywane "TLS". Proszę zwracać uwagę na port.
Certyfikat i nazwa serwera
Przy każdym szyfrowanym połączeniu serwer pokazuje certyfikat, który dowodzi, że jest tym, za kogo się podaje. Program pocztowy sprawdza dwie rzeczy: czy certyfikat został wydany przez zaufaną instytucję i czy jest jeszcze ważny, oraz czy figuruje w nim nazwa, którą Państwo wpisali jako serwer.
To drugie najczęściej bywa problemem. Jeśli wpiszą Państwo mail.example.com, a w certyfikacie widnieje tylko server12.hosting.example, otrzymają Państwo komunikat w rodzaju "Nie można zweryfikować tożsamości serwera" lub "Nazwa docelowej zasady jest nieprawidłowa". Samo połączenie jest wtedy zaszyfrowane, ale program nie może mieć pewności, że rozmawia z prawdziwym serwerem.
Proszę nie odrzucać takiego komunikatu. Rozwiązaniem jest wpisanie nazwy serwera, która figuruje w certyfikacie (patrz lekcja 2.1). Przy serwerze współdzielonym jest to zwykle nazwa samego serwera, którą podaje dostawca usługi. Jeszcze jedna znana przyczyna: program antywirusowy, który "skanuje" zaszyfrowaną pocztę i w tym celu wstawia pomiędzy połączenie własny certyfikat. W komunikacie przy polu "wydany przez" widnieje wtedy nazwa skanera.
Logowanie przy wysyłaniu
Na portach 587 i 465 trzeba się zalogować, zanim serwer zechce wysłać Państwa pocztę na zewnątrz. Nazywa się to uwierzytelnianiem SMTP (SMTP AUTH). W Państwa programie opcja nazywa się "serwer wychodzący wymaga uwierzytelnienia", "wymagane logowanie" lub "uwierzytelnianie: zwykłe hasło". Zwykle używa się tej samej nazwy użytkownika i tego samego hasła co do IMAP.
Jeśli uwierzytelnianie jest wyłączone albo nazwa użytkownika dla serwera wychodzącego pozostała pusta, mogą Państwo czytać pocztę, ale nie mogą jej wysyłać. Serwer odpowiada wtedy czymś w rodzaju 530 5.7.0 Authentication required lub 554 5.7.1 Relay access denied. To najczęstsza przyczyna sytuacji "odbieranie działa, wysyłanie nie".
Drugi rodzaj odmowy: 535 5.7.8 Authentication failed. Wtedy nie zgadza się kombinacja nazwy użytkownika i hasła. Proszę zwrócić uwagę: po kilku nieudanych próbach wiele serwerów blokuje adres IP, z którego te próby pochodzą, jako zabezpieczenie przed zgadywaniem haseł. Stary telefon ze starym hasłem może w ten sposób spowodować zablokowanie całego biura.
Hasła aplikacji i OAuth
U dużych dostawców, takich jak Google i Microsoft, logowanie wyłącznie zwykłym hasłem w osobnym programie pocztowym działa coraz rzadziej. Stosują oni OAuth: program przekierowuje Państwa na stronę logowania dostawcy, logują się tam Państwo (ewentualnie z weryfikacją dwuetapową), a program otrzymuje klucz zamiast Państwa hasła. Programy, które tego nie obsługują, otrzymują czasem hasło aplikacji: osobne, długie hasło, które działa wyłącznie dla tego jednego programu i które można niezależnie odwołać.
Przy zwykłej skrzynce pocztowej u dostawcy hostingu logują się Państwo zazwyczaj hasłem samej skrzynki pocztowej. Dlatego silne i unikalne hasło jest tu szczególnie ważne (lekcja 3.4).
W praktyce: ustawienia skrzynki pocztowej
W skrzynce pocztowej WebOké ustawienia są następujące: IMAP 993 z SSL/TLS, POP3 995 z SSL/TLS, wysyłanie 587 ze STARTTLS lub 465 z SSL/TLS, uwierzytelnianie włączone z pełnym adresem e-mail i hasłem skrzynki pocztowej. U innych dostawców działa to podobnie: porty są niemal wszędzie takie same, różni się tylko nazwa serwera. Jaką nazwę serwera wybrać, zobaczą Państwo w lekcji 2.1.
Podsumowanie
- Programy pocztowe wysyłają przez 587 (STARTTLS) lub 465 (bezpośredni TLS), zawsze z logowaniem. Port 25 służy do komunikacji między serwerami i jest często blokowany w sieciach domowych.
- Czytanie poczty odbywa się przez 993 (IMAP) lub 995 (POP3), oba z bezpośrednim TLS.
- Proszę łączyć poprawnie: 587 + STARTTLS, 465 + SSL/TLS. Szyfrowanie należy ustawić jako obowiązkowe.
- Komunikat o certyfikacie zwykle oznacza, że wpisana przez Państwa nazwa serwera nie figuruje w certyfikacie. Odrzucenie komunikatu nie jest rozwiązaniem.
- "Odbieranie działa, wysyłanie nie" to niemal zawsze sytuacja, w której uwierzytelnianie dla serwera wychodzącego jest wyłączone lub puste.
Quiz
Zadanie
Zadanie Z1.4: Porty i certyfikat serwera pocztowego. Proszę wpisać nazwę serwera przychodzącego i wychodzącego, której używają Państwo dla swojej skrzynki pocztowej (jeśli nie mają Państwo własnej skrzynki pocztowej, proszę użyć imap.gmail.com i smtp.gmail.com). Dla portu 993 (przychodzący) oraz portów 465 i 587 (wychodzące) proszę wybrać to, czego się Państwo spodziewają: bezpośredni TLS, STARTTLS lub brak dostępu, oraz wpisać, czy sądzą Państwo, że nazwa figuruje w certyfikacie. Program sam nawiąże połączenie z trzema portami i zestawi wynik z Państwa odpowiedziami.
Dalsza lektura
Kroki opisane w tych artykułach dotyczą paneli WebOké; u innych dostawców działa to podobnie.
- Instrukcja DirectAdmin 8.1: Wszystkie ustawienia w jednym miejscu: serwery, porty i zabezpieczenia
- Instrukcja DirectAdmin 8.8: Wysyłanie lub odbieranie nie działa: jak to rozwiązać
- Błąd certyfikatu podczas pobierania poczty
- Nie mogę wysyłać wiadomości e-mail (odbieranie działa poprawnie)
- RFC 8314 (bezpośredni TLS dla programów pocztowych), RFC 6409 (submission), RFC 3207 (STARTTLS), RFC 4954 (SMTP AUTH)
