Authenticate imaplib.imap4_SSL по сравнению с сервером Exchange IMAP с помощью auth = ntlm

StackOverflow https://stackoverflow.com/questions/1866460

Вопрос

Вчера ИТ -отдел внес изменения в сервер 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. Как аутентифицировать на сервере IMAP с помощью NTLM с iMaplib? Я предполагаю, что мне нужно использовать imap4_ssl.authenticate ("ntlm", Authobject), чтобы сделать это? Как настроить обратный вызов Authobject.
  2. Поскольку SSL/TLS является единственным способом подключения к серверу, повторная установка аутентификации с прозрачным текстом пароля не должна быть риском безопасности. Правильный?

Процесс, который подключается к серверу IMAP, работает на Linux, кстати. Так что я не могу использовать Pywin32.

Редактировать:

Я смог выяснить 1. Я сам. Но как насчет 2. Очистить текстовые пароли в IMAP над SSL не проблема безопасности, не так ли?

Это было полезно?

Решение

Я смог использовать python-ntlm проект.

python-ntlm Реализует аутентификацию NTLM для http. Было легко добавить аутентификацию NTLM для IMAP, расширив этот проект.

Я отправил патч для проекта с моими дополнениями.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top