Klar für Stalwart
Ein Transformer-Spamfilter, der auf Ihrem Stalwart-Server läuft. Nichts verlässt die Maschine.
curl -fsSL https://raw.githubusercontent.com/klar-im/engine/main/install.sh | sudo KLAR_ACCEPT_MODEL_LICENSE=1 sh Linux mit systemd, auf x86_64 oder arm64. Ältere Systeme nutzen den Container.
So greift es in Stalwart ein
Stalwart übergibt jede eingehende Nachricht in der DATA-Phase an den Klar-Milter. Die Engine liest Header und Text auf Ihrem Server. Ihr Urteil schreibt sie als X-Klar-Header zurück.
Ein Sieve-Skript sortiert jede Nachricht dann nach diesem Urteil. Spam landet im Junk-Ordner, Marketing-Mails in einem eigenen Ordner, alles andere bleibt im Posteingang.
Ein weiterer Befehl verbindet Stalwart mit dem Milter. Er trägt den Milter für eingehende Mail ein, setzt striktes DMARC auf Port 25 und installiert das Sieve-Skript. Mit --shadow bewertet der eingebaute Filter weiter, sortiert aber nichts ein:
export STALWART_URL=http://127.0.0.1:8080 STALWART_USER=admin STALWART_PASSWORD=...
python3 /opt/klar/share/stalwart/scripts/apply.py --shadow --milter-host 127.0.0.1 --milter-port 8891 Der eingebaute Filter darf nicht mehr entscheiden. Er läuft vor jedem Milter, und was er als Spam markiert, landet im Junk-Ordner, ganz gleich, wie Klar urteilt.
Schalten Sie danach das Einsortieren für jedes Postfach ein, das tatsächlich gelesen wird, jeweils mit dem Passwort des Kontos. Lassen Sie Spamfallen und abuse@ außen vor: Dort bleiben die Header erhalten, und nichts wird verschoben.
STALWART_PASSWORD='alice-pw' python3 /opt/klar/share/stalwart/scripts/sieve_activate.py --url https://mail.example.com --user alice@example.com Die BetreiberanleitungErst vergleichen, dann umstellen
Im Schattenmodus läuft der Filter von Stalwart weiter. Er bewertet jede Nachricht und schreibt das Ergebnis in die Header, sortiert aber nie etwas ein. Wohin die Mail geht, entscheidet Klar.
Jede Nachricht trägt so zwei Urteile. Zählen Sie die Abweichungen an Ihrer eigenen Post, so lange Sie möchten. Wenn Sie so weit sind, führen Sie den Befehl ohne --shadow erneut aus. Damit schalten Sie den eingebauten Filter ab:
python3 /opt/klar/share/stalwart/scripts/apply.py --milter-host 127.0.0.1 --milter-port 8891 Sie können ihn auch dauerhaft aktiv lassen. Eine zweite Meinung zu jeder Nachricht kostet wenige Millisekunden.
X-Klar-Label: spamX-Klar-Class: spamX-Klar-Score-Spam: 0.98X-Klar-Model-Version: …Voraussetzungen
x86_64- Debian 12, Ubuntu 22.04 oder neuer, mit systemd.
arm64- Debian 13, Ubuntu 24.04 oder neuer, mit systemd.
- Ältere Systeme
- Der Container ghcr.io/klar-im/klar-milterd, für amd64 und arm64.
- Arbeitsspeicher
- Etwa 700 MB RSS mit geladenem Modell. Eine Nachricht nach der anderen.
- Geschwindigkeit
- Im Median 6 s pro Nachricht auf einem VPS mit 2 vCPU, allein auf der CPU. Stalwart wartet 60 s und stellt dann unklassifiziert zu.
- Stalwart
- Version 0.16, mit Admin-Zugang über stalwart-cli.
Lizenzen
Der Code ist Open Source unter der AGPLv3. Das Modell hat eine eigene Lizenz, CC-BY-NC-4.0: frei für nicht-kommerzielle Nutzung, mit Namensnennung. Der Installer lädt es erst, wenn KLAR_ACCEPT_MODEL_LICENSE=1 bestätigt, dass Sie diese gelesen haben.
Nicht-kommerziell heißt: ein privater oder familiärer Heimserver, ein Hobbyprojekt oder akademische Forschung. Wer die Mail eines Unternehmens (auch die der eigenen Belegschaft, auch zur Erprobung) oder eines bezahlten Dienstes filtert, braucht eine kommerzielle Lizenz, und das ist Klar Pro. Im Zweifel fragen Sie uns vor dem Einsatz unter hello@klar.im.
Was Betreiber fragen
Verlässt meine Mail den Server?
Nein. Das Modell läuft neben dem Milter auf derselben Maschine, und die Klassifizierung einer Nachricht kommt ohne Netzwerkzugriff aus. Heruntergeladen wird nur bei der Installation: erst das Release von GitHub, dann das Modell.
Was passiert, wenn der Milter ausfällt?
Stalwart stellt die Nachricht unklassifiziert zu, ohne X-Klar-Header. Der Milter ist auf Fail-open eingestellt, ein Ausfall stellt also nie eine Mail zurück und weist keine ab. Postfix verhält sich mit unserer Konfiguration genauso.
Wie aktualisiere ich?
Führen Sie den Installationsbefehl erneut aus. Er behält Ihre Konfiguration und überspringt Modelldateien, die bereits übereinstimmen. Für eine feste Version setzen Sie KLAR_VERSION=v0.2.0 hinter sudo, neben KLAR_ACCEPT_MODEL_LICENSE=1.
Wie deinstalliere ich es?
Machen Sie zuerst die Änderungen in Stalwart rückgängig. Führen Sie sieve_activate.py --deactivate für jedes Postfach aus. Löschen Sie den Klar-Milter und das globale Sieve-Skript klar, und schalten Sie dann den Spamfilter wieder ein. Haben Sie den Schattenmodus genutzt, löschen Sie auch das KLAR_SHADOW-Tag und die zugehörige Regel. Wenn Sie die alte Richtlinie zurückhaben möchten, setzen Sie dmarcVerify auf den früheren Wert. Stoppen und deaktivieren Sie danach klar-milterd und löschen Sie die Unit-Datei. Entfernen Sie zum Schluss /opt/klar, /etc/klar, /var/lib/klar sowie den Benutzer klarmilter.
Läuft es auch in Docker?
Ja. Das Image ghcr.io/klar-im/klar-milterd läuft auf amd64 und arm64 und lädt beim ersten Start dasselbe Modell. Binden Sie seine Ports an 127.0.0.1, oder hängen Sie es in das Docker-Netz von Stalwart und übergeben Sie --milter-host klar-milterd. Das Image enthält kein apply.py: Führen Sie die Skripte aus einem Klon des Engine-Repos aus. Geben Sie Port 8891 nie ins Internet frei.
Sie betreiben Mail für ein Unternehmen?
Klar Pro ist die kommerzielle Lizenz für dieselbe Engine, auf Ihren eigenen Servern. Erzählen Sie uns von Ihrem Setup.