Verständnisfrage Procmail-Filter in .forward
Hallo Liste! Ich hatte da neulich ein kleines Problem, welches ich zwar lösen konnte, aber die eigentliche Ursache bleibt mir verborgen. 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) 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) -- Matthias Hentges [www.hentges.net] "Thats what sucks about windows, you can't say that you rooted some one. Saying "I ADMINISTRATORED YOU!" just doesnt sound cool."
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.
Am Son, 2002-07-14 um 23.00 schrieb Christian Boltz:
Hallo Matthias, hallo Leute,
Am Sonntag, 14. Juli 2002 16:48 schrieb Matthias Hentges:
[...]
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)
Danke! Werde ich morgen testen. -- Matthias Hentges [www.hentges.net] "Thats what sucks about windows, you can't say that you rooted some one. Saying "I ADMINISTRATORED YOU!" just doesnt sound cool."
* On Sun, 14 Jul 2002 at 23:00 +0200, Christian Boltz wrote:
Am Sonntag, 14. Juli 2002 16:48 schrieb Matthias Hentges: [...]
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)
cat ohne irgendwelche Parameter reicht doch völlig :-) -- Adalbert PGP welcome, request public key: mailto:adalbert+key@lopez.at
participants (3)
-
Adalbert Michelic
-
Christian Boltz
-
Matthias Hentges