arch linux上的邮箱管理客户端
在我的arch linux上一直没有使用一个邮箱app来统一管理我的邮箱,每次在这个设备接收发送邮件都需要打开浏览器的web端,步骤太繁琐了,所以趁着现在闲着来研究一下
最开始我选择的是aerc,他极致轻量直接发送tcp连接,终端直接运行,且高度自定义

aerc的安装与配置
在arch上可以通过pacman来安装
1 | sudo pacman -S aerc w3m pass |
其中w3m用于简单的html渲染,有些邮件发送格式为html,通过这个工具不需要之后每次都专门用浏览器来读取这类邮件;
pass为一个简单的本地加密工具极其轻量,用于防止在配置文件中密码明文暴露
初始化本地的gpg密钥
1 | gpg --generate-key |
初始话pass仓库
查找gpg的id
1 | gpg --list-secret-keys --keyid-format=long |
找到sec 后的16位id
用这个id初始化库
1 | pass init 你的16位ID |
存入QQ邮箱的授权码,这样就将密码存入了email/qq中,可以通过对应命令直接使用
1 | pass insert email/qq |
写入账号
1 | vim ~/.config/aerc/accounts.conf |
accounts.conf是用于存入账户的配置文件
1 | [Gmail] |
其他的同理,只是163或者qq是用授权码登入
均需要邮箱在设置中开启IMAP
开启IMAP方法
QQ邮箱
https://wx.mail.qq.com/account/index?sid=zdBvQYwiNXguM3poALpLcgAA#/?tab=safety&r=1791115046578

安全设置->POP3/IMAP…服务 ->开启后获取授权码
163邮箱

之后可以直接通过下方命令来打开aerc
1 | aerc |
配置后台运行
aerc 本身只是终端里的一个 TUI,只有它开着的时候才能实时收邮件。我不太喜欢专门为它留一个终端标签,直接用 Hyprland 的特殊工作区把它”藏”起来更顺手:平时把 aerc 窗口丢进 magic,需要看邮件时再按一下键调出来。
我的 Hyprland 配置里已经有这两个绑定(~/.config/hypr/hyprland.lua):
1 | hl.bind(mainMod .. " + " .. "S", hl.dsp.workspace.toggle_special("magic")) |
对应到实际操作就是:
| 快捷键 | 作用 |
|---|---|
SUPER + SHIFT + Z |
把当前 aerc 窗口丢进 magic 特殊工作区,相当于后台隐藏 |
SUPER + S |
开关 magic,把 aerc 重新调出来 |
这样 aerc 只是被 Hyprland 藏起来了,进程和终端一直都在,IMAP 连接(IMAP IDLE)不会断。要看邮件时 SUPER + S 切回来即可,比额外开 tmux 或 systemd service 轻量得多。
代理问题
如果想要使用aerc来管理gmail,因为在内地本质是不允许使用的,所以需要使用代理来连接gmail
但是aerc本质是tcp直连,所以在环境变量中添加http和https的代理对这个工具并没有效果,需要本地使用tun模式让clash来管理我的全局流量
发现还是不行,查看代理规则发现是因为邮箱使用的端口993和465端口的协议优先级更高且选择是直连,所以最简单的解决办法就是添加顶部规则,直接让这两个端口的流量均使用代理

日常使用的快捷键与指令
aerc 是纯键盘操作,所有快捷键都可以通过 ? 查看,也可以直接进入 : 命令模式执行命令。
通用
| 按键 | 作用 |
|---|---|
: |
进入命令模式(输入命令后回车执行) |
? |
查看当前上下文的按键帮助 |
]t / [t |
切换下 / 上一个标签页(]t 下一个、[t 上一个) |
<C-t> |
打开一个内嵌终端 |
<C-c> |
退出 aerc(会弹出 Quit? 确认) |
q |
关闭当前视图(在列表中会询问是否退出 aerc) |
<C-n> / <C-p> |
切换下一个 / 上一个邮箱(账号即标签页,即 :next-tab / :prev-tab) |
邮件列表
| 按键 | 作用 |
|---|---|
j / k |
上/下移动光标 |
<Enter> |
打开选中邮件 |
m 或 C |
撰写新邮件 |
Rr / rr |
回复 / 回复全部(带引用用 Rq / rq) |
d |
删除(需确认) |
D |
直接删除,不确认 |
a |
归档当前邮件 |
<Space> |
选中并跳到下一封 |
v |
标记 / 取消标记当前邮件(整条线程用 :mark -T) |
/ |
搜索邮件 |
\ |
过滤邮件列表 |
n / N |
跳到下/上一个搜索结果 |
c |
切换文件夹 |
s / S |
水平/垂直分屏预览 |
T |
切换线程视图 |
J / K |
下一个/上一个文件夹 |
| |
把邮件通过管道传给外部命令 |
阅读邮件
| 按键 | 作用 |
|---|---|
q |
关闭当前邮件 |
o / O |
用外部程序打开附件或邮件正文 |
S |
保存附件到本地 |
f |
转发 |
Rr / rr |
回复 / 回复全部(带引用用 Rq / rq) |
a |
归档 |
H |
切换显示完整邮件头 |
<C-j> / <C-k> |
下一个/上一个 MIME 部分 |
J / K |
下一封/上一封邮件 |
<C-l> |
打开正文里的链接 |
<C-y> |
复制正文里的链接 |
撰写与发送
在撰写界面 :wq 退出编辑器后会进入 review 界面,此时:
| 按键 | 作用 |
|---|---|
y |
发送 |
n |
放弃并丢弃 |
p |
暂存为草稿 |
v |
预览最终邮件 |
e |
重新编辑正文与头 |
a |
添加附件 |
d |
移除附件 |
s |
切换签名 |
x |
切换加密 |
常用命令模式命令
1 | :compose 撰写新邮件 |
其他舒适型配置
将 vim 配置为编辑器
aerc 撰写邮件时会调用外部编辑器,默认依次读取 $VISUAL、$EDITOR、vi。推荐在 ~/.config/aerc/aerc.conf 的 [compose] 段显式指定:
1 | [compose] |
也可以不改配置文件,直接通过环境变量指定:
1 | export EDITOR=vim |
写入 shell 配置(bash 用 ~/.bashrc,zsh 用 ~/.zshrc)后可永久生效。
aerc 撰写时生成的临时文件名为 aerc-compose-*.eml,Vim(9 及以上)会自动把它识别为 mail 文件类型并加载对应高亮。为了让写邮件更顺手,可以在 ~/.vimrc 中为 mail 类型加一些设置:
1 | autocmd FileType mail setlocal spell spelllang=en_us |
如果 Vim 未能识别文件类型,可手动补一条自动命令:
1 | autocmd BufNewFile,BufRead */aerc-compose-*.eml setfiletype mail |
默认情况下收件人、主题等头部是在 aerc 的表单里填写的,只有正文交给 vim。若希望连邮件头一起在 vim 里编辑,可开启:
1 | [compose] |
此时 vim 打开的内容形如:
1 | To: someone@example.com |
在 vim 中写完执行 :wq 保存退出,即可回到 aerc 的 review 界面继续发送。
添加模糊搜索和通讯录
1 | sudo pacman -S fzf khard |
| 包 | 作用 | 解释 |
|---|---|---|
| fzf | 通用模糊查找器(fuzzy finder),把一堆候选项丢给它就能边打边筛 | file-picker-cmd:写邮件加附件时弹窗选文件;也可作 default-menu-cmd |
| khard | 终端通讯录管理器,读取本地 vCard 文件,能按关键词输出“邮箱+姓名” | address-book-cmd:写邮件时补全收件人 |
配khard通讯录
1 | mkdir -p ~/.config/khard ~/.contacts |
写入(~/.contacts 就是存放 vCard 的目录):
1 | [addressbooks] |
新增一个联系人测试
1 | khard new -a contacts |
关于vCard
最简单的 vCard 只需要两个必需字段:版本和格式化姓名。
1
2
3
4 BEGIN:VCARD
VERSION:4.0
FN:张三
END:VCARD常见可填写字段
以下是一些最常用的字段及其格式,你可以根据需求自由组合:
字段名 含义 格式示例 VERSION 版本号,必需。目前常用的是 4.0。 VERSION:4.0FN 格式化姓名,必需。即你希望别人看到的完整称呼。 FN:张三N 结构化姓名。依次为 姓、名、中间名、前缀、后缀,用分号 ;隔开。N:张;三;建国;先生;TEL 电话号码。可附加 TYPE参数区分类型(如 work, home)。TEL;TYPE=work:+86-138-0000-0000电子邮箱。同样可附加 TYPE参数。EMAIL;TYPE=work:zhangsan@example.comORG 组织/公司名称。可以包含多个层级,用分号隔开。 ORG:示例公司;技术部TITLE 职位头衔。 TITLE:高级工程师ADR 结构化地址。通常用分号分隔:邮箱/楼号;扩展地址;街道;城市;省/州;邮编;国家。 ADR;TYPE=work:;;科技园路1号;深圳市;广东省;518000;中国BDAY 生日。格式为 yyyy-mm-dd,也可以省略年份。BDAY:1990-01-01NOTE 备注信息。 NOTE:这是一段备注URL 个人或公司主页链接。 URL:https://example.com
在 ~/.config/aerc/aerc.conf 的 [compose] 段添加对应的配置:
1 | [compose] |
file-picker-cmd 让加附件时弹出 fzf 选文件,address-book-cmd 让收件人输入框支持按 Ctrl+o 补全。如果不打算维护通讯录,只保留 file-picker-cmd 这一行即可。
aerc.conf 的其他舒适型改动
除了编辑器,aerc.conf 里还开了下面这些,逐项说明作用:
| 段 | 配置 | 作用 |
|---|---|---|
[general] |
default-save-path = ~/下载/ |
保存附件时的默认目录,不用每次输入完整路径 |
[ui] |
mouse-enabled = true |
允许鼠标点击选中、滚轮滚动 |
[ui] |
threading-enabled = true |
邮件按会话线程折叠显示,方便看一来一回的讨论 |
[compose] |
focus-body = true |
打开撰写界面时直接聚焦正文,省一次 Tab |
[compose] |
format-flowed = true |
按 RFC3676 生成软换行正文,对方阅读更自然 |
[openers] |
application/pdf = xdg-open |
阅读时按 o 用系统默认程序打开 PDF 附件 |
[openers] |
image/* = xdg-open |
按 o 用系统默认图片查看器打开图片附件 |
[openers] |
text/html = firefox |
按 o 用浏览器打开 HTML 部分(日常阅读走 filter,用不到它) |
这些行在示例配置里默认是注释状态(行首带
#)。只在行尾把false改成true不会生效,必须把行首的#删掉。
快捷键自定义
~/.config/aerc/binds.conf 里加了两处:
| 位置 | 配置 | 作用 |
|---|---|---|
| 文件开头(全局) | <A-n> / <A-p> = :switch-account -n / -p |
Alt+n、Alt+p 在多个账号间切换 |
[messages] 段 |
f = :forward<Enter> |
在邮件列表里直接转发,省去“先进阅读界面再按 f” |
[view] 段里本来就有一个 f = :forward,两者属于不同界面(列表 / 阅读),互不冲突。
注意区分:默认的 Ctrl+n / Ctrl+p(:next-tab / :prev-tab)切换的是标签页——账号、撰写、阅读等都是标签,所以切标签也能切账号,但会路过其它标签;这里的 Alt+n / Alt+p(:switch-account)则只在本账号之间循环。
改完所有配置后,在 aerc 里执行 :reload(或外部 kill -HUP $(pgrep aerc))即可生效。
常见使用场景
前面列的是”有哪些键”,这一节换成”要办一件事时具体怎么按”。下面按日常最常遇到的场景来写,跟着走一遍基本就能上手了。
1. 每天收信,快速清空收件箱
打开 aerc 后默认停在第一个账号的默认文件夹(accounts.conf 里的 default)。aerc 里每个账号就是一个标签页,所以用 Ctrl+n / Ctrl+p 切到下一个 / 上一个标签即可切换账号;文件夹用 J / K 上下切换。
单封处理:
| 按键 | 作用 |
|---|---|
j / k |
上/下移动光标 |
Enter |
打开邮件 |
Rr / rr |
回复 / 回复全部(带引用用 Rq / rq) |
a |
归档当前邮件 |
d / D |
删除(需确认)/ 直接删除 |
批量处理是清空收件箱的关键:
Space:标记当前邮件并自动跳到下一封,连续按就能勾选一批v:切换当前邮件的标记状态V:进入可视标记模式,用j/k框选一段范围:mark -T:选中当前整条线程
勾选完成后直接执行命令,命令会作用在所有被标记的邮件上:
1 | :archive 归档 |
Esc 可以清除当前标记。
2. 回复 / 回复全部 / 转发
在阅读界面按:
| 按键 | 作用 |
|---|---|
Rr |
回复发件人 |
rr |
回复全部 |
Rq |
回复(带引用) |
rq |
回复全部(带引用) |
f |
转发 |
注意回复默认是两键序列:单独按 r 只是在等第二键,不会有任何反应,要按完整 Rr / rr 才会真正打开回复。若想改成单键回复,在 binds.conf 里自行加 r = :reply<Enter> 即可。

进入编辑模式,使用vim规则
在 vim 里写完正文,:wq 退出 → aerc 自动进入 review(复查)界面。
在 review 界面按 y 发送。想改就 e 重新编辑、想先放着就 p 暂存草稿、要加附件按 a(走 fzf)、要签名 s、要加密 x。

在邮件列表里也能直接按 f 转发当前选中的邮件,不必先 Enter 进阅读界面。转发时可在 review 界面用 a 或 :attach 决定是否带上原附件。
3. 写一封新邮件并加附件
- 在邮件列表或阅读界面按
C(或m)打开撰写窗口 - 在
To、Subject等字段填写,Tab在字段间切换;配了通讯录时Ctrl+o触发补全 - 正文交给 vim 编辑,写完
:wq退出,回到 review 界面 - 加附件:
:wq进入 review 界面后按a(即:attach),再输入文件路径(支持通配符,如~/下载/*.pdf);想用 fzf 选文件用:attach -m <关键词> - review 界面按
y发送、p暂存、e重新编辑

4. 处理收到的附件
| 按键 | 作用 |
|---|---|
o / O |
用外部程序打开(PDF / 图片走 xdg-open) |
S |
保存附件到 default-save-path(默认 ~/下载/) |
| |
把当前 MIME 部分管道给外部命令 |
命令模式下对应 :open、:save <路径>。

直接打开和用imv打开均实现
5. 在邮件里查找
| 按键 | 作用 |
|---|---|
/ |
在当前文件夹搜索 |
\ |
过滤当前列表(边打边筛) |
n / N |
下一个 / 上一个结果 |
Esc |
清除搜索 / 过滤 |
跨文件夹的正文全文检索需要 notmuch 后端,属于进阶内容,之后单独写。
6. 归档、移动、新建文件夹
归档:
a移动:
:mv <文件夹>;复制::cp <文件夹>新建文件夹:
:mkdir <文件夹>跨账号搬家加
-a,例如把当前邮件移到 Gmail 的 Archive:1
:mv -a Gmail Archive
7. 写一半先存草稿
撰写界面按 p(:postpone)暂存为草稿;之后进 Drafts 文件夹,按 Enter 会调用 :recall 恢复继续写。这是 binds.conf 里 [messages:folder=Drafts] 段专门为草稿文件夹配的默认绑定。
8. 退订邮件列表
打开一封带 List-Unsubscribe 头的列表邮件,执行:
1 | :unsubscribe |
aerc 会尝试识别并给出退订方式。
9. 打开邮件里的链接
| 按键 | 作用 |
|---|---|
Ctrl+l |
用浏览器打开正文里的链接 |
Ctrl+y |
复制链接到剪贴板 |
依赖 [viewer] parse-http-links = true(默认开启)。
10. 标记重要邮件、改已读状态
1 | :flag 加旗标(列表中显示 !) |
适合”看到了但暂时没空处理”的邮件,先标记着稍后再管。
11. 处理会议邀请
打开带 iCalendar 邀请的邮件后:
1 | :accept 接受 |
发送后邀请方会收到你的答复。