I have a script that has been sending mail using Net::SMTP for a while now quite successfully. I recently was asked by my supervisor to add the ability to authenticate in that email script.
Khen1950fx posted a short script to use Authen::SASL more directly, instead of SMTP_auth as I can't ask multiple ISP's for our customers to install SMTP_auth. So here is my results from the server with the debug option on, and afterwards the modified version of his code suggestion. I get an error, hopefully someone can help me with it, Khen1950fx or anyone else.
You can see the Relaying denied. Proper authentication required. error in there. It seems to be getting past the 'die' statement when running the &auth subroutine, and then choking when it tries to send data. Here is my code currently:SMTP authNet::SMTP>>> Net::SMTP(2.29) Net::SMTP>>> Net::Cmd(2.26) Net: +:SMTP>>> Exporter(5.58) Net::SMTP>>> IO::Socket::INET(1.29) Net::SMTP +>>> IO::Socket(1.29) Net::SMTP>>> IO::Handle(1.25) Net::SMTP=GLOB(0x2 +a152d4)<<< 220 vinyl4.sentex.ca ESMTP Sendmail 8.14.5/8.14.5; Mon, 2 +Jul 2012 14:48:57 -0400 (EDT) Net::SMTP=GLOB(0x2a152d4)>>> EHLO local +host.localdomain Net::SMTP=GLOB(0x2a152d4)<<< 250-vinyl4.sentex.ca He +llo 50-56-96-131.static.cloud-ips.com [50.56.96.131], pleased to meet + you Net::SMTP=GLOB(0x2a152d4)<<< 250-ENHANCEDSTATUSCODES Net::SMTP=G +LOB(0x2a152d4)<<< 250-PIPELINING Net::SMTP=GLOB(0x2a152d4)<<< 250-8BI +TMIME Net::SMTP=GLOB(0x2a152d4)<<< 250-SIZE 30000000 Net::SMTP=GLOB(0 +x2a152d4)<<< 250-DSN Net::SMTP=GLOB(0x2a152d4)<<< 250-ETRN Net::SMTP= +GLOB(0x2a152d4)<<< 250-AUTH PLAIN LOGIN DIGEST-MD5 Net::SMTP=GLOB(0x2 +a152d4)<<< 250-STARTTLS Net::SMTP=GLOB(0x2a152d4)<<< 250-DELIVERBY Ne +t::SMTP=GLOB(0x2a152d4)<<< 250 HELP starting auth sending from [michael@thewhitings.ca] to [michael@thewhitings.ca]Net:: +SMTP=GLOB(0x2a152d4)>>> MAIL FROM: Net::SMTP=GLOB(0x2a152d4)<<< 250 2 +.1.0 ... Sender ok Net::SMTP=GLOB(0x2a152d4)>>> RCPT TO: Net::SMTP=GL +OB(0x2a152d4)<<< 550 5.7.1 ... Relaying denied. Proper authentication + required. Net::SMTP=GLOB(0x29dbba4)>>> DATA Net::SMTP=GLOB(0x29dbba4 +)<<< 503 5.0.0 Need RCPT (recipient) datasendNet::SMTP=GLOB(0x29dbba4)>>> test text Your Items Have Been Requested, Thank You
sub main { use Net::SMTP; $SMTPServer = 'localhost' unless (defined $SMTPServer); BEGIN { $| = 1; require MIME::Base64; require Authen::SASL; } my $host = $SMTPServer; my $user = $mainlogin; my $pass = $mainpwd; my $NetSMTP = Net::SMTP->new( Host => $host, Time => 30, Debug => 1, ); my $sasl; my $mechanisms = ['AUTH', 500]; print "starting auth<br>"; die "Couldn't auth sasl login: $!" unless \&auth; $NetSMTP->mail($emailFrom); $NetSMTP->to($LibDef{$LibName}[1]); $NetSMTP->data(); $NetSMTP->datasend('test text'); close (MAIL); print "<br><br><b>$REQUESTPAGE_TEXT_THANKYOU</b>"; } sub auth { my $sasl = Authen::SASL->new( mechanism => $mechanisms, debug => 1, callback => { user => $user, pass => $pass, authname => $user, ); }
In reply to Authen::SASL error by mwhiting
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |