304 lines
7.2 KiB
Markdown
304 lines
7.2 KiB
Markdown
# E-Mail Report
|
|
|
|
AdGuard Shield kann Statistik-Reports direkt aus der SQLite-Datenbank erzeugen und per E-Mail versenden. Es gibt in der Go-Version keinen separaten `report-generator.sh` mehr.
|
|
|
|
## Was der Report enthält
|
|
|
|
Der Report basiert auf der SQLite-Datenbank:
|
|
|
|
```text
|
|
/var/lib/adguard-shield/adguard-shield.db
|
|
```
|
|
|
|
### Ausgewertete Daten
|
|
|
|
| Bereich | Inhalt |
|
|
|---|---|
|
|
| Zeitraum | Start- und Enddatum des Berichtszeitraums |
|
|
| Sperren | Anzahl der Sperren im Zeitraum |
|
|
| Freigaben | Anzahl der Freigaben im Zeitraum |
|
|
| Zeitraum-Schnellübersicht | Heute, gestern, letzte 7/14/30 Tage |
|
|
| Aktive Sperren | Derzeit aktive Sperren zum Zeitpunkt der Report-Erstellung |
|
|
| Permanente Sperren | Anzahl permanenter Sperren im Zeitraum |
|
|
| AbuseIPDB | Anzahl erfolgreicher AbuseIPDB-Meldungen im Zeitraum |
|
|
| Angriffsarten | Rate-Limit, Subdomain-Flood und externe Blocklist |
|
|
| Top-Clients | Die am häufigsten gesperrten Client-IPs |
|
|
| Top-Domains | Die am häufigsten betroffenen Domains |
|
|
| Protokolle | Verteilung nach DNS, DoH, DoT, DoQ usw. |
|
|
| Letzte Sperren | Die letzten 10 Sperren im Berichtszeitraum |
|
|
|
|
### Templates
|
|
|
|
Die Standard-Templates liegen im Code unter:
|
|
|
|
```text
|
|
internal/report/templates/report.html
|
|
internal/report/templates/report.txt
|
|
```
|
|
|
|
Sie werden ins Binary eingebettet und bei `install` sowie `update` nach `/opt/adguard-shield/templates` geschrieben. Zur Laufzeit verwendet AdGuard Shield zuerst externe Templates aus `ADGUARD_SHIELD_TEMPLATE_DIR`, danach `templates` neben der Konfiguration bzw. neben dem Binary und fällt erst zuletzt auf die eingebetteten Standard-Templates zurück.
|
|
|
|
---
|
|
|
|
## Konfiguration
|
|
|
|
| Parameter | Standard | Beschreibung |
|
|
|---|---|---|
|
|
| `REPORT_ENABLED` | `false` | Report-Funktion logisch aktivieren |
|
|
| `REPORT_INTERVAL` | `weekly` | Versandintervall |
|
|
| `REPORT_TIME` | `08:00` | Versandzeit im Format `HH:MM` |
|
|
| `REPORT_EMAIL_TO` | `admin@example.com` | Empfängeradresse |
|
|
| `REPORT_EMAIL_FROM` | `adguard-shield@example.com` | Absenderadresse |
|
|
| `REPORT_FORMAT` | `html` | Report-Format (`html` oder `txt`) |
|
|
| `REPORT_MAIL_CMD` | `msmtp` | Mailprogramm für den Versand |
|
|
| `REPORT_BUSIEST_DAY_RANGE` | `30` | Zeitraum für "Aktivster Tag"; `0` nutzt den Berichtszeitraum |
|
|
|
|
### Versandintervalle
|
|
|
|
| Intervall | Versandzeitpunkt |
|
|
|---|---|
|
|
| `daily` | Täglich zur Uhrzeit aus `REPORT_TIME` |
|
|
| `weekly` | Montags zur Uhrzeit aus `REPORT_TIME` |
|
|
| `biweekly` | Montags in ungeraden ISO-Kalenderwochen zur Uhrzeit aus `REPORT_TIME` |
|
|
| `monthly` | Am 1. des Monats zur Uhrzeit aus `REPORT_TIME` |
|
|
|
|
### Formate
|
|
|
|
| Format | Beschreibung | Empfehlung |
|
|
|---|---|---|
|
|
| `html` | HTML-formatierte E-Mail mit Tabellen und Formatierung | Standard-Mail-Clients |
|
|
| `txt` | Reiner Text ohne Formatierung | Einfache Mail-Setups, Log-Ablage |
|
|
|
|
### Beispielkonfiguration
|
|
|
|
```bash
|
|
REPORT_ENABLED=true
|
|
REPORT_INTERVAL="weekly"
|
|
REPORT_TIME="08:00"
|
|
REPORT_EMAIL_TO="admin@example.com"
|
|
REPORT_EMAIL_FROM="adguard-shield@example.com"
|
|
REPORT_FORMAT="html"
|
|
REPORT_MAIL_CMD="msmtp"
|
|
```
|
|
|
|
---
|
|
|
|
## Befehle
|
|
|
|
### Konfiguration und Cron-Status anzeigen
|
|
|
|
```bash
|
|
sudo adguard-shield report-status
|
|
```
|
|
|
|
### HTML-Report in Datei schreiben
|
|
|
|
```bash
|
|
sudo adguard-shield report-generate html /tmp/adguard-shield-report.html
|
|
```
|
|
|
|
Die Datei kann im Browser geöffnet werden, um das Ergebnis zu prüfen.
|
|
|
|
### Text-Report auf stdout ausgeben
|
|
|
|
```bash
|
|
sudo adguard-shield report-generate txt
|
|
```
|
|
|
|
### Testmail senden
|
|
|
|
```bash
|
|
sudo adguard-shield report-test
|
|
```
|
|
|
|
Sendet eine einfache Testmail. Erst wenn diese ankommt, lohnt sich die Fehlersuche am eigentlichen Report.
|
|
|
|
### Aktuellen Report erzeugen und versenden
|
|
|
|
```bash
|
|
sudo adguard-shield report-send
|
|
```
|
|
|
|
### Cron-Job installieren
|
|
|
|
```bash
|
|
sudo adguard-shield report-install
|
|
```
|
|
|
|
### Cron-Job entfernen
|
|
|
|
```bash
|
|
sudo adguard-shield report-remove
|
|
```
|
|
|
|
---
|
|
|
|
## Mailversand
|
|
|
|
AdGuard Shield übergibt die fertige Mail an ein lokales Mailprogramm. Der Standard ist:
|
|
|
|
```bash
|
|
REPORT_MAIL_CMD="msmtp"
|
|
```
|
|
|
|
### Einrichtung mit msmtp
|
|
|
|
```bash
|
|
# msmtp installieren
|
|
sudo apt install msmtp msmtp-mta
|
|
|
|
# Testmail senden
|
|
sudo adguard-shield report-test
|
|
```
|
|
|
|
### Eigene Mailprogramm-Argumente
|
|
|
|
Wenn dein Mailprogramm zusätzliche Argumente braucht, können sie in `REPORT_MAIL_CMD` stehen. AdGuard Shield hängt intern `-t` an, damit Empfänger und Header aus der generierten Mail gelesen werden.
|
|
|
|
```bash
|
|
REPORT_MAIL_CMD="msmtp --account=default"
|
|
```
|
|
|
|
### Alternativen zu msmtp
|
|
|
|
| Programm | `REPORT_MAIL_CMD` |
|
|
|---|---|
|
|
| msmtp | `msmtp` |
|
|
| sendmail | `sendmail` |
|
|
| ssmtp | `ssmtp` |
|
|
| Benutzerdefiniert | Vollständiger Pfad zum Programm |
|
|
|
|
---
|
|
|
|
## Automatischer Versand
|
|
|
|
### Cron-Job installieren
|
|
|
|
```bash
|
|
sudo adguard-shield report-install
|
|
```
|
|
|
|
Dadurch wird diese Datei geschrieben:
|
|
|
|
```text
|
|
/etc/cron.d/adguard-shield-report
|
|
```
|
|
|
|
Der Cron-Eintrag ruft den globalen CLI-Befehl mit der installierten Konfiguration auf, sofern er registriert ist:
|
|
|
|
```text
|
|
/usr/local/bin/adguard-shield -config /opt/adguard-shield/adguard-shield.conf report-send
|
|
```
|
|
|
|
Falls die Installation mit `--no-register` erfolgt ist, verwendet `report-install` stattdessen `/opt/adguard-shield/adguard-shield`.
|
|
|
|
### Zeitplan nach Intervall
|
|
|
|
| Intervall | Cron-Verhalten |
|
|
|---|---|
|
|
| `daily` | Täglich zur Uhrzeit aus `REPORT_TIME` |
|
|
| `weekly` | Montags zur Uhrzeit aus `REPORT_TIME` |
|
|
| `biweekly` | Montags in ungeraden ISO-Kalenderwochen |
|
|
| `monthly` | Am 1. des Monats |
|
|
|
|
### Cron-Job entfernen
|
|
|
|
```bash
|
|
sudo adguard-shield report-remove
|
|
```
|
|
|
|
---
|
|
|
|
## Manuelle Prüfung
|
|
|
|
### Schritt 1: Status prüfen
|
|
|
|
```bash
|
|
sudo adguard-shield report-status
|
|
```
|
|
|
|
### Schritt 2: Report lokal erzeugen
|
|
|
|
```bash
|
|
# HTML-Report zum Ansehen im Browser
|
|
sudo adguard-shield report-generate html /tmp/adguard-shield-report.html
|
|
|
|
# Text-Report in der Konsole
|
|
sudo adguard-shield report-generate txt
|
|
```
|
|
|
|
### Schritt 3: Versand testen
|
|
|
|
```bash
|
|
# Einfache Testmail
|
|
sudo adguard-shield report-test
|
|
|
|
# Vollständigen Report senden
|
|
sudo adguard-shield report-send
|
|
```
|
|
|
|
### Schritt 4: Logs prüfen
|
|
|
|
```bash
|
|
sudo adguard-shield logs --level warn --limit 100
|
|
sudo journalctl -u cron --no-pager -n 100
|
|
```
|
|
|
|
Je nach Distribution heißt der Cron-Service `cron`, `crond` oder wird über das allgemeine Syslog protokolliert.
|
|
|
|
---
|
|
|
|
## Häufige Probleme
|
|
|
|
### `REPORT_EMAIL_TO ist leer`
|
|
|
|
Setze einen Empfänger in der Konfiguration:
|
|
|
|
```bash
|
|
REPORT_EMAIL_TO="admin@example.com"
|
|
```
|
|
|
|
### Mailprogramm nicht gefunden
|
|
|
|
Prüfe, ob das Mailprogramm installiert ist:
|
|
|
|
```bash
|
|
which msmtp
|
|
```
|
|
|
|
Installiere es bei Bedarf:
|
|
|
|
```bash
|
|
sudo apt install msmtp msmtp-mta
|
|
```
|
|
|
|
Oder setze `REPORT_MAIL_CMD` auf dein vorhandenes Mailprogramm.
|
|
|
|
### Cron läuft, aber keine Mail kommt an
|
|
|
|
Prüfe die Konfiguration und den Cron-Job:
|
|
|
|
```bash
|
|
sudo adguard-shield report-send
|
|
sudo cat /etc/cron.d/adguard-shield-report
|
|
```
|
|
|
|
**Checkliste:**
|
|
|
|
| Prüfpunkt | Beschreibung |
|
|
|---|---|
|
|
| Empfänger | `REPORT_EMAIL_TO` korrekt gesetzt? |
|
|
| Mailprogramm | `REPORT_MAIL_CMD` im Cron-PATH verfügbar? |
|
|
| Root-Konfiguration | Mailer für root konfiguriert? (msmtp benötigt `/root/.msmtprc` oder `/etc/msmtprc`) |
|
|
| Spam | Spam-Ordner geprüft? |
|
|
| SMTP | Ausgehende SMTP-Verbindungen erlaubt? (Port 587/465) |
|
|
|
|
### Format beim Generieren überschreiben
|
|
|
|
Du kannst das Format unabhängig von der Konfiguration wählen:
|
|
|
|
```bash
|
|
sudo adguard-shield report-generate txt
|
|
sudo adguard-shield report-generate html /tmp/report.html
|
|
```
|