Perl IMAP-соединение с Exchange с использованием Mail :: IMAPClient?

#perl #exchange-server #imap

#perl #exchange-сервер #imap

Вопрос:

Я продолжаю получать сообщение об ошибке входа при попытке подключиться к серверу Exchange с помощью Mail:: IMAPClient. Из того, что я прочитал, все должно работать. Я получил его для подключения к 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. После многократных расспросов я выяснил, что IMAP был отключен в учетных записях, если не было специального запроса. Добавлено это, чтобы помочь другим, не забудьте спросить, включен ли IMAP для учетной записи, которую вы пытаетесь использовать.

2. Также, если у вас все еще возникают проблемы, попробуйте простое подключение с помощью openssl s_client -connect server.domain.com: 993 если вы подключаетесь, но команды SMTP / IMAP не работают, попробуйте.openssl s_client -crlf -connect server.domain.com: 993 У Exchange просто истекло время ожидания, когда я вводил команды правильно, потому что он ожидал cr, а не просто перевод строки.

Ответ №1:

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

Быстрый поиск в Google «Exchange 2010 NTLM IMAP» выявил, что функции, прекращенные с Exchange 2007 по Exchange 2010, были прекращены:

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

  • Kerberos (GSSAPI)
  • Аутентификация простым текстом с использованием SSL

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

Поддержка аутентификации NTLM для подключения POP3 и IMAP4 была возвращена в Exchange 2010 с пакетом обновления1.

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

Комментарии:

1. Да, я ввожу пароль, и он правильный. Я также включил Domain => «Домен». Вот почему это ставит меня в тупик. Мне интересно, что сделал Exchange 2010 (они только что обновили сервер, и он работал раньше).