From ebdf2537dc0eb1b54e4420c2bdd673110ced30d3 Mon Sep 17 00:00:00 2001 From: Guilhem Moulin Date: Sun, 26 Jul 2015 00:58:12 +0200 Subject: LOGINDISABLED only disables plain-text mechanisms. Also, LOGIN is always supported. --- lib/Net/IMAP/Sync.pm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'lib/Net') diff --git a/lib/Net/IMAP/Sync.pm b/lib/Net/IMAP/Sync.pm index 9db339b..cea647f 100644 --- a/lib/Net/IMAP/Sync.pm +++ b/lib/Net/IMAP/Sync.pm @@ -335,11 +335,12 @@ sub new($%) { @caps = $self->capabilities(); } - $self->fail("Logins are disabled.") if grep {$_ eq 'LOGINDISABLED'} @caps; - my @mechs = grep defined, map { /^AUTH=(.+)/ ? $1 : undef } @caps; + my @mechs = ('LOGIN', grep defined, map { /^AUTH=(.+)/ ? $1 : undef } @caps); my $mech = (grep defined, map {my $m = $_; (grep {$m eq $_} @mechs) ? $m : undef} split(/ /, $self->{auth}))[0]; $self->fail("Failed to choose an authentication mechanism") unless defined $mech; + $self->fail("Logins are disabled.") if ($mech eq 'LOGIN' or $mech eq 'PLAIN') and + grep {$_ eq 'LOGINDISABLED'} @caps; my ($command, $callback); my ($username, $password) = @$self{qw/username password/}; -- cgit v1.2.3