[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