[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: accuse de reception e-mail



François Boisson a écrit, vendredi 1 juin 2007, à 08:33 :
> [...] Le script suivant permet de récupérer le spam
> initial à partir du message de spamassassin:
> 
> #!/bin/sh
> BORNE=`grep boundary $1 | head -n 1 | sed -e s'/^.*----=\(.*\)"/\1/'`
> DEBUT=`grep -n $BORNE $1 | tail -n 2 | head -n 1 | sed -e 's/:.*$//'`
> FIN=`grep -n $BORNE $1 | tail -n 1 | sed -e 's/:.*$//'`
> LONGUEUR=$[$FIN-$DEBUT-6]
> tail -n +$[$DEBUT+6] $1 | head -n $LONGUEUR

On peut simplifier :

#!/bin/sh
BORNE="$(sed -ne '/boundary/{s/^.*="\([^"]*\)"/\1/p;q}' < "$1")"
sed -e "
    1,/^--${BORNE}$/d # efface le début,
    1,/^--${BORNE}$/d # le commentaire spamassassin,
    1,/^$/d # les 4 lignes Content-* et la ligne vide,
    /^--${BORNE}--$/,$ d # et la fin.
" < "$1"

(j'ai une variante à un seul sed, mais nettement plus lente).

Il  faudrait peut-être  améliorer l'adresse  /boundary/, ce  mot pouvant
apparaître avant dans les autres en-têtes.
-- 
Jacques L'helgoualc'h



Reply to: