Kompletny Przewodnik Konfiguracji SMTP: Porty, Uwierzytelnianie i Konfiguracja Serwera Poczty

Ilustracja koncepcji cyberbezpieczeństwa z uwierzytelnianiem, zabezpieczonym serwerem z tarczą i kłódką oraz portami połączonymi liniami na granatowym tle

Konfiguracja SMTP to proces ustawienia serwera pocztowego (lub klienta poczty elektronicznej) w celu prawidłowego wysyłania wiadomości przy użyciu protokołu Simple Mail Transfer Protocol. Zrób to dobrze, a Twoje e-maile trafią do skrzynek odbiorczych. Zrób to źle, a będziesz mieć do czynienia z błędami dostarczania, błędami uwierzytelniania lub wiadomościami trafiającymi do folderów spam. Trzy rzeczy, które musisz zawsze dobrze ustawić, to prawidłowy port, prawidłowa metoda szyfrowania i działające dane uwierzytelniające.

Co SMTP Naprawdę Robi

SMTP to protokół, którego używa Twój klient poczty lub aplikacja do przekazania wychodzących wiadomości serwerowi pocztowemu, który następnie kieruje je do odbiorcy. Obsługuje tylko stronę wysyłania. Odbieranie e-maili obsługują oddzielne protokoły: IMAP (do synchronizacji) lub POP3 (do pobierania).

Kiedy klikniesz "Wyślij", Twój klient otwiera połączenie TCP z serwerem SMTP, uwierzytelnia się, przekazuje wiadomość i rozłącza się. Serwer następnie próbuje dostarczyć tę wiadomość do serwera pocztowego odbiorcy przy użyciu tego samego protokołu, wyszukując rekord DNS MX (Mail Exchange) adresata, aby dowiedzieć się, dokąd ją wysłać.

SMTP jest zdefiniowany w RFC 5321 , które zastąpiło oryginalne RFC 2821. Zrozumienie specyfikacji pomaga, gdy trzeba debugować surowe rozmowy SMTP lub konfigurować serwer od zera.

Porty SMTP Wyjaśnione: 25, 465 i 587

Istnieją trzy porty, które napotkasz w każdej konfiguracji SMTP. Każdy ma określoną rolę, a użycie złego portu to jedna z najczęstszych przyczyn błędów dostarczania e-maili.

Port Nazwa Szyfrowanie Typowe Użycie
25 SMTP Brak (lub STARTTLS) Przekierowanie serwer-do-serwera (MTA do MTA)
465 SMTPS Niejawny SSL/TLS Starsze przesyłanie od klienta (starsze aplikacje)
587 Submission STARTTLS (jawny TLS) Przesyłanie e-maila od uwierzytelnionego klienta

Port 25 vs 587: Który Powinieneś Użyć?

Port 25 to oryginalny port SMTP, zdefiniowany już w 1982 roku. Został zaprojektowany dla serwerów pocztowych komunikujących się ze sobą, a nie dla użytkowników końcowych przesyłających pocztę. Większość dostawców ISP i usług w chmurze blokuje wychodzący port 25 z adresów IP mieszkalnych i hostingu wspólnego, aby zapobiec spamowi. Jeśli uruchamiasz aplikację, która wysyła e-maile, próba użycia portu 25 prawie na pewno się nie powiedzie.

Port 587 to prawidłowy wybór do przesyłania e-maili z klienta lub aplikacji. Został znormalizowany w RFC 6409 jako dedykowany port "przesyłania wiadomości". Wymaga STARTTLS, co oznacza, że połączenie rozpoczyna się niezaszyfrowane, a następnie uaktualnia się do TLS przed wysłaniem jakichkolwiek poświadczeń. To jest to, czego oczekują Gmail, Outlook i praktycznie każdy nowoczesny dostawca poczty elektronicznej.

Nigdy nie wysyłaj poświadczeń przez niezaszyfrowane połączenie. Jeśli Twój klient SMTP powraca do zwykłego tekstu, gdy STARTTLS się nie powiedzie, przesyła Twoją nazwę użytkownika i hasło w postaci zwykłego tekstu. Zawsze skonfiguruj klienta, aby wymagał TLS i odrzucał połączenie, jeśli nie można ustanowić szyfrowania.

Port SMTP 465: Starszy Port SSL

Port 465 ma niezwykłą historię. Został krótko przypisany do SMTPS (SMTP przez SSL) w 1997 roku, a następnie to przypisanie zostało cofnięte w 1998 roku, gdy STARTTLS na porcie 587 stał się preferowanym podejściem. Pomimo bycia oficjalnie przestarzałym, wiele serwerów pocztowych nadal go obsługuje, a później został ponownie zarejestrowany przez IANA do innego celu.

W praktyce większość dostawców nadal akceptuje połączenia na porcie 465 przy użyciu niejawnego SSL/TLS. Oznacza to, że TLS opakowuje całe połączenie od samego pierwszego bajtu, zamiast uaktualniać się w trakcie uzgadniania, jak robi to STARTTLS. Niektóre starsze aplikacje i urządzenia (niektóre drukarki sieciowe, starsze systemy CRM) obsługują tylko port 465, dlatego pozostaje on przydatny w takich przypadkach.

  • Użyj portu 465, jeśli Twoja aplikacja lub urządzenie wymagają niejawnego SSL i nie mogą obsługiwać STARTTLS.
  • Użyj portu 587 do wszystkiego innego. To nowoczesny standard.
  • Całkowicie unikaj portu 25 do przesyłania od klienta.

Uwierzytelnianie SMTP: Jak To Działa

Uwierzytelnianie SMTP (często pisane jako SMTP AUTH) jest zdefiniowane w RFC 4954 . Wymaga od klienta udowodnienia swojej tożsamości, zanim serwer zaakceptuje wychodzącą pocztę. Bez tego każdy, kto mógłby dotrzeć do Twojego serwera, mógłby go użyć do wysyłania spamu, dlatego otwarte przekierowania są traktowane jako poważny problem bezpieczeństwa.

Najczęstsze mechanizmy uwierzytelniania, które zobaczysz w konfiguracji SMTP, to:

  • PLAIN: Wysyła nazwę użytkownika i hasło zakodowane w base64. Bezpieczne tylko przez zaszyfrowane połączenie (TLS musi być aktywny najpierw).
  • LOGIN: Podobne do PLAIN, ale wysyła nazwę użytkownika i hasło jako oddzielne wymiany. Wymaga również TLS.
  • CRAM-MD5: Mechanizm wyzwanie-odpowiedź, który unika bezpośredniego wysyłania hasła. Mniej powszechne na nowoczesnych serwerach.
  • XOAUTH2: Używany przez Gmail i inne konta Google Workspace. Zamiast hasła, podajesz token dostępu OAuth 2.0. To jest to, czego potrzebujesz, gdy "dostęp dla mniej bezpiecznych aplikacji" jest wyłączony.
Hasła aplikacji vs. Twoje główne hasło: Gmail, Outlook i Yahoo obsługują hasła specyficzne dla aplikacji dla klientów SMTP, które nie obsługują OAuth. Wygeneruj je z ustawień bezpieczeństwa konta i użyj je zamiast swojego prawdziwego hasła. Mogą być odwołane niezależnie bez zmiany Twoich głównych poświadczeń.

Konfiguracja Serwera Poczty Krok Po Kroku

Niezależnie od tego, czy konfigurujesz klienta poczty, taki jak Thunderbird, aplikację internetową wysyłającą e-maile transakcyjne, czy samodzielnie hostowany serwer pocztowy, proces następuje w tej samej sekwencji logicznej.

Dla Klientów Poczty i Aplikacji

  1. Uzyskaj nazwę hosta SMTP od swojego dostawcy. Przykłady: smtp.gmail.com , smtp.office365.com , mail.yourdomain.com .
  2. Wybierz prawidłowy port. Używaj 587 z STARTTLS jako domyślnie. Wróć do 465 z SSL tylko, jeśli Twoja aplikacja tego wymaga.
  3. Wprowadź swoje dane uwierzytelniające. To zwykle Twój pełny adres e-mail jako nazwa użytkownika plus hasło lub hasło aplikacji.
  4. Ustaw metodę szyfrowania. Dopasuj ją do portu: STARTTLS dla 587, SSL/TLS dla 465.
  5. Przetestuj połączenie. Większość klientów poczty ma przycisk "Testuj Ustawienia Konta" lub "Weryfikuj". Użyj go przed zapisaniem.

Dla Samodzielnie Hostowanego Serwera Pocty (Przykład Postfix)

Jeśli uruchamiasz własny serwer z Postfixem, główna konfiguracja SMTP znajduje się w /etc/postfix/main.cf . Oto minimalny działający przykład dla serwera, który przekierowuje przez dostawcę SMTP trzeciej strony:

# /etc/postfix/main.cf - Basic relay configuration

relayhost = [smtp.sendgrid.net]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = encrypt
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_use_tls = yes

Po edycji, utwórz /etc/postfix/sasl_passwd ze swoimi poświadczeniami, uruchom postmap /etc/postfix/sasl_passwd aby je zahashować, a następnie przeładuj Postfixa za pomocą systemctl reload postfix .

Natychmiast zablokuj sasl_passwd. Uruchom chmod 600 /etc/postfix/sasl_passwd i chmod 600 /etc/postfix/sasl_passwd.db po utworzeniu pliku. Czytelne pliki poświadczeń to częsta błędna konfiguracja serwera.

Typowe Ustawienia SMTP Dla Popularnych Dostawców

Dostawca Host SMTP Port Szyfrowanie Uwaga Dotycząca Uwierzytelniania
Gmail smtp.gmail.com 587 STARTTLS Użyj hasła aplikacji lub OAuth2
Gmail (alt) smtp.gmail.com 465 SSL/TLS Użyj hasła aplikacji lub OAuth2
Microsoft 365 smtp.office365.com 587 STARTTLS Nowoczesne Uwierzytelnianie / hasło aplikacji
Yahoo Mail smtp.mail.yahoo.com 465 SSL/TLS Wymagane hasło aplikacji
Zoho Mail smtp.zoho.com 587 STARTTLS Pełny e-mail jako nazwa użytkownika
Amazon SES email-smtp.us-east-1.amazonaws.com 587 STARTTLS Poświadczenia SMTP IAM

Rozwiązywanie Problemów Z Połączeniem SMTP

Większość błędów SMTP należy do małej liczby kategorii. Zanim zaglądniesz do dzienników, sprawdź, czy port jest faktycznie dostępny z Twojego serwera lub sieci. Zapora ogniowa lub blokada ISP to często sprawca, a możesz to potwierdzić szybko bez żadnych specjalnych narzędzi.

Możesz sprawdzić, czy port SMTP jest otwarty na Twoim serwerze pocztowym, używając bezpłatnego narzędzia do sprawdzania portów online. Wpisz nazwę hosta lub adres IP serwera pocztowego, wybierz port 25, 465 lub 587 i uruchom test. Jeśli wynik wskaże "zamknięty" lub "timeout", problem jest na poziomie sieci (zapora, blokada ISP lub usługa nie jest uruchomiona), a nie błąd konfiguracji wewnątrz Twojej aplikacji.

Typowe Komunikaty Błędów i Co Oznaczają

  • Połączenie odrzucone / Przekroczono limit czasu połączenia: Port jest zablokowany lub usługa nie nasłuchuje. Sprawdź reguły zapory i potwierdź, że demon SMTP jest uruchomiony.
  • 535 Uwierzytelnianie nie powiodło się: Złe hasło lub nazwa użytkownika. Dla Gmaila zwykle oznacza to, że potrzebujesz hasła aplikacji, a nie hasła konta.
  • 550 5.7.1 Dostęp do przekierowania odrzucony: Twój serwer nie jest skonfigurowany do przekierowywania poczty dla tego adresu nadawcy, lub uwierzytelnianie nie miało miejsca przed poleceniem MAIL FROM.
  • 421 Zbyt wiele połączeń: Serwer odbiorczy ogranicza Cię szybkością. Zmniejsz częstotliwość wysyłania lub wdrażaj kolejkę z opóźnieniami.
  • Uzgadnianie TLS nie powiodło się: Niezgodność certyfikatu lub przestarzała wersja TLS. Sprawdź, czy certyfikat SSL serwera jest ważny i czy nie próbujesz użyć TLS 1.0 lub 1.1, które większość dostawców wyłączyła.

Szybka Lista Kontrolna Diagnostyki

  1. Potwierdź, że port SMTP jest otwarty i dostępny ze środowiska wysyłania.
  2. Sprawdź, czy nazwa hosta jest prawidłowo rozpoznawana za pomocą nslookup smtp.yourdomain.com .
  3. Sprawdź, czy Twój adres IP wysyłającego nie znajduje się na liście blokady, używając narzędzia takiego jak MXToolbox Blacklist Check .
  4. Potwierdź, że Twoje rekordy DNS SPF, DKIM i DMARC są prawidłowo opublikowane. Brakujące lub uszkodzone rekordy powodują, że uzasadniona poczta jest odrzucana lub trafia do spamu.
  5. Przejrzyj dzienniki serwera pocztowego. W przypadku Postfixa sprawdź /var/log/mail.log . Rzeczywiste kody odpowiedzi SMTP w dzienniku mówią Ci dokładnie, co serwer zdalny odrzucił i dlaczego.
SPF, DKIM i DMARC są równie ważne jak Twoje ustawienia SMTP. Nawet idealnie skonfigurowany serwer SMTP będzie miał problemy z dostarczonością, jeśli brakuje tych rekordów DNS. SPF mówi serwerom odbiorczym, które adresy IP mogą wysyłać dla Twojej domeny. DKIM dodaje podpis kryptograficzny do wychodzących wiadomości. DMARC mówi odbiorcom, co zrobić, gdy którekolwiek ze sprawdzeń się nie powiedzie.
Narzędzie do sprawdzania portów online weryfikujące status portu SMTP dla konfiguracji serwera poczty elektronicznej

Czy Twój Port SMTP Jest Naprawdę Otwarty?

Zanim obwinisz swoją konfigurację smtp, potwierdź, że problem nie jest zablokowanym portem. Nasze bezpłatne narzędzie do sprawdzania portów pozwala natychmiast przetestować port 25, 465 lub 587 na dowolnym serwerze pocztowym, aby wiedzieć, czy masz do czynienia z problemem zapory lub błędem konfiguracji.

Sprawdź Swój Port SMTP Teraz →

Port 465 używa niejawnego SSL/TLS, co oznacza, że całe połączenie jest szyfrowane od samego początku. Port 587 używa STARTTLS, który rozpoczyna się jako zwykłe połączenie, a następnie uaktualnia się do TLS przed wysłaniem poświadczeń. Oba są bezpieczne, gdy są prawidłowo skonfigurowane, ale port 587 to nowoczesny standard zalecany do przesyłania e-maili od klienta. Używaj 465 tylko, jeśli Twoja aplikacja wymagała niejawnego SSL i nie może obsługiwać STARTTLS.

Port 25 jest blokowany w większości sieci mieszkalnych i hostingu wspólnego, ponieważ historycznie był używany do wysyłania spamu bezpośrednio z zainfekowanych maszyn. Blokując wychodzący port 25, dostawcy ISP i usług w chmurze (w tym domyślnie AWS EC2) zapobiegają wykorzystaniu ich zakresów adresów IP jako źródeł spamu. Do wysyłania e-maili z aplikacji użyj portu 587. Jeśli uruchamiasz uzasadniony serwer pocztowy, który potrzebuje otwartego portu 25 do przekierowania serwer-do-serwera, zazwyczaj musisz poprosić dostawcę o zniesienie blokady.

W większości przypadków Twoją nazwą użytkownika SMTP jest Twój pełny adres e-mail, na przykład you@yourdomain.com . Niektóre starsze systemy używają tylko części lokalnej przed znakiem @. Dla usług takich jak Amazon SES, nazwa użytkownika to oddzielne poświadczenie SMTP generowane przez IAM, a nie Twój adres e-mail. Zawsze sprawdzaj dokumentację dla swojego konkretnego dostawcy. Używając Gmaila lub Outlooka z włączonym uwierzytelnianiem dwuskładnikowym, będziesz musiał wygenerować hasło specyficzne dla aplikacji zamiast używania zwykłego hasła konta.

Możesz testować na wielu poziomach. Najpierw sprawdź, czy port SMTP jest dostępny, używając narzędzia do sprawdzania portów lub uruchamiając telnet smtp.yourdomain.com 587 z Twojego serwera. Jeśli port jest otwarty, możesz przetestować pełne uzgadnianie SMTP za pomocą openssl s_client -starttls smtp -connect smtp.yourdomain.com:587 , które pokazuje certyfikat TLS i pozwala wpisać surowe polecenia SMTP. Do pełnego testu end-to-end bez dostarczania do prawdziwej skrzynki odbiorczej użyj usługi takiej jak Mailtrap, która akceptuje połączenia SMTP i pokazuje Ci wiadomość bez jej przekazywania.

Pomyślne uwierzytelnianie SMTP tylko dowodzi, że mogą używać serwera. Filtrowanie spamu odbywa się niezależnie na końcu odbiorczym i opiera się na kombinacji czynników: czy Twój adres IP wysyłającego znajduje się na liście blokady, czy Twój rekord SPF autoryzuje ten adres IP do wysyłania dla Twojej domeny, czy Twój podpis DKIM jest ważny i odpowiada Twojemu rekordowi DNS, czy Twoja polityka DMARC jest opublikowana. Brakujący lub uszkodzony rekord SPF sam w sobie wystarczy, aby Gmail lub Outlook wysłały Twoje wiadomości do spamu. Sprawdź wszystkie trzy rekordy DNS i zweryfikuj reputację Twojego adresu IP wysyłającego.

Tak, ale z ograniczeniami. Serwer SMTP Gmaila ( smtp.gmail.com na porcie 587) będzie wysyłać pocztę uwierzytelnioną jako Twoje konto Gmail. Jeśli chcesz, aby adres "Od" pokazywał Twoją niestandardową domenę, musisz dodać ten adres w ustawieniach Gmaila w sekcji "Wyślij jako" i zweryfikować własność. Jednak Gmail dodaje adnotację "wysłane przez gmail.com" widoczną w niektórych klientach poczty. Aby uzyskać czystszą konfigurację z Twoją własną domeną, użycie dostawcy poczty transakcyjnej, takiego jak Amazon SES, lub dedykowanego przekaźnika SMTP, to lepszy wybór długoterminowy.