diff --git a/src/pmg-ai-rspamd/Integration Guide.md b/src/pmg-ai-rspamd/Integration Guide.md deleted file mode 100644 index f400890..0000000 --- a/src/pmg-ai-rspamd/Integration Guide.md +++ /dev/null @@ -1,115 +0,0 @@ -# 🛡️ Integration Guide: PMG & Mailcow an Rspamd-AI - -Dieses Dokument beschreibt die Anbindung von Proxmox Mail Gateway (PMG) und Mailcow-Instanzen an das zentrale `pmg-ai-rspamd` Gehirn. - -## 1. Integration: Proxmox Mail Gateway (PMG) - -Das PMG dient als Grobfilter und nutzt den Rspamd-LXC via Milter-Protokoll für die KI-Analyse. - -### Schritt A: Whitelist-Eintrag im Rspamd-LXC - -Bevor das PMG senden darf, muss seine IP im Rspamd-LXC hinterlegt werden, damit Rspamd die Mail nicht als "Relay-Versuch von extern" blockiert. - - -1. Erstelle auf dem **Rspamd-LXC** eine neue Datei für das PMG: - - ```javascript - cat << 'EOF' > /etc/rspamd/local.d/local_addrs.d/pmg-gateway.conf - # IP des Proxmox Mail Gateways - local_addrs = "10.10.10.50"; - EOF - - ``` -2. Rspamd neu laden: `systemctl reload rspamd` - -### Schritt B: PMG Postfix Konfiguration - -Auf dem **PMG-Server** (via SSH): - - -1. Template-System vorbereiten: - - ```javascript - mkdir -p /etc/pmg/templates - cp /var/lib/pmg/templates/main.cf.in /etc/pmg/templates/main.cf.in - - ``` -2. Am Ende von `/etc/pmg/templates/main.cf.in` einfügen: - - ```javascript - # Rspamd Milter Integration - smtpd_milters = inet:10.10.10.200:11332 - non_smtpd_milters = inet:10.10.10.200:11332 - milter_protocol = 6 - milter_default_action = accept - - ``` - - *(Ersetze* `*10.10.10.200*` *durch die IP deines Rspamd-LXC)*. -3. Aktivieren: `pmgconfig sync --restart 1` - - ---- - -## 2. Integration: Mailcow Remote Learning - -Hier bringen wir der Mailcow bei, Spam/Ham nicht lokal zu lernen, sondern an dein KI-Gehirn zu senden. - -### Option A: Via VPN (Sicherster Weg) - -**Voraussetzung:** Mailcow-IP ist im Rspamd-LXC unter `secure_ips.d/` hinterlegt. - - -1. Erstelle auf dem **Rspamd-LXC** den Eintrag: - - ```javascript - cat << 'EOF' > /etc/rspamd/local.d/secure_ips.d/kunde-mailcow.conf - secure_ip = "10.8.0.10"; # VPN-IP der Mailcow - EOF - - ``` -2. In der **Mailcow UI** unter *Konfiguration > System-Konfiguration > Rspamd*: - * **Rspamd-Host:** `10.8.0.200` (VPN-IP des LXC) - * **API-Key / Passwort:** Dein `rspamadm pw` Klartext-Passwort. - -### Option B: Via HTTPS (Ohne VPN über Public IP) - -Wenn kein VPN möglich ist, nutzen wir einen Reverse Proxy (z. B. Nginx) auf dem LXC-Host, um die API per TLS zu schützen. - -**Sicherheits-Warnung:** Öffne niemals Port 11334 direkt zum Internet! - - -1. Installiere Nginx auf dem LXC-Host (oder einem Proxy davor). -2. Nginx-Config (Auszug): - - ```javascript - server { - listen 443 ssl; - server_name rspamd-api.deine-domain.de; - # SSL-Zertifikat hier konfigurieren (Certbot) - - location / { - proxy_pass http://127.0.0.1:11334; - allow 1.2.3.4; # Nur die öffentliche IP der Mailcow erlauben! - deny all; - } - } - - ``` -3. In der **Mailcow** nun als Host `https://rspamd-api.deine-domain.de` eintragen. - - ---- - -## 3. Erfolgskontrolle (Debugging) - -Um zu sehen, ob die KI arbeitet, schau in das Log des Rspamd-LXC: - -```javascript -tail -f /var/log/rspamd/rspamd.log | grep -i "QWEN" -``` - -Wenn eine Mail vom PMG kommt, solltest du einen Eintrag wie diesen sehen: `... (main) <...> symbol: QWEN_LLM_FRAUD(2.50); ... score: 5 ...` - - ---- \ No newline at end of file diff --git a/src/pmg-ai-rspamd/PMG Integration Guide.md b/src/pmg-ai-rspamd/PMG Integration Guide.md new file mode 100644 index 0000000..10f9fe0 --- /dev/null +++ b/src/pmg-ai-rspamd/PMG Integration Guide.md @@ -0,0 +1,111 @@ +# PMG-Integration des KI-Rspamd Filters + +Diese Anleitung beschreibt, wie das PMG als zentrale Filter-Instanz die Scores deines externen Rspamd-LXC abfragt, visualisiert und gewichtet, ohne die eigene Filterhoheit zu verlieren. + +## 1. Architektur-Übersicht + +Das PMG fungiert als SMTP-Relay. Der externe Rspamd wird als **Before-Queue Milter** eingebunden. Er verarbeitet die Mail, setzt Header-Attribute und das PMG wertet diese Header innerhalb seines eigenen Regelwerks aus. + + +--- + +## 2. Persistente Milter-Anbindung (Updatesicher) + +Damit Postfix den Rspamd-LXC anspricht, muss die Konfiguration über das PMG-Template-System erfolgen. + + +1. **Template-Verzeichnis erstellen:** + + ```javascript + mkdir -p /etc/pmg/templates + cp /var/lib/pmg/templates/main.cf.in /etc/pmg/templates/ + + ``` +2. **Milter in `main.cf.in` eintragen:** Öffne `/etc/pmg/templates/main.cf.in` und füge am Ende (vor den lokalen Overrides) folgende Zeilen hinzu: + + ```javascript + smtpd_milters = inet:IP_DEINES_LXC:11332 + milter_default_action = accept + milter_protocol = 6 + + ``` +3. **Konfiguration generieren:** + + ```javascript + pmgconfig sync + + ``` + + +--- + +## 3. Score-Gewichtung (SpamAssassin-Integration) + +Da das PMG-UI keine direkte Punkte-Addition erlaubt, integrieren wir die Rspamd-Ergebnisse direkt in den internen Scan-Prozess. Dies stellt sicher, dass die Scores im **Tracking Center** namentlich auftauchen. + + +1. **Konfigurationsdatei erstellen:** Erstelle auf dem PMG-Host: `/etc/mail/spamassassin/rspamd_scores.cf` +2. **Regeln definieren:** Kopiere diesen Block in die Datei: + + ```javascript + # Rspamd Medium (4 - 5.9) + header RSPAMD_MEDIUM X-Rspamd-Score =~ /^([45]\.[0-9]+)/ + describe RSPAMD_MEDIUM Rspamd bewertet diese Mail als leicht verdaechtig (4-5.9) + score RSPAMD_MEDIUM 1.5 + + # Rspamd High (6 - 14.9) + header RSPAMD_HIGH X-Rspamd-Score =~ /^([6-9]|1[0-4])\.[0-9]+/ + describe RSPAMD_HIGH Rspamd bewertet diese Mail als Spam (6-14.9) + score RSPAMD_HIGH 4.0 + + # Rspamd Critical (15+) + header RSPAMD_CRITICAL X-Rspamd-Score =~ /^(1[5-9]|[2-9][0-9]|[1-9][0-9][0-9])\.[0-9]+/ + describe RSPAMD_CRITICAL Rspamd (KI/Llama) ist sich absolut sicher: Scam/Betrug (15+) + score RSPAMD_CRITICAL 10.0 + + ``` +3. **Dienst neu starten:** + + ```javascript + systemctl restart pmg-smtp-filter + + ``` + + +--- + +## 4. UI-Logik für harte Aktionen (Optional) + +Wenn du für extrem hohe Scores (`RSPAMD_CRITICAL`) eine sofortige Quarantäne erzwingen möchtest, kannst du dies im WebUI ergänzen: + + +1. **What Object:** Erstelle unter *Mail Filter > What Objects* ein **Match Field**. + * **Name:** `Rspamd-Critical-Header` + * **Field:** `X-Rspamd-Score` + * **Value:** `^(1[5-9]|[2-9][0-9])\..*` +2. **Rule:** Erstelle eine Regel mit Priorität **99**. + * **What:** `Rspamd-Critical-Header` + * **Action:** `Quarantine` + + +--- + +## 5. Verifizierung & Monitoring + +Nach der Integration sollten eingehende E-Mails im PMG Tracking Center detailliert aufgeschlüsselt werden. + +* **Live-Log Prüfung:** Überwache die Auswertung der neuen Header live auf der Konsole: + + ```javascript + tail -f /var/log/mail.log | grep -E "RSPAMD_(MEDIUM|HIGH|CRITICAL)" + + ``` +* **Tracking Center:** In der Detailansicht einer E-Mail unter **Spam Analysis** erscheint nun z. B. der Eintrag: `RSPAMD_HIGH (4.00)` + + +--- + +### Wartungshinweise + +* **Persistent:** Die `.cf`-Dateien unter `/etc/mail/spamassassin/` bleiben bei PMG-Updates erhalten. +* **Anpassung:** Sollten zu viele False Positives auftreten, senke einfach die `score`-Werte in der `rspamd_scores.cf` und starte den `pmg-smtp-filter` neu. \ No newline at end of file diff --git a/src/pmg-ai-rspamd/install-service.sh b/src/pmg-ai-rspamd/install-service.sh index 1321eef..eea1eba 100644 --- a/src/pmg-ai-rspamd/install-service.sh +++ b/src/pmg-ai-rspamd/install-service.sh @@ -243,6 +243,29 @@ secure_ip = "${LXC_IP%/*}"; .include(try=true,glob=true) "\$LOCAL_CONFDIR/secure_ips.d/*.conf" EOF +cat << EOF > /etc/rspamd/local.d/actions.conf +# Alle Aktionen, die normalerweise ablehnen würden, auf null setzen +reject = null; # Niemals ablehnen +add_header = 6.0; # Ab diesem Score den X-Spam-Header setzen +greylist = null; # Greylisting deaktivieren (macht PMG schon besser) +rewrite_subject = null; +EOF + +cat << EOF > /etc/rspamd/local.d/milter_headers.conf +# Diese Header werden für jede Mail geschrieben +use = ["spam-header", "symbols", "score"]; + +header_names { + "spam-header" = "X-Spam-Flag"; + "symbols" = "X-Rspamd-Symbols"; + "score" = "X-Rspamd-Score"; +} + +# Fügt den Score immer hinzu, egal wie hoch er ist +skip_local = false; +extended_symbols = true; +EOF + # oletools aktivieren cat << 'EOF' > /etc/rspamd/local.d/oletools.conf enabled = true;