如何更改 Android 上 K-9 Mail 的 IMAP 客户端的用户代理?

如何更改 Android 上 K-9 Mail 的 IMAP 客户端的用户代理?

我正在尝试在 android 上使用 k-9 邮件连接到我组织的 IMAP 服务器,该服务器正在作为Outlook.office365.com服务。我相信你们很多人都知道,微软最近关闭了基本认证这就是我之前的连接方式。虽然这不再有效,但我应该能够使用服务器和客户端都支持的 OAuth2。

但是,当连接并进行身份验证时,我收到以下错误。

在此输入图像描述

我应该注意,我可以在 Linux 上的 Thunderbird 中使用 OAuth2 身份验证。由于 IMAP 是这两种情况下使用的实际协议,我猜测唯一的区别是在 android 情况下发送到服务器的“用户代理”字符串。

如何配置 K-9 以使用与我的 Linux 计算机发送的相同的用户代理字符串?

答案1

我应该注意,我可以在 Linux 上的 Thunderbird 中使用 OAuth2 身份验证。由于 IMAP 是这两种情况下使用的实际协议,我猜测唯一的区别是在 android 情况下发送到服务器的“用户代理”字符串。

不,这不对。这里的初始认证阶段是不是完全通过 IMAP 完成 – 您将看到一个通过 HTTP 提供服务的网页,特别是通过 HTTP 的 OAuth2。应用程序只有在收到来自 OAuth2 服务器的“访问令牌”后才会开始使用 IMAP。

在 OAuth2 中,不同的客户端不是通过任何 HTTP 级标头来区分的,而是通过它们的 OAuth2“客户端 ID”以及通常在 OAuth2 HTTP 请求内发送的“客户端密钥”来区分。 (此时实际的 HTTP“用户代理”可能只是说“Android 上的 Chrome”。)

要让 K-9 冒充 Thunderbird,您需要提取 Thunderbird 使用的客户端 ID 和客户端密钥(例如在网上找到它),将其填充到 K-9 的源代码中,然后编译您的自定义 K-9 副本9. (请注意,由于生成的 .apk 不会使用与原始商店版本相同的密钥进行签名,因此它将无法与原始 K-9 共享设置。)

在此之前,请考虑与您组织的系统管理员交谈。

相关内容