使用 OPENSSL 进行 PLAIN 访问时,Office 365 IMAP 身份验证失败

Ric*_*rdo 3 authentication outlook openssl imap office365

我正在尝试测试 Office 365(带有 Outlook)帐户以通过 IMAP 进行远程访问。尽管有大量关于此问题的帖子,但我无法找到使我的测试有效的东西,所以我再次询问。这是场景:我有一个 Outlook/office365 帐户,管理员启用了 IMAP。

在此输入图像描述

在本地服务器上,我使用 openssl 中的下一个命令连接到 IMAP 服务器:

openssl s_client -crlf -connect outlook.office365.com:993 -quiet
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
verify return:1
depth=1 C = US, O = DigiCert Inc, CN = DigiCert Cloud Services CA-1
verify return:1
depth=0 C = US, ST = Washington, L = Redmond, O = Microsoft Corporation, CN = outlook.com
verify return:1
* OK The Microsoft Exchange IMAP4 service is ready. [UwBDADEAUABSADgAMABDAEEAMAAwADUAOAAuAGwAYQBtAHAAcgBkADgAMAAuAHAAcgBvAGQALgBvAHUAdABsAG8AbwBrAC4AYwBvAG0A]
Run Code Online (Sandbox Code Playgroud)

显然我已连接到 IMAP 服务器,所以现在我尝试进行身份验证。首先,我获取服务器接受的 AUTH 方法列表。

02 CAPABILITY
* CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN AUTH=XOAUTH2 SASL-IR UIDPLUS MOVE ID UNSELECT CHILDREN IDLE NAMESPACE LITERAL+
02 OK CAPABILITY completed
Run Code Online (Sandbox Code Playgroud)

所以,我尝试使用 PLAIN 进行身份验证。据我了解,我需要将凭据以 base64 格式保存,因此我使用 Linux 服务器中的命令“base64”来获取。因此,如果我的用户名是“user@mydomain.com”并且密码是“mysecretpassword”,我将使用以下命令:

echo -en "\0user@mydomain.com\0mysecretpassword" | openssl base64
Run Code Online (Sandbox Code Playgroud)

我明白了

AHVzZXJAbXlkb21haW4uY29tAG15c2VjcmV0cGFzc3dvcmQ=
Run Code Online (Sandbox Code Playgroud)

然后在我使用的连接中:

01 AUTHENTICATE PLAIN
+
AHVzZXJAbXlkb21haW4uY29tAG15c2VjcmV0cGFzc3dvcmQ=
01 NO AUTHENTICATE failed.
Run Code Online (Sandbox Code Playgroud)

无论我尝试什么,我总是得到“身份验证失败”。也许我没有做错什么?我需要在office365服务器中设置其他东西吗?假设服务器是否以 AUTH=PLAIN 作为功能回答,我可以使用此方法进行身份验证,这是正确的吗?另一方面,我 100% 确定我的用户和密码,我可以使用此凭据连接到 SMTP (smpt.office365.com) 服务器,没有任何问题。我尝试过这个凭证,但没有运气:

"\0user@mydomain.com\0mysecretpassword"
"\000user@mydomain.com\000mysecretpassword"
"\0user@mydomain.com\0user@mydomain.com\0mysecretpassword"
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢!

Ric*_*rdo 5

我终于做了一些测试,感谢@Max,他为我指明了正确的方向,我才能够让这件事发挥作用。我已联系 MS 支持,并且能够首先检查我的 Office365 帐户的 IMAP 状态。我按照此处的步骤(https://www.kraftkennedy.com/how-to-temporarily-re-enable-basic-authentication-in-exchange-online/)检查我的 IMAP 服务的状态,它禁用了基本身份验证...,因此使用管理员帐户,我可以使用一个小盒子启用它。 在此输入图像描述 然后我成功地使用“基本身份验证”登录..并完成了 01 AUTHETICATE PLAIN Ahfu4sdjkdsu9d9d9wee4 01 OK AUTHENTICATE 。

并用 01 LOGIN 用户通过 01 OK LOGIN 完成。

因此,正如 @Max 提到的,微软将永久禁用“基本身份验证”,但您可以再次启用它。希望这对所有人有用。

问候,