use strict; use warnings; use Net::SMTP; my $smtp; #@data is defined and populated somewhere foreach my $line (@data) { my @linearray=split(/,/,$line); my $host=$linearray[2]; $host =~ s/\r|\n//g; next unless ($host =~ m/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3}).([0-9]{1,3})/); # skip if it's not an IP (i.e. it's the header row) print "Connecting to $host..."; # create object $smtp = Net::SMTP->new( Hello => 'hacker.net', Timeout => 3, Host => $host, Debug => 1, ); $smtp->mail('hacker@hacker.net'); #from my $tocheck=$smtp->recipient('my_email@sanitised.com'); #to if ($tocheck==0) { #check if it doesn't like that 'to' address print "$host is NOT an open relay\n"; #$smtp->quit; next; } $smtp->data(); $smtp->datasend("Test\n"); $smtp->datasend("\n"); $smtp->datasend("A simple test message\n"); $smtp->dataend(); $smtp->quit; }