救命!我的电子邮件发不到 500 英里以外!
创始人
2024-03-02 01:35:17
0

这是一个听起来几乎不可能的事情……我甚至有点后悔将它发到网上,因为它在一个会议上成了一则著名的酒后故事。这个故事略有改动,以保护故事中的人物,以及忽略了一些无关的细节使之更有趣一些。

几年前,当我接到统计系主任的电话时,我正在从事维护校园电子邮件系统的工作。

“我们从部门发送电子邮件时遇到了问题。”

“有什么问题?” 我问。

“我们不能发送超过 500 英里的邮件,”主任解释说。

“咳咳”,我被我喝的拿铁呛了一口,“您再说一遍?”

“我们不能发送距这里超过 500 英里的邮件,”他重复道。 “实际上,更远一点,是 520 英里,但不能更远了。”

“嗯……电子邮件真的不会这样,通常,”我说,试着让我的声音听起来不那么慌乱。我不能和一个系主任说话时显得慌乱,即使是一个像统计系这样的相对没钱的院系。 “是什么让你觉得你不能发送邮件超过 500 英里?”

“这不是我认为的,”主任有点急躁地回答道。 “我们首先注意到了这种情况是几天前。”

“你等了几天?” 我打断他,带点颤音说道。 “这段时间你一直你不能发送电子邮件?”

“我们可以发送电子邮件。只是不超过 ——”

“—— 500 英里,我知道,”我接过他的话,“我知道了。但为什么没有你早点打电话呢?”

“好吧,我们没有收集到足够的数据来确定发生了什么,直到现在。”没错,这是统计系的主任。“不管怎么说,我请了一位地理统计学家研究它 ——”

“地理统计学家……”

“—— 是的,她制作了一张地图,显示了我们发送电子邮件能够达到的半径略超过 500 英里。在那个半径范围内有零星的几个无法到达的目的地,但我们永远不能发送比这半径更远的电子邮件。”

“我明白了,”我说,把头埋在我的手中。 “这是什么时候开始的?几天前,你说过,但是那时你的系统做了什么改变?”

“嗯,服务顾问来给我们的服务器打了补丁,并重新启动了它。但我打电话给他,他说他没有碰过邮件系统。”

“好的,让我来看看,我稍后会给你回电话,”我说。我简直觉得我在做梦,这不是愚人节。我试着回想是不是有人恶作剧报复我。

我登录了他们系的服务器,并发送了一些测试邮件。在北卡罗来纳州的 三角研究园 ( Research Triangle Park ) ,我自己的帐户的测试邮件顺利投递。发往里士满、亚特兰大和华盛顿的也是如此。发往普林斯顿(400 英里)的另一个邮件也正常。

但后来我尝试向孟菲斯(600 英里)发送电子邮件,失败了。波士顿,失败了。底特律,也失败了。我拿出了我的地址簿,开始试图缩小它的范围。纽约(420 英里)成功,但普罗维登斯(580 英里)失败了。

我开始怀疑自己是不是疯了。我试过给住在北卡罗来纳州的朋友发电子邮件,但他的 ISP 在西雅图。谢天谢地,它失败了。如果问题与收件人的地理位置有关,而不是他的邮件服务器,我想我要哭了。

已经确定!虽然令人难以置信,但所报告的问题是真实的、可重复的,我看了一下 sendmail.cf 文件。它看起来很正常。事实上,它看起来很熟悉。

我把它与我主目录中的 sendmail.cf 做了个对比。它没有被改过 —— 这是我写的 sendmail.cf。 而且我相当确定我没有启用某种 “FAIL_MAIL_OVER_500_MILES” 选项。我不知所措,我 telnet 到 SMTP 端口。 服务器愉快地回复了 SunOS sendmail 的横幅消息。

等一下……一个 SunOS sendmail 的横幅消息?当时,即使 Sendmail 8 已经相当成熟,Sun 公司在其操作系统中装的仍然是 Sendmail 5。作为一名优秀的系统管理员,我已经对 Sendmail 8 进行了标准化。并且作为一名优秀的系统管理员,我编写了一个 sendmail.cf,它使用了 Sendmail 8 中提供的很长的、具有自我描述意义的选项和变量,而不是 Sendmail 5 中使用的那种神秘的标点符号式配置选项。

这个细节一下子又回到了起点,我再次被我现在已经冷掉了的拿铁咖啡渣呛了。 当服务顾问“对服务器打补丁”时,他显然升级了 SunOS 的版本,并且这样做降级了 Sendmail。这次升级会将 sendmail.cf 单独留下,即使它现在是错误的版本。

事实上,Sendmail 5 —— 至少是 Sun 所带的版本,是有一些调整的 —— 它可以处理 Sendmail 8 的 sendmail.cf,因为大多数规则在那时保持不变。但新的长配置选项 —— 它被视为垃圾,并跳过。 并且 sendmail 二进制文件编译时没有针对其中大多数设置默认值,因此,在 sendmail.cf 文件中找不到合适的配置,它们被设置为 0。

被设置为 0 的配置之一是连接到远程 SMTP 服务器的超时选项。 一些实验证明,在具有典型负载的特定机器上,0 超时将在稍微超过 3 毫秒的时间内中止连接调用。

当时我们校园网络的一个奇怪的特点是它是 100% 交换的。传出的数据包不会出现路由器延迟,直到命中 POP 服务器并到达远端的路由器。因此,连接到附近网络上的轻负载的远程主机的时间实际上主要取决于到目的地的光速的速度,而不是偶然的路由器延迟。

这让我有点晕,我在我的 shell 中输入:

$ units
1311 units, 63 prefixes

You have: 3 millilightseconds
You want: miles
* 558.84719
/ 0.0017893979

“500 英里,或者稍微多一点点。”

相关内容

AI智能体自作主张删邮件,...
智能体OpenClaw从1月下旬爆火之后,其安全风险也逐渐暴露。 ...
2026-03-01 14:49:47
美作家群体遭AI“杀猪盘”...
【环球时报综合报道】据美国《纽约时报》25日报道,一种利用人工智能...
2026-02-27 08:52:37
AI“发狂”光速清空美AI...
近日,Meta公司超级智能实验室的AI对齐总监Summer Yue...
2026-02-26 18:49:08
AI现在到底有多能打?从替...
“帮我写周报” “生成一只赛博朋克的猫” “把这篇英文论文翻译成中...
2026-01-27 19:52:11
谷歌搜索AI模式可通过邮件...
新榜讯 ,谷歌正助力AI模型提供更具个性化的搜索响应,允许聊天机器...
2026-01-23 09:18:53
谷歌将Gemini AI助...
IT之家 1 月 11 日消息,谷歌官方本周(1 月 8 日)发文...
2026-01-11 18:19:22

热门资讯

2020 年的 GitHub ... 距离 2020 年结束只剩下区区 24 天,我们即将结束魔幻的 2020 ,迎来新的一年,新的一年或...
开源新闻速递:openSUSE... 今日关注openSUSE 项目组的 Dominique Leuenberger 在他的周报中说:“这...
KDE4.11 Beta1 正...   KDE 项目工作组刚刚发布了 KDE Software Compilation 4.11 Bet...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
使用时间序列数据,用开源工具助... InfluxData 是一个开源的时间序列数据库平台。下面介绍了它是如何被用于边缘应用案例的。收集到...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Textual:为 Pytho... 快速入门使用 TextualPython 在 Linux 上有像 TkInter 这样的优秀 GUI...
硬核观察 #1245 Open... #1 OpenAI 悄然删除禁止将 ChatGPT 用于 “军事和战争” 的禁令在 1 月 10 日...