> For the complete documentation index, see [llms.txt](https://handbook.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://handbook.bsdcn.org/di-32-zhang-dian-zi-you-jian/32.6.-you-jian-yong-hu-dai-li.md).

# 32.6.邮件用户代理

MUA（邮件用户代理）是用于发送和接收电子邮件的应用程序。随着电子邮件不断“演变”并变得越来越复杂，MUA 越来越强大，为用户提供更多功能和灵活性。FreeBSD Ports 的 `mail` 类别包含许多 MUA，包括 Evolution 或 Balsa 等图形邮件客户端，以及 mutt 或 alpine 等基于控制台的客户端。

## 32.6.1. mail

[mail(1)](https://man.freebsd.org/cgi/man.cgi?query=mail\&sektion=1\&format=html) 是 FreeBSD 默认安装的 MUA。它是基于控制台的 MUA，提供发送和接收文本电子邮件所需的基本功能。它提供有限的附件支持，并且只能访问本地邮箱。

尽管 [mail(1)](https://man.freebsd.org/cgi/man.cgi?query=mail\&sektion=1\&format=html) 本身不支持与 POP 或 IMAP 服务器的交互，但可以使用 fetchmail 或 getmail 等应用程序将这些邮箱下载到本地的 `mbox` 中。

要发送和接收邮件，运行 [mail(1)](https://man.freebsd.org/cgi/man.cgi?query=mail\&sektion=1\&format=html)：

```sh
% mail
```

[mail(1)](https://man.freebsd.org/cgi/man.cgi?query=mail\&sektion=1\&format=html) 会自动读取用户在 **/var/mail** 中的邮箱。如果邮箱为空，程序会退出并显示一条消息，表示未找到邮件。如果有邮件，则会启动应用程序界面，并显示消息列表。

邮件会自动编号，如下所示：

```sh
Mail version 8.1 6/6/93.  Type ? for help.
"/var/mail/username": 3 messages 3 new
>N  1 root@localhost        Mon Mar  8 14:05  14/510   "test"
 N  2 root@localhost        Mon Mar  8 14:05  14/509   "user account"
 N  3 root@localhost        Mon Mar  8 14:05  14/509   "sample"
```

现在，可以输入 t 后跟邮件编号阅读邮件。

以下示例读取第一封电子邮件：

```sh
& t 1
Message 1:
From root@localhost  Mon Mar  8 14:05:52 2004
X-Original-To: username@localhost
Delivered-To: username@localhost
To: username@localhost
Subject: test
Date: Mon,  8 Mar 2004 14:05:52 +0200 (SAST)
From: root@localhost (Charlie Root)

This is a test message, please reply if you receive it.
```

如上所示，消息将显示完整的头信息。

要再次显示邮件列表，按 h 键。

如果需要回复邮件，可以按 [mail(1)](https://man.freebsd.org/cgi/man.cgi?query=mail\&sektion=1\&format=html) 的 R 或 r 键。R 会让 [mail(1)](https://man.freebsd.org/cgi/man.cgi?query=mail\&sektion=1\&format=html) 只回复发件人，而 r 会回复所有其他收件人。这些命令后可以加上邮件编号来回复特定邮件。输入回复内容后，邮件的结尾应该是单独的一行“.”。

以下是示例：

```sh
& R 1
To: root@localhost
Subject: Re: test

Thank you, I did get your email.
.
EOT
```

要发送新邮件，按 m，然后输入收件人电子邮件地址。可以通过逗号分隔多个收件人地址。然后输入邮件主题，接着是邮件内容。邮件的结尾应输入单独的一行“.”标记。

```sh
& mail root@localhost
Subject: I mastered mail

Now I can send and receive email using mail ... :)
.
EOT
```

在使用 [mail(1)](https://man.freebsd.org/cgi/man.cgi?query=mail\&sektion=1\&format=html) 时，按 ? 可以随时显示帮助。有关如何使用 [mail(1)](https://man.freebsd.org/cgi/man.cgi?query=mail\&sektion=1\&format=html) 的更多帮助，请参阅 [mail(1)](https://man.freebsd.org/cgi/man.cgi?query=mail\&sektion=1\&format=html)。

> **注意**
>
> [mail(1)](https://man.freebsd.org/cgi/man.cgi?query=mail\&sektion=1\&format=html) 设计时并未考虑处理附件，因此处理附件时表现不佳。较新的 MUA 处理附件更智能。

## 32.6.2. Mutt

Mutt 是强大的 MUA，具有许多功能，包括：

* 消息线程功能。
* PGP 支持，用于数字签名和电子邮件加密。
* MIME 支持。
* Maildir 支持。
* 高度可定制。

有关 Mutt 的更多信息，请参阅 [http://www.mutt.org](http://www.mutt.org/)。

> **技巧**
>
> 值得一提的是 Mutt 的分支 NeoMutt，它增加了更多功能。有关更多信息，请参阅 [NeoMutt 网站](https://neomutt.org/about.html)。如果选择使用 NeoMutt，请将以下命令示例中的 `mutt` 替换为 `neomutt`。

可以通过安装 Port [mail/mutt](https://cgit.freebsd.org/ports/tree/mail/mutt/) 来安装 Mutt。Port 安装完成后，可以通过执行以下命令启动 Mutt：

```sh
% mutt
```

Mutt 会自动读取并显示 **/var/mail** 中的用户邮箱内容。如果没有找到邮件，Mutt 将等待用户命令。以下示例显示 Mutt 如何显示消息列表：

![Mutt 邮件客户端显示消息列表](https://docs.freebsd.org/images/books/handbook/mail/mutt1.png)

要阅读电子邮件，使用光标键选择邮件并按回车键。以下是 Mutt 显示电子邮件的示例：

![Mutt 邮件客户端显示电子邮件](https://docs.freebsd.org/images/books/handbook/mail/mutt2.png)

与 [mail(1)](https://man.freebsd.org/cgi/man.cgi?query=mail\&sektion=1\&format=html) 类似，Mutt 也可以选择只回复发件人，或者回复所有收件人。要只回复发件人，按 r 键。要向原始发件人以及所有收件人发送群体回复，按 g 键。

> **注意**
>
> 默认情况下，Mutt 使用 [vi(1)](https://man.freebsd.org/cgi/man.cgi?query=vi\&sektion=1\&format=html) 编辑器创建和回复电子邮件。每个用户可以通过在主目录中创建或编辑 **.muttrc** 文件并设置 `editor` 变量，或设置 `EDITOR` 环境变量来定制此行为。有关 Mutt 配置的更多信息，请参阅 <http://www.mutt.org/>。

要撰写新邮件，按 m 键。给定有效的主题后，Mutt 将启动 [vi(1)](https://man.freebsd.org/cgi/man.cgi?query=vi\&sektion=1\&format=html) 编辑器以便撰写电子邮件。邮件内容完成后，保存并退出 `vi`。Mutt 会继续显示邮件的摘要屏幕，准备发送邮件。要发送邮件，按 y 键。以下是摘要屏幕的示例：

![Mutt 邮件客户端显示摘要屏幕](https://docs.freebsd.org/images/books/handbook/mail/mutt3.png)

Mutt 提供广泛的帮助功能，可以通过按 ? 键从大多数菜单中访问。屏幕顶部还会在适当的地方显示键盘快捷键。

## 32.6.3. alpine

alpine 面向的是初学者用户，但也包括一些高级功能。

> **警告**
>
> alpine 过去曾发现若干远程漏洞，这些漏洞让远程攻击者能通过发送特制的电子邮件执行任意代码，从而以本地系统用户的身份运行。尽管修复完成了*已知*的问题，但 alpine 的代码编写风格不安全，FreeBSD 安全官员认为可能仍存在其他未发现的漏洞。用户自行承担安装 alpine 的风险。

可以通过 Port [mail/alpine](https://cgit.freebsd.org/ports/tree/mail/alpine/) 安装当前版本的 alpine。安装完成后，可以通过以下命令启动 alpine：

```sh
% alpine
```

首次运行 alpine 时，它会显示一页问候信息，简要介绍软件，并请求用户发送一封匿名电子邮件，帮助开发团队判断有多少用户在使用该客户端。按 Enter 发送此匿名信息，或者按 E 退出问候页面而不发送任何信息。以下是问候页面的示例：

![alpine 邮件客户端显示问候页面](https://docs.freebsd.org/images/books/handbook/mail/pine1.png)

接着显示主菜单，用户可以使用光标键导航。主菜单提供了快捷方式，用于撰写新邮件、浏览邮件目录以及管理地址簿条目。在主菜单下方，会显示与当前任务相关的键盘快捷方式。

alpine 默认打开的目录是 **inbox**。按 I 或选择 **MESSAGE INDEX** 选项，查看邮件索引：

![alpine 邮件客户端显示默认目录](https://docs.freebsd.org/images/books/handbook/mail/pine2.png)

邮件索引显示当前目录中的邮件，用户可以使用光标键导航。按 Enter 可以阅读选中的邮件。

![alpine 邮件客户端显示邮件索引](https://docs.freebsd.org/images/books/handbook/mail/pine3.png)

在以下截图中，显示了 alpine 展示的邮件内容。屏幕底部显示了上下文相关的键盘快捷方式。示例是 r，它告诉 MUA 回复当前显示的邮件。

![alpine 邮件客户端显示电子邮件](https://docs.freebsd.org/images/books/handbook/mail/pine4.png)

在 alpine 中回复邮件时，使用默认安装的 pico 编辑器。pico 使得邮件的导航变得更为简单，比 [vi(1)](https://man.freebsd.org/cgi/man.cgi?query=vi\&sektion=1\&format=html) 或 [mail(1)](https://man.freebsd.org/cgi/man.cgi?query=mail\&sektion=1\&format=html) 更适合新手用户使用。回复完成后，可以按 **Ctrl**+**X** 发送邮件。alpine 会在发送前请求确认。

![alpine 邮件客户端显示邮件撰写窗口](https://docs.freebsd.org/images/books/handbook/mail/pine5.png)

alpine 可以通过主菜单中的 **SETUP** 选项自定义。
