http://www.perlmonks.org?node_id=458616


in reply to opening a telnet/smtp connection without waiting for response

I'm not sure what you think you're going to accomplish by sending a MAIL FROM: before the connect banner arrives. Before sending a MAIL FROM, you generally need to:
  1. receive the connect banner
  2. send a HELO or EHLO
  3. receive a successful (2xx) response to the HELO/EHLO command
Otherwise, most SMTP servers will consider you to be either a broken client (and just disconnect) or a spammer (and take whatever measures they deem appropriate, such as blacklisting you, reporting your IP to an RBL maintainer, etc).

I suppose if you're testing a filtering product, sending MAIL FROM immediately does make sense. In that case you probably want to throw as much test data, both RFC-conformant and non-conformant, as you can think of.

The place for you to start looking is IO::Socket::INET. Once you've generated your socket, do something like $sock->send("MAIL FROM:<spammer@somedomain.tld>"), and call $sock->recv to get your result.

You might also want to look at the guts of Net::SMTP to get some ideas.