#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 (они только что обновили сервер, и он работал раньше).