Mit SED Blacklist erstellen - need Help

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Huck Fin
Beiträge: 1202
Registriert: 10.03.2008 17:10:30

Mit SED Blacklist erstellen - need Help

Beitrag von Huck Fin » 04.02.2014 16:24:02

Hi, ich habe ein Verzeichniss
/home/freemail/Maildir/.Junk
Das wollte ich nach den Adressen der Spammer durchsuchen um diese in eine Blacklist zu integrieren.

Ich verwende folgenden Befehl

Code: Alles auswählen

grep -rIhEo "From: \b[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b" /home/freemail/Maildir/.Junk/* >/tmp/black1.tmp
Er liefert mir nur zwei Absender, obwohl das Subdir voll ist mit Spammails von bestimmt 100 Absendern.

Ich vermute den fehler bei dem From:
In der Spammail ist ein Absender so zu finden.

Code: Alles auswählen

From: "Finanzwelt" <news@allround-marketing.com>
Leider komme ich da nicht weiter.
Was mach ich falsch ?

Benutzeravatar
Phineas
Beiträge: 348
Registriert: 20.06.2012 20:26:19

Re: Mit SED Blacklist erstellen - need Help

Beitrag von Phineas » 04.02.2014 17:12:04

Ich würde ein wenig mehr "Luft geben":

Code: Alles auswählen

grep -Eo "From: \".*\" <[^ ]+@[^ ]+\.[^ ]+>"
Der Code ist sicherlich noch zu verbessern.

Benutzeravatar
Huck Fin
Beiträge: 1202
Registriert: 10.03.2008 17:10:30

Re: Mit SED Blacklist erstellen - need Help

Beitrag von Huck Fin » 04.02.2014 19:01:17

Mit dem Script bekomme ich eine Liste in der Form...
/home/freemail/Maildir/.Junk/cur/1390421188.3470_0.eiwomisa:2,S:From: "Schufafrei" <news@allround-marketing.com>
Da müsste ich jetzt alles zwischen < und > raus filtern.
Wenn du da noch einen Einzeiler für mich hättest...

Benutzeravatar
Huck Fin
Beiträge: 1202
Registriert: 10.03.2008 17:10:30

Re: Mit SED Blacklist erstellen - need Help

Beitrag von Huck Fin » 04.02.2014 21:36:53

So, habe es gelöst.

Code: Alles auswählen

#!/bin/bash
eingabe=/home/*/Maildir/.Junk
ausgabe=/etc/spamassassin

cp $ausgabe/blacklist.cf $ausgabe/blacklist.bak
# Spamversender Adressen sammeln
grep -rEo "From: \".*\" <[^ ]+@[^ ]+\.[^ ]+>" $eingabe/*  >$ausgabe/rohdaten.tmp

# Nur die e-Mail Adressen ausfiltern
grep -oE '[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+' $ausgabe/rohdaten.tmp >$ausgabe/enddaten.tmp

# blacklist_from davor schreiben
sed 's/^/blacklist_from /g' $ausgabe/enddaten.tmp >$ausgabe/blacklist.tmp

# Neue Liste und alte Liste zu einer Liste vereinen
cat $ausgabe/blacklist.bak $ausgabe/blacklist.tmp | sort | uniq -i >$ausgabe/blacklist.cf

# Müll löschen
rm $ausgabe/rohdaten.tmp.
rm $ausgabe/enddaten.tmp
rm $ausgabe/blacklist.tmp

tHoRax
Beiträge: 560
Registriert: 22.12.2014 17:23:26

Re: Mit SED Blacklist erstellen - need Help

Beitrag von tHoRax » 04.02.2014 23:28:40

also es gibt andere Einzeiler-Experten hier im Forum :)als mich , aber mit einem awk-Einzeiler würdest du alle Spammails so erhalten, wenn du es wie oben in der From-Zeile beschrieben hast und die Datei mit awk aufrufst:
awk -F From: '{print $NF}' mail.txt
würde sowas ausgeben:
From: "uwe.bauer" <uwe.bauer@yahoo.de>
From: "thomas.wert" <thomas.wert@hotmail.com> usw. usw.
/ASUS-F751S/ Intel Pentium N3710 @ 2.560Ghz
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM

Antworten