Przy wysyłaniu poczty z aplikacji pojawiają się cztery porty: 25, 465, 587 i 2525. Dwa z nich to standardowe porty do wysyłania poczty, 587 i 465, a najczęściej powtarzana rada dotycząca 465 jest nieaktualna od 2018 roku. Port 25 w ogóle nie służy do wysyłania poczty, a 2525 to konwencja bez oparcia w standardzie.
Krótka odpowiedź: użyj 587 ze STARTTLS. Użyj 465, jeśli Twój klient lepiej radzi sobie z bezpośrednim otwarciem połączenia TLS. Użyj 2525, jeśli coś w Twojej sieci blokuje 587. Nie używaj 25 do wysyłania poczty z aplikacji.
Do czego służy każdy port?
Porty różnią się w dwóch wymiarach: czy są przeznaczone do wysyłania czy przekazywania poczty oraz kiedy w trakcie połączenia zaczyna się szyfrowanie.
- 25 to port do przekazywania (relay). Tak jeden serwer pocztowy przekazuje wiadomość drugiemu. Powstał przed uwierzytelnionym wysyłaniem i nie zakłada ani jednego, ani drugiego.
- 587 to port do wysyłania poczty (submission), zdefiniowany w tym celu przez RFC 6409. Połączenie zaczyna się jako tekstowe i przechodzi na TLS za pomocą polecenia
STARTTLS, zanim zostaną wysłane dane uwierzytelniające. - 465 to port do wysyłania z niejawnym TLS. Uzgadnianie TLS następuje jako pierwsze, a cała komunikacja SMTP odbywa się wewnątrz niego, więc nic nigdy nie jest przesyłane otwartym tekstem. Biblioteki zwykle oznaczają to jako "SSL/TLS" lub "SMTPS".
- 2525 nie ma żadnego standardu przypisującego go do SMTP. Dostawcy oferują go jako alternatywę dla 587 w sieciach, które blokują standardowy port.
Różnica między 465 a 587 dotyczy tego, kiedy rozpoczyna się TLS, a nie siły szyfrowania. Na porcie 465 połączenie jest szyfrowane od pierwszego bajtu. Na 587 szyfrowanie zaczyna się o jedną wymianę później, a poprawnie skonfigurowany serwer odmawia AUTH, dopóki to nie nastąpi.
Czy port 465 jest przestarzały?
Nie, a to najczęściej powtarzana nieaktualna rada dotycząca SMTP.
Historia jest rzeczywiście zagmatwana. Port 465 został przypisany do SMTP przez TLS na wczesnym etapie, a potem wycofany na rzecz podejścia STARTTLS na porcie 587, i stąd wzięła się rada o "465 is deprecated". Przez pewien czas była ona prawidłowa. Następnie RFC 8314, opublikowany w styczniu 2018 roku, zalecił niejawne TLS do wysyłania poczty i przywrócił 465 jako port do tego celu, pod nazwą usługi submissions.
Strona twierdząca, że 465 jest przestarzały, opisuje stan sprzed 2018 roku. Oba porty, 465 i 587, są aktualne. Wybierz ten, który Twój klient obsługuje najwygodniej, i preferuj 465, jeśli wolisz w ogóle nie polegać na przejściu z tekstu jawnego na TLS.
Dlaczego port 25 jest blokowany i jak to sprawdzić?
Wychodzący port 25 jest blokowany przez wielu konsumenckich dostawców internetu oraz dostawców chmury i hostingu, ponieważ nieuwierzytelniony port relay na przejętej maszynie to sposób, w jaki rozsyłany jest masowy spam. To, czy blokadę można zdjąć, zależy od tego, kto ją ustawił. Konsumencki dostawca internetu zwykle nie zdejmie jej dla łącza domowego, natomiast dostawcy chmury różnią się: niektórzy akceptują wniosek o usunięcie blokady, a co najmniej jeden nie przewiduje żadnych wyjątków. Sprawdź politykę swojego dostawcy, zamiast zakładać cokolwiek.
Możesz potwierdzić blokadę, otwierając połączenie ze znanym serwerem pocztowym na porcie 25 i sprawdzając, czy otrzymujesz powitanie 220, czy timeout. Ręczna sesja to najczytelniejszy sposób, a sprawdzanie połączenia SMTP za pomocą sesji telnet przeprowadza Cię przez jedną taką sesję.
Jeśli port 25 jest zablokowany, to nie jest problem do rozwiązania. Aplikacja powinna i tak wysyłać pocztę na porcie 587 lub 465.
Jaka jest różnica między wysyłaniem a przekazywaniem poczty?
Wysyłanie (submission) to moment, w którym klient pocztowy lub aplikacja przekazuje nową wiadomość serwerowi, na którym się uwierzytelniła. Przekazywanie (relay) to przesyłanie istniejącej wiadomości przez serwer w kierunku jej celu.
Ta różnica decyduje o tym, który port i które reguły mają zastosowanie. Wysyłanie wymaga uwierzytelnienia, pozwala serwerowi poprawić i podpisać wiadomość przed wysłaniem, i odbywa się na porcie 587 lub 465. Przekazywanie odbywa się na porcie 25, między serwerami, i to właśnie na jego podstawie systemy antyspamowe i reputacyjne po stronie odbiorcy oceniają wiadomość.
Aplikacja wysyłająca własną pocztę zawsze wykonuje submission. Jeśli konfigurujesz coś i sięgasz po port 25, konfiguracja opisuje niewłaściwą połowę systemu.
Jakie porty akceptuje Bird?
Trzy, a port 25 celowo nie jest wśród nich:
| Port | Szyfrowanie |
|---|---|
| 465 | Niejawne TLS (SMTPS) |
| 587 | STARTTLS |
| 2525 | STARTTLS |
Na portach 587 i 2525 AUTH jest odrzucane, dopóki nie zostanie wykonane STARTTLS, więc dane uwierzytelniające nigdy nie są przesyłane otwartym tekstem na żadnym z tych trzech portów. Port 25 nie jest udostępniany do wysyłania poczty.
Host zależy od regionu Twojego klucza, czyli prefiksu w samym kluczu: klucz bk_eu1_... wysyła przez eu1.smtp.bird.com, klucz bk_us1_... przez us1.smtp.bird.com. Do uwierzytelnienia służy Twój zwykły klucz API, a nie oddzielne poświadczenie SMTP: nazwa użytkownika to dosłowny ciąg bird, a hasło to klucz.
Poczta wysłana przez SMTP jest traktowana dokładnie tak samo jak poczta wysłana przez e-mailowe API, z tą samą weryfikacją domeny, podpisywaniem DKIM, obsługą wstrzymań, śledzeniem i zdarzeniami. Wyślij e-mail przez SMTP zawiera pełną referencję połączenia, dwie opisane sesje, jedną na porcie 465 i jedną wspólną dla 587 i 2525, oraz domyślne ustawienia klucza wpływające na wysyłkę.
Jak sprawdzić, jakiego portu używa mój klient?
Gdzie szukać, zależy od oprogramowania, ale schemat jest spójny:
- Frameworki aplikacyjne umieszczają go w konfiguracji poczty, zwykle obok hosta, jako ustawienie
portlubMAIL_PORT. - Systemy zarządzania treścią udostępniają go na stronie ustawień wtyczki SMTP, obok listy rozwijanej z szyfrowaniem. Ta lista to ustawienie, które najczęściej jest źle dobrane: "SSL/TLS" oznacza 465, a "STARTTLS" oznacza 587 lub 2525. Niedopasowanie tych dwóch wartości powoduje, że połączenie wisi lub jest odrzucane, zamiast zwrócić użyteczny błąd.
- Urządzenia takie jak drukarki i skanery umieszczają go w ustawieniach powiadomień lub skanowania do e-maila.
Jeśli poczta nie działa i podejrzewasz port, przetestuj połączenie bezpośrednio, zanim zmienisz kod aplikacji. Ręczna sesja pokaże, czy port jest osiągalny, czy TLS jest negocjowane i czy uwierzytelnienie jest akceptowane, co pozwala odróżnić blokadę sieciową od problemu z poświadczeniami.
W skrócie
Użyj 587 ze STARTTLS, chyba że masz powód, żeby tego nie robić.
To port do wysyłania poczty zdefiniowany w RFC 6409, obsługiwany przez każdego popularnego klienta i bibliotekę.
Port 465 nie jest przestarzały.
Został wycofany na rzecz SMTP przez TLS, a następnie RFC 8314 przywrócił go w 2018 roku jako zalecany port do wysyłania z niejawnym TLS. Porady nazywające go przestarzałym pochodzą sprzed tej zmiany.
Port 25 służy do przekazywania poczty między serwerami.
Dostawcy hostingu i konsumenccy dostawcy internetu blokują wychodzący port 25, żeby ograniczyć spam. Nie jest to port, na którym aplikacja powinna wysyłać pocztę.
Port 2525 to rozwiązanie awaryjne bez oparcia w standardzie.
Żaden RFC nie przypisuje go do SMTP. Dostawcy oferują go, ponieważ niektóre sieci blokują 587, a poza tym zachowuje się tak samo jak 587.
