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.
Spis treści
- Co SMTP Naprawdę Robi
- Porty SMTP Wyjaśnione: 25, 465 i 587
- Port 25 vs 587: Który Powinieneś Użyć?
- Port SMTP 465: Starszy Port SSL
- Uwierzytelnianie SMTP: Jak To Działa
- Konfiguracja Serwera Poczty Krok Po Kroku
- Typowe Ustawienia SMTP Dla Popularnych Dostawców
- Rozwiązywanie Problemów Z Połączeniem SMTP
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.
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.
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
-
Uzyskaj nazwę hosta SMTP od swojego dostawcy.
Przykłady:
smtp.gmail.com,smtp.office365.com,mail.yourdomain.com. - Wybierz prawidłowy port. Używaj 587 z STARTTLS jako domyślnie. Wróć do 465 z SSL tylko, jeśli Twoja aplikacja tego wymaga.
- 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.
- Ustaw metodę szyfrowania. Dopasuj ją do portu: STARTTLS dla 587, SSL/TLS dla 465.
- 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
.
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
- Potwierdź, że port SMTP jest otwarty i dostępny ze środowiska wysyłania.
-
Sprawdź, czy nazwa hosta jest prawidłowo rozpoznawana za pomocą
nslookup smtp.yourdomain.com. - 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 .
- 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.
-
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.
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.