Re: "Эшелон" в CGP

От: Alex Iliynsky <CGatePro_at_mx_ru>
Дата: Tue 11 Jul 2006 - 14:49:50 MSD

Примерно - так.
ниче особенного не делает.
скрипт получился как отрыжка другого скрипта, который должен быть декриптить приходящие файлы.

Вроде работает.

#!/usr/bin/perl

use MIME::Tools;
use MIME::Parser;
use MIME::Body;

use POSIX;
use Getopt::Long;
my $parser;
my $DIR = "./Temp";
my $body;
my $entity;


my $sender;
my $filename;

my $signer;
my $FILE="";
my %attach;
my $filen;
#---------------- Parser -------------------
eval {
my %h = ('f');
GetOptions(\%h,'f=s');
if (defined ($h{f}) ){ $FILE = $h{f}; }

open LOG,">>SystemLogs/Attach.csv" or die "Can't Open LOG file";

MIME::Tools->debugging(0);
$parser = new MIME::Parser;
$parser->output_dir($DIR);
$parser->decode_headers(1);

# Set uudeode mode ON
$parser->extract_uuencode(1);
$parser->extract_nested_messages(0);
$parser->filer->purge;

if ($FILE ne "" ) {

    open IN, $FILE;
    binmode IN;
    while (<IN>) {

            chomp;
        if ( $_ eq "\r") {last; }

    }
    $entity = $parser->parse(\*IN);
} else {

    binmode STDIN;
    $entity = $parser->parse(\*STDIN);
    while (<STDIN>) {echo $_;}
}

$from=$entity->head->get('From');
$from =~ tr/[\n|\t]/ /;
$to = $entity->head->get('To');
$to =~ tr/[\n|\t]/ /;

# CHECK for multipart messages XXX
$size = $entity->parts;

#print "Size=".$size;

if ( $size == 0 ) { #PURE attach

        if ( defined( $entity->bodyhandle->path )) {
            $body = $entity->bodyhandle->path;
            print "Body: ".$body."\n";
            if ($body =~ /Temp\\(.*)$/ ) {
                $attach{$1} = -s $body;
              }
            unlink( $body );
        }

}

for ( $part = 0; $part < $size; $part ++ ) {

            $mybody = $entity->parts($part)->bodyhandle;
        if (defined( $mybody ) ) {
        if (defined($mybody->path)) {
            $filename = $mybody->path;
            $fsize = -s $filename;
#            print $fsize."\n";
#            print $filename." Size: ".$fsize."\n";
            }
          if (defined($filename))  {
              if ($filename =~ /Temp\\(.*)$/ ) {
                $attach{$1} = $fsize;
              }
          }
          $mybody->purge;
        }
}
        $parser->filer->purge;
        $date = strftime "%d/%m/%y", localtime;
        $time = strftime "%H:%M:%S", localtime;
        while (($file, $size) = each %attach) {
        if (!($file =~ /^msg.*txt$/)) {
   printf( LOG "%s;%s;%s;%s;",$date,$time,$from,$to);
             printf( LOG "%s;%s \n",$file,$size);
 }
          delete $attach{$file};   # This is safe
        }

close LOG;
if ($FILE ne "") {
 close $FILE;
}
};
print $@;
exit(0);

А регистрирует имена по шаблону?
Или как?
Как это вообще работает, можно по-подробнее?

С уважением
Назаркин Андрей Николаевич
ООО СК "Ренессанс Жизнь"
Начальник управления ИТ
e-mail: ANazarkin@renlife.ru , su@renlife.com тел. (495) 981-2-981 доб. 8178
моб. тел. +7-903-204-5903

-----Original Message-----
From: CommuniGate Pro Russian Discussions [mailto:CGatePro@mx.ru] Sent: Tuesday, July 11, 2006 2:35 PM
To: CommuniGate Pro Russian Discussions
Subject: Re: [CGP] "Эшелон" в CGP

Привет.

Я в свое время написал скрипт, который разбирает MIME и регистрирует имена аттачей.
Возможно соорудить такую штуку с анализом названий файлов.

Только названия - не факт, что помогут. Надо содержимое смотреть.

Приветствую уважаемое сообщество!
Руководство захотело такую штуку - отслеживание определенных вложений в ИСХОДЯЩИХ письмах.
Поясню - к примеру, хочет человек отправить коммерческое предложение - пишет письмо, аттачит файл "Коммерческое предложение.doc". Надо, чтобы CGP отслеживал по шаблону название (к примеру - "Коммерческое") и слал копию письма на определенный адрес. Что-то типа системы "Эшелон" )))
Такое вообще реально?

С уважением
Назаркин Андрей Николаевич
ООО СК "Ренессанс Жизнь"
Начальник управления ИТ
e-mail: ANazarkin@renlife.ru , su@renlife.com тел. (495) 981-2-981 доб. 8178
моб. тел. +7-903-204-5903

##################################################################
Вы получили это сообщение потому, что подписаны на список рассылки   <CGatePro@mx.ru>.
Чтобы отписаться, отправьте сообщение на адрес <CGatePro-off@mx.ru>
Чтобы переключиться в режим дайджеста - mailto:<CGatePro-digest@mx.ru>
Чтобы переключиться в индексный режим - mailto:<CGatePro-index@mx.ru>
Для административных запросов адрес <CGatePro-request@mx.ru> Архив списка: http://mx.demos.su/lists/cgp-russian/
##################################################################
Вы получили это сообщение потому, что подписаны на список рассылки   <CGatePro@mx.ru>.
Чтобы отписаться, отправьте сообщение на адрес <CGatePro-off@mx.ru>
Чтобы переключиться в режим дайджеста - mailto:<CGatePro-digest@mx.ru>
Чтобы переключиться в индексный режим - mailto:<CGatePro-index@mx.ru>
Для административных запросов адрес <CGatePro-request@mx.ru> Архив списка: http://mx.demos.su/lists/cgp-russian/
##################################################################
Вы получили это сообщение потому, что подписаны на список рассылки   <CGatePro@mx.ru>.
Чтобы отписаться, отправьте сообщение на адрес <CGatePro-off@mx.ru>
Чтобы переключиться в режим дайджеста - mailto:<CGatePro-digest@mx.ru>
Чтобы переключиться в индексный режим - mailto:<CGatePro-index@mx.ru>
Для административных запросов адрес <CGatePro-request@mx.ru> Архив списка: http://mx.demos.su/lists/cgp-russian/ Получено Tue Jul 11 10:48:09 2006

Этот архив был сгенерирован hypermail 2.1.8 : Tue 11 Jul 2006 - 15:13:31 MSD