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@???