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?

InstallationHandlungsbedarf
Relution Cloud – Shared HostingKein 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-PremiseDer vollständige Einrichtungsablauf ist weiter unten in diesem Artikel beschrieben.

Feature-Toggle für On-Premise-Installationen (26.3)

Neu in 26.3

In 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:

application.yaml
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.4

Mit 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:

  1. In der globalen Organisation zu Einstellungen → Benutzerverwaltung → Berechtigungen navigieren
  2. Eine neue Dynamische Rolle hinzufügen
  3. Die Berechtigung Secure Mail Gateway (service account) aktivieren
  4. Die Rolle speichern

2. Technischen Benutzer und API-Zugriffsschlüssel anlegen

  1. In der globalen Organisation einen neuen Benutzer erstellen und ihm die oben erstellte Dynamische Rolle zuweisen
  2. Zur Detailseite des Benutzers navigieren und einen neuen API-Zugriffsschlüssel erstellen
  3. 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.

compose.yaml
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

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:

smg/application.yaml
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 →

configs/traefik/relution.yaml
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.

relution-nginx.conf
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.

Docker Dienste starten oder neu starten

Damit die Änderungen greifen müssen die Docker Container im Anschluss neu gestartet werden.

docker compose up -d

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.

compose.yaml
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.

compose.yaml
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:

smg/application.yaml
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:

smg/application.yaml
logging:
  level:
    io.relution: DEBUG

Changelog

Aktuell unter latest verfügbare Version: 26.0.6 (Stand 23.09.2026)

VersionKategorieÄnderung
26.0.6FixesEingehende HTTP-Header werden jetzt korrekt ohne Beachtung der Groß-/Kleinschreibung behandelt, wodurch potenziell doppelte Header in der weitergeleiteten Anfrage vermieden werden
26.0.5KonfigurationDie Standard forward-headers-strategy ist jetzt native
Die Standard max-http-post-size ist jetzt 1GB
ZertifikateMehr 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
LogsEin 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
FixesVorzeitig beendete Verbindungen werden jetzt sauber aufgeräumt
26.0.4Release-ProzessAnpassung des internen Release-Prozesses – keine funktionalen Änderungen
26.0.3FeatureUnterstützung für selbstsignierte Zertifikate und Proxy-Einstellungen
26.0.2FixesFehlerhafte Behandlung von 404-Antworten behoben
26.0.1MetrikenHealth-Endpunkt freigegeben
26.0.0Release-ProzessCode aus Relution ausgelagert
Top