埃里克·奥尔曼:电子邮件的“管道工”
大约有二十年的时间,地球上发送的几乎每封电子邮件都经过一位伯克利研究生的程序。埃里克·奥尔曼 (Eric Allman) 并没有设计电子邮件,他也从未声称自己设计过。他解决了电子邮件背后更枯燥、更困难的问题:让互不兼容的邮件系统(由从未交流过的人员构建)能够相互传递消息而不丢失数据。当美国计算机协会 (ACM) 在2025届评选中将他选为会士时,其引文只有四个字——致力于电子邮件的发展。
伯克利的童年
埃里克·保罗·奥尔曼 (Eric Paul Allman) 于1955年9月2日出生在加利福尼亚州的埃尔塞里托 (El Cerrito),距离定义了他一生的大学仅几英里远。他很早就接触到了高中的大型机,并由此进入了加州大学伯克利分校的计算机中心。他于1973年入读伯克利,恰逢 Unix 在美国计算机科学系普及,并于1977年获得学士学位,1980年获得硕士学位。
他从未离开过这个圈子。奥尔曼至今仍住在伯克利,他最持久的工作就是在离他成长的地方几个街区内完成的。
没人想要解决的问题
到了1970年代末,电子邮件已经存在,但并非一个单一的事物。它以几种互不兼容的形式同时存在。ARPANET 有自己的规范;本地 Unix 网络有其他的规范;不同的系统对于地址书写方式、标题应包含的内容以及应采用哪种协议传输消息存在分歧。实际上,一个网络上的用户想要给另一个网络上的用户写信,通常是很难实现的。
奥尔曼的第一个方案是 delivermail。他的第二个方案在1981年完成,名为 sendmail,它们之间的区别就是他的全部贡献所在。Sendmail 不是一个邮件系统。它是一个邮件传输代理 (Mail Transfer Agent)——一个位于邮件系统之间的路由器和翻译器,以收到的任何格式接受消息,计算出下一步的去向,并将其地址和标题重写为下一跳所需的任何格式。它支持 SMTP,后来支持 ESMTP 和 DECnet 的 Mail-11。
关键的设计决定是这些翻译工作都不是硬编码的。Sendmail 的行为由重写规则驱动——这是一种小型、紧凑的模式匹配语言,保存在配置文件中,描述了如何将一种形状的地址转换为另一种形状的地址。奥尔曼构建的是一种机制,而不是一种策略。当电子邮件发生变化时(四十年来不断如此),sendmail 本身不需要重写,只需要修改规则即可。
这就是为什么 sendmail 成为伯克利软件分发版 (BSD) 的一部分,并随后成为本质上每个 Unix 系统默认的邮件传输代理的原因,这也是为什么它的配置文件在系统管理员中具有传奇色彩的原因。即使是该软件枯燥的描述也承认其配置语法相当复杂。权力和痛苦来自于同一个地方。
Syslog
埋藏在 sendmail 中的第二个发明逃逸了出来,并征服了比第一个更广阔的领域。奥尔曼需要一种一致的方法来记录程序的工作内容,因此他编写了一个名为 syslog 的日志设施。它最初是专门为 sendmail 设计的。用互联网名人堂的话说,它现在已成为几乎所有开放系统和外围设备中事实上的标准日志机制——即当服务器、路由器和打印机发生任何事情时,写入它们所产生信息的工具。它在被编写为2001年的 RFC 3164 并随后被 RFC 5424 取代之前,已经非正式地标准化了二十年。
奥尔曼还有两个较小的作品在日常使用中得以留存。奥尔曼缩进风格 (Allman indent style),有时被称为 BSD 风格,是 C 语言程序员放置大括号的两种方式之一。而 BSD Trek 至今仍包含在 Linux 的 bsdgames 包中,这是他将 Fortran 版本的《星际迷航》(Star Trek) 游戏移植到 C 语言的作品。
公司
奥尔曼曾在数据库公司 Britton Lee(后来的 Sharebase)以及国际计算机科学研究所工作。1998年,他和格雷格·奥尔森 (Greg Olson) 在加利福尼亚州埃默里维尔 (Emeryville) 创立了 Sendmail, Inc.,旨在与开源版本并行开发商业软件;该公司最终被 Proofpoint 收购。他在那个时期增加的架构 milter 允许第三方将过滤器插入邮件路径——后来垃圾邮件和病毒过滤功能就是通过这个钩子移植到世界邮件服务器上的。奥尔曼曾表示,他预计电子邮件未来的大部分演变将发生在 milter 中,而不是传输代理本身。
他还帮助创建了 ACM Queue,特意将其定位于学者不阅读的学术期刊和由广告商塑造的行业杂志之间的空隙,并在早先担任 USENIX 的领导职务后,担任其编辑委员会成员和 ACM 理事会成员。他与布莱恩·科斯塔莱斯 (Bryan Costales) 合著了 O'Reilly 出版的《Sendmail》一书,为《开源应用架构》(The Architecture of Open Source Applications) 做出了贡献,后来在伯克利的 Swarm 实验室从事分布式计算和物联网平台的研究。
为什么埃里克被称为天才
所展示的素质并非理论上的光辉,奥尔曼也从未假装如此。这是不确定性下的设计判断——能够审视一堆互不兼容的系统,准确识别出哪部分会不断变化,哪部分不会,然后将变化的部分构建为配置,将稳定的部分构建为代码。Sendmail 的重写规则是一个赌注,赌的是电子邮件的寻址规范将在几十年内保持不稳定。这个赌注是对的,这也是为什么一个研究生在1981年编写的程序在三十年后仍然承载着世界上一大部分邮件的原因。这是一种罕见的工程远见,这种认可也反映了这一点:互联网名人堂在2014年将他选为创新者,ACM 在2009年将他评为杰出工程师,并在2025年评为会士,伯克利在2013年授予他计算机科学杰出校友称号。
反面案例是公平的,也值得直白地陈述。奥尔曼没有发明任何算法,没有证明任何定理,也没有开创任何协议;电子邮件、SMTP 和 ARPANET 都是别人的工作。他的天才(如果这个词适用的话)在于技艺——一种构建必须在与所有人接触中生存的基础设施的人所具备的实用智慧。这种技艺付出了真正的代价。Sendmail 的配置语言以严酷著称,这是一道令几代管理员抱怨的障碍,也促使了后来编写的竞争性邮件传输代理的出现。一个只有专家才能安全操作的工具,无论多么耐用,都是一种妥协的设计。奥尔曼给程序员的建议非常朴实:选择一个符合你性格的项目,编写清晰且文档齐全的代码,因为你的声誉将岌岌可危。
遗产
奥尔曼是同性恋,并于2013年10月与 BSD Unix 的首席开发人员马歇尔·柯克·麦库西克 (Marshall Kirk McKusick) 结婚,他们在一起生活了三十多年;他们在研究生院相识,他们共同负责了将 Unix 变成互联网操作系统的相当大一部分软件。他的荣誉包括2006年的特柳赖德科技节技术奖 (Telluride Tech Festival Award of Technology)。不过,衡量他工作的最佳标准是它是无形的。没有人会考虑邮件传输代理,也没有人会阅读 syslog 行,直到某件事发生故障——这恰恰是基础设施旨在实现的状态。



