2440fbf974
Use MTA-style Message-ID and display names on From/To to avoid SpamAssassin MSGID_RANDY and PDS_NAKED_TO_NUMERO. Add todo/12 for HTTP token gate on monitor.php (CLI cron unchanged). Co-authored-by: Cursor <cursoragent@cursor.com>
1.9 KiB
1.9 KiB
12 — monitor.php: Token-Check (HTTP)
Priorität: medium
Abhängigkeiten: 03 (monitor.php), 05 (Plesk-Cron)
Referenz: ../public/monitor.php, ../public/mail-test.php
Problem
monitor.php ist per GET öffentlich erreichbar (https://0012.de/monitor.php). Im Plesk-Access-Log tauchen neben dem Cron-curl auch fremde Clients auf (z. B. got von AWS-IPs) — jeder kann Checks auslösen, JSON/Status lesen und Last erzeugen.
Plesk-Cron kann das Skript per CLI ausführen (php monitor.php) — dort ist kein HTTP nötig.
Ziel
HTTP-Aufrufe nur mit gültigem Token; CLI/Cron unverändert.
Checkliste
- In
monitor.php(odermonitor-lib.php): bei Web-SAPI (php_sapi_name() !== 'cli') Token prüfen- Query-Parameter
tokenoder HeaderX-Monitor-Token - Secret: bestehendes
MONITOR_INGEST_TOKEN(wiemail-test.php) oder separatesMONITOR_RUN_TOKEN - Vergleich mit
hash_equals() - Bei Fehler:
403+ kurzer JSON/Text, kein Monitoring-Lauf
- Query-Parameter
- Plesk-Cron auf PHP-Skript (CLI) umstellen, falls aktuell URL/Curl — siehe
05-plesk-cron.md - Optional:
.htaccess/ Plesk „Verzeichnis schützen“ nur als Zusatz, nicht als einzige Absicherung - Deploy + manueller Test:
GET /monitor.phpohne Token → 403GET /monitor.php?token=…→ Lauf OKphp monitor.phplokal/auf Server → Lauf OK
- Kurz in
../MONITORING.mdoder05-plesk-cron.mddokumentieren
Nicht im Scope
- Rate-Limit / IP-Whitelist (optional später)
- Absicherung von
index.php(öffentliche Statusseite bleibt bewusst offen)
Akzeptanzkriterien
- Fremde GET-Requests ohne Token lösen keinen Monitor-Lauf aus
- Geplanter Plesk-Cron (CLI) läuft weiter zuverlässig
Referenz-Implementierung
Vorbild Token-Check: ../public/mail-test.php (Zeilen 15–22).