消息 - 多媒体邮件程序

作者:Terry Gliedt
简介

AUIS 的根源可以追溯到 1982 年,当时卡内基梅隆大学和 IBM 公司决定联合开发一个基于个人计算机的校园计算设施,以取代当时校园内的分时系统。IBM 不仅提供了慷慨的资金,还提供了一些才华横溢的人才和 IBM 开发项目的访问权限。

结果就是我们所知的 Andrew 用户界面系统(Andrew User Interface System,AUIS)和 Andrew 文件系统(Andrew File System,AFS)(www.transarc.com/Product/AFS/FAQ/faq.html)。该文件系统构成了 Transarc 公司(http://www.transarc.com/分布式文件系统 (DFS) 的基础,并且是开放系统基金会(Open System Foundation,www.osf.org)软件的一部分。

Andrew 联盟(Andrew Consortium,www.cs.cmu.edu/afs/cs.cmu.edu/project/atk-ftp/web/andrew-home.html)由多家公司和大学组成,为 AUIS 的当前开发提供资金。AUIS 可在各种平台上使用,包括 Linux、AIX、Solaris、Ultrix、HP UX 以及其他平台。

在 6 月初,Andrew 用户界面系统(AUIS)的 6.3 版本由 Andrew 联盟发布。这促成了 auis63L?-wp.tgz(ftp://ftp.andrew.cmu.edu/pub/AUIS/bin-dist/linux)的发布,其中仅包含 AUIS 的一小部分,适合作为文字处理器使用。

现在又发布了另一个软件包 auis63L?-mail.tgz,发布到了 sunsite.unc.edu(ftp://sunsite.unc.edu/pub/Linux)的 /pub/Linux/X11/andrew 目录下。该软件包为 Linux 社区提供了一个强大的邮件系统,该系统利用我们在文字处理软件包中看到的工具的力量来提供多媒体邮件。

多媒体邮件

电子邮件正变得非常流行和普遍,但是我们使用的大多数工具自最早的电子邮件系统发明以来几乎没有变化。Andrew 项目中的一项主要工作是开发 Andrew 邮件系统(Andrew Mail System,AMS)及其邮件阅读工具 messages。CMU 的开发人员想要一个邮件程序,它不仅满足传统邮件系统的需求,还可以用于公共和私人公告板。如今,在 CMU,人们可以使用 messages 关注超过 7500 个公告板。数据的规模是 messages 设计中的一个主要因素。

messages 的开发人员的另一个目标是提供 真正的 多媒体邮件系统。AUIS 数据流从一开始就被设计成可邮件传输的。这意味着它仅使用 7 位 ASCII 数据,对于可能遇到的各种邮件系统来说,它不会“太长”。从技术角度来看,这种设计效果良好。

MIME

早期版本的 messages 遇到了“鸡和蛋”综合症。由于当时没有标准,大多数人不愿意使用 messages,因为没有足够多的人使用它。另一方面,如果有大量的人使用它,那么每个人都会喜欢使用 messages。例如,如果电话非常罕见,只有 1% 的人拥有电话,那么您的企业不太可能安装电话。另一方面,今天没有企业会想到不安装电话,因为几乎每个人都拥有电话。

似乎每个人都认为 messages 很棒——但在当时,您只能向其他使用 messages 的人发送 AUIS 邮件。在像 CMU 这样的大型同构站点上,这效果很好。但是如何说服世界其他地方进行转换呢?

经过多年的努力,答案变得显而易见:你不能。不是每个人都会转换为 messages——无论它可能有多么出色。messages 的主要架构师之一 Nathaniel Borenstein 决定采取另一种策略。他提出了一种名为 MIME(多用途互联网邮件扩展)的架构,该架构允许人们以架构化的格式发送非传统邮件(如图片)。Nathaniel 对 messages 进行了改造,使其以 MIME 格式而不是原生 Andrew 邮件格式发送邮件。当接收 MIME 邮件时,他修改了 messages 以调用一个新程序 metamail,以在您的机器上显示非文本内容。在演示了这一切都有效之后,Nathaniel 为几个常见的邮件程序提供了类似的更新,以同样的方式支持 MIME。

例如,如果我使用 messages 发送带有图片的邮件给在 SUN 工作站上使用其他邮件程序的人,则接收者的邮件程序最终可能会调用 xv 来显示图片。在非 X 环境中,可能会调用其他工具。最后,如果图片无法显示,则邮件程序可能会将图片“转换”为一些文本,例如“此处提供了一张图片,但无法显示”。

Messages

Messages 实际上只是一个更大的系统 Andrew 邮件系统的一部分。该系统支持阅读和发布到公告板以及 Andrew 文件系统中的单元之间的传递。我在这里不会讨论任何这些主题,而只是将 messages 描述为传统的邮件用户代理。

要查看您的邮件,请从 xterm 窗口调用命令 messages。在图 1 中,您可以看到生成的 messages 窗口有三个部分。顶部窗口显示您可以保存邮件的文件夹列表。“mail”文件夹是您的收件箱,邮件会保存在这里,直到您将其移动到其他位置或删除它。当您第一次使用 messages 时,您的唯一文件夹将是 mail 文件夹。要开始,请选择一个文件夹(可能是 mail),方法是指向名称并用鼠标左键单击。

中间窗口现在将显示该文件夹中邮件的摘要。选择其中一个,您将在摘要行中看到粗体显示,并在底部窗口中看到邮件的文本。在图 1 中,您会注意到几件事。邮件的标头(From:、To: 等)以粗体显示。当您删除一封邮件时,摘要行会更改为较小的字体,但实际文件在您显式删除它之前不会被删除。更细心的读者会注意到滚动条显示 From: 行上方还有一些内容。此数据是您通常不想看到的正常邮件标头。如果您查看这封特定邮件的标头,您会看到它包含以下行

     MIME-Version: 1.0
     Content-Type: multipart/alternative;
        boundary="Interpart.Boundary.ohyS2z9z0001I1RlEF"

表明这是 MIME 邮件,由几个部分组成。如果您查看此邮件的摘要行,您会注意到短语“(60+1)”,这意味着正文由 60 个字符组成,并包含一个嵌入项。

在邮件正文中,您可以看到短语“Information SuperHighway”以更大的粗体字体显示。MIME 的 metamail 或其他低端 MIME 阅读器会在没有字体功能的系统上将其转换为纯文本。在某些系统上,图片可能会在单独的窗口中显示。由于 messages 具有 AUIS 的所有功能,因此文本和图像会像预期那样内联显示。

发送邮件

要撰写和发送邮件给某人,请在 messages 菜单卡上选择 发送/发布消息。这将弹出一个如图 2 所示的窗口。在许多方面,这只是另一个 ez 会话。(ez 是 AUIS 中的基本编辑器,在 Linux Journal 第 4 期中进行了描述。)在此特定示例中,我选择了我们在图 1 中看到的邮件,然后我在 messages 菜单卡上选择了 回复发件人。这弹出了 messages-send 窗口,其中 Subject:To: 字段已填写。然后我选择了原始邮件的第一句话(因此它以反色视频显示),然后在 messages-send 窗口中,在 Other 菜单卡上选择了 摘录正文。这导致了您看到的缩进和斜体的 摘录 行。

如果我们没有标记任何文本而只是选择了此菜单卡,则将复制、缩进和斜体化整个原始邮件正文。

请注意,摘录区域可能包含不仅仅是简单的文本,例如大的粗体 Information SuperHighway。事实上,我们也可以包含您在图 1 中看到的图像。要发送邮件,请在 messages-send 菜单卡上选择 发送/发布。如果邮件包含多媒体(除简单的纯 ASCII 文本之外的任何内容),您将收到如图 3 所示的提示。如果您选择 移除格式并发送messages 将进行一些简单的文本转换。摘录将删除字体信息,并且摘录文本本身将以“>”为前缀,这在许多邮件阅读器中很常见。正如您在图 3 中看到的那样,您可以选择以原始 AUIS 格式或 MIME 格式发送邮件。您可以完全避免这个问题,并通过在您的 $HOME/preferences 文件中添加如下条目来始终以 MIME 格式发送

     *.mailsendingformat: mime

执行命令 auishelp preferences 并阅读有关 mailsendingformat 设置的更多信息。

选项

每个人都想以自己的方式处理邮件——messages 也是如此。Messages 有许多您可以设置的选项——如此之多,以至于它提供了自己的界面来设置和查询这些选项。如果您在 Other 菜单卡上选择 设置选项messages 将显示选项列表及其当前设置。我敢打赌,一旦您的 messages 正常工作,您很快就会仔细研究这些选项并尝试它们。

与其他邮件阅读器的兼容性

设计人员选择不保持 messages 数据库与 elm 等其他 Unix 邮件阅读器的数据库兼容。在传统的 Unix 邮件用户代理(例如,mail)中,当收到邮件时,它首先存储在 /usr/spool/mail/$USER 中,作为一个简单的“平面”文件。所有邮件都混杂在一个物理文件中。这取决于邮件阅读器来对其进行排序。当文件很小时,这工作正常,但是当您有 100 封多媒体邮件,每封 50K 大小时,它开始变得笨重和缓慢。

现在,当您调用邮件阅读器(例如,elm)时,阅读器会向您显示 /usr/spool/mail/$USER 中的内容。当您将邮件保存到文件夹时,邮件会被附加到 $HOME/Mail 中的某个文件(例如,在我的情况下为 ~/Mail/tpg)。就像 /usr/spool/mail 中的邮件一样,这也是一个包含许多逻辑文件(邮件)的简单文件。随着您保留越来越多的邮件,它将遭受更严重的性能问题。大多数邮件阅读器允许您为邮件类别创建单独的文件夹——但每个文件夹仍然使用一个单一的整体文件。

在开发 AUIS 的世界中,一个人拥有数百封邮件(以及大量多媒体邮件)是很常见的。因此,采用了另一种不兼容的方法。Messages 将每封邮件作为 单独的文件 保存在文件夹(即目录)中,并构建索引,以便它可以快速显示文件夹中的内容。这些文件夹都保存在 $HOME/.MESSAGES 目录中。

这种方法的缺点是您无法在 elmmessages 之间直接切换。Messages 接收的任何邮件在您的下一个 elm 会话中都不可用。同样,您过去使用 elm 收到的邮件在 messages 中也不直接可用。但是,这并不意味着无法完成——但您必须“手动”完成。我已经开发了一些技术,使您能够“转换”您的 elm 邮件以在 messages 中使用,反之亦然。我不会详细描述这些,而是引导您阅读 /usr/andrew/README.ez.mail 中的相关内容,该文件在您安装 auis63L?-mail 软件包时创建。

打印和预览

就像 AUIS 打印其他文本文档一样,messages 将使用 PostScript 打印您的邮件。在此版本中,AUIS 对象都生成 troff 输出——以及大量的嵌入式 PostScript。然后处理 troff 以生成必要的 PostScript。默认打印命令将调用 shell,/usr/andrew/etc/atkprint。默认预览命令调用 shell /usr/andrew/etc/atkpreview。这些 shell 中的每一个都将调用 groff 格式化程序以生成 PostScript 输出。在 atkpreview 中,groff 输出被定向到 ghostview

更多信息

邮件列表可在 info-andrew@andrew.cmu.edu 上获得(发送邮件至 info-andrew-request@andrew.cmu.edu 以订阅)。新闻组 comp.soft-sys.andrew 专门讨论 AUIS。World Wide Web 主页可在 www.cs.cmu.edu:/afs/cs.cmu.edu/project/atk-ftp/web/andrew-home.html 找到。Prentice-Hall 出版了一本书,使用 Andrew 工具包进行多媒体应用程序开发(ISBN 0-13-036633-1)。通过向 info-andrew-request@andrew.cmu.edu 发送邮件并询问手册 AUIS 用户指南,可以从联盟获得一份优秀的教程。

Terry Gliedt (tpg@mr.net) 去年离开了蓝色巨人 IBM,在那里工作了 20 多年。虽然他使用 Un*x 和 AUIS 已经超过六年了,但他对 Linux 来说还是一个相对的新手。Terry 从事合同编程,教授 C/C++ 和 Unix 课程,并撰写一些技术文档。

加载 Disqus 评论