3. 高级主题

3.1. 别名

“别名”是一种设置伪地址的方式,它可以简单地将邮件定向到另一个(单个)地址。别名有两种类型:MUA 别名和 MTA 别名。

MUA 别名是在你的 MUA 中设置的一种个人简写方式。其他人将无法看到或使用此别名。例如,你可以写入

alias esr	Eric S. Raymond	<esr@thyrsus.com>

在你的 mutt 配置文件中。这将告诉 mutt,当它在地址行中看到“esr”时,它的行为应该如同你输入了“esr@thyrsus.com”一样。或者你可以输入“mutt esr”,展开后的地址将自动填写在“收件人”行中。

MTA 别名是你的 MTA 展开的别名;它可供所有人使用,包括你的机器上和远程的用户。要创建 MTA 别名,你必须修改系统文件,通常但不总是/etc/aliases/etc/mail/aliases(位置取决于你的 MTA)。查看系统上的别名可能对你有所启发;它应该包含许多标准别名,例如“postmaster”。

你的 MTA 也可能允许别名的目标是一个文件名,该文件将被视为邮件要附加到的邮箱(这对于存档邮件很有用)。它也可能允许别名的目标是一个程序,在这种情况下,发送到该别名的邮件将被传递给该程序的实例,并作为其标准输入。

3.2. 转发

MTA 别名通常需要管理员权限才能设置。但是,邮件用户应该能够设置自己的邮件转发,而无需管理员干预。

为了支持这一点,大多数 MTA 都遵循 sendmail 的做法,并查找名为.forward的文件,该文件位于你的主目录中。此文件的内容被解释为别名的目标,该别名应接收你的所有邮件;它应该是一个单独的地址。此功能最常见的用途是将你的邮件重定向到另一台机器上的帐户。

进一步说明:.forward 文件的存在,无论其中内容是什么,都告诉系统将该文件的内容视为你所有邮件的别名目标。如果你创建一个空的 .forward 文件,你的邮件就会消失。大多数人使用它将他们的邮件转发到另一台机器,因此最常见的情况是在第一行只有电子邮件地址,没有其他内容。MTA 将把你 .forward 文件第一行上的任何内容视为别名的目标。其他一切都会被忽略。如果目标格式错误,就像任何其他别名一样,那么邮件就会消失。

3.3. 自动回复

.forward功能的另一个常见用途是将你的邮件传递给“休假”程序。“休假”程序读取收到的邮件并自动生成罐头回复;之所以这样称呼它们,是因为最常见的罐头回复形式是通知发件人你正在休假,并且在给定的日期之前无法联系到你。

没有一种通用的标准休假程序。这有两个很好的理由:一,编写这样一个程序作为 shell 脚本或过滤器规则非常容易(见下文);二,休假程序与邮件列表的交互效果不佳。

在设置自动回复之前,你应该暂时取消订阅你加入的所有邮件列表;否则,邮件列表的所有成员都会发现他们被你的休假程序发送的罐头消息淹没了。这被认为是非常粗鲁的行为,并且会保证你在返回时受到非常冷淡的接待。

3.4. 邮件列表

邮件列表是一个伪地址,它将邮件发送给多个用户。

在其最简单的形式中,邮件列表只是一个具有多个收件人的 MTA 别名。一些小型邮件列表就是这样维护的。Sendmail 通过支持以下语法来辅助/etc/aliases,该语法将给定的邮件列表文件的内容包含在别名的目标端。它看起来像这样

admin-list:     ":include:/usr/home/admin/admin-list"

,其优点是 admin-list 文件可以位于非特权用户空间中的某个位置(只需要 root 权限来设置原始包含)。一些其他 MTA 具有类似的功能。

这些简单的列表通常被称为“邮件反射器”。邮件反射器存在一些问题。一个是来自广播失败尝试的退回消息会发送给所有用户。另一个是所有订阅和取消订阅都必须由邮件列表管理员手动完成。

一种名为邮件列表管理器的软件已经发展出来,以解决这些问题和其他相关问题。其最重要的功能是允许邮件列表用户在无需通过列表维护者的情况下订阅和取消订阅。

邮件列表管理器保留其自己的用户列表信息,并通过/etc/aliases中的程序别名连接到 MTA。例如,如果上面的 admin-list 通过 sendmail 系统上的名为 SmartList 的邮件列表管理器,则/etc/aliases的一部分可能看起来像这样

admin-list: "|/usr/home/smartlist/bin/flist admin-list"
admin-list-request: "|/usr/home/smartlist/bin/flist admin-list-request"

请注意,这是一对别名。真正的邮件列表通常有一个请求地址,用于用户订阅和取消订阅请求。将订阅/取消订阅请求发送到此类列表的主地址被认为是粗鲁和无知的行为——不要这样做。

请求地址背后的机器人可能会提供除订阅/取消订阅之外的其他功能。它可能会响应帮助请求,允许你查询谁在列表中,或为你提供对列表存档的自动访问。它也可能允许列表管理员限制仅向已知成员发布内容,将列表设置为在非成员首次发布时自动订阅,或设置各种安全策略选项。邮件列表管理器主要在这些辅助功能的设计和范围上有所不同。

不幸的是,向邮件列表请求机器人发送命令的格式不是标准的。有些期望命令在主题行中,有些忽略主题行并期望命令在消息正文中。你需要注意你首次订阅时收到的回复邮件;最好将此类邮件保存到订阅邮箱中以供日后参考。

最重要的邮件列表管理器是 majordomo、listserv、listproc 和 smartlist;majordomo 是最受欢迎的,优势相当大。最近,mailman,一个具有相当不错的基于 Web 的注册/注销/管理界面的列表管理器,变得非常流行,并且可能正在取代旧程序。Web 上有一个相当全面的此类软件包列表

有关邮件列表管理器的更多信息,请查阅列表管理器邮件列表中的资源,包括常见问题解答(注意:此列表适合操作方法问题)。

3.5. 邮件过滤器

邮件过滤器是一个程序,它位于你的本地投递代理和你之间,在你在看到邮件之前自动分发或拒绝邮件。

邮件过滤器有许多用途。最重要的用途是垃圾邮件过滤、按主题或发件人分发到多个邮箱以及自动回复邮件。

通常,你通过在你的 .forward 文件中为过滤器程序放置程序别名并编写过滤器规则文件来设置邮件过滤。过滤器规则文件的格式和位置因过滤器程序而异。

Chris Lewis 的电子邮件软件调查的第 3 部分中提供了三个主要邮件过滤器(procmail、mailagent 和 deliver)的良好功能摘要。其中最受欢迎的是 procmail(尽管其规则语法相当糟糕),它在 Linux 系统上普遍存在(实际上,通常用作系统的本地投递代理)。

3.6. 处理垃圾邮件

垃圾邮件有时被称为“UCE”(未经请求的商业电子邮件)或“UBE”(未经请求的批量电子邮件)。顾名思义,它是一种令人讨厌的广告形式,用格式信件塞满你的邮箱。(术语“垃圾邮件”来自 Monty Python 的飞行马戏团短剧,其中一群维京人不断重复吟唱“垃圾邮件 垃圾邮件 垃圾邮件 垃圾邮件……”)。

大多数垃圾邮件似乎都包含金字塔计划的招揽、色情广告,或者(令人恼火地)试图出售垃圾邮件发送程序。一些个别的垃圾邮件(如快速赚钱或 Craig Shergold 明信片骗局)非常持久,以至于成为传奇。垃圾邮件往往既冗长又不识字。这是对时间和网络带宽的巨大浪费。

如果你正被垃圾邮件淹没,请接受教育。浏览在互联网上打击垃圾邮件!页面。消灭垃圾邮件!页面在阻止或追溯垃圾邮件的方法上尤其有效。