Hack and / - Mutt 为系统管理员提供的技巧

作者:Kyle Rankin

我是那种会把所有东西都存储在电子邮件里的人。旅行预订、电话号码——如果它在电子邮件里,我知道总能找到信息。这可能是我多年来一直使用 mutt 作为我在家和工作时的主要邮件程序的原因之一。当您需要阅读、搜索和浏览充满邮件的大型邮箱时,它难以匹敌。而且,它还具有 vi 风格的快捷键绑定。我喜欢 vi 风格的快捷键绑定。

如果您是一名系统管理员,那么您更有理由喜欢 mutt。首先,您可能一天中的大部分时间都在终端前度过,那么为什么不也在那里阅读邮件呢?许多管理员喜欢运行精简的服务器,这些服务器不包含 X 或图形工具的二进制文件,但 mutt 很小,而且更重要的是,您可以ssh到服务器或您工作用的桌面,从另一台机器上查看您的邮件。

在工作中,我喜欢根据邮件是来自个人还是服务器(当然,我还会进一步细分)将我的电子邮件分隔到不同的文件夹中。如果您管理很多服务器,这些邮箱可能会变得非常大。当您需要打开一个包含数千条新邮件的邮箱时,几乎没有什么能与 mutt 相提并论。这引出了我的第一个几乎必不可少的 mutt 技巧:头部缓存。

头部缓存是 mutt 在过去几年才出现的一项功能。本质上,它允许 mutt 缓存邮箱中的邮件头,这样下次您加载邮箱时,它只需要拉取新邮件。这对于 IMAP 服务器甚至大型本地邮箱尤其方便。

要启用头部缓存,请在您的主目录中创建一个名为 .muttheaders 的目录,然后将以下行添加到您的 ~/.muttrc,并重启 mutt 或重新加载您的 mutt 配置

set header_cache="~/.muttheaders/"
分离 Mutt 配置

这种技巧在某些方面更具组织性,并且不仅对系统管理员有用,对在多台机器上运行 mutt 的任何人也很有用。许多 mutt 指南会告诉您将 .muttrc 分割成多个文件,用于不同类型的配置,这样您就可以有一个文件包含所有颜色选项,另一个文件包含您的快捷键绑定等等。然后,您只需在您的 .muttrc 文件中添加一个 source 行,指向新文件,mutt 也会加载这些选项。

我喜欢更进一步,在我的主目录中创建一个 .mutt 目录,并将所有这些文件包括我的 .muttrc 都放在该目录中。然后,我在我的主目录中创建一个名为 .muttrc.local 的新文件。在这个文件中,我存储任何特定于该机器的选项(IMAP 设置、本地邮箱位置等等),并将其余选项组织在 .mutt 目录的不同文件中。最后,我从 ~/.mutt/.muttrc 创建一个符号链接到 ~/.muttrc,这样 mutt 仍然可以找到它。在这个 .muttrc 中,您会找到像下面这样的 source 行

source ~/.muttrc.local
source ~/.mutt/colors
source ~/.mutt/aliases
source ~/.mutt/mailboxes

这种安排的优点是,一旦我对 .mutt 中的任何文件进行了更改,我只需rsync将整个目录同步到我运行 mutt 的任何其他机器上,我的所有更改都将同步到那里。如果我不将这些文件分隔到一个目录并分离出 .muttrc.local,我就不得不担心一台机器上的任何本地设置会覆盖其余的设置。

为重要词语着色

如果您阅读大量 cron、Nagios 或其他服务器为您生成的电子邮件,很容易让您的眼睛麻木,错过重要的内容。我喜欢调整我的 mutt 配置,以便某些词语,例如 warning,以亮黄色着色,而像 error 和 fail 这样的词语则以亮红色显示。用 mutt 实现这一点非常容易,只需几行代码

color body brightyellow default warning
color body brightred default error
color body white default 'no error'
color body brightred default "fail(ure|ed)?"

请注意匹配 no error 的那一行。我注意到有些邮件中包含“no error”,但 error 部分仍然被着色为红色。如果您的关键字也发生这种情况,只需在其中添加类似的行,以覆盖之前不太具体的匹配。您不必仅限于这些关键字。例如,您还可以用特定颜色突出显示某些服务器名称,或为不同的数据中心位置分配不同的颜色。

优先阅读重要邮件

一旦我对所有电子邮件进行了着色,效果非常好——我可以浏览输出,更重要的电子邮件会立即引起我的注意。但是,随着邮件数量开始增长,我注意到我会花很多时间阅读不太重要的邮件,然后才找到重要的邮件。我的解决方案是使用 mutt 中的 limit 功能。当您在 mutt 的索引视图(mutt 只显示发件人和主题行)中时,您可以告诉 mutt 根据模式限制(默认情况下是 l 键)您当前可以看到的邮件头。

例如,如果我想只查看所有包含 Bob 的邮件头,我可以输入l然后输入Bob<Enter>。然后,要再次查看所有邮件头,我可以输入l然后输入all<Enter> 以显示所有邮件。您还可以让 mutt 在邮件正文中搜索,所以我创建了一个 mutt 宏,我将其绑定到 F3 键,这样当我看到完整的邮件头列表并按下 F3 时,它会将视图限制为仅包含 error 或 fail 的新邮件。我可以先阅读这些邮件,然后将限制改回 all,并浏览其余邮件。这是我在 .muttrc 中添加的额外行,用于创建宏

macro index <F3> "l~N ~b \"([\^nN][\^oO].error|[Ff][Aa][Ii][Ll])\"<enter>"

我总是对 mutt 的扩展能力感到惊讶。它绝对是那种随着您更多地了解其配置选项,就能在生产力提升方面回馈您的时间的程序之一。如果您使用电子邮件来记住事情,或者每天浏览大量的服务器电子邮件(或者即使您不这样做),mutt 都是一个非常宝贵的电子邮件伴侣,它总是有新的技巧。

Kyle Rankin 是旧金山湾区的一位高级系统管理员,也是多本书籍的作者,包括 O'Reilly Media 出版的 Knoppix HacksUbuntu Hacks。他目前是北湾 Linux 用户组的主席。

加载 Disqus 评论