Reverse-Proxy für SMTP-Server
um Clientanfragen zu bearbeiten und so Sicherheit, Leistung und Skalierbarkeit zu verbessern.

senden die Clients ihre Anfragen an den Reverse-Proxy,
der sie an die entsprechenden Server weiterleitet
und dabei als einziger, sicherer Zugriffspunkt fungiert.
Wichtigste Vorteile:
- Sicherheit:
Es kann bösartige Anfragen blockieren, den Datenverkehr verschlüsseln
und Backend-Server vor direkten Angriffen schützen. - Leistung:
Der eingehende Datenverkehr wird auf mehrere Server verteilt, wodurch eine Überlastung
einzelner Server verhindert und eine höhere Verfügbarkeit gewährleistet wird. - Skalierbarkeit:
Sie ermöglicht das Hinzufügen oder Entfernen von Backend-Servern ohne Serviceunterbrechung und
bietet somit die Möglichkeit, wachsendes Datenaufkommen zu bewältigen.
HTTP-only Reverse-Proxy (Schicht 7)
Im Internet sind verschiedene Tools verfügbar; nach eingehender Recherche haben wir zunächst diejenigen ausgeschlossen, die nur das HTTP-Protokoll (Schicht 7) unterstützen:
Kein Apache
„Oh je. Nehmen Sie sich einen Moment Zeit, um sich mit den Technologien vertraut zu machen, mit denen Sie arbeiten. E-Mails nutzen SMTP. Apache nutzt HTTP. Apache weiß absolut nichts über SMTP. Wenn Sie mit E-Mails arbeiten möchten, benötigen Sie eine Technologie, die SMTP unterstützt.“ – EEAA, Kommentar vom 18. August 2016 um 2:49 Uhr
kein
TCP-Proxying, sondern nur HTTP über TCP. Verwenden Sie einen Reverse-Proxy, der TCP-Proxying unterstützt, wie Traefik, Nginx oder HAProxy, oder nutzen Sie dieses experimentelle Plugin. – ElevenNotes, Kommentar vom 24. September 2024
Anschließend konzentrierten wir uns auf die drei in den Kommentaren empfohlenen Lösungen: „Traefik, NginX oder HAProxy“ und installierten und testeten sie nacheinander.
Traefik war die erste Wahl.
Die meisten Tutorials begannen mit Docker, einer Plattform, die ich vermeiden wollte. Stattdessen entschied ich mich für eine einfache Lösung, möglicherweise basierend auf einem der Linux-Paketmanager, wie YUM für RPM-basierte Distributionen wie Fedora und CentOS oder APT (Advanced Package Tool), das bei Debian-basierten Distributionen wie Ubuntu und Debian verwendet wird.
Nach langer Suche stießen wir auf diesen aktuellen Artikel, der die Art der Installation beschreibt, nach der wir gesucht hatten: Traefik als systemd-Dienst einrichten.
Ein Hinweis: Sie müssen die SELinux-Einstellungen von „Enforcing“ auf „Permissive“ ändern
Nachdem wir zwei Udemy-Kurse ausprobiert hatten, stießen wir auf diesen hervorragenden Kurs:
Traefik Crashkurs (ohne Docker).
Wir konnten ihn mithilfe der gezeigten Beispiele zum Laufen bringen. Gegen Ende des Videos äußerte der exzellente Dozent jedoch seine völlige Ablehnung dieses Tools:
Traefik Crashkurs – Zusammenfassung (53:50).
Dies entmutigte uns, weitere Tests durchzuführen, und veranlasste uns, etwas anderes auszuprobieren.
NginX war die zweite Wahl
In diesem Fall war die Installation einfacher und erfolgte mit YUM:
`yum install epel-release nginx nginx-mod-stream nginx-mod-mail`.
Hinweis: Unter SELinux muss das Relay aktiviert werden:
`setsebool -P httpd_can_network_relay 1`.
Für das Training gingen wir auf Nummer sicher und wählten denselben Dozenten wie beim vorherigen Kurs:
NginX Crashkurs (der erste Teil dauert etwa eine Stunde und zwanzig Minuten). Auch der Dozent ist von dieser Anwendung nicht überzeugt, insbesondere nicht davon, dass sie sowohl als Webserver als auch als Reverse-Proxy fungiert:
NginX Crashkurs – Zusammenfassung (1:20:10).
Der Bericht endet mit dem Hinweis „Ich bevorzuge HAProxy gegenüber Nginx“, daher beschlossen wir, HAProxy ebenfalls auszuprobieren.
Schließlich haben wir auch HAProxy ausprobiert.
Die Installation erwies sich als kinderleicht, da es sich um eine sehr verbreitete Anwendung handelt, die in allen Linux-Paketmanagern verfügbar ist, zum Beispiel: `yum install haproxy`
Wir haben auch unseren bewährten Ausbilder konsultiert: HAProxy Crashkurs.
Es funktioniert, ist aber leider NICHT für die SMTP-Authentifizierung geeignet:
„HAProxy lässt sich so nicht konfigurieren, da HAProxy SMTP überhaupt nicht unterstützt.“
– Kommentar von lukastribus, 17. August 2023
Ein Standard-SMTP-Server als Reverse-Proxy
Nach zweiwöchigen Tests stellten wir fest, dass
es besser ist, einen Standard-SMTP-Server als Reverse-Proxy für andere SMTP-Server zu verwenden.
Es erfüllt seine Aufgabe, indem es ausschließlich das SMTP-Protokoll verwendet, Verbindungen ordnungsgemäß authentifiziert
und Anfragen über die „smarthost“-Funktion an andere SMTP-Server weiterleiten kann.
In Postfix, in main.cf, als
relayhost = [smarthost_address]:port
In Sendmail, in sendmail.mc, as
define(`SMART_HOST',`mail.example.com')