3.0 KiB
3.0 KiB
Impressum-Projekt Lernerfolg (01.09.2026)
Gemeinsames Impressum für alle Domains, Kontaktformular mit Honeypot + Rate-Limit + Telegram-Relay. 8 Fehler gemacht und analysiert.
Ergebnis-Setup (funktionierend)
- Zentrale Seite:
mehlzoerwer.de/impressum/→/var/www/mehlzoerwer.de/html/impressum/index.html - Footer-Link auf allen 14 Domains → verweist auf die zentrale Seite (§5 DDG: 2-Klick-Regel erfüllt)
- Backend: Flask
/opt/impressum/app.py(127.0.0.1:8096), systemdimpressum-kontakt.service - nginx-Proxy:
location /impressum/senden { proxy_pass http://127.0.0.1:8096/senden; }⚠️ Pfad-Bug: Flask hat/senden, URL ist/impressum/senden→ proxy_pass MUSS/sendenangehängt haben, sonst 404. - Spam-Schutz: Honeypot-Feld
website(unsichtbar) + Rate-Limit (5/Stunde/IP, In-Memory_RATE-Dict) → 429 ab 6. Anfrage - E-Mail-Verschleierung:
webmaster [at] mehlzoerwer [dot] de→ JS bautmailto:erst bei Klick - Telegram-Relay statt SMTP: Gmail-SMTP von VPS-IP geblockt (timeout) → Nachricht als JSON-Datei in
/tmp/impressum-kontakt/+ Telegram-Push via Bot. Kein SMTP-Passwort nötig. - Schema.org/Person JSON-LD im Impressum (SEO + rechtlich sauber)
Die 8 Fehler (Prävention in Klammern)
- SMTP-Daten in Plaintext-Datei gespeichert → musste gelöscht werden. (Secrets nur in .env chmod 600; Telegram statt SMTP.)
- SyntaxError in Flask (f-String mit Emoji). (
python3 -m py_compilevor systemd-Start) - Rate-Limit-Einbau zerstörte Einrückung → IndentationError. (Nach Patch py_compile prüfen.)
- nginx-Proxy falscher Pfad → 404. (Nach nginx-Edit:
nginx -t+ curl auf localhost-Port.) - certbot --expand überschrieb veganbedeutetleben.de mit falschem Zertifikat → Domain offline. (Nach certbot: SANs prüfen mit
openssl x509 ... | grep DNS:) - Sub-Agent-Tasks ohne URL/Kontext → Agenten konnten nicht arbeiten. (Material IMMER in Task einbetten.)
- Doppelte Task-Dateien (offen + fertig gleichzeitig). (Eindeutige task_id, nach Erledigung aus offen/ löschen.)
- Alte hängengebliebene Tasks in in_arbeit/ (vom 28.08). (Cleanup-Cron Mo 06:00.)
Wichtige Erkenntnis zur E-Mail-Verbindung
Gmail-SMTP (smtp.gmail.com:587) von netcup-VPS-IPs → timeout (Gmail blockt VPS/Rekursions-IPs). App-Passwort funktioniert lokal nicht. Lösung: kein SMTP — Flask schreibt JSON-Datei + Telegram-Bot-Push. Der Nutzer kann das App-Passwort in Google widerrufen (nicht mehr benötigt).
Kontaktformular-Test-Rezept
# Honeypot (Bot) → sollte freundlich blocken
curl -X POST https://mehlzoerwer.de/impressum/senden -d "name=Bot&email=b@x.de&nachricht=spam&website=http://spam"
# Normal → 200 + Telegram-Push
curl -X POST https://mehlzoerwer.de/impressum/senden -d "name=Test&email=t@t.de&nachricht=Hallo"
# Rate-Limit → ab 6. Anfrage 429
for i in 1 2 3 4 5 6; do curl -o /dev/null -w '%{http_code}' -X POST https://mehlzoerwer.de/impressum/senden -d "name=T$i&email=t@t.de&nachricht=x"; done