乐于分享
好东西不私藏

OpenClaw 配置 Himalaya 邮件 CLI 详细教程

OpenClaw 配置 Himalaya 邮件 CLI 详细教程

OpenClaw 配置 Himalaya 邮件 CLI 详细教程


目录

  • 一、Himalaya 是什么
  • 二、相关概念扫盲
  • 三、安装 Himalaya
  • 四、首次配置向导
  • 五、安全建议
  • 六、OpenClaw 集成配置
  • 七、常用命令参考
  • 八、调试与排错
  • 九、性能优化:会话复用
  • 十、Gmail 特殊配置
  • 十一、配置示例:QQ 邮箱
  • 十二、快速检查清单

往期文章:

Visual Studio Code 完整使用教程

Docker 教程:从入门到熟练上手的实战指南 【二】

OpenClaw + Playwright MCP 配置教程

一、Himalaya 是什么

Himalaya 是 pimalaya 组织开源的 Rust 编写的纯 CLI 邮件管理工具。它的核心理念是:

无 TUI 事件循环 — 你用 shell 命令操作邮件,每次命令独立执行,不锁定终端

这与 aerc、mutt、neomutt 等 TUI 客户端有本质区别。Himalaya 适合:

  • • 已有自己惯用的终端多路复用器(tmux、zellij)的人
  • • 喜欢用脚本自动化邮件处理的人
  • • 需要在 OpenClaw 这类 AI Agent 中集成邮件功能的人

优势特点

特性
说明
多协议
IMAP、JMAP(现代标准)、Maildir、SMTP
多账号
TOML 配置,支持多邮箱账号切换
无锁定
每次命令独立执行,可自由中断、脚本化
TLS 安全
native-tls / rustls 可选,完整加密支持
OAuth2
配合 ortie 支持 OAuth 认证流程
自动化友好 --json

 输出方便脚本解析

二、相关概念扫盲

在开始配置之前,了解几个基础概念能让你少走弯路。

2.1 IMAP 是什么

IMAP(Internet Message Access Protocol) 是读取邮件的协议,邮件留在服务器上,支持多设备同步查看、标记等状态。

对比:

  • • IMAP → 云端邮件,网页邮箱、手机、电脑看到的邮件状态同步
  • • POP3 → 下载到本地,离线可用,但多设备不同步

大多数个人邮箱(Gmail、Outlook、QQ 邮箱、企业邮箱)都支持 IMAP。

2.2 SMTP 是什么

SMTP(Simple Mail Transfer Protocol) 是发送邮件的协议。发件时需要 SMTP 认证。

2.3 什么是 SASL

SASL(Simple Authentication and Security Layer) 是邮件认证机制的抽象层,常见方式:

方式
说明
安全性
plain
用户名+密码明文(依赖TLS)
一般
login
古老的双步明文
xoauth2
OAuth2 令牌认证
oauthbearer
OAuth2 认证(SMTP/IMAP扩展)
scram-sha-256
挑战-应答加密认证

2.4 什么是端口

邮件服务常用端口:

服务
端口
说明
IMAP
143
非加密(不推荐)
IMAPS
993
TLS 加密(推荐)
SMTP
587
提交端口(STARTTLS)
SMTPS
465
历史加密端口(非标准但常用)

2.5 什么是 TLS/SSL

TLS(Transport Layer Security)为邮件传输提供加密,防止中间人窃听。配置时通常只需要知道:

  • • 993 端口(IMAPS) = 端口上直接 TLS
  • • 587 端口 + STARTTLS = 先连普通端口,再升级加密

三、安装 Himalaya

3.1 Windows Scoop 安装

⚠️ 使用 Scoop 前需要先安装 Scoop 本身(见下方步骤)。如果 Scoop 安装失败或不方便,直接跳到 3.1b 手动下载方式,效果完全一样。

第一步:安装 Scoop 本身(普通用户身份 PowerShell 中执行)

# 设置执行策略Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser# 安装 Scoop(默认装到用户目录,无需管理员权限)irm get.scoop.sh | iex

💡 安装时如果提示”Running the installer as administrator is disabled”,说明当前是管理员身份 PowerShell,换成普通用户 PowerShell 重试(Win+R → powershell 回车,不要”以管理员身份运行”)。

第二步:通过 Scoop 安装 himalaya

scoop install himalaya

Scoop 国内镜像(如 GitHub 访问慢):

scoop config scoop_repo https://gitee.com/scoop-bucket/scoop

3.1b Windows 手动下载安装(直达 GitHub Releases)

不想装 Scoop?直接下载编译好的二进制文件:

  1. 1. 打开 https://github.com/pimalaya/himalaya/releases/latest
  2. 2. 找到 himalaya.x86_64-windows.zip(最新版本,文件名类似 himalaya.x86_64-windows.zip
  3. 3. 下载 → 解压 → 得到 himalaya.exe
  4. 4. 把 himalaya.exe 所在文件夹路径加入系统 PATH

PowerShell 一键下载(推荐):

# 下载最新版 zip$resp = Invoke-RestMethod 'https://api.github.com/repos/pimalaya/himalaya/releases/latest'$asset = $resp.assets | Where-Object { $_.name -match 'x86_64.*windows.*zip$' } | Select-Object -First 1Invoke-WebRequest $asset.browser_download_url -OutFile "$env:TEMP\himalaya.zip"# 解压到用户目录Expand-Archive "$env:TEMP\himalaya.zip" -DestinationPath "$env:USERPROFILE\.local\bin" -Force# 确认 exe 存在Get-ChildItem "$env:USERPROFILE\.local\bin\himalaya.exe"

然后把 C:\Users\ZN34\.local\bin 加入系统 PATH(Win + R → sysdm.cpl → 高级 → 环境变量 → 用户变量的 PATH → 新建)。

3.2 macOS Homebrew

brew install himalaya

3.3 Linux 一键脚本

curl -sSL https://raw.githubusercontent.com/pimalaya/himalaya/master/install.sh | sh

3.4 Cargo 安装

cargo install himalaya --locked

3.5 验证安装

himalaya --version

四、首次配置向导

4.1 自动向导配置

直接运行(无配置文件时自动进入向导):

himalaya

向导会依次要求:

  1. 1. 输入邮箱地址
  2. 2. 自动探测(推荐选 Y)IMAP/SMTP 配置
  3. 3. 输入用户名(通常是完整邮箱地址)
  4. 4. 输入密码(或选择其他认证方式)

⚠️ 如果你使用 Gmail、Outlook 等支持 OAuth 的邮箱,建议用 xoauth2 方式,需要额外配置 ortie(见后文”高级玩法”)。

4.2 手动配置文件

配置文件路径(按优先级):【没有配置文件,就手动创建】

$XIMALAYA_CONFIG                    ← 环境变量指定(最高优先级)$D:\Users\ZN34\AppData\Roaming\himalaya\config.toml  ← Windows 默认~/.config/himalaya/config.toml       ← XDG 标准(Linux/macOS 推荐)~/.himalayarc                       ← 旧版兼容(不推荐)

⚠️ v1.2.0 格式说明:新版 TOML 结构与旧版完全不同,所有 IMAP/SMTP 配置必须写在 [accounts.<账号名>] 下面,用嵌套节([accounts.myemail.backend])组织,不能用旧版的 [account.myemail.imap] 写法。

完整配置示例(v1.2.0 格式,通用模板):

# ═══════════════════════════════════════════════════════#  文件位置(Windows):C:\Users\你的用户名\AppData\Roaming\himalaya\config.toml#  文件位置(Linux/macOS):~/.config/himalaya/config.toml#  ═══════════════════════════════════════════════════════# ── 全局设置 ──────────────────────────────────────────# 你的默认显示名称(邮件发出去时 From 头里显示的名字)display-name = "你的名字"# ── 账号定义 ──────────────────────────────────────────# 中括号里的名字随便起,比如 qqmail / gmail / work# 之后命令里用 --account 指定,不加 --account 时使用 default = true 的账号[accounts.myemail]# 你的完整邮箱地址email = "你的邮箱地址"# 发件时显示的名称(可与全局 display-name 不同)display-name = "你的名字"# true = 默认使用这个账号(不加 --account 时用这个)default = true# ── 附件下载配置 ──────────────────────────────────────# 附件默认保存到哪个目录,~ 代表用户主目录# 不填默认保存到用户主目录下的 Downloadsdownloads-dir = "~/Downloads"# ── IMAP 接收配置(读邮件用) ──────────────────────────# 协议类型:imap = 常用,JMAP/Maildir 等见官方文档[accounts.myemail.backend]type = "imap"# IMAP 服务器地址(见下方「各邮箱服务器对照」,替换 example.com)host = "imap.example.com"# IMAP 端口:993 = TLS 加密(推荐),143 = 非加密(不推荐)port = 993# 加密类型:tls = 端口上直接加密,start-tls = 先连明文再升级encryption-type = "tls"# 登录用户名,通常就是你的邮箱地址login = "你的邮箱地址"# 认证方式:password = 用户名+密码(最常用),oauth2 = OAuth2 令牌[accounts.myemail.backend.auth]type = "password"# cmd = 用命令获取密码,安全做法是不在文件里明文存密码# 改成你的实际值,常见写法:#   Windows: cmd = "echo 你的授权码或密码"#   Linux/macOS: cmd = "pass show email/myemail"(需提前安装 pass 并用 pass add email/myemail 存入密码)cmd = "echo 你的授权码或密码"# ── SMTP 发送配置(发邮件用) ──────────────────────────# true = 发送后在 Sent 文件夹留一份副本,false = 不保存# 建议 false,避免因 Sent 写入失败导致发送整体失败[accounts.myemail.message.send]save-copy = false[accounts.myemail.message.send.backend]# SMTP 协议类型,通常是 smtptype = "smtp"# SMTP 服务器地址(替换 example.com)host = "smtp.example.com"# SMTP 端口:587 = STARTTLS(推荐),465 = 旧版直接 TLS,25 = 非加密(不推荐)port = 587# 加密类型:start-tls = 先连明文再升级(587 端口用这个),tls = 端口上直接加密(465 端口用这个)encryption-type = "start-tls"# 登录用户名,通常就是你的邮箱地址login = "你的邮箱地址"[accounts.myemail.message.send.backend.auth]type = "password"# 与 IMAP 用同一套密码或授权码cmd = "echo 你的授权码或密码"# ═══════════════════════════════════════════════════════#  各邮箱服务器地址对照表(实际地址以邮箱设置页面为准)# ═══════════════════════════════════════════════════════##  QQ 邮箱#    IMAP host: imap.qq.com       端口: 993  加密: tls#    SMTP host: smtp.qq.com      端口: 587  加密: start-tls#    注意:密码用「授权码」,不是 QQ 密码#          授权码在 mail.qq.com → 设置 → 账户 → POP3/IMAP/SMTP 服务 中开启后获取##  Gmail#    IMAP host: imap.gmail.com       端口: 993  加密: tls#    SMTP host: smtp.gmail.com       端口: 587  加密: start-tls#    注意:需开启两步验证后在 Google Account → 安全性 → 应用密码 获取 16 位应用密码#          推荐使用 OAuth2(更安全),见第十节 Gmail 配置##  Outlook / Hotmail#    IMAP host: outlook.office365.com   端口: 993  加密: tls#    SMTP host: smtp.office365.com      端口: 587  加密: start-tls##  163 邮箱(网易)#    IMAP host: imap.163.com       端口: 993  加密: tls#    SMTP host: smtp.163.com       端口: 465  加密: tls(注意不是 start-tls)## ═══════════════════════════════════════════════════════

配置结构速查:

节路径
作用
display-name
全局默认显示名
[accounts.<名字>]
定义一个邮箱账号,default = true 设为默认
downloads-dir
附件默认保存目录(~/Downloads 即用户下载文件夹)
[accounts.<名字>.backend]
IMAP 接收服务器设置(type/host/port/encryption-type/login)
[accounts.<名字>.backend.auth]
IMAP 认证(type = password 或 oauth2,cmd = 获取密码的命令)
[accounts.<名字>.message.send]
发送设置(save-copy = 是否保存到 Sent)
[accounts.<名字>.message.send.backend]
SMTP 发送服务器(同 IMAP backend 字段)
[accounts.<名字>.message.send.backend.auth]
SMTP 认证(通常与 IMAP 用同一套密码)

五、安全建议

5.1 禁止明文密码!

不建议在配置文件中写明文密码!Himalaya 支持命令获取密码

# 使用 pass(Linux 密码管理器)获取密码[accounts.myemail.backend.auth]type = "password"cmd = "pass show email/myemail"# Windows 凭据管理器cmd = "credentials get yourname@example.com"# 环境变量cmd = "echo $EMAIL_PASSWORD"

⚠️ v1.2.0 中用 cmd = "..." 而非旧版的 password.command = "..."

5.2 隐私级别高用 OAuth2

如果你用的是 Gmail、Microsoft 365 等,推荐用 OAuth2 认证:

  1. 1. 在 Google Cloud Console 创建 OAuth2 Client
  2. 2. 用 ortie 获取 access token
  3. 3. 配置(v1.2.0 格式):
[accounts.gmail]email = "yourname@gmail.com"default = true[accounts.gmail.backend]type = "imap"host = "imap.gmail.com"port = 993encryption-type = "tls"login = "yourname@gmail.com"[accounts.gmail.backend.auth]type = "oauth2"[accounts.gmail.backend.auth.oauth2]token-cmd = "ortie gmail --account yourname@gmail.com --scope imap"

六、OpenClaw 集成配置

6.1 安装 / 启用 himalaya skill

himalaya 是 OpenClaw 自带的 skill(openclaw-bundled),不需要另外下载,只需确认已启用。

第一步:检查当前状态

openclaw skills list | findstr himalaya
#Windows环境openclaw skills list 

输出示例(disabled = 未启用,ready = 已启用):

disabled  himalaya   Himalaya CLI for IMAP/SMTP...   openclaw-bundledready     himalaya   Himalaya CLI for IMAP/SMTP...   openclaw-bundled

第二步:启用(如果显示 disabled)

编辑 D:\Users\ZN34\.openclaw\openclaw.json,找到:

"himalaya": {  "enabled":false}

改为:

"himalaya": {  "enabled":true}

保存后重启 Gateway 使配置生效:

openclaw gateway restart

第三步:确认启用成功

openclaw skills list | findstr himalaya# 预期:ready  himalaya   ...   openclaw-bundled

6.2 依赖条件

Himalaya skill 本身不需要配置 key,它只是一个包装层,真正收发邮件依赖:

  1. 1. 系统里装了 himalaya.exe(见第三章安装步骤)
  2. 2. config.toml 配置好了邮箱账号(见第四章配置步骤)
  3. 3. himalaya --version 能正常执行(在系统 PATH 中)

如果网络需要代理才能访问邮件服务器,确保 OpenClaw 的 channels.telegram.proxy 配置了代理(D:\Users\ZN34\.openclaw\openclaw.json 中的 channels.telegram.proxy)。

6.3 AI 工具调用

Himalaya skill 正确启用后,AI 可以自动帮你:

  • • 读取邮件列表 / 搜索邮件 / 查看正文
  • • 发送邮件(你提供收件人和内容,AI 生成 .eml 文件并发送)
  • • 标记已读 / 移动 / 删除邮件
  • • 自动处理多账号切换(--account qqmail / --account gmail

你只需告诉我”帮我看看老板有没有回邮件”,剩下的我来执行。


七、常用命令参考

7.1 基础命令

# 列出所有邮箱himalaya mailboxes list# 列出邮件(分页),默认每页 20 封himalaya envelope list -f INBOX -p 1# 搜索邮件(IMAP SEARCH 语法,非 SQL)himalaya envelope search -f INBOX "FROM alice SINCE 2026-01-01"# 查看邮件正文(envelope ID 从上一条命令获取)himalaya message read -f INBOX 42# 下载附件(先查附件列表,再下载)himalaya attachment list -f INBOX -m 42himalaya attachment download -f INBOX -m 42 -i 0# 标记已读himalaya flag add -f INBOX -r 1-10 \Seen# 移动邮件到存档himalaya message copy -f INBOX -t Archives 42

7.2 发送邮件

发送邮件需要先准备一封 RFC 822 格式的邮件文件(也叫 .eml 文件),内容包含邮件头(From / To / Subject)和正文,然后用管道交给 himalaya 发出。

第一步:写一封邮件文件

用任意编辑器创建 draft.eml,内容格式如下:

From: 你的邮箱@example.comTo: 收件人邮箱@example.comSubject: 邮件标题Content-Type: text/plain; charset=utf-8这里是邮件正文,支持多行内容。

保存到本地,比如 D:\Users\ZN34\draft.eml

From 和 To 在文件头里指定,himalaya 读到后就知道发到哪、显示给谁看。Content-Type 建议加上 charset=utf-8 避免中文乱码。

第二步:用管道发送

# 方式一:管道输入 RFC 822 格式邮件正文(最常用)cat D:\Users\ZN34\draft.eml | himalaya message send# 方式二:用 himalaya template 交互式写信himalaya template write | himalaya message send# template write 会打开编辑器(vim/nano/notepad,看 $EDITOR 环境变量)# 按格式填好 To / Subject / 正文,保存退出后自动发出# 方式三:纯 SMTP 发送(不登录 IMAP,适合脚本批量发)cat D:\Users\ZN34\draft.eml | himalaya smtp send

完整例子:给老板发日报

# 创建邮件文件 D:\Users\ZN34\daily.eml,内容如下:## From: 1109973931@qq.com# To: boss@company.com# Subject: 今日工作汇报# Content-Type: text/plain; charset=utf-8## 张总,今日工作汇报:# 1. 完成服务器巡检# 2. 处理了三起故障工单# 3. 优化了备份策略# 发送cat D:\Users\ZN34\daily.eml | himalaya message send# 输出 Message successfully sent! 表示发送成功

💡 发送到多个收件人:在文件头的 To: 字段用逗号分隔多个地址,如 To: a@example.com, b@example.com

7.3 协议特定命令

# SMTP 发送 RFC 822 格式邮件himalaya smtp send < draft.eml# SMTP 不需要 IMAP,可独立发送

八、调试与排错

8.1 查看详细日志

himalaya --log trace envelopes list -m INBOX

日志会输出到 stderr,可以重定向:

himalaya --log trace envelopes list -m INBOX 2>/tmp/himalaya.log

8.2 常见错误

错误信息
原因
解决方法
Connection refused
端口错误/防火墙
检查 port=993 是否正确,确认网络通畅
SASL authentication failed
用户名密码错误
确认邮箱地址和授权码正确;检查是否开启了 IMAP
certificate verify failed
TLS 证书问题
确认 encryption-type = "tls" 端口设置正确(IMAP 用 993,SMTP 用 587 STARTTLS)
TIMEOUT
服务器响应慢
检查网络质量,添加 --timeout 参数

8.3 端口连通性测试

# 测试 IMAPS 连通性openssl s_client -connect imap.example.com:993# 测试 SMTP+STARTTLSopenssl s_client -starttls smtp -connect smtp.example.com:587

如果看到 SSL handshake has read xxx bytes 说明 TLS 正常。


九、性能优化:会话复用

Himalaya 每次命令都重新建立 TCP+TLS+SASL 连接,对于频繁操作会比较慢。可以配合 sirup 保持长连接:

# sirup 在后台保持 IMAP 连接(需单独安装 sirup)sirup imap imap.example.com 993 yourname@example.com# 在 config.toml 中通过 sirup socket 连接(v1.2.0 格式)[accounts.myemail.backend]type = "imap"server = "sirup+imap@/path/to/socket"# 其他 IMAP 配置不变

⚠️ sirup 需单独安装:cargo install sirup,且仅支持 IMAP 协议。


十、Gmail 特殊配置

Gmail 由于安全机制,必须开启两步验证后才能使用应用密码,或者使用 OAuth2。

方式一:应用专用密码(简单但不够安全)

  1. 1. Google Account → 安全性 → 两步验证 → 开启
  2. 2. 应用密码 → 创建新应用密码(选择”其他”)
  3. 3. 配置文件中使用这个 16 位密码

方式二:OAuth2(推荐)

需要配合 ortie:

# 安装 ortiecargo install ortie# 首次认证(会打开浏览器)ortie gmail --account yourname@gmail.com --scope imap,smtp# 配置文件中使用(v1.2.0 格式)[accounts.gmail]email = "yourname@gmail.com"default = true[accounts.gmail.backend]type = "imap"host = "imap.gmail.com"port = 993encryption-type = "tls"login = "yourname@gmail.com"[accounts.gmail.backend.auth]type = "oauth2"[accounts.gmail.backend.auth.oauth2]token-cmd = "ortie gmail --account yourname@gmail.com --scope imap"[accounts.gmail.message.send.backend]type = "smtp"host = "smtp.gmail.com"port = 587encryption-type = "start-tls"login = "yourname@gmail.com"[accounts.gmail.message.send.backend.auth]type = "oauth2"[accounts.gmail.message.send.backend.auth.oauth2]token-cmd = "ortie gmail --account yourname@gmail.com --scope smtp"

十一、配置示例:QQ 邮箱

📖 通用模板和字段说明见上方 4.2 节,本节只给出完整可用的配置,无需再改任何内容。

# 文件位置:D:\Users\ZN34\AppData\Roaming\himalaya\config.tomldisplay-name = "你的名字"[accounts.qqmail]email = "你的QQ号@qq.com"display-name = "你的名字"default = true# IMAP 接收(读邮件)[accounts.qqmail.backend]type = "imap"host = "imap.qq.com"port = 993encryption-type = "tls"login = "你的QQ号@qq.com"[accounts.qqmail.backend.auth]type = "password"# 重要:这里填的是「授权码」,不是 QQ 密码!# 授权码在 QQ 邮箱网页 → 设置 → 账户 → POP3/IMAP/SMTP 服务 中开启后获取cmd = "echo 你的授权码"# SMTP 发送(发邮件)[accounts.qqmail.message.send]save-copy = false  # 关闭保存到 Sent,避免发送失败干扰[accounts.qqmail.message.send.backend]type = "smtp"host = "smtp.qq.com"port = 587encryption-type = "start-tls"login = "你的QQ号@qq.com"[accounts.qqmail.message.send.backend.auth]type = "password"cmd = "echo 你的授权码"

获取 QQ 邮箱授权码(16 位):

  1. 1. 登录 mail.qq.com
  2. 2. 设置 → 账户 → POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
  3. 3. 开启 IMAP/SMTP 服务
  4. 4. 点”生成授权码”,用手机发短信验证后得到授权码

十二、快速检查清单

配置完成后,逐项检查:

  • himalaya --version 能执行
  • himalaya mailboxes list 能列出邮箱
  • himalaya envelope list -f INBOX -p 1 能看到收件箱邮件
  • 能正常发送测试邮件(cat draft.eml | himalaya message send
  • 密码不是明文存储(用 cmd = "echo ..." 而非 raw = "..."
  • IMAP/SMTP 端口 TLS 加密正常(993/587)
  • OpenClaw skill 状态正常(如已安装)


📌 最后提醒:邮件系统有发送频率限制,自动化脚本发送邮件时注意间隔,避免触发反垃圾邮件机制。

往期文章:

Visual Studio Code 完整使用教程

Docker 教程:从入门到熟练上手的实战指南 【二】

OpenClaw + Playwright MCP 配置教程