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

Langage Perl Discussion :

Parser la sortie de Spamc


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 124
    Points : 52
    Points
    52
    Par défaut Parser la sortie de Spamc
    Hello !
    Voilà, j'utilise spamassassin pour filter mes mails.
    mais j'aime avoir des stats.
    donc la sortie de spamc ressemble à ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    ------------------ Début de Rapport SpamAssassin ---------------------
    Ce message est probablement du SPAM (message non sollicité envoyé en
    masse, publicité, escroquerie...).
     
    Cette notice a été ajoutée par le système d'analyse "SpamAssassin" sur
    votre serveur de courrier "sec-pr0018", pour vous
    aider à identifier ce type de messages.
     
    Le système SpamAssassin ajoute un en-tête "X-Spam-Flag: YES" aux
    messages qu'il considère comme étant probablement du Spam.
    Vous pouvez si vous le souhaitez utiliser cette caractéristique
    pour régler un filtre dans votre logiciel de lecture de courrier,
    afin de détruire ou de classer à part ce type de message.
     
    Si ce robot a classifié incorrectement un message qui vous était
    destiné, ou pour toute question, veuillez contacter l'administrateur
    du système par e-mail à the administrator of that system .
     
    Voir http://spamassassin.apache.org/tag/ pour plus de détails (en anglais).
     
    Détails de l'analyse du message:   (44.8 points, 5.0 requis)
     0.1 HTML_80_90             BODY: Le message est composé de 80 à 90% de HTML
     0.0 HTML_MESSAGE           BODY: HTML inclus dans le message
    -2.6 BAYES_00               BODY: L'algorithme Bayésien a évalué la probabilité de spam entre 0 et 1%
                                [score: 0.0000]
     1.2 RCVD_IN_BL_SPAMCOP_NET RBL: Relais listé dans http://spamcop.net/bl.shtml
                     [Blocked - see <http://www.spamcop.net/bl.shtml?82.91.14.39>]
     3.1 RCVD_IN_XBL            RBL: Received via a relay in Spamhaus XBL
                                [82.91.14.39 listed in sbl-xbl.spamhaus.org]
     0.4 URIBL_AB_SURBL         Contains an URL listed in the AB SURBL blocklist
                                [URIs: avrainto.com]
     1.5 URIBL_WS_SURBL         Contains an URL listed in the WS SURBL blocklist
                                [URIs: avrainto.com]
     3.2 URIBL_OB_SURBL         Contains an URL listed in the OB SURBL blocklist
                                [URIs: avrainto.com]
     4.3 URIBL_SC_SURBL         Contains an URL listed in the SC SURBL blocklist
                                [URIs: avrainto.com]
      34 AWL                    AWL: From: address is in the auto white-list
     
    -------------------- Fin de Rapport SpamAssassin ---------------------

    Je le parse à l'aide de :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
        open (INPUT, "$SPAMC -s 15000000 -R < $file |") or (print STDERR "Cannot process spamc on $File::Find::name\n", return);
        $line = <INPUT>; 
        if (($line =~ m/([\d\.]+)\/([\d\.]+)/o) && ($2 > 0) && ($1 >= $2)) {
        	$is_spamassassin_spam = 1;
        	$spamass_count++;
        	$spamass_avg_spam += $1;
        	$spamass_avg += $1;    		
        } else {
        	$spamass_avg_ham += $1;
        	$spamass_avg += $1;
        }
        my $spamass_score = $1;
        distribute($spamass_score);    
     
        while (($line = <INPUT>)) {   	
        	if (($line =~ m/---------------/o)) {
        		last;
        	}
        }
     
        while (($line = <INPUT>)) {    	
        	if (($line =~ m/([\d\.\-]+) ([^\s]+)\s+(.*)/o)) {    		
        		if (! defined $HEADER_LIST{$2}) {
        			$HEADER_LIST{$2}{"score"} = $1;
        			$HEADER_LIST{$2}{"desc"} = $3;
        		}    		    		
     
       			$HEADER_LIST{$2}{"occur"}++;
       			if ($is_spamassassin_spam) {
       				$HEADER_LIST{$2}{"occur-spam"}++;
       			}
     
       			$MATCH_RULES_LIST{$2}{"list"} = $MATCH_RULES_LIST{$2}{"list"}." ".$file;
       			if ($MATCH_RULES{$2}) {
       				$MATCH_RULES_LIST{$2}{"display"} = 1;	
       			}
     
       			$DISPLAY_DIFF{$file}{"rule"} = $DISPLAY_DIFF{$file}{"rule"}." ".$2;
       			if (!$is_spamassassin_spam) {   				
       				$MATCH_RULES_NOT_SPAM_SPAMASS{$2}{"list"} = $MATCH_RULES_NOT_SPAM_SPAMASS{$2}{"list"}." ".$file;
     
       				if ($MATCH_RULES_NOT_SPAM{$2}) {
    	   				$MATCH_RULES_NOT_SPAM_SPAMASS{$2}{"display"} = 1;
       				}
       			}
     
       			my $match_file = get_file_for_rule($2);    			
       			$RULE_FILES{$match_file}++;    			
       			if (($MATCH_FILES{$match_file}) && (($MATCH_FILES_LIST{$match_file} =~ m/$file/) == 0)) {
       				$MATCH_FILES_LIST{$match_file} = $MATCH_FILES_LIST{$match_file}." ".$file;
       			}
     
        	}
        }
     
        close INPUT;


    Le probleme est que mon tableau ressemble à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     Rule                         | Occur | Spam  | Score  | Description
    =============================================================
    AWL                           |      1|      1|      31| AWL: From: address is in the auto white-list
    BAYES_00                      |      1|      1|    -2.6| BODY: L'algorithme Bayésien a évalué la probabilité de spam entre 0 et 1%
    Fin                           |      1|      1|--------------------| de Rapport SpamAssassin ---------------------
    HTML_80_90                    |      1|      1|     0.1| BODY: Le message est composé de 80 à 90% de HTML
    HTML_MESSAGE                  |      1|      1|     0.0| BODY: HTML inclus dans le message
    RCVD_IN_BL_SPAMCOP_NET        |      1|      1|     1.2| RBL: Relais listé dans http://spamcop.net/bl.shtml
    RCVD_IN_XBL                   |      1|      1|     3.1| RBL: Received via a relay in Spamhaus XBL
    URIBL_AB_SURBL                |      1|      1|     0.4| Contains an URL listed in the AB SURBL blocklist
    URIBL_OB_SURBL                |      1|      1|     3.2| Contains an URL listed in the OB SURBL blocklist
    URIBL_SC_SURBL                |      1|      1|     4.3| Contains an URL listed in the SC SURBL blocklist
    URIBL_WS_SURBL                |      1|      1|     1.5| Contains an URL listed in the WS SURBL blocklist
    listed                        |      1|      1|82.91.14.39| in sbl-xbl.spamhaus.org]
    points,                       |      1|      1|    42.4| 5.0 requis)
    see                           |      1|      1|       -| <http://www.spamcop.net/bl.shtml?82.91.14.39>]

    Autrement dit, je n'arrive pas à virer la ligne Fin | 1| 1|--------------------| de Rapport SpamAssassin

    il me prend ça comme un filtre !!!! Une idée de comment virer ce truc ??

  2. #2
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 124
    Points : 52
    Points
    52
    Par défaut
    JE rajoute qu'il prend aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     points,                       |      1|      1|    42.4| 5.0 requis)
    alors que ça ne devrait pas. je ne veux pas ces trucs et je comprends pas comment les rajouter

Discussions similaires

  1. Parser dans XML les sorties STDERR
    Par Koiky dans le forum Programmation et administration système
    Réponses: 5
    Dernier message: 23/02/2015, 18h30
  2. Réponses: 8
    Dernier message: 25/03/2014, 04h24
  3. Parser WSDL entrée sortie (résultat)
    Par marrouu dans le forum Services Web
    Réponses: 0
    Dernier message: 22/06/2013, 01h12
  4. [langage] Continuer a parser une ligne
    Par D[r]eadLock dans le forum Langage
    Réponses: 5
    Dernier message: 30/09/2002, 18h49
  5. récupérer la valeur de sortie d'un thread
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2002, 11h28

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