Zum Inhalt springen

Bedienung des Admin-UI

Das Admin-UI liegt unter der Basis-URL der Installation (Standard http://127.0.0.1:8080) und teilt sich den Port mit der Public API. Der Login ist der Benutzer admin mit dem Passwort, das beim ersten Start einmalig auf der Konsole erschien.

Erst die SMTP-Route, dann der Mandant. Ein Mandant ohne Route nimmt Absendungen zwar an, kann sie aber nicht zustellen — im Admin steht dann failed: keine smtp-route.

Eine Route ist ein Mailausgang. Genau eine Route sollte als geteilte Default-Route markiert sein; sie bedient alle Mandanten, die keine eigene Route hinterlegt haben.

SMTP-Routen-Liste im Admin-UI mit Default-Route-Badge und Test-Versand-Status

FeldHinweis
NameFrei wählbar, muss eindeutig sein.
SMTP-Host / PortDefault 587.
TLSstarttls (Port 587), implicit (Port 465) oder plain.
Benutzername / PasswortVerschlüsselt gespeichert. Beim Bearbeiten heißt ein leeres Passwortfeld „unverändert”.
Absender-AdresseFester Absender aller Mails dieser Route.
Geteilte Default-RouteMarkiert die Route als Fallback für alle Mandanten ohne eigene.

Die Absender-Adresse ist bewusst fest und kommt nie aus dem Formular — sie sollte auf einer Domain liegen, für die SPF und DKIM sauber gesetzt sind (etwa forms.example.de). Die Adresse des Einsenders reist stattdessen als Reply-To mit, Antworten gehen also trotzdem an die richtige Person.

Nach dem Anlegen den Test-Versand nutzen: eine Zieladresse eintragen, Knopf drücken. Das prüft Verbindung und Login, bevor echte Formulare darauf laufen. Die Liste zeigt je Route den letzten erfolgreichen Versand und — falls vorhanden — den letzten Fehler.

Ein Mandant ist eine Kundenseite.

Mandantenliste im Admin-UI mit Site-Key, Empfänger, Route und Status je Mandant

FeldBedeutung
NameNur zur Orientierung im Admin.
Empfänger-AdresseZiel der Formularmails. Kommt nie aus dem Formular.
Erlaubte OriginsEine pro Zeile, mit Schema und ohne Pfad: https://www.example.de. Für lokale Tests auch http://127.0.0.1:8099.
TageskontingentMails pro Tag; leer bzw. 0 ⇒ Default 100. Zählt wartende und gesendete.
PoW-BitsGeforderte führende Null-Bits im Proof-of-Work. 0 schaltet ihn ab.
Spam-SchwelleAb diesem Score wandert eine Absendung in die Quarantäne. 0 schaltet das Scoring ab.
Min. Ausfüllzeit (s)Kürzere Absendungen gelten als Bot. 0 schaltet die Prüfung ab.
SMTP-RouteEigene Route oder die geteilte Default-Route.
AktivDer Kill-Switch.

Nach dem Speichern zeigt die Liste den Site-Key (site_…) — der gehört ins Formular der Kundenseite (Formular einbinden).

PoW-Bits sind der einzige Wert, bei dem man Besucher spürbar ärgern kann: Der Browser hasht die Lösung einzeln über WebCrypto. Etwa 12 Bits entsprechen rund einer Sekunde, 18 Bits schon etwa 40 Sekunden. Sinnvoll sind 8–14; wer höher geht, sollte vorher auf einem alten Handy testen.

Origins sind die schärfste und zugleich häufigste Fehlerquelle: Der Eintrag muss exakt dem Origin-Header des Browsers entsprechen — mit Schema, ohne Pfad, ohne abschließenden Schrägstrich. www.example.de und https://www.example.de sind zwei verschiedene Dinge, und wer beide Varianten ausliefert, trägt beide ein.

Der Aktiv-Schalter in der Mandantenliste lehnt sofort alles von dieser Seite ab — die passende Reaktion, wenn ein Formular unter Beschuss steht. Der Mandant bleibt erhalten, nichts wird gelöscht; ein zweiter Klick nimmt ihn wieder in Betrieb.

Das Mandanten-Detail listet alle Absendungen mit Status, filterbar über das Auswahlfeld:

Mandanten-Detail mit Kennzahlen-Kacheln (Gesamt/Versendet/Quarantäne/Geblockt/Fehlgeschlagen) und einer zugestellten Submission

StatusBedeutung
receivedangenommen, noch nicht final entschieden
sentzugestellt
quarantinedüber der Spam-Schwelle, wartet auf Entscheidung
releasedaus der Quarantäne freigegeben und versendet
discardedaus der Quarantäne verworfen
blockedvon der Prüf-Pipeline abgewiesen (z. B. Honeypot)
failedVersand endgültig fehlgeschlagen

Die Bewertung selbst (Spam-Score) ist kein eigener Status — sie steckt in der Spalte Score neben dem Status und wird bei received bereits angezeigt, sobald die Prüf-Pipeline durchgelaufen ist.

Bei quarantined erscheinen Freigeben und Verwerfen — freigeben schickt die Mail doch noch raus. Beides braucht die Berechtigung quarantine:manage.

Jede Absendung trägt ihre vollständige Statushistorie: Die Ereigniskette ist das Audit-Log, nichts wird überschrieben. Beispiel für den Verlauf einer regulär zugestellten Mail: empfangen → bewertet (Score 2) → zugestellt über Route “default-smtp”. Eine, die in Quarantäne landete und wieder freigegeben wurde, zeigt zusätzlich quarantänisiert (Score 9) → freigegeben von admin.

Sperrt Absender dauerhaft, unabhängig vom Mandanten. Vier Arten:

ArtBeispiel
IPeinzelne Adresse
CIDRganzer Adressbereich
ASNganzes Netz eines Providers
E-MailAntwortadresse des Einsenders

Jeder Eintrag nimmt eine Notiz auf — nutzen. In sechs Monaten weiß sonst niemand mehr, warum ein ganzes ASN gesperrt ist. Einträge wirken sofort; sie werden in den Reputationsspeicher gespiegelt.

Benutzer bekommen Rollen, Rollen bündeln Berechtigungen. Der Katalog steht im Code und ändert sich nur mit einem Release — die Rolle viewer etwa darf lesen, aber nichts ändern. Rollenänderungen greifen sofort, weil die Berechtigungen bei jedem Request frisch aus der Datenbank kommen und nicht im Token stehen.

Der Benutzer system ist für Hintergrundprozesse da und kann sich nicht einloggen. Details: Sicherheit.

Für Prozesse ohne Browser (Monitoring, CI). Beim Anlegen erscheint der Klartext-Key (fgw_…) genau einmal — danach liegt nur noch sein Hash in der Datenbank. Verwendung als X-API-Key-Header.

Jeder Key erbt die Rechte des Benutzers, der ihn erstellt hat. Der Scope read beschränkt ihn zusätzlich auf lesende Methoden; schreibende Zugriffe lehnt der Server mit 403 ab. Keys lassen sich mit Ablaufdatum versehen und jederzeit widerrufen.

BeobachtungAnsatz
Formular meldet sofort einen FehlerOrigin nicht in der Allowlist — exakt mit Schema und ohne Pfad eintragen.
„Senden fehlgeschlagen” trotz passendem OriginMandant inaktiv, Tageskontingent erschöpft oder Rate-Limit. Der Grund steht im Log, nicht in der Antwort.
Absenden dauert auffällig langePoW-Bits zu hoch, siehe oben.
Status failed: keine smtp-routeEs gibt keine (Default-)Route.
Mails landen dauerhaft in QuarantäneSpam-Schwelle zu niedrig für die typischen Inhalte dieser Seite.

Ausführlichere Fehlersuche auf der Seite selbst: Formular einbinden.