使用AUTH = NTLM对Exchange imap服务器验证imaplib.IMAP4_SSL

时间:2009-12-08 11:47:55

标签: python exchange-server imap ntlm

昨天,IT部门对Exchange服务器进行了更改。我以前能够使用imaplib从服务器获取消息。但现在看来他们已经关闭了我正在使用的身份验证机制。从下面的输出中,看起来服务器现在只支持NTLM身份验证。

>>> from imaplib import IMAP4_SSL
>>> s = IMAP4_SSL("my.imap.server")
>>> s.capabilities
('IMAP4', 'IMAP4REV1', 'IDLE', 'LOGIN-REFERRALS', 'MAILBOX-REFERRALS', 
'NAMESPACE', 'LITERAL+', 'UIDPLUS', 'CHILDREN', 'AUTH=NTLM')
>>> s.login("username", "password")
...
imaplib.error: Clear text passwords have been disabled for this protocol.

问题:

  1. 如何使用带有imaplib的NTLM对imap服务器进行身份验证?我假设我需要使用IMAP4_SSL.authenticate(“NTLM”,authobject)来执行此操作?如何设置authobject回调。
  2. 由于SSL / TLS是连接服务器的唯一方法,因此重新启用明文密码身份验证不应存在安全风险。正确的吗?
  3. 连接到imap服务器的进程在Linux,BTW上运行。所以我无法使用pywin32。

    修改

    我能够弄清楚1.我自己。但是如何2:IMAP over SSL中的明文密码不是安全问题,是吗?

1 个答案:

答案 0 :(得分:4)

我能够使用python-ntlm项目。

python-ntlm实现HTTP的NTLM身份验证。通过扩展此项目很容易为IMAP添加NTLM身份验证。

我已添加了a patch for the project