Mailserver hinter Nginx Proxy Manager

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
KrawallKurt
Beiträge: 62
Registriert: 23.01.2014 17:52:14

Mailserver hinter Nginx Proxy Manager

Beitrag von KrawallKurt » 31.08.2024 19:07:55

Hallo zusammen,
ich betreibe schon länger einen Webserver und Mailserver zusammen auf einem Raspberry Pi. Neuerdings ist jetzt ein richtiger Homeserver eingezogen und ich habe den Nginx Proxy Manager installiert. Der leitet dann die HTTP(S) Anfragen einfach weiter an den Pi. Das funktioniert wunderbar und macht die Konfiguration weiterer Services auf anderen Subdomains sehr einfach, da sich NPM dann um die LetsEncrypt Zertifikate kümmert. Die Dienste werden dann nach und nach vom Pi auf eigene VMs umziehen, was bisher schon gut funktioniert, zumindest für Webservices.

Beim Mailserver ist das allerdings problematisch. Dadurch, dass sich NPM um die Zertifikate kümmert, kann ich auf dem Pi keinen Certbot mehr laufen lassen um dort die Zertifikate zu erneuern. Wie ist denn die allgemeine Vorgehensweise in diesem Fall? Alle 3 Monate die Zertifikate von NPM runterladen und auf den Pi ziehen finde ich nicht so toll. Hätte das gerne automatisiert.

Ich dachte dann, NPM Streams könnte die Lösung sein und vielleicht ähnlich zu den HTTPS Proxy Hosts das Zertifikat präsentieren. Habe das dann ausprobiert, also Port 143 vom Router an NPM und von dort an den Pi weitergeleitet. Das hat leider nichts gebracht, mein Mailclient hat dann trotzdem das abgelaufene Zertifikat vom Pi gesehen. Daher allgemein noch zusätzlich die Frage: Wozu sind diese Streams überhaupt gut? Also was ist der Vorteil gegenüber einfach direkt den Port an den richtigen Endpunkt weiterzuleiten?

keretyr
Beiträge: 1
Registriert: 11.09.2024 12:31:08

Re: Mailserver hinter Nginx Proxy Manager

Beitrag von keretyr » 11.09.2024 12:35:28

Ich verstehe dein Setup und die Herausforderung, die du mit deinem Mailserver und dem Nginx Proxy Manager (NPM) hast. Lass uns deine Fragen der Reihe nach angehen.

Problem: Zertifikate für den Mailserver automatisch aktualisieren
Wenn du Nginx Proxy Manager (NPM) für deine HTTPS-Services verwendest, übernimmt dieser die Verwaltung der Let's Encrypt-Zertifikate. Dein Mailserver benötigt jedoch ebenfalls gültige TLS-Zertifikate, um eine verschlüsselte Kommunikation zu ermöglichen. Da der Mailserver noch auf dem Raspberry Pi läuft und dieser aktuell nicht auf eigene Zertifikate zugreifen kann, gibt es ein paar Optionen:

Zertifikate von NPM auf den Pi kopieren und automatisieren:

Anstatt die Zertifikate manuell alle 3 Monate herunterzuladen und auf den Raspberry Pi zu kopieren, kannst du ein Skript erstellen, das dies automatisch erledigt. Hier ist ein grober Ansatz:

Richte einen Cron-Job auf deinem Raspberry Pi ein, der regelmäßig ein Skript ausführt, das die Zertifikate von deinem Homeserver auf den Pi kopiert.
Verwende dafür scp (Secure Copy Protocol) oder rsync über SSH, um die Zertifikate zu übertragen.
Das Skript könnte z.B. folgendermaßen aussehen

Code: Alles auswählen

#!/bin/bash

# Pfade zu den Zertifikaten auf dem Homeserver (NPM)
REMOTE_CERT_PATH="user@homeserver:/pfad/zu/cert.pem"
REMOTE_KEY_PATH="user@homeserver:/pfad/zu/privkey.pem"

# Zielpfad auf dem Raspberry Pi
LOCAL_CERT_PATH="/etc/letsencrypt/live/deine-domain.de/cert.pem"
LOCAL_KEY_PATH="/etc/letsencrypt/live/deine-domain.de/privkey.pem"

# Zertifikate kopieren
scp $REMOTE_CERT_PATH $LOCAL_CERT_PATH
scp $REMOTE_KEY_PATH $LOCAL_KEY_PATH

#Mailserver-Dienst neu starten
systemctl restart dein-mailserver-dienst
Dieses Skript sollte regelmäßig (z.B. alle paar Tage) ausgeführt werden, um sicherzustellen, dass die Zertifikate aktuell bleiben.
Zuletzt geändert von keretyr am 12.09.2024 19:17:40, insgesamt 2-mal geändert.

Benutzeravatar
bluestar
Beiträge: 2418
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: Mailserver hinter Nginx Proxy Manager

Beitrag von bluestar » 11.09.2024 12:59:33

KrawallKurt hat geschrieben: ↑ zum Beitrag ↑
31.08.2024 19:07:55
Beim Mailserver ist das allerdings problematisch. Dadurch, dass sich NPM um die Zertifikate kümmert, kann ich auf dem Pi keinen Certbot mehr laufen lassen um dort die Zertifikate zu erneuern.
Ich kenne zwar den NPM nicht, aber du könntest für die SSL Verbindung zwischen NPM und RasPi auch einfach auf ein selbstsigniertes Zertifikat ausweichen, d.h. du erstellst auf dem RasPi ein Zertifikat und sagst dem NPM, wenn er sich mit dem RasPi verbindet, dann soll er das selbstsignierte Zertifikat als gültig betrachten.

uname
Beiträge: 12396
Registriert: 03.06.2008 09:33:02

Re: Mailserver hinter Nginx Proxy Manager

Beitrag von uname » 11.09.2024 13:48:23

Also ich verwende kein nginx und einen eigenen Mailserver hoste ich auch nicht. Davon rate ich auch ab. Oder hostet du auch WhatsApp bzw. nutzt selbst gehostetes Element / Matrix? Ich rate vom E-Mail-Hosting eher ab.

Du kannst aber auf ngix auch die Zertifikate fürs Mailing verwalten lassen. Die mögen ja auch von Lets Encrypt stammen. Aber mit HTTPS hat das gar nichts zu tun. Schau für den Einstieg hier. Und dann die Anpassungen für Lets Encrypt suchen.

Benutzeravatar
bluestar
Beiträge: 2418
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: Mailserver hinter Nginx Proxy Manager

Beitrag von bluestar » 11.09.2024 13:51:58

uname hat geschrieben: ↑ zum Beitrag ↑
11.09.2024 13:48:23
Also ich verwende kein nginx und einen eigenen Mailserver hoste ich auch nicht. Davon rate ich auch ab.
Gegen einen eigenen Mailserver spricht nix.
uname hat geschrieben: ↑ zum Beitrag ↑
11.09.2024 13:48:23
Oder hostet du auch WhatsApp?
Ich kenne durchaus einige Firmen, die einen eigenen Messenger (z.B. Matrix, Jitsi, Nextcloud Talk, o.ä.) betreiben und diesen auch selbst hosten. Was spricht deiner Meinung nach dagegen?

uname
Beiträge: 12396
Registriert: 03.06.2008 09:33:02

Re: Mailserver hinter Nginx Proxy Manager

Beitrag von uname » 11.09.2024 14:07:04

bluestar hat geschrieben:Was spricht deiner Meinung nach dagegen?
Dagegen spricht nur, dass man Dinge die man nicht ändern kann akzeptiert und wo man glaubt Einfluss nehmen zu können, diese mit aller Gewalt umsetzen will.

WhatsApp ist ein zentraler Dienst von Facebook. Viele Anwender können ohne WhatsApp nicht leben und so wird es akzeptiert, dass alle Daten zentral bei Facebook gespeichert werden. Ältere Dienste wie E-Mail sind dezentral. Niemand würde es akzeptieren wenn alle E-Mails weltweit z. B. durch Google Mail verwaltet würden. Bei E-Mail hat man die Möglichkeit z. b. einen deutschen Provider auszuwählen. Aber da muss man es natürlich selbst hosten. Weil man es kann.

Natürlich gibt es tolle dezentrale Messenger und Videokonferezen wie Element/Matrix, Jitsi, Nextcloud Talk, Big Blue Button usw. Aber am Ende sind es alles Insellösungen. Ich verwende mittlerweile gar keine Messenger mehr. Mir kann man gerne per E-Mail schreiben. Aber selbst hoste ich die E-Mails trotzdem nicht. Ich nutze ja auch ein Smartphone, wo ich im gewissen Maße Google vertraue. Warum nicht einem guten deutschen Mail-Provider, der sich um alles kümmert.

Benutzeravatar
TRex
Moderator
Beiträge: 8314
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: Mailserver hinter Nginx Proxy Manager

Beitrag von TRex » 11.09.2024 18:29:26

uname hat geschrieben: ↑ zum Beitrag ↑
11.09.2024 14:07:04
Weil man es kann.
Wenn du an der Konfiguration nichts anpassen würdest, dann geb ich dir recht - es wäre unnötiger Verbrauch von Ressourcen. Dass es anders geht und man sich Vorteile verschaffen kann, solltest du auch akzeptieren.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Benutzeravatar
heisenberg
Beiträge: 4123
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Mailserver hinter Nginx Proxy Manager

Beitrag von heisenberg » 11.09.2024 18:53:25

Das mit automatisierten kopieren der Zertifikate vom NPM auf den Mailserver sollte kein Problem sein. Die Zertifikate liegen ja vermutlich im Docker-Container vom NPM. Ggf. muss man die Verzeichnisse vom Host-System mounten, falls das noch nicht der Fall sein sollte. Dann kann man darauf problemlos zugreifen.

Ansonsten finde ich den Betrieb von Mailservern via nginx per Reverse Proxy nicht trivial. Da muss dann irgendwie einen Authentifizierungsproxy einrichten. Ich habe damit schon mal etwas rumgespielt. Ich finde das recht kompliziert und sehe auch keinen Vorteil, den man dadurch hätte - bzw. Vorteile eher in sehr großen Installationen, in denen man per Virtual Hosting mehrere Mailserver im Backend anbinden möchte. Ich würde eher dazu raten, die Ports per DNAT auf die Mailserver weiterzuleiten.

Für die Allgemeinheit: NPM, der NGINX Proxy Manager ist ein sehr umfangreicher Docker-Container, der im Wesentlichen eine einfache GUI für den nginx und letsencrypt ist.

Ich selbst habe es 1-2 Mal damit probiert, es aber dann zu Gunsten einfacher und schlanker nginx Docker-Container wieder eingemotttet, weil NPM individuelle Konfigurationen für mich viel schwieriger gemacht hatte. Certbot ist auch kein Hexenwerk. Das beschränkt sich auch auf wenige Befehle, die man initial ausführen muss. Verlängerung findet dann ja automatisch statt.

Benutzeravatar
cosinus
Beiträge: 4186
Registriert: 08.02.2016 13:44:11
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Bremen

Re: Mailserver hinter Nginx Proxy Manager

Beitrag von cosinus » 11.09.2024 20:40:43

keretyr hat geschrieben: ↑ zum Beitrag ↑
11.09.2024 12:35:28
Ich verstehe dein Setup und die Herausforderung, die du mit deinem Mailserver und dem Nginx Proxy Manager (NPM) hast. Lass uns deine Fragen der Reihe nach angehen.
Das stammt doch garantiert aus der Feder von ChatGPT :x

KrawallKurt
Beiträge: 62
Registriert: 23.01.2014 17:52:14

Re: Mailserver hinter Nginx Proxy Manager

Beitrag von KrawallKurt » 13.09.2024 12:51:50

Vielen Dank für die Vorschläge. Ziehen via cronjob wäre auch mein Workaround gewesen, darauf wird es dann rauslaufen.
bluestar hat geschrieben: ↑ zum Beitrag ↑
11.09.2024 12:59:33
Ich kenne zwar den NPM nicht, aber du könntest für die SSL Verbindung zwischen NPM und RasPi auch einfach auf ein selbstsigniertes Zertifikat ausweichen, d.h. du erstellst auf dem RasPi ein Zertifikat und sagst dem NPM, wenn er sich mit dem RasPi verbindet, dann soll er das selbstsignierte Zertifikat als gültig betrachten.
So mache ich es bei anderen HTTP(S) Diensten. Das funktioniert gut, der NPM zeigt dann den Anfragen einfach seine LetsEncrypt Zertifikate und alle sind glücklich. Leider funktioniert das nur bei HTTP(S) Anfragen, dass nginx ein anderes Zertifikat präsentiert. Bei Weiterleitung von NPM an den Mailserver würde der Client dann wieder das selbst signierte Zertifikat sehen.
heisenberg hat geschrieben: ↑ zum Beitrag ↑
11.09.2024 18:53:25
Ich selbst habe es 1-2 Mal damit probiert, es aber dann zu Gunsten einfacher und schlanker nginx Docker-Container wieder eingemotttet, weil NPM individuelle Konfigurationen für mich viel schwieriger gemacht hatte. Certbot ist auch kein Hexenwerk. Das beschränkt sich auch auf wenige Befehle, die man initial ausführen muss. Verlängerung findet dann ja automatisch statt.
Bei mir genau umgekehrt. Ich hatte es früher manuell konfiguriert und schätze jetzt die Einfachheit von NPM. Auch, wenn man mal neue Subdomains anlegt oder ähnliches. Der komplette Container braucht bei mir aktuell 112MB RAM. Bis zu 512MB gestehe ich ihm zu. Das ist bei meinem Setup überhaupt kein Problem. Aber ich verstehe natürlich auch, wenn man Ressourcen sparen will.
heisenberg hat geschrieben: ↑ zum Beitrag ↑
11.09.2024 18:53:25
Ansonsten finde ich den Betrieb von Mailservern via nginx per Reverse Proxy nicht trivial. Da muss dann irgendwie einen Authentifizierungsproxy einrichten
Ja, das habe ich auch gesehen, hat mich aber auch abgeschreckt.

Kennt sich hier jemand mit Alternativen Reverse Proxies aus, zB. caddy oder traefik? Wäre damit mail proxying einfacher? Ansonsten wird's wohl auf cronjobs zum Austausch der Zertifikate rauslaufen

Antworten