[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Unknown User message in sendmail maillog.
Remember, there are no stupid questions, only stupid people. I love
Southpark.
I think that the reasoning behind this is to give it a true variable name
and space instead of using $_ as you would need to do with the "while
(<>)" Also, by array loading this, you are able to call back into the
array instead of losing it once it is gone by, you can do a $foo[16]
whereas you can't do a $_[16]. If you can though, tell me, I have a
shitton of scripts that I can rewrite.
Tighe
> However, I do have a possibly stupid question. Won't this approach read
> the entire log file into memory before using it? In fact if you did it
> against /var/log/maillog* wouldn't it read the contents of every mailog
> file into memory all at once, and then proceed to start going through
> them line by line? Wouldn't it be more efficient to do something like
>
> while (<>)
> {
> ...
> }
>
> instead of
>
> @foo=<>;
>
> for my $bar (@foo)
> {
> ...
> }
>
> There is a comment on page 18 of the Camel book that sort of subtly mentions this in a not very clear sort of a way.
>
>
> -----Original Message-----
> From: Steven Pritchard [mailto:steve@silug.org]
> Sent: Friday, January 31, 2003 9:36 AM
> To: silug-discuss@silug.org
> Cc: luci-discuss@luci.org
> Subject: Re: Unknown User message in sendmail maillog.
>
>
> On Thu, Jan 30, 2003 at 05:35:27PM -0600, Aaron Cronkright wrote:
> > My problem is that I can't seem to find the log entry that gives me
> > the ip addr and/or hostname of the computer doing this. Anyone have a
> > finger to point me in the proper direction so I can block this bozo at
> > the firewall?
>
> Try the following (admittedly inefficient) script against
> /var/log/maillog*:
>
> #!/usr/bin/perl
>
> @foo=<>;
>
> for my $bar (@foo) {
> if ($bar =~ /sendmail\[\d+\]:\s+(\w+):\s+.*\<([^\>]+)\>.*User unknown$/) {
> my $id=$1;
> my $to=$2;
> for my $baz (grep { /:\s+$id:/ } @foo) {
> if ($baz =~
> /:\s+$id:\s+from=\<([^\>]+)\>.*relay=[^\[]*\[([\d\.]+)\]$/) {
> print "from=<$1> to=<$to> relay=<$2>\n";
> last;
> }
> }
> }
> }
>
> Hmm... Looks like I'll need to make an optimization pass before I can
> effectively use that myself. It's taking a *really* long time to run
> on the mail server here. :-)
>
> Steve
>
--
Tighe Schlottog workape fiaid
"Nothing is too cruel if it is funny enough."
-
To unsubscribe, send email to majordomo@silug.org with
"unsubscribe silug-discuss" in the body.