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: