Hallo Matthias, hallo Leute, Am Sonntag, 14. Juli 2002 16:48 schrieb Matthias Hentges:
Ich hatte mir TMDA installiert (ein Procmail-Filter). Der nötige Eintrag in ~/.forward sieht so aus: cat /home/mhentges/.forward "|/usr/bin/tmda-filter" (man bemerke das "|" am Anfang!)
Leider funktioniert bei mir TMDA nur über Umwege, da ich fetchmail verwende. Also dachte ich mir, ich bastel mir einen eigenen Filter mit bash.
Das "|" aus .forward legt es nahe, dass der E-Mail Text gepiped (tolles Wort!) wird, man also /dev/stdin auslesen muss um die Mail mit dem Filter zu bearbeiten.
Theoretisch sollte es so funktionieren: cat ~/.forward "|/bin/mein_filter.sh"
Und die erste Zeile im Script sieht so aus:
MAIL_TXT="$(cat /dev/stdin) ^ ^ Wenn schon Anführungszeichen, dann bitte vorn und hinten ;-)
Mein Problem: Wenn ich folgendes mache:
cat ~/.test_mail.txt|/bin/mein_filter.sh
wird der Mailtext einwandfrei aus STDIN ausgelesen und der Filter funktioniert.
Wenn ich jedoch den Filter in .forward eintrage geht es nicht ($MAIL_TXT bleibt leer) Obwohl z.B. TMDA auch STDIN (mit Perl) ausliest, scheint das bei meinem Filter nicht zu funktionieren.
Sieht der Eintrag in .forward jedoch so aus:
"|formail | /bin/mein_filter.sh"
Dann kann ich STDIN mit cat /dev/stdin wieder auslesen.
Meine Frage: Woran liegt das? Gibt es in Bash noch einen besseren Weg um STDIN auszulesen (also gepipten [ich liebe das Wort!!] Text)
Probier mal cat - (ungetestet) Gruß Christian Boltz -- Registrierter Linux-Nutzer #239431 Linux - life is too short for reboots.