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 中集成邮件功能的人
优势特点
|
|
|
|---|---|
| 多协议 |
|
| 多账号 |
|
| 无锁定 |
|
| TLS 安全 |
|
| OAuth2 |
|
| 自动化友好 | --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 |
|
|
login |
|
|
xoauth2 |
|
|
oauthbearer |
|
|
scram-sha-256 |
|
|
2.4 什么是端口
邮件服务常用端口:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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. 打开 https://github.com/pimalaya/himalaya/releases/latest -
2. 找到 himalaya.x86_64-windows.zip(最新版本,文件名类似himalaya.x86_64-windows.zip) -
3. 下载 → 解压 → 得到 himalaya.exe -
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. 输入邮箱地址 -
2. 自动探测(推荐选 Y)IMAP/SMTP 配置 -
3. 输入用户名(通常是完整邮箱地址) -
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] |
|
[accounts.<名字>.backend.auth] |
|
[accounts.<名字>.message.send] |
|
[accounts.<名字>.message.send.backend] |
|
[accounts.<名字>.message.send.backend.auth] |
|
五、安全建议
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. 在 Google Cloud Console 创建 OAuth2 Client -
2. 用 ortie 获取 access token -
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. 系统里装了 himalaya.exe(见第三章安装步骤) -
2. config.toml配置好了邮箱账号(见第四章配置步骤) -
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 |
|
|
SASL authentication failed |
|
|
certificate verify failed |
|
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. Google Account → 安全性 → 两步验证 → 开启 -
2. 应用密码 → 创建新应用密码(选择”其他”) -
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. 登录 mail.qq.com -
2. 设置 → 账户 → POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 -
3. 开启 IMAP/SMTP 服务 -
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 状态正常(如已安装)

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