use IO::Socket::Telnet; my $socket = IO::Socket::Telnet->new( PeerAddr => 'random.server.org', PeerPort => 25, Timeout => 3 ); die "Not an email server\n" if ! $socket; $socket->send("helo mydomain.com"); my $resp; $socket->recv(my $resp, 4096) or die $!; die "Not an email server\n" if ! defined $resp || ($resp !~ /^220 / && $resp !~ /^250 /);