IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Exchange Server Discussion :

Pb regex dans une régle de transport


Sujet :

Exchange Server

  1. #1
    Membre éclairé
    Profil pro
    maçon
    Inscrit en
    Novembre 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : maçon

    Informations forums :
    Inscription : Novembre 2004
    Messages : 265
    Points : 679
    Points
    679
    Par défaut Pb regex dans une régle de transport
    Bonjour,
    Sous Exchange serveur 2010 version 14.03.0123.003 (sp3), lorsque je créé une règle de transport pour analyser le contenu de l'adresse d'expéditeur , le processus EdgeTransport.exe part en mayonnaise et prend 99% de l'uc .
    Voici la règle de transport :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Quand l'adresse de l'expéditeur correspond au modèle de texte (\w|\W)*@toto.fr$
    envoyer un message de rejet 'non remis' à l'expéditeur avec le code '5.7.1'
    Ce qui donne en powershell
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    New-TransportRule 
    -Name:"Test"  
    -FromAddressMatchesPatterns:'(\w|\W)*@toto.fr$' 
    -RejectMessageReasonText:'Non remis' -RejectMessageEnhancedStatusCode: '5.7.1'
    J'ai vérifié la syntaxe de la regex avec plusieurs outils sur le web et il n'y a pas de problème .
    Est ce qu'Exchange ne supporte pas ce genre de syntaxe ou est-ce moi qui commet une erreur ?
    D'avance merci de vos réponses
    Le serveur Exchange est installé sur un windows 2008 R2

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Je ne connais pas exchange, mais ce que tu as écrit mérite qu'on s'y arrête (\w|\W)*, ce qui signifie littéralement:

    un caractère appartenant à la classe \w ou pas, présent zéro ou plusieurs fois de suite, et ce, à partir de n'importe où dans la chaîne.

    C'est extrêmement permissif (on peut le résumer à n'importe quoi, n'importe où, de n'importe quelle taille), donc si tu l'appliques à une chaîne se terminant bien par @toto.fr, pas de problèmes, la correspondance sera trouvée relativement rapidement sans trop d'efforts. Par contre si tu l'appliques à une chaîne ne se terminant pas par @toto.fr, le "n'importe quoi-de n'importe quelle taille" devra être testé à toutes les positions dans la chaîne pour pouvoir enfin échouer, ce qui représente énormément de possibilités (la complexité dépend de la taille de la chaîne et croit exponentiellement).

    Après un rapide coup d'œil, sur les possibilités de vocabulaire que t'offre ce moteur de regex qui semblent plutôt restreintes (d'après la doc Micro$oft), ce que tu peux faire c'est:
    • soit éviter le "n'importe où" en utilisant l'ancre de début de chaîne ^ (comme ça la pattern ne sera testée qu'au début de la chaîne et pas à chaque positions dans la chaîne):^(\w|\W)*@toto.fr$.
    • Mais après tout, à quoi bon chercher "n'importe quoi" que ce soit au début, à la fin ou au milieu puisque c'est n'importe quoi? Autant juste vérifier ce qui t'intéresse, c'est à dire le domaine. Dans ce cas autant juste écrire:@toto.fr$. Car en faisant ça tu te débarrasses du "n'importe quoi" et du "de n'importe quelle taille" en même temps. Il suffit juste de trouver la position où ça fonctionne (la complexité devient alors linéaire en fonction de la taille de la chaîne.)
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Membre éclairé
    Profil pro
    maçon
    Inscrit en
    Novembre 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : maçon

    Informations forums :
    Inscription : Novembre 2004
    Messages : 265
    Points : 679
    Points
    679
    Par défaut
    merci pour cette réponse .
    Je suis entièrement d'accord avec votre analyse , mais lorsque je met '@toto.fr$' ça ne matche pas, c'est pourquoi j'ai forcé avec la syntaxe bourin (\w|\W)* .
    Merci pour votre analyse

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Je ne connais pas la nature du moteur de regex utilisé, mais tu dois pouvoir le soulager un peu en écrivant la pattern de cette manière (ce qui permet de se passer de l'alternative):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^\w*(\W\W*\w\w*)*\W*@toto.fr$
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  5. #5
    Membre éclairé
    Profil pro
    maçon
    Inscrit en
    Novembre 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : maçon

    Informations forums :
    Inscription : Novembre 2004
    Messages : 265
    Points : 679
    Points
    679
    Par défaut
    J'ai essayé la syntaxe que vous proposez , mais j'ai une fin de non recevoir de la part de exchange qui ne supporte pas la regex donnée.
    A priori c'est cette partie
    qu'il ne supporte pas .

Discussions similaires

  1. Réponses: 5
    Dernier message: 31/03/2014, 18h05
  2. que signifie '>' dans une règle CSS ?
    Par Archanciel dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 10/11/2013, 20h29
  3. REGEX dans une chaine x;x;x
    Par Kinian dans le forum Requêtes
    Réponses: 4
    Dernier message: 26/10/2007, 17h20
  4. [RegEx] php et javascript dans une regex
    Par grochenel dans le forum Langage
    Réponses: 7
    Dernier message: 06/12/2005, 22h21
  5. [Regex]Recherche de mots dans une chaîne
    Par lionel69 dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 17/11/2005, 18h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo