odwrotny serwer proxy dla serwerów SMTP
i obsługuje żądania klientów, zwiększając bezpieczeństwo, wydajność i skalowalność.

klienci wysyłają swoje żądania do odwrotnego serwera proxy,
który kieruje je do odpowiednich serwerów,
pełniących funkcję pojedynczego, bezpiecznego punktu dostępu.
Główne korzyści:
- Bezpieczeństwo
Może blokować złośliwe żądania, szyfrować ruch
i chronić serwery zaplecza przed bezpośrednimi atakami. - Wydajność
Rozprasza ruch przychodzący na wiele serwerów, zapobiegając przeciążeniu
pojedynczego serwera i zapewniając większą dostępność. - Skalowalność
Umożliwia dodawanie i usuwanie serwerów zaplecza bez przerywania świadczenia usług,
oferując możliwość obsługi rosnącego ruchu.
Odwrotny serwer proxy tylko HTTP (warstwa 7)
W Internecie dostępnych jest wiele narzędzi; po przeprowadzeniu badań początkowo wykluczyliśmy te, które obsługują wyłącznie protokół HTTP (warstwa 7):
NIE Apache
„Ojej. Poświęć chwilę na zapoznanie się z technologiami, z którymi masz do czynienia. Poczta e-mail korzysta z SMTP. Apache korzysta z HTTP. Apache nie wie absolutnie nic o SMTP. Jeśli chcesz pracować z wiadomościami e-mail, potrzebujesz technologii obsługującej SMTP.” – EEAA skomentował 18 sierpnia 2016 o 2:49
NIE Caddy
„Caddy nie obsługuje proxy TCP, tylko HTTP przez TCP. Użyj odwrotnego proxy, które obsługuje proxy TCP, takiego jak Traefik, Nginx lub haproxy, albo skorzystaj z tej eksperymentalnej wtyczki”. – Komentarz ElevenNotes z 24 września 2024 r.
Następnie skupiliśmy się na trzech polecanych w komentarzach: „Traefik, NginX lub HAProxy”, instalując je i testując jeden po drugim.
Traefik był pierwszym wyborem.
Większość samouczków zaczyna się od Dockera, platformy, której chciałem uniknąć i postawić na proste rozwiązanie, bazujące na przykład na jednym z menedżerów pakietów Linuksa, np. YUM dla dystrybucji opartych na pakietach RPM (np. Fedora i CentOS), lub APT (Advanced Package Tool), który jest używany w dystrybucjach opartych na Debianie (np. Ubuntu i Debian).
Po długich poszukiwaniach znaleźliśmy ten artykuł, który opisuje rodzaj instalacji, jakiej szukaliśmy: Konfiguracja Traefika jako usługi systemd.
Jedna uwaga: musisz zmienić ustawienia SELinux z „Enforcing” na „Permissive”
Ponownie, po wypróbowaniu dwóch kursów na Udemy, znaleźliśmy ten doskonały:
Traefik Crash Course (bez Dockera).
Udało nam się go uruchomić, odtwarzając dostarczone przykłady. Pod koniec filmu, znakomity instruktor wyraził całkowitą dezaprobatę dla tego narzędzia:
Traefik Crash Course - 53:50 Podsumowanie.
To zniechęciło nas do dalszych testów i skłoniło do spróbowania czegoś innego.
NginX był drugim wyborem
W tym przypadku instalacja była prostsza, w skrócie używając YUM:
yum install epel-release nginx nginx-mod-stream nginx-mod-mail
Uwaga: w SELinux musisz włączyć przekaźnik:
setsebool -P httpd_can_network_relay 1
Podczas szkolenia postawiliśmy na bezpieczeństwo, z tym samym instruktorem, co podczas poprzedniego kursu:
NginX Crash Course (pierwsza część kończy się po około godzinie i dwudziestu minutach). Instruktor również NIE jest przekonany do tej aplikacji, zwłaszcza do tego, że działa ona zarówno jako serwer WWW, jak i odwrotny serwer proxy:
NginX Crash Course - 1:20:10 Podsumowanie.
Raport kończy się stwierdzeniem: „Wybieram HAProxy zamiast NginX”, więc postanowiliśmy również wypróbować HAProxy.
Na koniec wypróbowaliśmy również HAProxy.
Instalacja okazała się najłatwiejszą rzeczą, jaką kiedykolwiek zrobiono, ponieważ jest to bardzo powszechna aplikacja dostępna we wszystkich menedżerach pakietów Linux, na przykład: yum install haproxy
Skonsultowaliśmy się także z naszym zaufanym instruktorem: HAProxy Crash Course.
Działa, ale niestety NIE nadaje się do uwierzytelniania SMTP:
„Nie można skonfigurować haproxy w ten sposób, ponieważ haproxy w ogóle nie obsługuje SMTP”.
– lukastribus Komentarz z 17 sierpnia 2023 r.
Standardowy serwer SMTP jako odwrotny serwer proxy
W tym momencie, po dwóch tygodniach testów, zdaliśmy sobie sprawę, że
lepszym rozwiązaniem jest użycie standardowego serwera SMTP jako odwrotnego serwera proxy dla innych serwerów SMTP.
Spełnia swoje zadanie, wykorzystując wyłącznie protokół SMTP, prawidłowo uwierzytelnia połączenia
i może przekazywać żądania do innych serwerów SMTP za pomocą funkcji „smarhost”.
W Postfixie, w pliku main.cf, jako
relayhost = [smarthost_address]:port
W Sendmailu, w sendmail.mc, jako
define(`SMART_HOST',`mail.example.com')