Bash-Script für Spam-Protokoll
Wir sortieren auf unserem Server mit Amavis und SpamAsassin unsere Mail und prüfen sie auf Viren. Spam-Mails werden mit gzip gepackt und landen in einem gemeinsamen Quarantäne-Verzeichnis.
Damit wir nicht immer nachsehen müssen, ob versehentlich false positives in der Quarantäne gelandet sind, habe ich das folgende Script gebastelt.
Es sucht im Spam-Verzeichnis mit dem Befehl find alle Dateien mit "spam" am Anfang heraus, die innerhalb des letzten Tages erzeugt wurden.
Aus den Mails filtert es Absender, Empfänger und Betreff und schreibt diese in die Standardausgabe.
Statt auf den Bildschirm kann man die Informationen auch in eine Mail stecken, zum Beispiel mit
./spam_notifier.sh | mail -s"Spam-Report" user@foo.bar
Wer's brauchen kann: Viel Spaß damit.
Wer eine bessere Idee hat: Her damit :-)
...übrigens: Der so erzeugte und per Mail versandte Spam-Report bleibt ziemlich sicher im Spam-Filter Ihres Mail-Clients hängen. Aber das können Sie dem Client ja abgewöhnen ;-)
#! /bin/sh
###############################################################
# spam_notifier.sh
# Spam Notifier
#
# liest From, Subject und To aus gespeicherten Spam-Mails
#
# Voraussetzung: Spam-Dateien muessen als gz gespeichert sein
# (beispielsweise in Amavis-SpamAssassin-Umgebungen)
#
# 21.12.2003
###############################################################
echo Spam-Report von $HOSTNAME
date
echo
for spamfile in $(find /var/virusmails/ -name 'spam*' -mtime -1)
do
echo -------------------------------------
echo $spamfile
gunzip -c $spamfile | egrep '^From:|^Subject:|^To:'
done
Korrektur gegenüber der zuvor veröffentlichten Version:
- statt find /var/virusmails/spam* steht jetzt find /var/virusmails -name 'spam*' im Quelltext
- statt -mtime 1 muss es -mtime -1 heißen




