Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- #===============================================================================
- #
- # FILE: controlmails.pl
- #
- # USAGE: ./controlmails.pl
- #
- # DESCRIPTION: control de mails AMES
- #
- # OPTIONS: ---
- # REQUIREMENTS: ---
- # BUGS: ---
- # NOTES: ---
- # AUTHOR: (Raimon Grau Cusco), <raimonster@gmail.com>
- # COMPANY:
- # VERSION: 1.0
- # CREATED: 02/25/08 04:33:33 CET
- # REVISION: ---
- #===============================================================================
- use strict;
- use warnings;
- use Data::Dumper;
- use Storable;
- use Regexp::Common qw[Email::Address];
- use Email::Address;
- use Mail::Sender;
- #Codi main
- my @recvs;
- my @list;
- my $arxiu;
- my %log;
- #%log es un hash anidat:
- #log {user}
- # {sent} = num
- # {recv} = num
- # {att_env} = @nom_tam
- # {att_reb} = @nom_tam
- # {sendlist}= %
- # {user} = num
- @list = glob("c.log");
- #@list = glob("/var/log/mail/reports/enero08/*");
- foreach $arxiu (@list)
- {
- my $INFILE_file_name = $arxiu; # input file name
- open my $INFILE, '<', $INFILE_file_name
- or die "$0 : failed to open input file '$INFILE_file_name' : $!\n";
- my $lastSender = "";
- my %currantes = %{retrieve("treballadors.txt")};
- my @addrs;
- while (<$INFILE>)
- {
- my $codi;
- my $nomSender;
- my $dominiSender;
- #Jan 6 01:10:18 [amavis] (32459-13) Checking: szAKM2RpNWqN <maviva@maviva.com> -> <ajm@ames.es>
- chomp;
- # if (/^.*\[amavis\] (\S+?) Checking: \S+ <(\w+?)@((ames\.es|alme\.ames\.es)|\w+?\.\w\w\w?)> -> <(\w+?)@((ames\.es|alme\.ames\.es)|\w+?\.\w\w\w?)>/)
- if (/^.*\[amavis\] (\S+?) Checking: \S+/)
- {
- my (@found) = /($RE{Email}{Address})/g;
- (@addrs) = map $_->address, Email::Address->parse("@found");
- # print "@addrs\n";
- my $sender = shift(@addrs);
- $lastSender=$sender;
- $sender =~ m/(.*)\@.*(ames\.es|alme\.ames\.es)/;
- if (defined $2) # Sender conegut
- {
- if (exists($currantes{$1}))
- {
- # print "Sender conegut $2\n";
- if (exists $log{$1}{"sent"})
- {
- $log{$1}{"sent"}++;
- }
- else
- {
- #Afegim el sender al hash de log
- $log{$1}{"sent"} = 1;
- $log{$1}{"recv"} = 0;
- $log{$1}{"att_env"} = [];
- $log{$1}{"att_reb"} = [];
- }
- #Omplim la llista de mails enviats a qui
- foreach (@addrs) {
- $_=lc($_);
- if (exists $log{$1}{"sendlist"}{$_})
- {
- $log{$1}{"sendlist"}{$_}++;
- }
- else
- {
- $log{$1}{"sendlist"}{$_} = 1;
- }
- }
- }
- }
- @recvs =[];
- # if (exists($currantes{$1}))
- {
- for (my $i=0; $i<$#addrs;$i++)
- {
- $_ = lc($addrs[$i]);
- if (m/(.*)@(ames\.es|alme\.ames\.es)/ ) # Recv conegut
- {
- if (exists($currantes{$1})) # print "Recv conegut $5\n";
- {
- push(@recvs, $_);
- if (exists $log{$1}{"sent"}) #si existeix l'usuari
- {
- $log{$1}{"recv"}++;
- }
- else
- {
- #Afegim el sender al hash de log
- $log{$1}{"sent"} = 0;
- $log{$1}{"recv"} = 1;
- $log{$1}{"att_env"} = [];
- $log{$1}{"att_reb"} = [];
- }
- }
- }
- }
- }
- }
- # Jan 6 01:10:44 [amavis] (32532-10) p002 1/2 Content-Type: application/vnd.ms-excel, size: 1785 B, name: 80105-80105.XLS
- elsif (m/^.*\[amavis\] (\S+?) \S+ \S+ Content-Type: application\/\S+?, size: (\d+) B, name: (.*)$/)
- {
- my $tam = $2;
- my $nomAtt = $3;
- if ($lastSender =~ m/(.*)\@.*ames\.es/)
- {
- push @{ $log{$1}{"att_env"} }, "${nomAtt} \ttamany: ${tam}\n" ;
- }
- foreach (@recvs)
- {
- if (m/(.*)\@.*ames\.es/)
- {
- push @{ $log{$1}{"att_reb"} }, "${nomAtt} \ttamany: ${tam}\n" ;
- }
- }
- }
- }
- # foreach my $key (keys %log)
- # {
- # print "$key\n";
- # print "\tenviats $log{$key}{'sent'}\n";
- # print "\trebuts $log{$key}{'recv'}\n";
- # foreach my $key2 (keys %{$log{$key}{'sendlist'}})
- # {
- # print "\ta $key2 =>$log{$key}{'sendlist'}{$key2}\n";
- # }
- # print "env: \t@{$log{$key}{'att_env'}}\n";
- # print "reb: \t@{$log{$key}{'att_reb'}}\n";
- # }
- close $INFILE
- or warn "$0 : failed to close input file '$INFILE_file_name' : $!\n";
- }
- store(\%log, "log.log");
- my %hash2 = %{retrieve("log.log")};
- #print Dumper(\%hash2);
- #my $sender = new Mail::Sender
- #{smtp => 'correo.ames.es', from => 'holasoyrai@ytal.com'};
- #$sender->MailFile({to => 'helena.martinez@gmail.com, raimonster@gmail.com',
- # subject => 'PROVANDO MULTIPLES DESTINATARIOS',
- # msg => "ESTO ES LA POLLA");
- my %depts = %{retrieve("depts.obj")};
- for (keys %depts) #departament
- {
- my @mailBody;
- # push @mailBody , "$_ :\n";
- for my $treb (@{$depts{$_}{'treb'}}) #@rray de treballadors del departament
- {
- next if (!exists($log{$treb}));
- push @mailBody, "$treb:\n" ;
- push @mailBody , "\tMails rebuts $log{$treb}{'recv'}\n";
- push @mailBody , "\tMails enviats $log{$treb}{'sent'}\n\n";
- for my $key2 (keys %{$log{$treb}{'sendlist'}})
- {
- push @mailBody, "\ta $key2 =>$log{$treb}{'sendlist'}{$key2}\n";
- }
- push @mailBody , "adjunts enviats: \t@{$log{$treb}{'att_env'}}\n";
- push @mailBody , "adjunts rebuts: \t@{$log{$treb}{'att_reb'}}\n";
- }
- unshift @mailBody, "enviar a $depts{$_}{'jefe'}\n" if (scalar @mailBody >1);
- unshift @mailBody, "$_\n" if (scalar @mailBody >2);
- # my $sender = new Mail::Sender
- # {smtp => 'correo.ames.es', from => 'adpersonal@ames.es'};
- # $sender->MailFile({to =>"$depts{$_}{'jefe'}",
- # subject => "Informe de control de mails del departament $_",
- # msg => "ESTO ES LA REPERA")};
- if (scalar @mailBody > 3)
- {
- # print "El tamany es ", scalar @mailBody , "\n";
- for (@mailBody)
- {
- print "$_";
- }
- }
- print "---------------------%<--------------------\n";
- }
Add Comment
Please, Sign In to add comment