#! /usr/bin/perl # test Postmaster - rough draft version # At least change this: $myhost = 'insecurity.org'; use Net::Telnet; $ip = shift; $smtp = new Net::Telnet; $smtp->errmode("return"); $openretval = $smtp->open(Host => $ip, Port => 25, Timeout => 10); if (!defined($openretval)) { print " - Postmaster Test - CONN_REFUSED\nThe remote system refused the request.\n\n"; exit(255); } ($prebanner, $banner) = $smtp->waitfor('/^\d\d\d .*$/'); print "\nBanners seen: $prebanner $banner"; print "\nHELO $myhost (send) ... "; $helo_retval = $smtp->print("HELO $myhost"); if (!defined($helo_retval) or !$helo_retval) { print " - Postmaster Send Test FAILED(HELO)\n"; exit(1); } print "\nGetting HELO (response) ... "; ($prematch, $match) = $smtp->waitfor('/^\d{3}.*$/m'); if (!defined($match) or $match !~ /^2/) { print " - Postmaster Response Test FAILED(HELO)\n"; exit(2); } print "\nMAIL From: <> (send) ... "; $rcpt_retval = $smtp->print("MAIL FROM: <>"); if (!defined($rcpt_retval) or !$rcpt_retval) { print " - Empty MAIL From Send Test FAILED(Mail From)\n"; exit(3); } print "\nGetting MAIL From: <> (response) ... "; ($prematch, $match) = $smtp->waitfor('/^\d{3}.*$/m'); if (!defined($match) or $match !~ /^2/) { print " - Empty MAIL From Test FAILED(MAIL From)\n"; exit(4); } print "\nRCPT To: (send) ... "; $rcpt_retval = $smtp->print("RCPT TO: "); if (!defined($rcpt_retval) or !$rcpt_retval) { print " - Postmaster Send Test FAILED(RCPT To)\n"; exit(5); } print "\nGetting RCPT To: (response) ... "; ($prematch, $match) = $smtp->waitfor('/^\d{3}.*$/m'); if (!defined($match) or $match !~ /^2/) { print " - Postmaster Response Test FAILED(RCPT To)\n"; exit(6); } print "\n"; $rcpt_retval = $smtp->print("RSET"); $rcpt_retval = $smtp->print("QUIT"); print " - OK. Postmaster Test Successful...\n"; __END__ Exit status: > 0 (zero) is an Error, where odd is send errors and even is response errors. 1 = Error in HELO cmd send 2 = Error in HELO response 3 = Error in MAIL FROM <> cmd send 4 = Error in MAIL FROM <> response 5 = Error in RCPT TO cmd send 6 = Error in RCPT TO cmd response 255 = Connection timed-out or was refused.