Bonsoir,
La solution à laquelle tout le monde pense, c'est les CAPTCHA. Personnellement je suis contre, pour plusieurs raisons:
1 - C'est toujours source de frustration pour les utilisateurs, et c'est même parfois totalement bloquant car trop compliqué ou pas accessible
2 - Les bots s'améliorent sans cesse et arrivent de mieux en mieux à les passer, ce qui fait que ce n'est plus une solution aussi fiable qu'auparavant
3 - En conséquence du point 2, on te demande de faire des trucs de plus en plus frustrant/compliqués/inaccessibles
4 - En utilisant les systèmes proposés par les GAFAM, on contribue gratuitement à leur entraînement/renforcement
En réalité, on fait complètement fausse route avec les CAPTCHA. Il faut les bannir, bientôt ils seront complètement inutiles.
La première chose à vérifier, selon moi, c'est la provenance de l'envoi, i.e. l'adresse IP de l'expéditeur.
Avec les registres PBL, SBL, XBL, etc. on peut savoir si une IP provient probablement de chez un spameur, mais pas seulement. On a une assez bonne probabilité de faire la différence entre l'IP d'un particulier et celle d'un serveur.
Ca fait déjà un tri non négligeable de jeter directement tout ce qui vient d'un spameur ou visiblement pas de chez un particulier.
Toujours concernant l'adresse IP, jeter au-delà du nième message provenant de la même IP en moins d'un certain laps de temps. Par exemple, pas plus de 5 messages par heure par IP.
Même si les bots ajoutent de plus en plus souvent des patterns aléatoires espacés dans le temps pour ne pas se faire attraper, ça permet quand même d'éliminer un nombre pas si négligeable que ça de bots relativement stupides
La deuxième chose, c'est évidemment de vérifier l'adresse e-mail indiquée.
ON peut facilement vérifier si le domaine existe et s'il a bien un enregistrement MX. Comme ça adieu les aaaa@aaaa.aaa. Ca fait de nouveau un beau paquet de spam en moins.
C'est par contre impossible de savoir si aaaa@gmail.com existe sans réellement essayer d'envoyer un e-mail. Mais attention, il y a des domaines piège qui enregistrent instantanément ton adresse IP comme spameur si tu essayes de leur envoyer ne serait-ce qu'un seul e-mail, donc méfiance !
IL y a des services qui te proposent de vérifier la fiabilité d'une adresse e-mail, et en particulier si ce n'est pas un e-mail jetable ou domaine piège. Tu lui donne une adresse, il te donne un score. Le gros problème, c'est que ces services sont très cher (rapidement plusieurs centaines d'euros par mois selon le volume à valider).
Pour le contenu textuel des messages, il y a quelques classiques:
1 - La liste de mots-clés. ON jette le post au-delà de la troisième occurrence trouvée.
2 - Le nombre d'URL, ou alors, plus subtil, un rapport entre le nombre d'URL et le nombre de mots. Par exemple, on jette le post s'il y a plus de 5 URL, ou alors si plus de 20% du texte sont des URL. Mention spéciale au message qui commence par un URL et qui compte triple...
3 - Détecter ce qui a l'air d'être du code HTML, JavaScript, etc. et là pareil, si tu ne t'attends pas à en avoir, tu vires
A ce stade on a probablement viré 95% des bots inutiles, en tout cas ça a été le cas pour moi.
LE tout, sans CAPTCHA, sans truc à la con, c'est totalement transparent pour l'utilisateur normal.
Mais si ça continue, pour les messages aléatoires, il n'y a hélas pas 36 solutions, il faut faire de la statistique sur les mots.
- ON pourrait se fonder sur un dictionnaire et jeter un message qui a plus de x% de mots inconnus (il faut quand même être tolérant avec les fautes d'orthographe et du coup c'est difficile à ajuster).
- ON pourrait analyser les digrammes ou les trigrammes, et là aussi, éliminer les messages qui dépassent un seuil de combinaisons improbables... mais c'est pareil, pas évident le fine tuning.
Pour ma part, pour l'instant, je n'ai pas mis en place ce dernier volet. Je reçois quand même nettement moins de spam qu'avant toutes ces mesures.