在 Linux 终端中使用 Alpine 电子邮件客户端

配置 Alpine 以您喜欢的方式处理您的电子邮件。
65 位读者喜欢这篇文章。
Chat via email

电子邮件是一种重要的通信媒介,并且在可预见的未来仍将如此。在过去的 30 年中,我使用过许多不同的电子邮件客户端,而近年来我使用最多的是 Thunderbird。它是一个出色且功能齐全的桌面应用程序,提供了大多数人需要的所有功能——包括我。

好奇心是优秀系统管理员的特质之一——而我拥有不止一份的好奇心。在过去的几个月中,我对 Thunderbird 感到不满——并不是因为它有什么特别的问题。相反,多年以后,我对它感到厌倦了。我很好奇是否可以找到一个电子邮件客户端,提供比 Thunderbird 更好(或至少不同)的体验,并且至少同样高效。

我决定是时候做出改变了——而不仅仅是换用不同的图形用户界面 (GUI) 邮件客户端。Linux 上提供的其他基于 GUI 的电子邮件客户端都没有真正吸引我。我最终意识到,我想要的是回到 Alpine,它是 Pine 的后代,也是我大约 20 年前使用过的文本用户界面 (TUI) 电子邮件客户端。

我对电子邮件客户端的怀旧之情始于 2017 年,当时我在 Opensource.com 上写了一篇关于 Alpine 的文章。我描述了当我在 ISP 网络上出差远离我的家庭电子邮件系统时,如何使用 Alpine 来规避发送电子邮件的问题。

我最近决定专门使用 Alpine 处理电子邮件。主要的吸引力在于保持双手放在键盘上(并减少我需要伸手去拿鼠标的次数)所带来的易用性。这也是为了满足我作为系统管理员的渴望,去做一些不同的事情,并在过程中使用出色的文本模式界面。

入门

我之前已经设置了 Alpine,所以只需再次开始使用它即可。

好吧,并非如此。

我之前在我的邮件服务器上设置了 Alpine——我使用安全外壳 (SSH) 登录到邮件服务器,使用我的电子邮件帐户,然后启动 Alpine 以访问我的电子邮件。我在之前的文章中解释过这一点,但底线是我想规避 ISP 以减少垃圾邮件为名阻止出站端口 25 进行邮件传输。真有点麻烦。

但现在我想在我的工作站或笔记本电脑上运行 Alpine。在与电子邮件服务器相同的主机上配置 Alpine 相对简单。在远程计算机上使用它需要更多的工作。

安装 Alpine

在 Fedora 上安装 Alpine 很简单,因为它在 Fedora 存储库中可用。只需以 root 身份使用 DNF 即可

# dnf -y install alpine

此命令安装 Alpine 以及任何尚未安装的先决条件软件包。Alpine 的主要依赖项是 Sendmail、Hunspell、OpenLDAP、OpenSSL、krb5-libs、ncurses 和其他几个。在我的情况下,Alpine 是唯一安装的软件包。

启动 Alpine

要启动 Alpine,请打开一个终端会话,在命令行中键入 alpine,然后按 Enter 键。

首次启动 Alpine 时,它会显示一条消息,表明它正在 localhost 上创建用户目录结构。然后它会显示一条欢迎消息,如果您按 Enter 键,您将看到 Apache 许可证的副本。这很好,您应该在某个时候阅读许可证,以便了解其条款。但现在最重要的是配置 Alpine 以获取您的电子邮件。

现在,只需按小写字母 e 即可退出欢迎消息。您现在应该看到 Alpine 的主菜单(我删除了输出中的几个空白行以节省空间)

+----------------------------------------------------+
| ALPINE 2.24 MAIN MENU Folder: INBOX No Messages    |
|                                                    |
| HELP - Get help using Alpine                       |
|                                                    |
| C COMPOSE MESSAGE - Compose and send a message     |
|                                                    |
| I MESSAGE INDEX - View messages in current folder  |
|                                                    |
| L FOLDER LIST - Select a folder to view            |
|                                                    |
| A ADDRESS BOOK - Update address book               |
|                                                    |
| S SETUP - Configure Alpine Options                 |
|                                                    |
| Q QUIT - Leave the Alpine program                  |
|                                                    |
|                                                    |
|                                                    |
|                                                    |
|                                                    |
| For Copyright information press "?"                |
|                                                    |
| ? Help P PrevCmd R RelNotes                        |
| O OTHER CMDS > [ListFldrs] N NextCmd K KBLock      |
+----------------------------------------------------+

图 1:Alpine 的主菜单

Alpine 在首次使用期间在 localhost 上创建 ~mail 目录。当您配置 IMAP 服务器时,Alpine 会在 IMAP 服务器上的主目录中创建默认的 ~/mail~/mail/sent-mailsaved-messages 文件夹。您可以更改默认值,但我建议不要这样做。使用 IMAP 时,除非您将电子邮件复制到本地文件夹,否则电子邮件不会本地存储。所有电子邮件都存储在 SMTP 服务器上的收件箱中,直到它们被保存到 IMAP 服务器上的文件夹中。SMTP 和 IMAP 服务器可能使用相同或不同的主机。

Alpine 还假定收件箱位于电子邮件 SMTP 服务器上的 /var/spool/mail/user_name。本文解释了如何配置 IMAP 和 SMTP 服务器。您的组织的电子邮件管理员(可能是您自己)会将您的帐户添加到 IMAP 服务器并为您提供初始密码。

Alpine 界面

Alpine 用户界面 (UI) 是文本模式、菜单驱动的 UI,也称为 TUI。这种类型的界面有时也称为强制用户界面 (CUI),它不提供可以在脚本中使用的命令行界面。您必须退出程序才能执行其他任务。

相比之下,mailx 程序是一个电子邮件程序,可以与 TUI、命令行或脚本一起使用。例如,您可以使用以下命令将 free 命令的结果直接发送到系统管理员的电子邮件帐户

$ free | mailx -s "Free memory" sysadmin@example.com

但这些题外话就到此为止;还有工作要做。让我们从解释开始。

请注意图 1,界面中心主菜单中的所有可能选项以及 Alpine UI 底部菜单项都显示为大写字母。但是,您可以在发出命令时使用大写或小写字母;Alpine 都能识别并响应。大写字母在界面中更容易看到和识别,但使用小写字母输入命令和进行菜单选择更容易。在本文中,我将使用粗体大写字母来表示菜单选择(以模仿 Alpine UI)。

在主菜单上,您可以使用 向上向下 箭头键突出显示不同的选项,然后按 Enter 键进行选择。访问 Alpine 屏幕底部菜单项(我称之为辅助菜单,暂且这么称呼)的唯一方法是使用为每个菜单项指定的字母。有两组辅助菜单项。您可以按 O(字母,而不是数字)切换到下一组命令,再次按 O 切换回原始组。此按键仅更改辅助菜单项。

如果您看不到所有命令,请使用 向下翻页向上翻页 键滚动浏览命令。页面底部的辅助菜单通常列出当前菜单上可用的所有命令;您还会看到类似于以下内容的消息

[START of Information About Setup Command]

如果您发现自己处于不想去的地方,例如创建新电子邮件、回复电子邮件或更改设置,并且决定不想这样做,Ctrl+C 允许您取消当前任务。在大多数情况下,系统会要求您按 C 键确认要取消。请注意,辅助菜单中的 ^C 表示 Ctrl+C。许多命令都使用 Ctrl 键,因此您会在某些菜单上经常看到 ^

最后,要退出 Alpine,您可以按 Q;当它询问“真的要退出 Alpine 吗?”时,回复 Y 以退出。与许多命令一样,Q 并非在所有菜单上都可用。

帮助

在我尝试过的所有菜单中都提供了帮助。您可以通过突出显示需要信息的项目并按 ? 键来获得上下文相关的帮助,从而访问每个菜单项的详细帮助。

配置

当我开始定期使用 Alpine 时,我对配置进行了最少的更改,以发送和接收电子邮件。随着我对 Alpine 的经验越来越丰富,我更改了其他配置项,以使事情更容易或更符合我的喜好。

首先,我将解释使 Alpine 工作的基本配置,然后继续介绍使其工作更好的配置。

如果您一直在自行探索——这是一件好事——请返回主菜单。要从主菜单进入 Alpine 的配置菜单,请键入 S 以进行设置。您将看到如下菜单

ALPINE 2.24 SETUP Folder: INBOX No Messages 

This is the Setup screen for Alpine. Choose from the following commands: 

(E) Exit Setup: 
This puts you back at the Main Menu. 

(P) Printer: 
Allows you to set a default printer and to define custom 
print commands. 

(N) Newpassword: 
Change your password. 

(C) Config: 
Allows you to set or unset many features of Alpine. 
You may also set the values of many options with this command. 

(S) Signature: 
Enter or edit a custom signature which will 
be included with each new message you send. 
 
(A) AddressBooks: 
Define a non-default address book. 
 
(L) collectionLists: 
You may define groups of folders to help you better organize your mail. 
 
(R) Rules: 
This has up to six sub-categories: Roles, Index Colors, Filters, 
 [START of Information About Setup Command ] 
? Help E Exit Setup N Newpassword S Signature L collectionList D Directory  
O OTHER CMDS P Printer C Config A AddressBooks R Rules K Kolor 

图 2:Alpine 设置菜单

设置菜单将大量设置项分组为相关类别,希望使您想要的设置项更容易找到。如果您看不到所有命令,请使用 向下翻页向上翻页 滚动浏览命令。

我将从获取电子邮件所需的设置开始——这是 Alpine 的全部目的——启动并运行。

配置

配置部分包含 15 页(在我的大屏幕上)的选项和功能配置项。这些设置可用于设置您的 SMTP 和 IMAP 连接到电子邮件服务器,并定义 Alpine 许多方面的工作方式。在这些示例中,我将使用 example.com 域名(这是我用于测试和实验的虚拟网络)。Alpine 的配置存储在 ~/.pinerc 文件中,该文件在您首次启动 Alpine 时创建。

设置配置菜单的第一页包含配置 Alpine 以发送和接收电子邮件所需的大多数设置

ALPINE 2.24 SETUP CONFIGURATION Folder: INBOX No Messages

Personal Name = <No Value Set: using "Test User"> 
User Domain = <No Value Set> 
SMTP Server (for sending) = <No Value Set> 
NNTP Server (for news) = <No Value Set> 
Inbox Path = <No Value Set: using "inbox"> 
Incoming Archive Folders = <No Value Set> 
Pruned Folders = <No Value Set> 
Default Fcc (File carbon copy) = <No Value Set: using "sent-mail"> 
Default Saved Message Folder = <No Value Set: using "saved-messages"> 
Postponed Folder = <No Value Set: using "postponed-msgs"> 
Read Message Folder = <No Value Set> 
Form Letter Folder = <No Value Set> 
Trash Folder = <No Value Set: using "Trash"> 
Literal Signature = <No Value Set> 
Signature File = <No Value Set: using ".signature"> 
Feature List =
Set Feature Name
--- ----------------------
[ Composer Preferences ]
[X] Allow Changing From (default)
[ ] Alternate Compose Menu 
[ ] Alternate Role (#) Menu 
[ ] Compose Cancel Confirm Uses Yes 
[ ] Compose Rejects Unqualified Addresses 
[ ] Compose Send Offers First Filter 
[ ] Ctrl-K Cuts From Cursor 
[ ] Delete Key Maps to Ctrl-D 
[ ] Do Not Save to Deadletter on Cancel 
[Already at start of screen]
? Help E Exit Setup P Prev - PrevPage A Add Value % Print 
O OTHER CMDS C [Change Val] N Next Spc NextPage D Delete Val W WhereIs

图 3:Alpine 设置配置菜单的第一页

您可以在此处定义与电子邮件服务器通信所需的参数。要更改设置,请使用 箭头 键将选择栏移动到所需的配置项,然后按 Enter 键。您可以在图 3 中看到,没有任何基本配置项设置了值。

个人姓名 项使用 Unix /etc/passwd 条目的 Gecos 字段 来获取登录用户的默认姓名。这只是 Alpine 用于显示的姓名,在接收或发送电子邮件方面没有任何作用。我通常称之为“美观名称”。在这种情况下,默认名称很好,所以我将其保留原样。

有一些配置项您必须设置。从 用户域名 开始,它是当前计算机的域名。我的是我用于测试和我书籍中的示例的虚拟机。使用命令行获取完全限定域名 (FQDN) 和主机名。在图 4 中,您可以看到域名是 example.com

$ hostnamectl
Static hostname: testvm1.example.com
Icon name: computer-vm
Chassis: vm
Machine ID: 616ed83d97594a53814c35bc6c078d43
Boot ID: fd721c46a9c44c9ab8ea392cef77b661
Virtualization: oracle
Operating System: Fedora 33 (Xfce)
CPE OS Name: cpe:/o:fedoraproject:fedora:33
Kernel: Linux 5.10.23-200.fc33.x86_64
Architecture: x86-64

图 4:获取主机名和域名

获得 FQDN 后,选择 用户域名 条目,然后按 Enter 键以在 Alpine 屏幕底部看到输入字段(如图 5 所示)。键入您的域名,然后按 Enter 键(使用您的网络域名和服务器名称)

ALPINE 2.24 SETUP CONFIGURATION Folder: INBOX No Messages

Personal Name = <No Value Set: using "Test User"> 
User Domain = <No Value Set> 
SMTP Server (for sending) = <No Value Set> 
NNTP Server (for news) = <No Value Set> 
Inbox Path = <No Value Set: using "inbox"> 
Incoming Archive Folders = <No Value Set> 
Pruned Folders = <No Value Set> 
Default Fcc (File carbon copy) = <No Value Set: using "sent-mail"> 
Default Saved Message Folder = <No Value Set: using "saved-messages"> 
Postponed Folder = <No Value Set: using "postponed-msgs"> 
Read Message Folder = <No Value Set> 
Form Letter Folder = <No Value Set> 
Trash Folder = <No Value Set: using "Trash"> 
Literal Signature = <No Value Set> 
Signature File = <No Value Set: using ".signature"> 
Feature List =
Set Feature Name
--- ----------------------
[ Composer Preferences ]
[X] Allow Changing From (default)
[ ] Alternate Compose Menu 
[ ] Alternate Role (#) Menu 
[ ] Compose Cancel Confirm Uses Yes 
[ ] Compose Rejects Unqualified Addresses 
[ ] Compose Send Offers First Filter 
[ ] Ctrl-K Cuts From Cursor 
[ ] Delete Key Maps to Ctrl-D 
[ ] Do Not Save to Deadletter on Cancel 
Enter the text to be added : example.com 
^G Help 
^C Cancel Ret Accept 

图 5:在文本输入字段中键入域名。

必需配置

以下是您发送和接收电子邮件所需的基本配置项

  • 个人姓名
    • 您的姓名
    • 这是 Alpine 在电子邮件的“发件人”和“退信地址”字段中使用的美观名称。
  • 用户域名
    • example.com:25/user=SMTP_Authentication_UserName
    • 这是您的电子邮件客户端的电子邮件域名。这可能与用户域名不同。此行还包含 SMTP 端口号和 SMTP 身份验证的用户名。
  • SMTP 服务器
    • SMTP
    • 这是出站 SMTP 电子邮件服务器的名称。它与用户域名结合使用以创建电子邮件服务器的 FQDN。
  • 收件箱路径
    • {IMAP_server)}收件箱
    • 这是用花括号 ({}) 括起来的 IMAP 服务器的名称和收件箱的名称。请注意,此目录位置与入站 IMAP 电子邮件不同。服务器上收件箱的常用位置是 /var/spool/mail/user_name
  • 默认 Fcc(文件抄送)
    • {IMAP_server)}mail/sent
    • 这是存储已发送邮件的邮箱(文件夹)。服务器上的默认邮件目录通常是 ~/mail,但在此条目和接下来的两个条目中必须指定 mail/,否则文件夹将放置在主目录中。
  • 默认已保存邮件文件夹
    • {IMAP_server)}mail/saved-messages
    • 这是在将邮件保存到文件夹时使用的默认文件夹,如果您不使用 ^t 指定其他文件夹。
  • 回收站文件夹
    • {IMAP_server)}mail/Trash
  • 文字签名
    • 签名字符串
    • 我不使用此功能,但它是指定简单签名的简便位置。
  • 签名文件
    • ~/MySignature.sig
    • 这指向包含您的签名文件的文件。

可选配置

以下是我更改的功能,使 Alpine 更符合我的喜好。它们与使 Alpine 发送和接收电子邮件无关,而是与使 Alpine 以您想要的方式工作有关。除非另有说明,否则我已打开所有这些功能。默认情况下打开的功能在 Alpine 显示中旁边带有字符串 (default)。由于它们已经打开,因此我不会描述它们。

  • 备用角色 (#) 菜单: 这允许在同一客户端和服务器上使用不同电子邮件地址的多个身份。服务器必须配置为允许将多个地址传递到您的主电子邮件帐户。
  • 撰写拒绝不合格地址: Alpine 将不接受未完全限定的地址。也就是说,它必须采用 <username@example.com> 的形式。
  • 启用 Sigdashes: 这使 Alpine 能够自动在签名正上方的行中添加破折号 (--)。这是一种常见的界定签名开始的方式。
  • 阻止在密码文件中查找用户: 这阻止从 passwd 文件的 Gecos 字段中查找完整用户名。
  • 发送前拼写检查: 虽然您可以在撰写电子邮件时随时调用拼写检查器,但这会在您使用 ^X 按键发送电子邮件时强制进行拼写检查。
  • 在回复中包含标头: 这会在您回复时包含邮件的标头。
  • 在回复中包含文本: 这会在您的回复中包含原始邮件的文本。
  • 签名在底部: 许多人喜欢将签名放在电子邮件的最底部。此设置更改了默认设置,默认设置将签名放在回复的末尾和回复邮件之前。
  • 保留原始字段: 当您回复邮件时,这将保留 收件人:抄送: 字段中的原始地址。如果在您回复邮件时禁用此功能,则原始发件人将添加到 收件人: 字段,所有其他收件人将添加到 抄送: 字段,并且您的地址将添加到 发件人: 字段。
  • 启用后台发送: 这加快了 Alpine 用户界面在发送电子邮件时的响应速度。
  • 启用详细 SMTP 发布: 这会在与服务器进行 SMTP 对话期间生成更详细的信息。它是系统管理员的问题确定辅助工具。
  • 空白主题时警告: 这可以防止发送没有主题的电子邮件。
  • 组合文件夹显示: 这将所有文件夹集合组合到单个主显示中。否则,集合将位于单独的视图中。
  • 组合子目录显示: 这将所有子目录的集合组合到单个主显示中。否则,子目录将位于单独的视图中。这在搜索要附加或保存文件的子目录时很有用。
  • 启用传入文件夹集合: 这将所有传入文件夹与收件箱列在同一集合中。传入文件夹可以与 procmail 等工具一起使用,以将电子邮件预先分类到收件箱以外的文件夹中,并使查看新电子邮件分类到的文件夹更容易。
  • 启用传入文件夹检查: 这使 Alpine 能够检查传入文件夹集合中的新电子邮件。
  • 传入检查包括总数: 这显示传入文件夹中旧邮件和新邮件的数量。
  • 文件夹的展开视图: 当您查看 文件夹列表 屏幕时,这将显示每个集合中的所有文件夹。否则,仅显示集合,并且在选择之前不会显示文件夹。
  • 单独的文件夹和目录条目: 如果您的邮件目录具有使用相同名称的电子邮件文件夹和常规目录,这将导致 Alpine 将它们单独列出。
  • 使用垂直文件夹列表: 这首先垂直然后水平排序邮件文件夹。默认设置为先水平,然后垂直。
  • 将日期转换为本地时间: 默认情况下,所有日期和时间都以其原始时区显示。这会将日期转换为以本地时间显示。
  • 在标题栏中显示排序: Alpine 可以使用多个条件对邮件文件夹中的电子邮件进行排序。这会导致排序条件显示在标题栏中。
  • 启用邮件查看地址链接: 这会突出显示电子邮件正文中的电子邮件地址。
  • 启用邮件查看附件链接: 这会突出显示电子邮件正文中的 URL 链接。
  • 首选纯文本: 许多电子邮件包含两个版本,纯文本和 HTML。当此功能打开时,Alpine 始终显示纯文本版本。您可以使用 A 键切换到“首选”版本,通常是 HTML 版本。我通常发现纯文本更容易可视化电子邮件的结构并阅读电子邮件。这可能取决于发送客户端,因此我在需要时使用 A 键。
  • 启用通过 Y 命令打印: 这使用之前的默认值 Y 打印邮件。由于 Y 也用于确认许多命令,因此按键可能会意外导致您打印邮件。新的默认值为 %,以防止意外打印。我喜欢使用 Y 的简便性,但它确实导致了一些额外的打印作业,所以我正在考虑关闭此功能。
  • 在邮件之间打印换页符: 这会将每封邮件打印在新的一张纸上。
  • 自定义标头: 自定义标头允许覆盖默认的 发件人:回复地址: 标头。我将我的设置为
    -   From: "David Both" <[david@example.com](mailto:david@both.org)>
    -   Reply-To: "David Both"
        <[david@example.com](mailto:david@both.org)>
  • 排序键: 默认情况下,Alpine 按到达时间对文件夹中的邮件进行排序。我发现这有点令人困惑,所以我将其更改为 日期,这可能与到达时间有很大不同。许多垃圾邮件发送者使用过去或未来的日期和时间,因此此设置可以将未来的邮件排序到列表的顶部(或底部,取决于您对正向或反向排序的偏好)。
  • 图像查看器: 此功能允许您指定在显示附加到或嵌入在电子邮件中的图形时使用的图像查看器。这仅在使用图形桌面上的终端窗口中的 Alpine 时有效。它在纯文本虚拟控制台中不起作用。我总是将此设置为 =okular,因为 Okular 是我首选的查看器。
  • URL 查看器: 这告诉 Alpine 您想要使用的 Web 浏览器。我将其设置为 = /bin/firefox,但您可以使用 Chrome 或其他浏览器。请务必验证 Firefox 可执行文件的位置。

打印

设置 Alpine 进行打印很容易。从 设置 页面中选择 打印机 菜单。这允许您设置默认打印机并定义自定义打印命令。默认值可能是 attached-to-ansi。将光标向下移动到 标准 UNIX 打印命令 部分,然后突出显示打印机列表。 

Standard UNIX print command

Using this option may require setting your "PRINTER" or "LPDEST"

environment variable using the standard UNIX utilities.

Printer List: "" lpr

然后按 Enter 键将标准 Unix lpr 命令设置为默认值。

最后的想法

这不是 Alpine 配置和使用的分步指南。相反,我试图涵盖使其启动并运行以发送和接收电子邮件的基础知识。我还分享了一些配置更改,这些更改使我的 Alpine 体验更加可用。这些是我发现对我的体验最重要的配置项;您可能会发现其他配置项对您更重要。

我已经使用 Alpine 几个月了,并且对体验非常满意。文本界面帮助我专注于消息,而不是分散注意力的图形和动画。如果我选择,我可以查看这些内容,但在 99% 的情况下,我选择不看。

Alpine 易于使用,并且具有大量可以配置的功能,以提供最佳的电子邮件客户端体验。

使用 帮助 功能获取有关我上面探讨的字段以及我未涵盖的字段的更多信息。您无疑会找到比默认设置或我更改的设置更适合您的 Alpine 配置方式。我希望这至少能为您提供一个开始,以按照您想要的方式设置 Alpine。

接下来阅读什么
David Both
David Both 是一位开源软件和 GNU/Linux 倡导者、培训师、作家和演讲者。自 1996 年以来,他一直从事 Linux 和开源软件工作,自 1969 年以来一直从事计算机工作。他是“系统管理员 Linux 哲学”的坚定拥护者和传播者。

2 条评论

非常酷!

我对 Alpine 有很多美好的回忆。它是我最早认真使用的基于终端的应用程序之一。

© . All rights reserved.