[BASH] expression régulières

expression régulières [BASH] - Shell/Batch - Programmation

Marsh Posté le 07-03-2007 à 10:23:02    

Bonjour à tous,
 
voilà mon problème. J'ai un proxy smtp sur une machine, à chaque mail recu, il exécute un script pour détecter les spams. Je voudrais maintenant gérer une liste blanche et une liste noire d'expéditeurs.
 
Ensuite dans le script:
 
EXP=`grep "From: " /var/log/mails/smtp/$FILE/mail.eml | cut -f2 -d'@' | cut -f1 -d">"`
BLACK=`grep -E "^blacklist_from" /var/log/mails/listes | cut -f2 -d'@' | grep $EXP`
 
Si BLACK n'est pas vide, je tague le mail comme SPAM.
 
Ca marche très bien si dans la liste noire j'ai: toto@serveur.fr
Par contre, si je mets : toto@*.fr
 
Là ca ne marche pas...  
 
Ma question est ce que c'est faisable comme ca ? Est qu'il vaut mieux faire appel à un script perl (ce qui va diminuer un peu les performances je pense) ? Est ce qu'il faut passer par des outils tels que awk (que je connais pas trop) ou sed ?
 
Merci pour votre aide.
p1c0.

Reply

Marsh Posté le 07-03-2007 à 10:23:02   

Reply

Marsh Posté le 07-03-2007 à 10:31:49    

alors d'abord, non ça irait pas moins vite en perl surtout si ton fichier de black list prend grossit ...
 
Mais de toute façon si tu veux utiliser directement le contenu de celui ci dans ton grep, il faut qu'il y ait des regexs dedans. En l'occurence ton:

Code :
  1. toto@*.fr


devrait être:

Code :
  1. toto@.*\.fr


Et perso j'aurais même ecrit:

Code :
  1. ^toto@.*\.fr$


Pour eviter de rejeter jean-toto@serveur.fr

Reply

Marsh Posté le 07-03-2007 à 10:41:53    

J'ai effectivement trouvé que le problème venait de là avant ta réponse. Par contre, j'avais pas pensé au cas jean-toto@serveur.fr.
 
Le fichier de blacklist ne devrait pas etre trop gros mais je dois pouvoir m'en sortir comme ca. Là j'ai remplacé le '*' par un '.*' à l'aide d'un sed. Je dois pouvoir faire le reste pareil....

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed