You are here: Re: [PHP] mailserver logfile analyser « PHP « IT news, forums, messages
Re: [PHP] mailserver logfile analyser

Posted by Woldhekkie on 03/03/05 17:22

thanks verry much RICHARD,

learning to program is hell for newbies.
tried vb.net, autoit,purebasic,asp and more.
Not one of them is perfect.
It seems php is easyer learning than asp, so i will stick with php. Our
mail/webserver does both.

I deeply respect programmers. it would be nice if i could also "think" my
programs.
But i am just an administrator.
One question:
A php programmer like you can program anything, but do you ? Can you make
money with it.
Or is it just like everything else: verry difficult.

regards,

Erik

P.S. Nice music....



"Richard Lynch" <ceo@l-i-e.com> schreef in bericht
news:3172.66.99.91.45.1109791152.squirrel@www.l-i-e.com...
> woldhekkie wrote:
>> Our mailserver writes a logfile every day, but it takes hours to analyse
>> it
>> manualy.
>>
>> I (newby) am trying to write a php script that reads the the logfile line
>> by
>> line and try to get a top 50 of spammers/clients that mail too much...
>>
>> I can get line by line all information like email-adres, from , to ,
>> bytes
>> send , but how to store it in a array ?
>> If a line is read and the emailadres already pressent in the array, it
>> should not ad this emailadress again, but add a counter +1
>>
>> In the end i want an array containing all emailadreses and how often they
>> were counted.
>>
>> This is how far i get: (sorry, it is in Dutch)
>> It shows all from and to emailadresses. Not bad for a newby, but it took
>> one
>> week to do.....
>>
>> <?php
>> $fp="";$line="";$aantal=0;
>
> $emails = array(); //maybe use $froms = array(); $tos = array();
>
>> echo "<TABLE BORDER=3>";
>> echo "<TR><TD ALIGN=\"center\"> From:</TD><TD
>> ALIGN=\"center\">To:</TD></TR>";
>> if($fp = fopen("C:\smtp\SMTP-Activity-050226.log","r")) {
>> while (!feof ($fp)) {
>> $line = fgets($fp, 4096);
>> if(strstr($line,"SMTP-IN")) {
>> if(strstr($line,"MAIL FROM" )) {
>> $aantal++;
>> $start=strpos($line,"<");
>> $end=strpos($line,">");
>> $from=str_replace(">", " ", str_replace("<", " ",
>> substr($line,$start,$end-$start)));
>
> $emails[$from]++; //maybe use $froms[$email]++;
>
> //Fancier version:
> $emails[$from] = isset($emails[$from]) ? $emails[$from] + 1 : 1;
>
>> echo "<TR><TD>".$from."</TD>";
>> }
>> if(strstr($line,"RCPT TO" )) {
>> $start=strpos($line,"<");
>> $end=strpos($line,">");
>
> //Same pattern as above
> $to = str_replace(">", " ", str_replace("<", " ",
> substr($line,$start,$end-$start)));
> $emails[$to]++;
>
>> echo "<TD>" . str_replace(">", " ", str_replace("<", " ",
>> substr($line,$start,$end-$start)))."</TD>";
>> }
>> }
>> }
>> echo "</TR></TABLE>";
>> fclose($fp);
>> }
>> echo "Totaal aantal: $aantal <BR>";
>
> echo "Top 10:<table>";
> arsort($emails);
> reset($emails);
> for ($i = 0; $i < 10; $i++){
> list($email, $count) = each($emails);
> echo "<tr><td align='right'>$email</td><td
> align='right'>$count</td></tr>\n";
> }
> echo "</table>";
>
> //If you want $froms/$tos separate, copy/paste code above and do it for
> both
>
>> ?>
>
> --
> Like Music?
> http://l-i-e.com/artists.htm

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация