On Fri, 2011-08-05 at 21:54 -0700, Junio C Hamano wrote:
Joe Perches [off-list ref] writes:
quoted
The current perl Net::SMTP support will not use AUTH LOGIN
when other authentication options are available.
Even after reading this excuse,...
quoted
+ if (defined $smtp_auth && $smtp_auth =~ /^login$/i) {
+
+ $smtp->datasend("AUTH LOGIN\n");
+ $smtp->response();
+ $smtp->datasend(encode_base64("$smtp_authuser"));
+ $smtp->response();
+ $smtp->datasend(encode_base64("$smtp_authpass"));
+ $smtp->response();
+
+ } else {
+
+ $auth ||= $smtp->auth( $smtp_authuser, $smtp_authpass ) or die $smtp->message;
+ }
... this makes me feel dirty X-(. Not the desire to force "AUTH LOGIN",
but the implementation to hand-roll the protocol exchange.
I'd rather want to know _why_ Net::SMTP does not support it in the first
place, and what it does for "other authentication options" that are
available. Does it try them in turn until it finds the one that works? Why
doesn't it fall back on "AUTH LOGIN" then?
Specifically, if there is a reason to avoid this plaintext authentication
method when other options are _available_ (which presumably would be the
reason why Net::SMTP chooses not to support it), and if there is a reason
on the user's side to _force_ this method even when people who wrote
Net::SMTP does not recommend it be used, wouldn't it be natural to expect
that there should be a way to configure the connection to use it, without
resorting to coding the protocol exchange by hand line this?
I needed something now.
You are right but I believe it would take too long
to get updates to Net::SMTP in place. Doing this
admitted ugliness in git-send-email works for me and
seems to me to be appropriate for now.
I looked, there isn't a method to force a particular
AUTH type documented. I also didn't care to rewrite
Net::SMTP right now. This "works for me"...
It probably is not as simple as installing Authen::SASL::*::LOGIN, but
still...
cheers, Joe