Je suis Charlie

Autres trucs

Accueil

Seulement les RFC

Seulement les fiches de lecture

Mon livre « Cyberstructure »

Ève

Signaler un spam à Signal Spam depuis des outils Unix typiques

Première rédaction de cet article le 15 mai 2007
Dernière mise à jour le 21 septembre 2010


Le service Signal Spam permet aux utilisateurs de signaler les spams reçus, dans l'espoir (très ténu) qu'ils soient traités par la police ou la justice. Comment utiliser ce service depuis Unix ?

Signal Spam fournit deux greffons, pour les MUA Outlook et Thunderbird. Mais j'utilise mutt voire des scripts semi-automatiques. Signal Spam n'avait pas au début d'API documentée (elle est apparue par la suite et semble avoir été supprimée après, signe très clair du manque de suite dans les idées qui affecte le gouvernement). Mais comme le greffon Thunderbird est livré avec son source Javascript, on peut l'étudier et découvrir qu'il existe une API REST en https://www.signal-spam.fr/api/signaler. Celle-ci est appelable avec le programme curl dont on ne dira jamais assez à quel point il permet de faire facilement des clients REST (cf. programmation-rest.html). Merci beaucoup à Pierre Beyssac (auteur d'un programme équivalent en Python) pour son aide au débogage et à Vincent Lefèvre et Jean-Paul Béconne pour des remarques ultérieures.

Voici donc le programme shell. On utilise OpenSSL pour encoder en Base64 car Signal Spam ne se contente pas de l'encodage « pour cent » des URL (la documentation de l'API explique pourquoi). Le mot de passe figure dans le programme mais curl permet aussi de le mettre dans le fichier ~/.netrc. Utilisez ce script à votre guise, sous la licence que vous voulez.

#!/bin/sh

# Username & password
auth_info=moi:monmotdepasse

# Do not change anything below
# Be careful if you change the curl options. For instance, '--proxy ""' 
# is to force a direct access, without going through the proxy (the
# actual value will depend on the rules of your network, ask the
# system administrator)
if ! which openssl > /dev/null 2>&1; then
    echo "Missing openssl program" >&2
    exit 1
fi
if ! which curl > /dev/null 2>&1; then
    echo "Missing curl program" >&2
    exit 1
fi
curl_version=`curl -V | head -1 | cut -d' ' -f2- `
result=`openssl enc -base64 | curl --silent --proxy "" --request POST \
             --user-agent "signalspam.sh (http://www.bortzmeyer.org/signaler-a-signal-spam.html) curl/$curl_version" \
             --user $auth_info \
             --write-out "%{http_code}" --form message='<-' \
          https://www.signal-spam.fr/api/signaler`
if [ $result != "202" ]; then
    echo "Error $result while reporting the spam"
    exit 1
fi
exit 0

Ensuite, je configure mutt pour lancer ce programme lorsque je tape Esc-Z :

macro index,pager \ez "<enter-command>set pipe_decode=no\n<pipe-entry>signalspam.sh\n<enter-command>set pipe_decode=yes\n" "Report a spam to SignalSpam"

(Cette syntaxe nécessite mutt >= 1.5. Avec une version plus ancienne, mettez la macro "index" et la macro "pager" sur deux lignes séparées.)

Vincent Lefèvre me fait remarquer qu'il faudrait mieux sauvegarder l'ancienne valeur de pipe_decode, puis la restaurer à la fin comme expliqué dans la documentation de mutt. Mais cela semble nécessiter une version très récente de mutt et je ne l'ai pas encore fait fonctionner.

Vérifiant sur mon espace membre Signal Spam, je peux voir que les spams sont bien enregistrés. Il reste à espérer que cela servira à quelque chose. Pour l'instant, je suis très pessimiste. Depuis trois ans que le service est ouvert, les « signaleurs » n'ont eu droit à aucune information, ni statistiques (à part que « Depuis l'inauguration de ce service, près de 30 000 internautes se sont inscrits et plus de 4 millions de messages indésirables ont été ainsi transmis à Signal spam. »), ni information individualisée sur les signalements faits et leurs conséquences. Le 20 septembre 2010, le gouvernement a annoncé une nouvelle version de Signal Spam, sans qu'aucune leçon n'ait été tirée de l'échec de la précédente, et notamment sans remise en cause de cette politique de non-communication. Pour l'instant, l'outil présenté ici semble encore marcher avec le nouveau système.

Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)

Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)