Serwery poczty elektronicznej działają jak cyfrowe urzędy pocztowe, które odbierają, sortują i dostarczają wiadomości za pomocą trzech głównych protokołów komunikacyjnych. Protokół SMTP odpowiada za wysyłanie e-maili w świat, podczas gdy IMAP i POP3 służą do ich odbierania i synchronizacji ze skrzynką odbiorcy.
Wysyłanie maila wydaje się prostą czynnością. Klikasz wyślij na ekranie telefonu. Kilka sekund później adresat po drugiej stronie globu czyta twoją wiadomość. Prawda jest zresztą absolutnie taka, że pod spodem pracuje potężna i dość leciwa infrastruktura sieciowa. Wdrażaliśmy w zeszłym miesiącu lokalny serwer pocztowy w małym biurze na warszawskim Mokotowie. Skonfigurowanie Postfixa i Dovecota od zera uświadomiło nam, jak wiele zmiennych musi ze sobą zagrać, by głupi tekst dotarł na miejsce. Zrobiliśmy na wdrożeniu migrację z POP3 na IMAP dla 50 stacji, potem zawiesiła się autentykacja po SSL, więc wprowadzono poprawkę certyfikatów ręcznie przed poniedziałkiem. To u nas w sumie chyba hipoteza z wczoraj bo pewności do tych trendów rynkowych nikt obecnie nie ma, ale e-mail nigdzie się nie wybiera. Zobaczmy, jak to żelastwo funkcjonuje.
Jak dokładnie przebiega proces wysyłania e-maila?
Kiedy piszesz wiadomość, używasz programu pocztowego. W żargonie technicznym to MUA, czyli Mail User Agent. Może to być Outlook, Thunderbird lub po prostu strona internetowa z Gmailem. Twoja aplikacja nie wysyła maila bezpośrednio do kolegi. Komunikuje się z twoim serwerem pocztowym, a dokładniej z jego częścią zwaną MTA.
Mail Transfer Agent to oprogramowanie serwerowe. Przyjmuje wiadomość od ciebie. Sprawdza adres odbiorcy. Zaczyna szukać drogi do celu.
- MTA odpytuje globalny system nazw domenowych (DNS). Szuka informacji o tym, jaki serwer obsługuje pocztę dla domeny adresata. Otrzymuje w odpowiedzi konkretny adres IP. Ten proces trwa ułamki sekund, chyba że DNS dostawcy ma awarię, co kładzie całą komunikację w firmie.
- Nawiązuje połączenie.
- Przekazuje plik z tekstem i załącznikami.
Serwer odbiorcy posiada moduł MDA, czyli Mail Delivery Agent. Jego zadaniem jest umieszczenie odebranej wiadomości w odpowiednim folderze na dysku twardym maszyny. Czeka tam, aż odbiorca uruchomi swój program i zapyta o nowe maile. To jest bez mała najgorsza opcja z wszystkich, gdy serwer docelowy odrzuca połączenie ze względu na błędną konfigurację nadawcy. Wiadomość wraca wtedy z błędem NDR (Non-Delivery Report).
Czym różni się klient poczty od serwera pocztowego?
Klienci mylą te pojęcia bez przerwy. Klient poczty to interfejs. Aplikacja na twoim komputerze. Serwer pocztowy to maszyna fizyczna lub wirtualna podpięta do internetu 24 godziny na dobę. Klient tylko odczytuje i wysyła polecenia. Serwer wykonuje ciężką pracę sieciową. Jeżeli wyłączysz laptopa, klient poczty przestaje działać. Serwer nadal przyjmuje maile, które wpadają do ciebie w nocy.
Dlaczego protokół SMTP jest odpowiedzialny tylko za wysyłanie?
SMTP to skrót od Simple Mail Transfer Protocol. Powstał w latach osiemdziesiątych. Służy wyłącznie do pchania wiadomości do przodu. Nigdy nie służy do ich pobierania. To protokół typu push.
Jego działanie opiera się na prostych komendach tekstowych. Kiedyś można było połączyć się z serwerem przez Telnet i ręcznie wpisywać komendy, by wysłać maila. Zaczynasz od komendy HELO lub EHLO. Przedstawiasz się. Potem podajesz nadawcę przez MAIL FROM. Odbiorcę przez RCPT TO. Na końcu wrzucasz treść komendą DATA. System zamyka sesję po odebraniu kropki w nowej linii. To tyle. Żadnej magii.
Zastanawiacie się zresztą, dlaczego to na produkcji tak wyje na testach po drodze? Sam się nad tym borykałem dzisiaj u siebie we wtorek. SMTP w swojej pierwotnej formie nie miało żadnego uwierzytelniania. Każdy mógł wysłać maila podając się za dowolną osobę. Dlatego dzisiaj używamy rozszerzeń ESMTP, które wymuszają podanie loginu i hasła, zanim serwer MTA łaskawie przyjmie naszą wiadomość do wysyłki.
Jakie porty sieciowe wykorzystuje protokół SMTP?
Porty to wirtualne drzwi w serwerze. SMTP puka do kilku z nich w zależności od celu.
- Port 25 to absolutny standard komunikacji między serwerami (MTA do MTA). Niestety, dostawcy internetu domowego masowo blokują ten port. Dlaczego? Żeby zawirusowane komputery domowe nie wysyłały spamu bezpośrednio w świat. Zmieniliśmy te zasady na robocie lata temu, a ludzie wciąż dzwonią, że poczta im nie wychodzi.
- Port 587. Służy do komunikacji między twoim programem pocztowym a twoim serwerem (MUA do MTA). Wymaga logowania.
- Port 465. To port dla SMTPS, czyli wersji szyfrowanej od samego początku połączenia. Używany rzadziej, ale wciąż obsługiwany przez wiele starych systemów.
Czym różni się IMAP od POP3 przy odbieraniu poczty?
Skoro SMTP wypchnęło maila, musimy go jakoś odebrać. Do tego stworzono protokoły typu pull. Pytają one serwer, czy ma coś nowego.
POP3 to Post Office Protocol version 3. Działa brutalnie i prosto. Twój program łączy się z serwerem. Pobiera wszystkie nowe wiadomości na twój dysk twardy. Następnie ZABIERA je z serwera i trwale kasuje. Pobierasz maila na telefonie rano. Włączasz komputer w biurze po południu. Tego maila tam nie ma, bo jest tylko na telefonie. To protokół z czasów, gdy miejsce na serwerach kosztowało krocie i trzeba było je natychmiast zwalniać.
IMAP to Internet Message Access Protocol. Został stworzony do synchronizacji. Program pocztowy łączy się z serwerem, ale nie pobiera wiadomości na własność. Wyświetla ich kopię. Siedzisz przed lustrem odbijającym zawartość serwera. Jeśli przeczytasz maila na telefonie, serwer oznacza go jako przeczytany. Włączasz komputer w biurze. Widzisz, że mail jest już przeczytany. Tworzysz nowy folder na laptopie, folder pojawia się na serwerze i na telefonie. Wszystko jest spięte na bieżąco.
Kiedy warto wybrać POP3 zamiast IMAP?
Prawie nigdy. Użycie POP3 ma sens tylko w skrajnych przypadkach. Na przykład masz firmową skrzynkę o pojemności 1 GB. Dostajesz codziennie setki dużych załączników z projektami CAD. Skrzynka zapchałaby się w dwa dni. Ustawiasz POP3 na jednym głównym komputerze w biurze z dyskiem 2 TB. Komputer zasysa wszystko, czyści serwer, a ty masz archiwum u siebie. Ryzykujesz jednak utratę wszystkiego w razie awarii tego jednego dysku. Bez mała prawie pięćdziesiąt procent na plusie uderzając do przodu u wyników odzyskiwania danych dotyczy właśnie takich starych archiwów PST.
Co to jest rekord MX i jak kieruje wiadomościami DNS?
Wspomniałem wcześniej o systemie DNS. To książka telefoniczna internetu. Serwery pocztowe potrzebują specjalnego wpisu w tej książce. Nazywa się to rekord MX (Mail Exchange).
Kiedy wysyłasz maila na adres [email protected], twój serwer pyta DNS: „Kto obsługuje pocztę dla firma.pl?”. DNS sprawdza rekord MX dla tej domeny. Rekord ten zawiera adres docelowego serwera, na przykład mail.firma.pl, oraz priorytet liczbowy.
Możesz mieć kilka rekordów MX.
- Pierwszy rekord kieruje na główny serwer (priorytet 10).
- Drugi rekord kieruje na serwer zapasowy (priorytet 20). Wykorzystywany tylko wtedy, gdy główny leży.
Jeśli zmieniasz hosting, musisz zmienić rekordy MX w panelu domeny. Inaczej poczta nadal będzie trafiać na starą maszynę. Propagacja takich zmian w sieci trwa czasem kilkanaście godzin. Zrobiliśmy na wdrożeniu szybką zmianę TTL na 300 sekund, by przyspieszyć rozgłaszanie, ale i tak część dostawców zignorowała nasze ustawienia.
Jak zabezpiecza się serwery pocztowe przed spamem i podsłuchem?
Poczta elektroniczna została zaprojektowana bez myśli o bezpieczeństwie. Z biegiem lat dołożono do niej warstwy ochronne. Administratorzy walczą z fałszowaniem nadawców używając trzech mechanizmów weryfikacji w DNS.
SPF (Sender Policy Framework) to lista adresów IP, które mają prawo wysyłać maile w imieniu twojej domeny. Jeśli ktoś próbuje wysłać maila z IP, którego nie ma na liście, serwer odbiorcy traktuje to jako spam.
DKIM (DomainKeys Identified Mail) dodaje do każdego maila cyfrowy podpis kryptograficzny. Serwer odbiorcy pobiera z DNS twój klucz publiczny i sprawdza, czy treść wiadomości nie została zmieniona w drodze.
DMARC łączy SPF i DKIM. Mówi serwerowi odbiorcy, co ma zrobić z mailem, który nie przeszedł testów. Możesz nakazać odrzucenie takich wiadomości lub wrzucenie ich do kwarantanny. Wdrożenie DMARC u klienta B2B ucina problemy z podszywaniem się pod prezesa w atakach phishingowych.
Jak TLS i SSL szyfrują naszą komunikację?
Protokoły SSL i jego nowsza wersja TLS odpowiadają za to, by nikt nie podsłuchał twojego hasła i treści maila w kawiarni z publicznym Wi-Fi.
Kiedy twój klient łączy się z serwerem na porcie 993 (IMAP szyfrowany), serwer ZWRACA swój certyfikat. Klient sprawdza, czy certyfikat jest wystawiony przez zaufany urząd. Jeśli tak, obie strony ustalają jednorazowy klucz szyfrujący. Cała dalsza komunikacja to bełkot dla każdego, kto przechwytuje pakiety w sieci. Nawet SMTP używa komendy STARTTLS na porcie 587, by przejść z tekstu jawnego na szyfrowany przed wysłaniem loginu i hasła.
Zestawienie portów wygląda następująco dla typowej konfiguracji na środowiskach produkcyjnych.
| Protokół | Funkcja | Port szyfrowany | Port nieszyfrowany (przestarzały) |
| SMTP | Wysyłanie (MUA do MTA) | 587 (STARTTLS) | 25 (zablokowany dla użytkowników) |
| IMAP | Odbieranie (Synchronizacja) | 993 (SSL/TLS) | 143 |
| POP3 | Odbieranie (Pobieranie) | 995 (SSL/TLS) | 110 |
Przeglądając logi serwera widać dokładnie, kiedy urządzenie mobilne zrywa połączenie w połowie negocjacji TLS. Telefony mają tendencję do usypiania kart sieciowych w celu oszczędzania baterii. To powoduje zacinanie się pobierania nagłówków wiadomości. Użytkownik widzi kręcące się kółko i wini serwer, podczas gdy system operacyjny smartfona po prostu odciął zasilanie modułowi Wi-Fi na ułamek sekundy.
Serwery poczty to zlepek technologii z lat 80. połatanych kryptografią z XXI wieku. Działają, bo muszą. Każda próba zastąpienia e-maila czymś nowym kończy się porażką, ponieważ żaden inny system nie oferuje tak potężnej decentralizacji. Możesz założyć własny serwer w piwnicy i wysłać wiadomość do prezesa Google. Nie potrzebujesz do tego konta w korporacyjnym komunikatorze. Wymaga to tylko poprawnej konfiguracji rekordów MX, wpięcia stałego adresu IP i odrobiny cierpliwości przy konfigurowaniu filtrów antyspamowych SpamAssassin.
I to właśnie te filtry podejmują ostateczną decyzję. Badają nagłówki, szukają słów zakazanych, oceniają reputację twojego adresu IP na czarnych listach takich jak Spamhaus. Jeśli uzbierasz za dużo punktów karnych, twoja wiadomość trafia do folderu Spam. To tyle w temacie gwarancji dostarczenia. Jeżeli wysyłasz masowe newslettery ze zwykłego konta SMTP, polecisz na blacklistę w ciągu kilku godzin. Od tego są zewnętrzne systemy wysyłkowe typu transactional e-mail API.
Często zadawane pytania (FAQ)
-
Co oznacza błąd 550 SMTP?
Oznacza, że serwer odbiorcy odrzucił twoją wiadomość. Najczęściej adres e-mail nie istnieje, twoje IP jest na czarnej liście lub masz błędnie skonfigurowany rekord SPF w domenie. -
Czy można używać IMAP i POP3 jednocześnie?
Technicznie tak, na różnych urządzeniach. Praktycznie to proszenie się o kłopoty. Urządzenie z POP3 pobierze maile i skasuje je z serwera, przez co urządzenie z IMAP nagle straci dostęp do tych wiadomości. Trzymaj się jednego standardu. -
Dlaczego maile przychodzą z opóźnieniem?
Greylisting. Serwer odbiorcy celowo odrzuca pierwszą próbę doręczenia z kodem 4xx. Prawdziwy serwer SMTP ponowi próbę za kilka minut. Boty spamerskie zazwyczaj rezygnują po pierwszym błędzie. Opóźnia to pocztę o 5 do 15 minut. -
Co to jest Webmail?
To klient poczty (MUA) działający w przeglądarce internetowej. Skrypty na serwerze WWW (np. Roundcube) łączą się lokalnie z demonem IMAP na tym samym serwerze i generują widok HTML dla użytkownika. -
Czy mój dostawca internetu czyta moje maile?
Jeśli używasz portów 993, 995 i 587 z TLS, dostawca widzi tylko to, z jakim serwerem się łączysz i ile danych przesyłasz. Treść maila i hasła są zaszyfrowane. -
Jak sprawdzić, czy mój serwer pocztowy jest na czarnej liście?
Użyj darmowych narzędzi MXToolbox. Wpisz swój adres IP serwera wysyłkowego. System odpyta kilkadziesiąt globalnych baz RBL (Real-time Blackhole List) i pokaże ewentualne notowania.
Bibliografia
1. Naukowa i Akademicka Sieć Komputerowa – https://www.nask.pl
2. Urząd Komunikacji Elektronicznej – https://uke.gov.pl
3. Internet Engineering Task Force – https://www.ietf.org
4. CERT Polska – https://cert.pl
Skonfiguruj własnego Postfixa na lokalnej maszynie wirtualnej w ten weekend, wyślij jedną wiadomość telnetem na port 25 z palca i zobacz, na którym etapie twój dostawca internetu zablokuje pakiety. Czekam na logi w komentarzach.
