#!/usr/bin/perl
#
# Simple SMTP-tester
# (c) alex pleiner, zeitform Internet Dienste 2001, 2003
# alex@zeitform.de
#
# this tool will connect to a SMTP Server and authenticate using
# either no authentication or SMTP_AUTH (RFC2554)
#
# LICENSE:
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# Get the GPL from: http://www.gnu.org/licenses/gpl.html
###############################################
my $default_host = 'mail.zeitform.de';
my $default_touser = 'alex@zf2.de';
my $default_fromuser = 'alex@zf2.de';
my $default_auth = 'CRAM-MD5'; # try NONE, PLAIN or LOGIN
###############################################
use lib "/home/ciphelp/perl";
use Getopt::Std;
use Net::SMTP_auth;
print "-"x70,
"\nsmtp-tester (c) alex pleiner, zeitform Internet Dienste 2001, 2003\n",
"usage: smtptest [-v] -h host -m method -t recipient -f sender/local -p password\n\n";
getopts('vh:t:f:p:m:');
my $debug = 1 if $opt_v;
my $host = $opt_h || get_value("SMTP Server ", $default_host);
my $touser = $opt_t || get_value("recipient ", $default_touser);
my $fromuser = $opt_f || get_value("sender/local ", $default_fromuser);
## show auth methods
my $smtp = Net::SMTP_auth->new($host, Timeout => 60, Hello => "me", Debug => $debug);
print "possible auth-types are: NONE ", scalar($smtp->auth_types()), "\n";
my $auth = $opt_m || get_value("AUTH method", $default_auth);
my $pass = $opt_p || get_value("password ", "", 1);
### authenticate
print "\n", "-"x70, "\nSMTP (AUTH $auth) on $host ($fromuser -> $touser)...\n";
if (uc($auth) ne "NONE") {
$ok = $smtp->auth($auth, $fromuser, $pass);
$message = $smtp->message(); chomp ($message);
} else { $ok = 1; }
if ($ok) {
$ok = $smtp->mail($fromuser);
$message = $smtp->message(); chomp ($message);
if ($ok) {
$ok = $smtp->to($touser);
$message = $smtp->message(); chomp ($message);
}
}
$smtp->quit;
if ($ok) { print "... works fine\n"; }
else { print "... failed with message:\n$message\n"; }
print "-"x70, "\n";
### sub land
sub get_value
{
my ($text, $default, $noecho) = @_;
print "$text [$default]: ";
system "stty -echo" if $noecho;
my $value= <>;
system "stty echo" if $noecho;
chomp $value;
return $value || $default;
}
###-fin-
syntax highlighted by Code2HTML, v. 0.9.1