[Postfixbuch-users] OT: shell-script

Lars Behrens lars at brainlift.de
Mi Sep 5 13:56:39 CEST 2007


hallo, liste,

etwas OT, aber vielleicht hat hier jemand etwas ähnliches schon mal  
versucht:

wenn ich per "for i in *; do" mehrere dateien in einem verzeichnis  
abarbeiten möchte, stosse ich an begrenzungen, wenn ich werte aus  
diesen dateien auslesen und in ein file /tmp/datei.$$ leiten möchte.


hintergrund:

ich sortiere auf unserem mailserver - debian sarge - spam-mails per  
spamassassin aus und muss gelegentliche false-positives den  
ursprünglichen empfängern zustellen.

dazu habe ich mir ein bash-script erstellt, welches aus der  
vermeintlichen SPAM-Mail in einem verzeichnis auf dem mailserver x- 
envelope-from und x-envelope-to ausliest, header und html-tags  
entfernt und das ganze als mail anschliessend an den ursprünglichen  
empfänger schickt mit einem begleittext dazu.


klappt alles wunderbar, ich brauche von meinem MUA aus nur noch die  
false-positives in den ordner schieben und das script per cron  
aufrufen, schon bekommen die empfänger die mail und können auf den  
ursprünglichen absender antworten.


aaaaber: das klappt zwar mit *einer* mail, ich finde aber keine  
möglichkeit, mehrere mails in dem ordner sinnvoll zu verarbeiten. ich  
erhalte bei bspw. drei mails im ordner zwar drei verschiedene mails  
an die empfänger, in jeder mail steht aber der text *aller* drei mail  
drin.

das script sieht in etwa so aus:


for i in cur/*; do

cat $i | grep X-Envelope-To > tmp/x-envelope-to.$$ && \
awk {'print $2'} < tmp/x-envelope-to.$$ > tmp/empfaenger.$$ && \
sed -e 's/<//g' tmp/empfaenger.$$ > tmp/bereinigt.$$ && \
sed -e 's/>//g' tmp/bereinigt.$$ > tmp/empfaenger.$$ && \

cat $i | grep X-Envelope-From > tmp/x-envelope-from.$$ && \
(...)

MAIL=$(cat tmp/empfaenger.$$) && \
FROM=$(cat tmp/sender.$$) && \

echo "my_hdr Reply-To: $FROM" > /root/.muttrc && \

cat spamverdacht1.txt > tmp/rein.$$ && \
sed '1,/^$/d' cur/* >> tmp/rein.$$ && \
(...)
cat tmp/rein.$$ | mutt -s "SPAM suspicious Mail Redirected /  
Umgeleitete SPAM-Verdachts-Mail" $MAIL && \
rm tmp/*; done

exit 0


irgendwie muss ich also etwas an der umleitung nach /tmp/xxx.$$  
ändern oder mit while arbeiten, oder?!

falls jemand übrigens mit dem satz "das würde ich mit perl machen"  
kommt: das buch zu Perl habe ich mir letzte woche gekauft ;-) aber  
ich bin noch nicht so weit gekommen bisher ... ;-)


wäre jedenfalls super, wenn jemand eine lösung dafür wüsste.



vielen dank im voraus!



gruss



lars


Mehr Informationen über die Mailingliste Postfixbuch-users