From ac4624cd9bf1faf29cff2b04654bac9cbec03f48 Mon Sep 17 00:00:00 2001 From: Florian Pritz Date: Sat, 30 Oct 2010 21:36:11 +0200 Subject: check-mail-addr.pl: rewrite using IO::Socket::INET Signed-off-by: Florian Pritz --- check-mail-addr.pl | 47 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 40 insertions(+), 7 deletions(-) (limited to 'check-mail-addr.pl') diff --git a/check-mail-addr.pl b/check-mail-addr.pl index f50ed3c..29f23c2 100755 --- a/check-mail-addr.pl +++ b/check-mail-addr.pl @@ -1,17 +1,50 @@ #!/usr/bin/perl use warnings; use strict; -use Mail::CheckUser qw(check_email last_check); +use IO::Socket::INET; use File::Basename; +use Net::Domain qw(hostfqdn hostdomain); +use Net::DNS; +use Data::Dumper; if(@ARGV != 1) { print "usage: ", basename($0), " \n"; - exit 2; + exit; } -if(check_email($ARGV[0])) { - exit 0; -} else { - print last_check()->{reason}, "\n"; - exit 1; +autoflush STDOUT 1; + +sub post { + my $socket = shift; + my $command = shift; + my $ret; + + print " >> $command"; + print $socket $command; + while ($ret = $socket->getline) { + print "<< ".$ret; + $ret =~ /[0-9]([- ]).*/; + last if ($1 eq " "); + } + } + +my $email = $ARGV[0]; +$email =~ m/.*@(.*)/; +my $domain = $1; + +print "Getting MX for $domain\n"; +my @mx = mx($domain); + +print "Connecting to ".$mx[0]->exchange."\n"; +my $socket = IO::Socket::INET->new( + PeerAddr => $mx[0]->exchange, + PeerPort => 25, + Proto => "tcp") || die "Error: couldn't create socket."; + +print "<< ".$socket->getline; +post $socket,"EHLO ".hostfqdn()."\n"; +post $socket, "MAIL FROM:<>\n"; +post $socket, "RCPT TO:<$email>\n"; +post $socket, "QUIT\n"; + -- cgit v1.2.3-24-g4f1b