[spip-dev] bug dans le filtre |email_valide

Bonjour,

l’expression régulière n’est pas bonne.
Elle laisse passer ‘gilles@sdfsdfsdf’
(sous PHP 5.2.13)

Je suggère qu’on adopte une fonction qui valide vraiment les mails :
Dominic Sayers arrive à 100% de résultats positifs sur la base de la rfc5322 (mise à jour de la rfc822 et rfc2822)
(grammaire ici : http://www.dominicsayers.com/isemail/isemail/RFC5322BNF.html)
Explications + test comparatif des phraseurs : http://www.dominicsayers.com/isemail/
Code PHP du validateur + tests : http://code.google.com/p/isemail/source/browse/trunk

Qu’en dites-vous ?

.Gilles

Il serait bien aussi d’ajouter une option particuliere facultative pour pouvoir vérifier les dns du domaine. Si la vérification est faite en ajax c’est sur que ce sera trop long, mais on peut s’attendre à des vérifications pas trop trop longues avec des bons serveur.

Si c’est jugé trop lourd, on peut passer ça dans le plugin verifier.
Actuellement, côté mail, l’auteur a choisi de ne pas vérifier grand chose :confused:
cf. http://zone.spip.org/trac/spip-zone/browser/plugins/verifier/verifier/email.php#L54

2010/4/29 Yohann Prigent <prigent.yohann@gmail.com>

certes.
juste un * à remplacer par un +

comme dit Gilles, plutôt dans un plugin.
c'est vraiment du traitement lourd pour un gain de quoi ?

pour des envois en masse, il me semble qu'il vaut mieux une vraie bonne
gestion des retours (bounces)

Si on sort de mon cas particulier, ça ne suffit pas.
Actuellement, la fonction de validation de SPIP est correcte pour 119 résultats sur 229
(squelette ici : http://demo.ovh.com/fr/a13e047cdd108d4ec0e1ac3dcd860830/)

Le phraseur qui est correct dans les 229 tests : http://demo.ovh.com/fr/efc3fd3482f2491a84bccd85f0168943/)

2010/4/29 denisb <denisb@laposte.net>

SPIP n’a besoin de vérifier qu’une seule fois la syntaxe d’un mail : autant qu’il le fasse bien. Le mail est un élément crucial du compte, donc je suis VRAIMENT pour que ce contrôle soit le plus strict possible.

Vérifier la validité du mail (dns, bounce, …) c’est autre chose car c’est un état qui dépend de pas mal d’éléments (compte supprimé, plein, domaine inaccessible, etc…) et peut varier avec le temps.

.Gilles

je ne suis pas trop d'accord sur ça.

l'adresse mail du webmestre est importante, oui. et on peux se
douter qu'il fasse attention à la saisir correctement.

pour le reste...

les auteurs ? pour que la procédure de renouvellement de
mot de passe soit effective, ils doivent posséder une adresse
valide. oui.
sinon ils seront obligés d'en passer par le webmestre.

les visiteurs ? le procédure 'sur abonnement' est *la*
procédure valable de vérification de l'adresse : envoi d'un mail
de confirmation avant ouverture effective du compte spip.

alors certes : les tête-en-l'air qui tapent plus vite que leur ombre
ou qui ont des claviers déglingués peuvent saisir des adresses
mal formatées. certes.

que dans certains cas d'utilisation de spip, le contrôle de la
syntaxe des adresses mail soit primordial, je n'en doute pas ;
mais c'est dans 'certains cas'. et quand Yohann parle de dns, il
me semble que c'est pour un de ces cas là.

mais bon.
à tant faire d'avoir une fonction email_valide(), autant qu'elle
fasse ce que son nom est sensé exprimer.

note : c'est une évidence, mais ça va toujours mieux en l'ayant dit :
le contrôle de la syntaxe d'une adresse mail ne sert strictement à rien
dans la lutte contre le spam ; un bon spammeur utilisant toujours des
adresses syntaxiquement correctes...

* Gilles VINCENT tapuscrivait, le 29/04/2010 01:27:

Bonjour,

l'expression régulière n'est pas bonne.
Elle laisse passer 'gilles@sdfsdfsdf'

De mémoire, c'est une adresse email valide dans le cadre d'une gestion *locale* de mail sur un domaine 'sdfsdfsdf'
Bon, ça fait une adresse qui n'est pas routable à l'extérieur de l'organisme qui utilise ce domaine, mais ça ne la rend pas invalide pour autant.

-- RealET

Tu ne veux pas intégrer tout le jeu de test de Dominic dans http://zone.spip.org/trac/spip-zone/browser/core/tests/filtres/
sur le modèle de http://zone.spip.org/trac/spip-zone/browser/core/tests/filtres/plus.php par exemple ?

Il suffit pour chaque jeu de test de mettre en première valeur du tableau le résultat attendu, et ensuite les arguments à passer à la fonction email_valide

Le gars à clairement fait le boulot correctement en lisant les RFC, donc si on intègre son jeu de test dans le notre, je suis d’accord pour intégrer ensuite sa fonction dans SPIP.
Mais pas sans le jeu de test, sauf à se repayer régulièrement ce troll récurrent !

Cédric

* Gilles VINCENT tapuscrivait, le 29/04/2010 01:27:

Bonjour,

l'expression régulière n'est pas bonne.
Elle laisse passer 'gilles@sdfsdfsdf'

De mémoire, c'est une adresse email valide dans le cadre d'une gestion *locale* de mail sur un domaine 'sdfsdfsdf'

+1

Bon, ça fait une adresse qui n'est pas routable à l'extérieur de l'organisme qui utilise ce domaine, mais ça ne la rend pas invalide pour autant.

Exact.

-Nicolas

Oui c’est tout à fait possible.
D’ailleurs Dominic fait la même chose à l’aide d’un fichier xml.
L’avantage de son format est qu’il contient des infos comme les explications des différents tests
=> http://code.google.com/p/isemail/source/browse/trunk/tests/tests.xml

Est-ce qu’il ne serait pas plus intéressant que je travaille d’abord sur une extension de l’API de test pour qu’elle puisse gérer ce type de fichier (et faire des pages de tests avec des liens vers la doc, etc…) ?

.Gilles

2010/4/29 cedric.morin@yterium.com <cedric.morin@yterium.com>

Mon expérience me dit plutôt qu’il serait plus pragmatique d’intégrer d’abord le test dans l’API actuelle, et qu’après il sera toujours possible de travailler sur une extension de l’api si tu veux.
Mais lancer un gros chantier incertain n’est pas la meilleure solution pour solder un petit chantier tout prémaché.
A toi de voir.

Cédric

2010/4/29 Nicolas Hoizey <nicolas@hoizey.com>

Hum, et celle là t’allait pas d’expression régulière ?

if (!preg_match(’/^([A-Za-z0-9]){1}([A-Za-z0-9]|-|_|.)*@A-Za-z0-9{1,}.[A-Za-z]{2,4}$/’, $adresse))

Et gilles@sfdsfdsf est bien une adresse valide, de même que giles[]@truc

2010/4/29 cedric.morin@yterium.com <cedric.morin@yterium.com>

Mon expérience me dit plutôt qu’il serait plus pragmatique d’intégrer d’abord le test dans l’API actuelle, et qu’après il sera toujours possible de travailler sur une extension de l’api si tu veux.
Mais lancer un gros chantier incertain n’est pas la meilleure solution pour solder un petit chantier tout prémaché.
A toi de voir.

Heu, en fait tu as très largement raison :slight_smile:
Maintenant, yapluka :wink:

.Gilles

C’est faux.

Ce mail est parfaitement valide sur un réseau local.

Après je suis parfaitement d’accord avec toi que dans une très très grande majorité des cas il n’a pas raison d’être, ce pourquoi j’avais rajouté verifier_email_de_maniere_stricte avec une autre RegExp.
Est-ce que tu l’as testée celle là ? Elle est mise en défaut sur quels mails ?

2010/4/29 XDjuj <XDjuj@apsulis.com>

Et gilles@sfdsfdsf est bien une adresse valide, de même que giles@truc

A mon avis c’est sur le groupe du phraseur de Dave Child (addedbytes) qu’il faut regarder cela :
http://groups.google.com/group/php-email-address-validation?pli=1
Son phraseur : http://code.google.com/p/php-email-address-validation/

Comparaison avec celui de Dominic :
http://www.dominicsayers.com/isemail/results.php

.Gilles

l’expression régulière n’est pas bonne.
Elle laisse passer ‹ gilles@sdfsdfsdf ›
De mémoire, c’est une adresse email valide dans le cadre d’une gestion locale de mail sur un domaine ‹ sdfsdfsdf ›

Visiblement c’est sujet de polémique.

Donc il faut mieux être prudent et accepter ce type d’adresses, non ?

2010/4/29 XDjuj <XDjuj@apsulis.com>

C’est faux.

Ce mail est parfaitement valide sur un réseau local.

Je m’en fous si un réseau local sort du cadre des adresses emails normalisées par les récentes rfc qui sont pour « Internet » (en tout cas la 5322).

Tous les phraseurs l’indiquent comme non-valide :

Je pense que ces gars ont mieux lus les rfc que toi ou moi, non ?
Sinon c’est pas sur spip-dev qu’il faut en discuter, mais directement avec eux :wink:

Après je suis parfaitement d’accord avec toi que dans une très très grande majorité des cas il n’a pas raison d’être, ce pourquoi j’avais rajouté verifier_email_de_maniere_stricte avec une autre RegExp.
Est-ce que tu l’as testée celle là ? Elle est mise en défaut sur quels mails ?

gilles.vincent+spip@gmail.com
Par exemple :wink:

GMail utilise le ‹ + › pour créer des filtres. Dans la pratique gilles.vincent+spip@gmail.com et gilles.vincent@gmail.com sont les mêmes boites mail.

Pour moi c’est devenu du basique de chez basique.

.Gilles