Proxmox Mail Gateway PMG auf Port 465 587 zusätzlichen Ports erreichen
Aus znilwiki
Changelog:
- 08.05.2025 erste Version
Vorwort
Bei einem Kunden soll das Proxmox Mail Gateway eine bestehende Lösung ersetzen. Intern wird auf einen DNS-Namen verwiesen, soweit kein Problem.
Jedoch sind auf den Mailclients die das Gateway zum versenden verwenden sollen die Ports für den SMTP versandt quer Beet konfiguriert.
Ein Teil nimmt Port 25, ein Teil 465 und der Rest versucht es auf Port 587.
Das Mailgateway in meinem Fall hier lauscht intern auf Port 25 und extern auf 26, also genau umgekehrt wie es bei Auslieferung ist:
Die - wie ich fand elegante Lösung - ist das er lokal ein NAT macht, Das bedeutet das er Anfragen auf Port 587
Lösung Teil 1: Umleitung einrichten
Zunächst müssen wir IPTables nachinstallieren - eine Software-Firewall:
apt install iptables -y
installiert die Firewall und schaltet diese auch gleich aktiv ... keine Angst, die Standardregeln lassen alles zu.
Das können wir mit
iptables --list
abfragen. Beispielausgabe:
Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
Wie Ihr seht ist die Policy überall ACCEPT.
Jetzt können wir eine NAT-Regel hinzufügen:
iptables -t nat -A PREROUTING -d 192.168.0.200 -i ens192 -p tcp --dport 587 -j REDIRECT --to-port 25
Erklärung im Detail
iptables -t nat -A PREROUTING Wir wollen ein NAT Portforwarding machen -d 192.168.0.200 für diese IP-Adresse - das ist die interne IP des Promox Mail Gateways selbst -i ens192 ist die Netzwerkschnittstelle auf dem die IP liegt, seht ihr z.B. mit dem Befehl ip address -p tcp für das Protokoll TCP --dport 587 auf Port 587 lauschen und diesen -j REDIRECT umleiten auf --to-port 25 Port 25
Es gibt keine Rückmeldung, die vorhandenen NAT Umleitungen könnt Ihr dann über diesen Befehl sehen:
iptables -t nat --list
Beispielausgabe:
Chain PREROUTING (policy ACCEPT) target prot opt source destination REDIRECT tcp -- anywhere mailgateway.znil.local tcp dpt:submissions redir ports 25 REDIRECT tcp -- anywhere mailgateway.znil.local tcp dpt:submission redir ports 25 Chain INPUT (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination
Obiges Beispiel ist eine Umleitung von Port 465 und 587 auf den Port 25.
Das könnt Ihr sofort ausprobieren!
Lösung Teil 2: Umleitung dauerhaft machen
Wenn Ihr nun euer Mail Gateway neu starten würdet, wären die NAT-Regel wieder weg.
Um diese dauerhaft zu speichern müsst ihr das folgende Paket nachinstallieren:
apt install iptables-persistent
Er fragt euch dann ob Ihr die bestehenden Regeln speichern wollt - Ja! Wollt Ihr!
Falls Ihr später noch weitere Regeln hinzufügt, müsst Ihr dieser per
iptables-save > /etc/iptables/rules.v4
dann sichern. Der iptables-save gibt die Konfiguration als Text aus, die Umleitung schreibt diese in die Datei.
Die Datei wird bei einem reboot von iptables-persistent ausgelesen und angewendet.
Am besten macht Ihr einen Reboot und prüft ob das alles geklappt hat. Nach dem Reboot wieder anmelden und mit
iptables -t nat --list
prüfen ob die Regeln da sind bzw. ob ihr euch den mit gewünschten Ports verbinden könnt.
Hinweis: Die Dienste brauchen einen Moment bis diese gestartet sind, also ggf. einfach noch mal eine Minute warten. Erst wenn es auf dem normalen Port funktioniert, funktionieren auch unsere Umleitungen.