Authenticate imaplib.imap4_SSL по сравнению с сервером Exchange IMAP с помощью auth = ntlm
-
18-09-2019 - |
Вопрос
Вчера ИТ -отдел внес изменения в сервер 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.
Вопросы:
- Как аутентифицировать на сервере IMAP с помощью NTLM с iMaplib? Я предполагаю, что мне нужно использовать imap4_ssl.authenticate ("ntlm", Authobject), чтобы сделать это? Как настроить обратный вызов Authobject.
- Поскольку SSL/TLS является единственным способом подключения к серверу, повторная установка аутентификации с прозрачным текстом пароля не должна быть риском безопасности. Правильный?
Процесс, который подключается к серверу IMAP, работает на Linux, кстати. Так что я не могу использовать Pywin32.
Редактировать:
Я смог выяснить 1. Я сам. Но как насчет 2. Очистить текстовые пароли в IMAP над SSL не проблема безопасности, не так ли?
Решение
Я смог использовать python-ntlm проект.
python-ntlm
Реализует аутентификацию NTLM для http. Было легко добавить аутентификацию NTLM для IMAP, расширив этот проект.
Я отправил патч для проекта с моими дополнениями.