关注了就能看到更多这么棒的文章哦~
A look at the aerc mail client
By Joe Brockmeier
October 17, 2024
Gemini-1.5-flash translation
https://lwn.net/Articles/993498/
电子邮件作为开源项目协作工具已不再流行,但仍有一些项目(如 PostgreSQL 和 Linux 内核)要求贡献者通过电子邮件发送和审查补丁。aerc 邮件客户端旨在为寻求基于文本、高效且可扩展的客户端的开发者提供服务,这些客户端旨在用于与 Git 和电子邮件一起使用。它默认使用 Vim 风格的键绑定,并且拥有受 tmux 启发的界面,允许用户同时管理多个帐户、邮件和嵌入式终端。
为什么叫这个名字?
从基于终端的电子邮件客户端标准来看,aerc 相对较新。流行的基于文本的电子邮件客户端 Mutt 于 1995 年首次发布,其分支 NeoMutt 于 2016 年首次发布。久负盛名的 Pine 邮件客户端于 1992 年首次发布,其重写版本 Alpine 出现在 2007 年。aerc 只有六年的历史,是一个新兴的工具。Drew DeVault 于 2018 年 1 月对 aerc 项目进行了 首次提交,并于 2019 年 6 月 宣布了 0.1.0 预发布。该项目是用 Go 编写的,并在 MIT 许可下提供。
这个名字曾经是一个谜,所以我给 DeVault 发邮件询问它的由来。他回复说,它最初代表“异步电子邮件阅读客户端”,表示用户界面和与 IMAP 服务器等通信的网络代码是分离的,以改善用户体验。他说,那个名字意义不大,很快就“被历史的尘埃所掩盖”。
DeVault 于 2022 年 1 月 发布通知到他的 aerc 代码库,宣布开发已转移到 Robin Jarry 维护的分支。从那时起,该分支一直处于积极的开发中。Aerc 0.18.0 于 7 月宣布,是最近的主要版本。这代表了大约五个月的工作,有 25 人为该版本做出了贡献。其中包含许多小的修复和改进,例如一个用于重新发送邮件的新 :bounce 命令,一个用于将邮件定位到邮件列表顶端、底部或中心的 :align 命令等等。最近的小版本(0.18.2) 于 7 月 29 日发布,包含少量修复。
Aerc 为大多数(如果不是全部)主要 Linux 发行版提供打包,并且也作为 FreeBSD 和 OpenBSD 的 Ports 系统以及 NetBSD 的软件包集合的一部分提供。我最初使用 Fedora 40 中的软件包,但几周后切换到从源代码编译以获取最新的更新。到目前为止,主分支一直非常稳定。
检索和发送邮件
Aerc 目前支持使用 IMAP、JMAP、notmuch、Maildir 和 Maildir++ 作为后端来读取电子邮件。它使用 SMTP 和 Sendmail 发送邮件。Aerc 提供了一个 new-account 命令,它将引导用户完成一个基于文本的配置向导,以设置 aerc 来发送和接收电子邮件。
new-account 工具只配置检索和发送电子邮件的最低限度内容。用户可能需要编辑帐户配置以添加签名、修改检查邮件的间隔、使用 GnuPG 进行签名 等等。帐户设置存储在一个纯文本文件中,该文件位于 $HOME/.config/aerc/accounts.conf. 有关更多信息,请参阅 accounts.conf 手册页。默认情况下,所有 aerc 的配置文件都存储在 .config/aerc 下。
一个基本的配置看起来像这样:
[Account Name]
source = maildir://~/mymail
outgoing = smtps://user:<password>@smtp.myhost.com
default = INBOX
from = Aerc User
copy-to = Sent
signature-file = ~/.signature请注意,aerc 会在设置过程中将 IMAP、JMAP 和 SMTP 密码以纯文本形式存储在它的配置文件中,从安全角度来看,这不是理想的。用户可能需要在 accounts.conf 中使用 source-cred-cmd 指令来运行一个外部命令,例如 pass,从一个加密的源中检索密码。
Aerc 界面
在终端中运行 aerc 可以启动 Aerc。与大多数基于文本的邮件客户端不同,aerc 有一个选项卡界面,允许用户同时拥有多个帐户和电子邮件打开。它在屏幕的左侧显示帐户的文件夹,在右侧显示电子邮件。如果用户配置了多个帐户,每个帐户都会在它自己的选项卡中显示。导航使用 Vim 风格的键绑定: k 和 j 在邮件列表中向上和向下移动(分别), K 和 J 在文件夹列表中向上和向下移动, Enter 打开邮件或文件夹。 Control-n 和 Control-p 在选项卡之间循环。
与 Vim 一样,运行命令的前缀是冒号键 (:)。新用户可能希望尝试运行 :help tutorial 的 教程,该教程会显示教程手册页,其中包含一些关于移动键、邮件查看器、撰写邮件和内置终端的基本说明。

输入 : 并按下 Tab 键会显示一个弹出窗口,其中包含可用的命令,用户可以通过再次按下 Tab 键来选择,直到突出显示所需的命令,或者输入前几个字母并按下 Tab 键完成命令。例如, :compose 将打开邮件撰写器, :reply -a -q 将使用默认编辑器中的原始邮件引用启动回复, :terminal 将在 aerc 中打开一个新的终端。
就像 Vim 有 模式(例如,用于运行命令的普通模式、用于编辑文本的插入模式等等)一样,aerc 也有上下文。aerc 的可用上下文包括消息(查看帐户中的邮件列表)、查看(实际查看单个邮件)、撰写和终端。用户可以使用 ? 来显示一个在他们所处的任何上下文中可用的键绑定的列表。
定制 Aerc
正如人们所料,aerc 的键绑定是可定制的,用户可以创建键绑定来运行他们自己的命令序列。它的键绑定配置位于 $HOME/.config/aerc/binds.conf. 绑定按上下文组织,并且可以根据 aerc 所处的上下文使用绑定来执行不同的操作。绑定的格式很简单,即要使用的键序列和要运行的命令。例如,这将设置一个快捷方式,将用户工作帐户中的邮件移动到垃圾邮件文件夹:
[messages:account=Work]
S = :read<Enter>:move Spam<Enter>所有 aerc 的默认键绑定也在此文件中定义——因此用户可以根据自己的需要重新配置它们。例如,可以设置 aerc 使用 Mutt 快捷方式,甚至使用 Emacs 风格的键绑定。(尽管 Emacs 用户可能不愿意退出 Emacs 来使用外部邮件客户端。)
用户可以通过在 accounts.conf 文件中添加 folders 和 folders-sort 指令来隐藏邮箱文件夹和/或更改它们显示的顺序,这些指令位于相应的帐户下。用户还可以重新映射文件夹名称,使其更有用。例如,当使用 aerc 与 Gmail 帐户一起使用时,用户可能希望将默认的 IMAP 名称(如 “[GMAIL]/Spam”)重新映射为“Spam”。(或者“spam spam spam spam…” 如果他们已经看了太多次 蒙提·派森的飞行马戏团)。这将告诉 aerc 只显示帐户的收件箱、已发送和存档文件夹,按此顺序显示,并查找 folder-map 指定的文件以找到 “[Gmail]/Sent” 到 Sent 的重新映射。
folders = INBOX,Archive,Sent
folders-sort = INBOX,Sent,Archive
folder-map = /home/user/.config/aerc/folders在 folders 文件中,此节将重新映射文件夹名称:
Sent = [Gmail]/Sentaerc 的大多数界面也是可定制的。例如,可以重新排列邮件列(发件人、主题、日期等)的宽度和顺序、文件夹侧边栏的宽度等等。基本配置在 aerc.conf 文件中提供(有关更多信息,请参阅 aerc-config 手册页),用户可以使用 样式集 来设置用户界面颜色等。样式集功能不仅仅是为了美化 aerc 的界面,尽管它非常适合此目的。样式集可用于突出显示符合某些条件的邮件,以便更容易在邮件列表中找到它们。例如,这些节将对主题中匹配“FR”(供审核)的邮件以及发送到 lists.debian.org 或 lists.postgresql.org 的邮件进行着色:
msglist_*.Subject,~FR.fg=#a64b2a
msglist_*.To,~lists.debian.org.fg=#4e6a79
msglist_*.To,~lists.postgresql.org.fg=#f0ece2在保存新规则后运行 :reload 将使它们生效,而无需重新启动 aerc。catppuccin/aerc 代码库中有一些 aerc 用户可能想使用或借鉴的样式集示例。
使用 Aerc
即使 aerc 是一个基于终端和键盘驱动的应用程序,它也支持鼠标(假设它运行的终端支持鼠标)。可以通过在 aerc.conf 中将 mouse-enabled 设置为 true 来启用它。它允许使用鼠标选择选项卡、文件夹和邮件,并使用鼠标滚轮滚动邮件列表。除此之外,aerc 没有任何菜单——因此鼠标的用处有限。
伸手去抓鼠标是一个生产力障碍。使用 aerc 时,实际上没有必要伸手去抓鼠标,用户想要做的任何事情都可以通过键盘完成。几乎所有事情都可以通过键盘完成。电子邮件和附件可以使用 :pipe 和 :open 命令从 aerc 中通过管道传输到外部命令。如果电子邮件包含用户想要访问的链接, :open-link 命令将把它发送到默认的网页浏览器。
Aerc 不支持使用 mbox 格式,但它可以使用 :import-mbox 和 :export-mbox 命令导入和导出该格式。这可能对将邮件从另一个程序移动到 Aerc 或者导入邮件列表中的档案很有用。
编辑邮件由用户选择的外部编辑器处理。默认情况下,aerc 将使用 $EDITOR 指定的任何编辑器,但这可以在 aerc.conf 文件中使用 editor 指令进行修改,如下所示:
editor=nanoaerc 的主要用例之一是通过电子邮件使用 Git 与其他人进行协作。开发者预计会使用 Git 的 send-email 命令在运行在 aerc 中的终端中发送补丁,并使用 :patch 命令管理补丁,该命令直接从 aerc 中将补丁应用到 Git 代码库。sourcehut 教程 中关于使用电子邮件和 Git 的内容提供了关于使用 git send-email 的良好概述,相应的 审查贡献的教程 解释了如何使用 aerc 审查补丁并提供了一个示例审查项目以供使用。
搜索
Aerc 有两个命令对使用 IMAP 或 Maildir 后端时搜索电子邮件很有用::search 和 :filter,它们具有相同的语法,但行为略有不同。搜索会突出显示匹配的邮件,并允许用户使用 n (向前)和 N (向后)导航到匹配的邮件。当过滤时,只显示匹配的邮件——这使得它便于用于对邮件进行批量操作。例如,此命令将匹配文件夹中所有在过去一周内在正文中包含“Firefox”的邮件:
:filter -d this_week -b Firefox请注意,可以运行多次 :filter 以缩小结果范围,但新的 :search 会替换旧的结果。例如,可以运行上述命令来过滤在过去一周内发送的邮件,这些邮件在正文中包含“Firefox”。运行另一个 :filter 命令将进一步缩小结果范围,而不是在文件夹上运行新的搜索。过滤后的结果也可以搜索。在没有参数的情况下运行 :filter 将清除过滤器并显示文件夹中的所有邮件。请注意,过滤在 aerc 重新启动或清除之前一直持续——如果用户在收件箱文件夹中过滤邮件,然后切换到另一个文件夹,再切换回来,收件箱中的过滤器将仍然有效。这可能会与预期结果相悖,并引发“我的所有邮件都到哪里去了?”(或者更强的)反应,如果如果不熟悉 aerc 的话。
如果使用 notmuch 后端,用户可以使用 notmuch 语法 来使用 :filter 和 :search 命令。Aerc 还提供了一个 :query 命令,用于从 notmuch 查询中创建虚拟文件夹。
aerc 项目意识到,即使是开发者也必须偶尔参加会议。如果邮件包含会议邀请,用户可以使用 :accept 和 :decline 命令生成对日历邀请的回复,该回复应该让发送者相应地更新他们的日历。请注意,这不会更新 aerc 用户的日历,这需要通过将 text/calendar 部分通过管道传输到单独的处理程序来手动完成。
总的来说,aerc 是一个高度可定制的邮件客户端,背后有一个小型但活跃的社区。我发现它非常适合管理具有大量邮件的多个帐户。在使用设置和键绑定进行调整的前一两周,生产力略有下降,但这很快就会过去。在性能方面,aerc 能够很好地处理存储在本地的大量邮件。排序、搜索、过滤和一次对数千封邮件进行操作几乎是即时的——尽管性能可能会根据 aerc 可用的系统资源而有所不同。它在 IMAP 后端上也表现良好,尽管这在一定程度上取决于服务。使用 IMAP 在 LWN 的服务器上存储的邮件比 Fastmail 要快得多,但我在 Fastmail 的服务器上存储了十多年的邮件。可能已经到了从我的档案中删除一些几十年前的通讯和自动通知的时候了。
对于将 aerc 作为其主要邮件客户端的用户来说,值得注册 aerc-discuss 和 aerc-devel 邮件列表。这两个列表的邮件量都很低,并且包含关于使用和改进 aerc 的有用的讨论。
尽管版本号很低,aerc 已经被证明足够稳定和功能齐全,可以用于日常使用。该项目在不久的将来将如何发展,以及它是否会达到 1.0 版本,这将是有趣的事情。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
欢迎分享、转载及基于现有协议再创作~
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~


被折叠的 条评论
为什么被折叠?



