macOS下使用himalaya配置Hotmail邮箱

写在前面:

macOS 下的 himalaya的配置,主要是方便发邮件。hotmail的邮件配置是挺复杂的,先要在Azure上配置application开通权限,token还要使用callback,就是本地要起一个服务,接收受权token,这已经难倒绝大部分人了,然后himalaya还要编译安装,增加oauth2.0的插件......但最终是可以运行的。

如果不是特别的原因,建议使用gmail代替hotmail,配置非常简单。

另外说一句:Azure的配置操作简直是太冗杂了,虽然对我来说简直就像吃个雪糕一样简单,因为这么多年的工作性质让我对复杂度已经免疫了,但对绝大部分人来说难度堪比登天。在当下产品追求极简风的前提下,这个产品不被淘汰简直天理难容(算是个预言吧)。

以下配置只是个指引,证明这样操作是可以开通的,具体细节还要自行查阅一下。

macOS 下的 himalaya(一个用 Rust 写的 CLI 邮件客户端)目前仍然可以配置 Hotmail/Outlook.com(即 @hotmail.com、@outlook.com 或其他 Microsoft 个人邮箱),但有重要变化和要求。

微软从 2022 年起逐步废弃了 Basic Authentication(普通密码或应用专用密码),现在 IMAP 和 SMTP 基本只支持 OAuth 2.0(现代认证)。himalaya 支持 OAuth 2.0,所以能用,但配置比以前复杂。

当前支持情况(2026 年最新)

密码/应用专用密码:基本不行了(个人 Outlook.com 账户已完全禁用 Basic Auth,包括 app password)。

OAuth 2.0:支持!这是推荐(其实是唯一可靠)方式。

himalaya 的官方文档(GitHub pimalaya/himalaya)明确有 Outlook 配置示例,并提供向导。

如何在 macOS 上配置 himalaya + Hotmail/Outlook.com

先安装 himalaya(如果你还没装)

注意:brew 版本可能默认不带 oauth2 支持(cargo feature)。如果向导提示 OAuth 相关错误,建议用 cargo 重新编译带 feature:

bash 复制代码
cargo install himalaya --features oauth2,keyring

用内置向导配置(最简单)

运行:

bash 复制代码
himalaya account configure outlook

它会引导你输入邮箱(比如 yourname@hotmail.com)。

检测到 Outlook,会走 OAuth 2.0 流程。

浏览器会自动打开微软登录页面(或给你链接手动打开)。

登录你的 Microsoft 账户,授权 himalaya(它会请求 IMAP/SMTP 权限)。

向导会问 client secret(见下面)。

获取 OAuth 凭证(Client ID 和 Client Secret)

himalaya 本身不提供内置的 Client ID/Secret(不像一些 GUI 客户端有预注册的),你需要自己注册一个 Azure AD 应用(免费,但需要几分钟):

https://portal.azure.com → Microsoft Entra ID(以前叫 Azure AD) → App registrations → New registration。

Name: 随便,比如 "Himalaya CLI"。

Supported account types: Accounts in any organizational directory and personal Microsoft accounts。

Redirect URI: http://localhost (或按文档建议的)。

要自行起个本地服务,用来接收授权之后的回调,拿到token。在Himalaya中填入这个token才能收发邮件

注册后,复制 Application (client) ID。

去 Certificates & secrets → New client secret → 复制 Value(这就是 client secret,注意只显示一次)。

再去 API permissions → Add a permission → Microsoft Graph 或直接搜 IMAP.AccessAsUser.All、SMTP.Send 等(参考微软文档:https://learn.microsoft.com/en-us/exchange/client-developer/legacy-protocols/how-to-authenticate-an-imap-pop-smtp-application-by-using-oauth) → Grant admin consent(如果是个人账户可能不需要)。

向导里输入这些,完成授权后 token 会存到系统 keyring(macOS 用 Keychain)。

手动配置示例(~/.config/himalaya/config.toml)

如果向导失败,可以直接编辑(参考官方文档):

bash 复制代码
[accounts.outlook]
default = true
email = "yourname@hotmail.com"
display-name = "Your Name"

backend.type = "imap"
backend.host = "outlook.office365.com"
backend.port = 993
backend.encryption.type = "tls"
backend.login = "yourname@hotmail.com"
backend.auth.type = "oauth2"
backend.auth.method = "xoauth2"
backend.auth.client-id = "你的 Client ID"
backend.auth.client-secret.keyring = "outlook-oauth2-client-secret"  # 或直接填,但不安全
# backend.auth.access-token.keyring = "outlook-oauth2-access-token"  # 自动管理

message.send.backend.type = "smtp"
message.send.backend.host = "smtp-mail.outlook.com"
message.send.backend.port = 587
message.send.backend.encryption = "start-tls"
message.send.backend.login = "yourname@hotmail.com"
message.send.backend.auth.type = "oauth2"


# 同上,OAuth 配置

测试

bash 复制代码
himalaya -a outlook envelop list或进入 TUI 模式:
himalaya repl

注意事项

OAuth token 有过期时间,但 himalaya 会用 refresh token 自动刷新(存 keyring)。

如果卡在 OAuth 页面(比如 "cannot wait for redirection"),检查 issue #570,可能需要更新到最新版或用 ortie(pimalaya 的新工具)。

微软还在逐步收紧 SMTP AUTH(计划 2026-2027 年完全移除 Basic),但 OAuth 长期支持。

个人 Hotmail/Outlook.com 账户 IMAP 默认启用,去 https://outlook.live.com/mail/ → 设置 → 邮件 → 同步邮件 → 启用 POP 和 IMAP。