Re: Problemes de Pipe & Redirection

Top Page

Reply to this message
Author: Edgar Bonet
Date:  
To: guilde
Subject: Re: Problemes de Pipe & Redirection
Le mardi 15 avril, Philippe Beau a écrit :
> J'utilise spamassassin+qmail. Les emails qui sont censés être "des
> spams" comportent une ligne spécifique (****** SPAM *****)


Ce qui est spécifique c'est la ligne "X-Spam-Flag: YES" dans les
en-têtes. Ton mail comporte la chaîne "****** SPAM *****" et il n'est
pourtant pas un spam.

> Comment récuperer un contenu qui est pipé sur un script shell ? (bash)


En utilisant n'importe quelle commande qui lit sur son entrée standard.
Par exemple cat.

> j'aimerais faire [...] :
>
> /usr/local/spamassassin/bin/spamassassin | \
> /usr/local/bin/test-spam.sh | /var/qmail/bin/qmail-queue.origine


Non testé :

    #!/bin/bash
    tmpfile=/tmp/test-spam-$$
    cat > $tmpfile
    [ grep -q 'X-Spam-Flag: YES' $tmpfile ] || cat $tmpfile
    rm -f $tmpfile


Dans cet exemple, le filtre recopiera le mail sur sa sortie, sauf s'il
contient la ligne "X-Spam-Flag: YES" dans les en-têtes ou dans le corps
du message.

Autre version (pas plus testée) en Perl :

    #!/usr/bin/perl


    # Read headers
    while (<>) {
        last if /^$/;                   # end of headers
        exit if /^X-Spam-Flag: YES$/;   # detected as spam
        $headers .= $_;
    }


    # Print message
    print "$headers\n";
    while (<>) { print; }               # copy the body


C'est la même chose que précédemment sauf qu'ici le script détecte la
ligne "X-Spam-Flag: YES" uniquement dans les en-têtes du message (ce qui
est plus propre). Et on ne passe pas par un fichier temporaire.

Edgar.

-- 
Edgar Bonet                         Tél    : 04 76 88 10 96
Laboratoire Louis Néel -- CNRS      Mobile : 06 77 19 79 39
25 av. des Martyrs, BP 166          Fax    : 04 76 88 11 91
38042 Grenoble cedex 9, France      e-mail : guilde@???