• # script perl

    Posté par . En réponse au message Sendmail / Supprimer les mails d'un expéditeur.. Évalué à 1.

    Bonsoir,

    Ce script perl semble marcher.
    Tu le mets dans un fichier menage.pl, avec les droits d'execution.
    Tu lui passes en 1er argument le chemin complet au fichier (/var/spool/mail/<login>) et en second l'adresse SMTP de l'adresse d'émission (grosSPAM@spam.com par exemple).

    La sortie standard représente le résultat.
    Donc on l'utilise ainsi :
    cp /var/spool/mail/toto /var/spool/mail/toto.SAVED
    ./menage.pl /var/spool/mail/toto.SAVED grosSPAM@spam.com > toto

    #!/usr/bin/perl
    use strict;

    my $monflagokprint=1;
    my $prevligne='';


    my $fichiersrc=$ARGV[0];
    open(F, "$fichiersrc");
    my $monuserpasok=$ARGV[1];
    while (<F>)
    {
    # printf "nouvelle ligne dans la boucle\n";
    # print "prevligne=|$prevligne|\n";

    # on etait dans le corps d'un mail non souhaite
    if ($monflagokprint == 0)
    {
    if (($prevligne eq "") && (/^From [a-zA-Z]/) && ($_ !~ /^From $monuserpasok /))
    {
    $monflagokprint=1;
    # printf "on passe du corps dun mail non souhaite a souhaite |%s|\n",$_;
    }
    }
    else
    {
    # Recherche de la ligne from du mail a virer
    if (($prevligne eq '') && (/^From $monuserpasok /))
    {
    $monflagokprint=0;
    # printf "on passe du corps dun mail souhaite a non souhaite |%s|\n",$_;
    }
    }

    print if ($monflagokprint == 1);
    chomp($prevligne=$_);
    }

    close(F);