Secure Mail Gateway
Kommt das Secure Mail Gateway zum Einsatz, so ist ab Relution 26.4.0 der Secure Mail Gateway Standalone-Dienst eine Pflichtkomponente. Dieser Artikel beschreibt die Einrichtung für On-Premise-Installationen.
Zur Konfiguration des Secure Mail Gateway in Relution: Secure Mail Gateway →
Technischer Hintergrund
Ist das Secure Mail Gateway unter Einstellungen → Geräteverwaltung → Secure Mail Gateway aktiviert werden eingehende ActiveSync-Verbindungen an den dort konfigurierten Exchange-Server weitergeleitet, vorausgesetzt die Anfrage kommt von einem zulässigen (eingeschriebenen) Gerät.
In Version 26.3.x und älter gehen ActiveSync-Anfragen dazu zunächst an den Relution-Dienst und werden von diesem an den Exchange-Server weitergeleitet. Der Relution-Dienst prüft intern, ob eine Anfrage von einem zulässigen Gerät stammt und weitergeleitet werden darf. Unzulässige Anfragen werden abgelehnt.
Ab Version 26.3.0 kann der Standalone-Dienst wahlweise aktiviert werden, um die Umstellung auf den dedizierten Container vorab testen zu können. Ab Version 26.4.0 und neuer wurde die entsprechende Funktionalität vollständig aus Relution entfernt, so das ActiveSync-Anfragen immer durch den dedizierten Docker Container geleitet werden müssen.
Die dafür notwendige Konfiguration ist im folgenden Artikel beschrieben.
Migration – Was ist zu tun?
| Installation | Handlungsbedarf |
|---|---|
| Relution Cloud – Shared Hosting | Kein Handlungsbedarf. Relution übernimmt die Migration des SMG-Dienstes. |
| Relution Cloud – Dedicated Server (Bestandskunden) | Relution übernimmt das Hosting des SMG-Dienstes. Die Migration wird in Abstimmung mit dem Kunden koordiniert. |
| Relution Cloud – Dedicated Server (Neukunden) | Der SMG-Dienst muss eigenständig als On-Premise-Komponente betrieben werden. Der Einrichtungsanleitung weiter unten in diesem Artikel folgen. |
| On-Premise | Der vollständige Einrichtungsablauf ist weiter unten in diesem Artikel beschrieben. |
Feature-Toggle für On-Premise-Installationen (26.3)
Neu in 26.3In Relution 26.3 können On-Premise-Installationen den neuen Modus wahlweise aktivieren. Dazu muss die application.yaml des Relution Servers um folgendes Preview-Feature-Toggle ergänzt werden:
relution:
featuretoggle:
enabledPreviewFeatures:
- SMG_STANDALONE
Zusätzlich muss ein weiterer Docker Container, wie unten beschrieben, in die Dockerumgebung aufgenommen werden.
Pflichtkomponente ab 26.4.0
Neu in 26.4Mit Relution 26.4.0 entfällt der Toggle. Das Secure Mail Gateway muss zwangsweise als separater Dienst betrieben werden. Die Komponente wurde vollständig aus Relution entfernt.
Einrichtung
Der Secure Mail Gateway Standalone-Dienst leitet als HTTP-Proxy ActiveSync-Requests von mobilen Geräten an den Exchange-Server und Antworten zurück an das jeweilige mobile Gerät. Dazu muss zunächst entschieden werden, ob ein Request überhaupt weitergeleitet werden darf oder nicht. Damit das Secure Mail Gateway diese Entscheidung treffen kann muss es intern mit dem Relution-Dienst kommunizieren, um prüfen zu können ob eine Anfrage von einem zulässigen Gerät stammt.
Relution
Damit das Secure Mail Gateway mit dem Relution-Dienst kommunizieren kann muss daher zunächst ein technischer Benutzer mit entsprechenden Berechtigungen in Relution angelegt werden
1. Dynamische Rolle in Relution erstellen
Die vorgefertigte Rollenvorlage herunterladen und in der globalen Organisation unter Einstellungen → Benutzerverwaltung → Berechtigungen importieren:
SMG-Rollenvorlage herunterladen →
Alternativ lässt sich die Rolle manuell anlegen:
- In der globalen Organisation zu
Einstellungen→Benutzerverwaltung→Berechtigungennavigieren - Eine neue Dynamische Rolle hinzufügen
- Die Berechtigung Secure Mail Gateway (service account) aktivieren
- Die Rolle speichern
2. Technischen Benutzer und API-Zugriffsschlüssel anlegen
- In der globalen Organisation einen neuen Benutzer erstellen und ihm die oben erstellte Dynamische Rolle zuweisen
- Zur Detailseite des Benutzers navigieren und einen neuen API-Zugriffsschlüssel erstellen
- Den generierten Schlüssel kopieren – er wird nur einmal angezeigt
Secure Mail Gateway Container
Das Secure Mail Gateway muss jetzt als separater Docker Container in die Umgebung aufgenommen und konfiguriert werden. Im Anschluss muss noch der Reverse-Proxy so angepasst werden, das Anfragen an den /Microsoft-Server-ActiveSync-Endpunkt zukünftig nicht mehr zum Relution Container sondern zum Secure Mail Gateway Container gesendet werden.
1. Dienst bereitstellen
Den folgenden Dienst zur bestehenden compose.yaml hinzufügen. Dies ist nur erforderlich, wenn das Secure Mail Gateway verwendet wird.
latest zu behalten. Neue Builds durchlaufen mehrere zusätzliche Quality Gates, bevor sie als latest bereitgestellt werden – eine fest eingetragene Versionsnummer kann auf einen Build verweisen, der noch nicht für den Produktiveinsatz freigegeben ist.services:
…
smg:
image: relution/relution-smg-standalone:latest
restart: always
container_name: smg
networks:
- reverse-proxy
volumes:
- ./smg/application.yaml:/opt/app/config/application.yaml:ro
ports:
- 8093:8093
smg muss sich wie relution und traefik im Netzwerk reverse-proxy befinden – sonst kann Traefik/nginx nicht zu diesem Dienst weiterleiten.2. Dienst konfigurieren
Der zuvor in Relution erzeugte API-Zugriffsschlüssel muss in die Konfiguration vom Secure Mail Gateway aufgenommen werden, damit das SMG mit dem Relution-Dienst kommunizieren kann.
Sofern beide Dienste in derselben Dockerumgebung laufen können diese über das Docker-Netzwerk intern miteinander kommunizieren.
smg/application.yaml neben der compose.yaml erstellen:
relution:
server:
url: http://relution:8080 # URL des Relution Servers
api-key: ihr-api-schluessel # Zuvor erstellter API-Zugriffsschlüssel
Reverse-Proxy-Konfiguration
Der SMG-Dienst stellt den Endpunkt /Microsoft-Server-ActiveSync auf Port 8093 bereit. Die Konfiguration des Reverse-Proxy muss so angepasst werden, dass eingehende Anfragen auf diesen Pfad an den Standalone-SMG-Dienst weitergeleitet werden. Die folgenden Beispiele zeigen die Konfiguration für Traefik und nginx.
Kommt ein anderer, nicht offiziell von uns unterstützter Reverse-Proxy zum Einsatz (z. B. Apache, Sophos, …), muss dessen Konfiguration entsprechend angepasst werden. Die Dokumentation des jeweiligen Produkts gibt Auskunft darüber, wie einzelne Pfade oder Locations an separate Endpunkte weitergeleitet werden.
Hinweis: Die folgenden Beispiele verwenden Hostnamen, die innerhalb des Docker-Netzwerks aufgelöst werden können. Das ist nur möglich, solange Relution, SMG und Traefik/nginx Teil desselben Docker-Netzwerks sind. Liegen Reverse-Proxy oder Dienste in getrennten Netzwerken, sind stattdessen Hostnamen zu verwenden, die der interne DNS-Server auflösen kann.
Traefik
Die folgenden zusätzlichen smg-Einträge unterhalb von routers und services ergänzen. Dabei bleiben bestehende routers und services wie relution erhalten. Siehe auch: Traefik-Konfiguration →
http:
routers:
…
smg:
rule: Host(`external.url`) && Path(`/Microsoft-Server-ActiveSync`)
entryPoints:
- websecure
tls:
certResolver: letsencrypt
service: smg
services:
…
smg:
loadBalancer:
servers:
- url: "http://smg:8093"
nginx (Alternative zu Traefik)
Den Block location ~ /Microsoft-Server-ActiveSync im bestehenden HTTPS-server-Block ergänzen (oder anpassen), damit eingehende Anfragen an das SMG weitergeleitet werden.
server {
listen 0.0.0.0:443 ssl default_server;
…
# (NEU) Weiterleitung an das Secure Mail Gateway
location ~ /Microsoft-Server-ActiveSync {
proxy_read_timeout 2100;
proxy_pass http://smg:8093;
}
}
Die Position des Blocks innerhalb des server-Blocks ist nicht relevant, da nginx Locations mit regulärem Ausdruck vor der Präfix-Location / auswertet. Aus Gründen der Lesbarkeit empfiehlt es sich dennoch, die einzelnen Location-Blöcke beieinander zu halten.
smg den Docker-Dienstnamen und ist innerhalb des Docker-Netzwerks erreichbar. Bei einer nativen Linux-Installation smg:8093 durch 127.0.0.1:8093 ersetzen.Docker Dienste starten oder neu starten
Damit die Änderungen greifen müssen die Docker Container im Anschluss neu gestartet werden.
docker compose up -d
relution.smg.*-Eigenschaften in der Konfiguration des Relution Servers angepasst, müssen diese unverändert in diese Datei übertragen werden – die Eigenschaftsnamen sind identisch.Erweiterte Konfiguration
Die folgenden Einstellungen sind nur bei spezifischen Umgebungen erforderlich — für interne Certificate Authorities und ausgehende Verbindungen die durch einen Firmenproxy laufen.
(Optional) Vertrauenswürdiges CA-Zertifikat hinterlegen
Präsentiert der Exchange-Server ein Server-Zertifikat, das von einer internen CA ausgestellt wurde (“selbstsigniert”), dann muss das Root-Zertifikat dieser CA als vetrauenswürdiges Zertifikat hinterlegt werden. Dazu kann ein Verzeichnis mit der PEM-kodierten Zertifikatsdatei unter /opt/app/ca-certs in den Container gemounted werden. Der Ordner kann bei Bedarf mehr als ein Zertifikat enthalten.
services:
…
smg:
volumes:
- ./smg/application.yaml:/opt/app/config/application.yaml:ro
- ./smg/ca-certs:/opt/app/ca-certs:ro
Diese Zertifikate werden bei der Kommunikation mit dem Exchange- und Relution-Server verwendet – eine Konfigurationseigenschaft ist dafür nicht erforderlich. Ist nichts gemountet, hat das Feature keine Auswirkung und ausgehendes TLS verhält sich wie zuvor. Zum Hinzufügen, Entfernen oder Ändern eines Zertifikats muss der Container neu gestartet werden; das Verzeichnis wird nur einmal beim Start gelesen.
(Optional) Proxy für ausgehende Verbindungen
Anfragen an Exchange berücksichtigen die Proxy-Systemeigenschaften der JVM. Diese werden über die JAVA_TOOL_OPTIONS in der compose.yaml für den SMG Container gesetzt. Zusätzlich muss in der application.yaml das honor-proxy-settings-Flag auf true gestellt werden.
services:
…
smg:
environment:
- JAVA_TOOL_OPTIONS=
-Dhttp.proxyHost=proxy.example.com
-Dhttp.proxyPort=3128
-Dhttps.proxyHost=proxy.example.com
-Dhttps.proxyPort=3128
-Dhttp.nonProxyHosts=relution|example.com
Mit -Dhttp.nonProxyHosts (eine mit | getrennte Liste von Host-Mustern, *-Platzhalter werden unterstützt) lassen sich bestimmte Hosts vom Proxy ausschließen – typischerweise Exchange selbst, wenn dieser direkt erreichbar ist, ohne über den Unternehmens-Proxy zu gehen.
Standardmäßig werden Anfragen an den Relution Server nicht über den Proxy geleitet – er ist normalerweise direkt erreichbar. Erreicht die eigene Umgebung Relution über denselben Proxy wie Exchange, ist honor-proxy-settings: true in smg/application.yaml zu setzen:
relution:
server:
url: https://ihr-relution-server
api-key: ihr-api-schluessel
honor-proxy-settings: true # Standard false; nur erforderlich, wenn Relution ebenfalls hinter dem Proxy liegt
Fehlersuche
Kommt es zu Problemen mit dem SMG-Dienst – etwa bei der Verbindung zu Exchange oder beim Start des Containers –, hilft ein erhöhtes Loglevel bei der Analyse. Eine Anleitung dazu ist unter Loglevel einstellen → zu finden.
Am einfachsten lässt sich das Loglevel direkt im SMG-Container über dessen application.yaml aktivieren, indem folgender Abschnitt am Ende ergänzt wird:
logging:
level:
io.relution: DEBUG
Changelog
Aktuell unter latest verfügbare Version: 26.0.6 (Stand 23.09.2026)
| Version | Kategorie | Änderung |
|---|---|---|
| 26.0.6 | Fixes | Eingehende HTTP-Header werden jetzt korrekt ohne Beachtung der Groß-/Kleinschreibung behandelt, wodurch potenziell doppelte Header in der weitergeleiteten Anfrage vermieden werden |
| 26.0.5 | Konfiguration | Die Standard forward-headers-strategy ist jetzt native |
Die Standard max-http-post-size ist jetzt 1GB | ||
| Zertifikate | Mehr nützliche Logs zu eigenen CA Zertifikaten im Trust Store | |
| Mehr nützliche Logs wenn eine Verbindung wegen eines nicht vertrauenswürdigen Zertifikats abgelehnt wird | ||
| Logs | Ein vorzeitiger Verbindungsabbruch wird jetzt protokoliert | |
| Statuscode des Exchange-Servers wird geloggt, wenn eine Nachricht abgelehnt wird | ||
| HTTP-Fehler sind auch bei der Verwendung von HTTP/2 im Log sichtbar | ||
Erfolgreiche Verbindungen werden auf INFO protokolliert | ||
| Fixes | Vorzeitig beendete Verbindungen werden jetzt sauber aufgeräumt | |
| 26.0.4 | Release-Prozess | Anpassung des internen Release-Prozesses – keine funktionalen Änderungen |
| 26.0.3 | Feature | Unterstützung für selbstsignierte Zertifikate und Proxy-Einstellungen |
| 26.0.2 | Fixes | Fehlerhafte Behandlung von 404-Antworten behoben |
| 26.0.1 | Metriken | Health-Endpunkt freigegeben |
| 26.0.0 | Release-Prozess | Code aus Relution ausgelagert |