Соединение Perl по IMAP с Exchange с использованием Mail :: IMAPClient? - PullRequest
2 голосов
/ 12 ноября 2011

При попытке подключения к серверу Exchange с помощью Mail :: IMAPClient я продолжаю получать сообщение об ошибке NO LOGIN.Из того, что я прочитал, все должно работать.Я получил его для подключения к Gmail, но пытаться подключиться к MS Exchange сложнее, чем кажется.Что может вызывать сбой при аутентификации?

use strict;
use warnings;
use Authen::NTLM;
use Mail::IMAPClient;

## Option variables
my $debug 
my $authmech = "NTLM";
my $username = "useraccount";
my $password = "set by prompt;

## Settings for connecting to IMAP server
my $imap = Mail::IMAPClient->new(
    Server            => 'mail.server.domain',
    User              => $username,
    Password         => $password,
    Port              => 993,
    Ssl                => 1,
    Authmechanism  => $authmech,
    Debug => 1
) or die "Cannot connect through IMAPClient: $@\n";

Результат, полученный при запуске скрипта.

~]./status_page_msg.pl -d

Logging in as : user_account

Started at Sat Nov 12 19:20:11 2011
Using Mail::IMAPClient version 3.29 on perl 5.008008
Connecting via IO::Socket::SSL to mail.server.domain:993 Timeout 600
Connected to mail.server.domain
Read:   * OK The Microsoft Exchange IMAP4 service is ready - 'serverName'
Sending: 1 AUTHENTICATE NTLM
Sent 21 bytes
Read:   +
Sending: TlRMTVNTUAABAAAAB6IAAAoACgAgAAAAAAAAAAoAAABlYW0tc3RhdHVz
Sent 58 bytes
Read:   1 NO AUTHENTICATE failed.
ERROR: 1 NO AUTHENTICATE failed. at /usr/lib/perl5/site_perl/5.8.8/Mail/IMAPClient.pm line 3047
        Mail::IMAPClient::authenticate('Mail::IMAPClient=HASH(0x1ac95440)', 'NTLM', 'undef') called at /usr/lib/perl5/site_perl/5.8.8/Mail/IMAPClient.pm line 443
        Mail::IMAPClient::login('Mail::IMAPClient=HASH(0x1ac95440)') called at /usr/lib/perl5/site_perl/5.8.8/Mail/IMAPClient.pm line 395
        Mail::IMAPClient::Socket('Mail::IMAPClient=HASH(0x1ac95440)', 'IO::Socket::SSL=GLOB(0x1b43e110)') called at /usr/lib/perl5/site_perl/5.8.8/Mail/IMAPClient.pm line 351
        Mail::IMAPClient::connect('Mail::IMAPClient=HASH(0x1ac95440)') called at /usr/lib/perl5/site_perl/5.8.8/Mail/IMAPClient.pm line 307
        Mail::IMAPClient::new('Mail::IMAPClient', 'Server', 'mail.server.domain', 'User', 'user_account', 'Password', 'Correct', 'Port', 993, ...) called at ./status_page_msg.pl line 63
Cannot connect through IMAPClient: 1 NO AUTHENTICATE failed.

1 Ответ

1 голос
/ 12 ноября 2011

Вы должны были сказать, что раньше он работал, но перестал работать, когда сервер был обновлен до Exchange 2010.

Быстрый Google для " Exchange 2010 NTLM IMAP " обнаружен Прекращенные функции от Exchange 2007 до Exchange 2010 :

NTLM не поддерживается для подключения клиентов POP3 или IMAP4 в окончательной первоначальной версии Exchange 2010.Соединения из клиентских программ POP3 или IMAP4, использующих NTLM, не будут выполнены.Если вы используете Exchange 2010 RTM, рекомендуемые альтернативы NTLM для параметров POP3 и IMAP4:

  • Kerberos (GSSAPI)
  • Аутентификация в виде простого текста по SSL

Если вы используете Exchange 2010 RTM, для использования NTLM необходимо сохранить сервер Exchange 2003 или Exchange 2007 в вашей организации Exchange 2010.

Поддержка проверки подлинности NTLM для подключения POP3 и IMAP4 восстановлена ​​вExchange 2010 с пакетом обновления 1 (SP1).

Поскольку вы используете SSL, вы сможете переключиться на обычную текстовую аутентификацию (просто удалите Authmechanism).Или попросите системных администраторов установить SP1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...