【问题标题】:Perl IMAP connection to Exchange using Mail::IMAPClient?Perl IMAP 使用 Mail::IMAPClient 连接到 Exchange?
【发布时间】:2011-12-27 08:32:35
【问题描述】:

尝试使用Mail::IMAPClient 连接到 Exchange 服务器时,我不断收到 NO LOGIN failed 消息。从我读过的一切都应该工作。我已经让它连接到 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.

【问题讨论】:

  • 经过多次询问后,我发现除非特别要求,否则帐户上的 IMAP 已禁用。添加此内容是为了帮助其他人,记得询问您尝试使用的帐户是否启用了 IMAP。
  • 另外,如果您仍然遇到问题,请尝试使用 openssl s_client -connect server.domain.com:993 进行简单连接,如果您连接但 SMTP/IMAP 命令不起作用 try.openssl s_client - crlf -connect server.domain.com:993 Exchange 只是在我正确输入命令时超时,因为它也期待 cr 而不仅仅是换行。

标签: perl exchange-server imap


【解决方案1】:

你应该说它曾经可以工作,但是当服务器升级到 Exchange 2010 后就停止工作了。

Exchange 2010 NTLM IMAP”的快速 Google 出现了 Discontinued Features from Exchange 2007 to Exchange 2010

Exchange 2010 RTM 中的 POP3 或 IMAP4 客户端连接不支持 NTLM。来自使用 NTLM 的 POP3 或 IMAP4 客户端程序的连接将失败。如果您运行的是 Exchange 2010 RTM,推荐的 POP3 和 IMAP4 设置替代 NTLM 是:

  • Kerberos (GSSAPI)
  • 使用 SSL 的纯文本身份验证

如果您使用的是 Exchange 2010 RTM,要使用 NTLM,您必须在您的 Exchange 2010 组织中保留 Exchange 2003 或 Exchange 2007 服务器。

在 Exchange 2010 SP1 中恢复了对 POP3 和 IMAP4 连接的 NTLM 身份验证的支持。

由于您使用的是 SSL,您应该能够切换到纯文本身份验证(只需删除 Authmechanism)。或者,让您的系统管理员安装 SP1。

【讨论】:

  • 是的,我正在输入密码,它是正确的。我也包括了 Domain => "Domain"。这就是为什么它难倒我。我想知道 Exchange 2010 做了什么(他们刚刚升级了服务器并且之前可以正常工作)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-02
  • 2015-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多