#!/usr/bin/perl use warnings; use strict; 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; } 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()."\r\n"; post $socket, "MAIL FROM:<>\r\n"; post $socket, "RCPT TO:<$email>\r\n"; post $socket, "QUIT\r\n";