113 lines
4.8 KiB
Markdown
113 lines
4.8 KiB
Markdown
+++
|
||
date = '2025-10-10T09:26:56+02:00'
|
||
draft = false
|
||
title = 'Google Groups Spam – Wenn Google zum Spam-Schleuder wird'
|
||
|
||
[cover]
|
||
image = "/imgs/google-spam.jpg"
|
||
alt = "Google in bunten Farben auf dunklem Hintergrund"
|
||
caption = ""
|
||
+++
|
||
|
||
# Dieses Google Groups Problem nervt
|
||
|
||
Im letzten Jahr hab ich nen deutlichen Anstieg von Spam bemerkt, der über Google Groups reingekommen ist. Das Ding ist: Google Groups ist von Haus aus so designed, dass Spammer es leicht haben. Die ballern ihre Scheiße über legitime Google-Mail-Server – und das macht's verdammt schwer, das Zeug zu filtern.
|
||
|
||
## Warum passiert das?
|
||
|
||
Google Groups hat ein paar grundlegende Design-Probleme, die es für Spammer besonders attraktiv machen:
|
||
|
||
- **Kein Opt-in nötig**: Spammer können einfach jede E-Mail-Adresse zu ner Google Group hinzufügen. Ohne Rückfrage. Ohne Bestätigung.
|
||
- **Austreten? Fehlanzeige**: Viele Spam-Gruppen sind privat. Als Opfer kannst du nicht mal auf die Gruppenseite, um dich auszutragen. Du bist drin, ob du willst oder nicht.
|
||
- **Auto-Responder machen's schlimmer**: Manche Gruppen haben automatisierte Mail-Systeme drin (Ticket-Systeme, Abwesenheitsnotizen). Wenn die auf die ursprüngliche Spam-Mail antworten, geht die Antwort wieder an alle Gruppenmitglieder. Spam-Superspreader quasi.
|
||
|
||
## Das Problem und mein Ansatz
|
||
|
||
Beim Analysieren der Mails ist mir aufgefallen: Einige legitime Organisationen nutzen Google Groups auch für Newsletter oder Ankündigungen. Also einfach den kompletten Google-Groups-Traffic blockieren? Keine gute Idee – zu viele False Positives.
|
||
|
||
Also hab ich mir was überlegt: Eine Lösung, die direkt in **Rspamd**, unserem Spam-Filter, eingreift:
|
||
|
||
- **Custom Lua Plugin**: Erkennt Nachrichten aus Google Groups und vergibt ein eigenes Symbol.
|
||
- **Composite Rules**: Kombiniert dieses Symbol mit anderen Spam-Indikatoren, um zu entscheiden, ob die Mail wirklich Spam ist.
|
||
|
||
So zielen wir gezielt auf die missbräuchlichen Muster ab, ohne legitime Google-Groups-Nutzung zu bestrafen.
|
||
|
||
## Ran an die Tasten
|
||
|
||
Ich hab ein kleines Lua-Plugin für Rspamd gebaut, das Nachrichten aus Google Groups erkennt und mit einem Symbol taggt. Mit Composite Rules wird dann entschieden, ob die Mail als Spam durchgeht oder nicht.
|
||
|
||
### Schritt 1: Das Lua-Plugin bauen
|
||
|
||
Ab nach `/etc/rspamd/plugins.d/kits_header_google_group.lua`:
|
||
|
||
```lua
|
||
rspamd_config:register_symbol{
|
||
name = "KITS_HEADER_GOOGLE_GROUP",
|
||
score = 0.1,
|
||
group = "headers",
|
||
description = "Message contains X-Google-Group-Id header or List-Unsubscribe header with googlegroups",
|
||
callback = function(task)
|
||
-- Check for X-Google-Group-Id header
|
||
if task:get_header('X-Google-Group-Id') then
|
||
return true
|
||
end
|
||
|
||
-- Check for List-Unsubscribe header containing 'googlegroups'
|
||
local list_unsubscribe = task:get_header('List-Unsubscribe')
|
||
if list_unsubscribe and string.find(list_unsubscribe:lower(), 'googlegroups') then
|
||
return true
|
||
end
|
||
|
||
return false
|
||
end
|
||
}
|
||
```
|
||
|
||
Das Plugin sucht nach:
|
||
|
||
- `X-Google-Group-Id` Header
|
||
- `List-Unsubscribe` Header mit `googlegroups` drin
|
||
|
||
Wenn einer der beiden gefunden wird, gibt's das Symbol `KITS_HEADER_GOOGLE_GROUP`.
|
||
|
||
### Schritt 2: Plugin aktivieren
|
||
|
||
Dann noch ein leeres Config-File anlegen unter `/etc/rspamd/modules.d/kits_header_google_group.conf`:
|
||
|
||
```bash
|
||
# Leere Config, um das Lua-Plugin zu aktivieren
|
||
kits_header_google_group { }
|
||
```
|
||
|
||
Ab jetzt wird jede Mail aus Google Groups mit `KITS_HEADER_GOOGLE_GROUP` getaggt und bekommt 'nen Score von 0,1.
|
||
|
||
### Schritt 3: Composite Rules bauen
|
||
|
||
Jetzt die Composite Rules definieren. Ab damit nach `/etc/rspamd/override.d/composite.conf`:
|
||
|
||
```bash
|
||
# Google Group Ursprung mit Bulk oder Freemail
|
||
KITS_GOOGLE_GROUP_BAD {
|
||
expression = "KITS_HEADER_GOOGLE_GROUP and (DCC_REJECT | FUZZY_BULK | FREEMAIL_FROM)";
|
||
score = 8.0;
|
||
}
|
||
|
||
# Google Group Ursprung mit Bulk und Freemail
|
||
KITS_GOOGLE_GROUP_WORST {
|
||
expression = "KITS_HEADER_GOOGLE_GROUP and (DCC_REJECT | FUZZY_BULK ) and FREEMAIL_FROM";
|
||
score = 20.0;
|
||
}
|
||
```
|
||
|
||
Die Regeln geben höhere Scores für Mails, die aus Google Groups kommen **und** bekannte Spam-Indikatoren haben wie `DCC_REJECT`, `FUZZY_BULK` oder `FREEMAIL_FROM`.
|
||
|
||
> Die Namen, Scores und Logik sind auf meine Umgebung zugeschnitten. Passt die Werte immer an euer Setup an und testet vorher!
|
||
|
||
## Fazit
|
||
|
||
Nachdem das Ding live war, ist der Spam aus Google Groups deutlich zurückgegangen. Legitime Mails von Unternehmen kamen weiterhin durch, der unerwünschte Group-Spam wurde aber effektiv von Rspamd markiert oder weggesperrt.
|
||
|
||
Wenn du nen Mail-Server betreibst, weißt du: Spam bekämpfen ist ein ewiger Kampf. Aber mit Rspamd hat man zum Glück richtig gute Werkzeuge an der Hand.
|
||
|
||
Spammer werden immer neue Wege finden, ihren Müll zu verteilen – das ist Katz und Maus. Aber Rspamd ist und bleibt ne verdammt gute Maus.
|