(http://web.mit.edu/jemorris/humor/500-miles)
From: Trey Harris trey@sage.org
发件人:特雷·哈里斯 trey@sage.org
Here's a problem that sounded impossible... I almost regret posting
the story to a wide audience, because it makes a great tale over drinks
at a conference. :-) The story is slightly altered in order to protect
the guilty, elide over irrelevant and boring details, and generally make
the whole thing more entertaining.
这是一个听起来不可能的问题...... 我几乎后悔发帖
这个故事面向广大观众,因为它在喝酒时创造了一个很棒的故事
在会议上。:-) 为了保护
有罪的人,会忽略不相关和无聊的细节,并且通常会使
整个事情更有趣。
I was working in a job running the campus email system some years ago
when I got a call from the chairman of the statistics department.
几年前,我从事一份运行校园电子邮件系统的工作
当我接到统计系主任的电话时。
"We're having a problem sending email out of the department."
“我们在向部门发送电子邮件时遇到了问题。”
"What's the problem?" I asked.
“怎么了?”我问。
"We can't send mail more than 500 miles," the chairman explained.
“我们不能发送超过 500 英里的邮件,”董事长解释说。
I choked on my latte. "Come again?"
我被拿铁咖啡呛住了。 “再来一次?”
"We can't send mail farther than 500 miles from here," he repeated. "A
little bit more, actually. Call it 520 miles. But no farther."
“我们不能把邮件寄到离这里 500 英里以外的地方,”他重复道。 “一个
实际上,多一点。 称之为 520 英里。 但不会更远。
"Um... Email really doesn't work that way, generally," I said, trying
to keep panic out of my voice. One doesn't display panic when speaking
to a department chairman, even of a relatively impoverished department
like statistics. "What makes you think you can't send mail more than
500 miles?"
“嗯......一般来说,电子邮件真的不是那样的,“我试着说
为了不让恐慌出现在我的声音中。 一个人在说话时不会表现出恐慌
对系主任,即使是相对贫困的系主任
就像统计数据一样。 “是什么让你认为你不能发送邮件超过
500 英里?
"It's not what I think," the chairman replied testily. "You see, when
we first noticed this happening, a few days ago--"
“这不是我想的,”主席生气地回答。 “你看,当
我们第一次注意到这件事的发生,是在几天前——”
"You waited a few DAYS?" I interrupted, a tremor tinging my voice. "And
you couldn't send email this whole time?"
“你等了几天?”我打断了他,声音里传来一阵颤抖。 “和
你不能一直发送电子邮件吗?
"We could send email. Just not more than--"
“我们可以发送电子邮件。 只是不超过——”
"--500 miles, yes," I finished for him, "I got that. But why didn't
you call earlier?"
“--500 英里,是的,”我替他说,“我明白了。 但为什么没有
你早点打电话来?
"Well, we hadn't collected enough data to be sure of what was going on
until just now." Right. This is the chairman of statistics. "Anyway,
I asked one of the geostatisticians to look into it--"
“嗯,我们没有收集到足够的数据来确定发生了什么
直到现在。 右。 这是 statistics 的主席。“总之,
我请一位地质统计学家去调查一下——”
"Geostatisticians..." “地质统计学家......”
"--yes, and she's produced a map showing the radius within which we can
send email to be slightly more than 500 miles. There are a number of
destinations within that radius that we can't reach, either, or reach
sporadically, but we can never email farther than this radius."
“——是的,她拿出了一张地图,标明了我们可以在的半径内
发送电子邮件以略高于 500 英里。 有许多
在该半径内我们无法到达或无法到达的目的地
偶尔,但我们永远无法发送超过这个半径的电子邮件。
"I see," I said, and put my head in my hands. "When did this start?
A few days ago, you said, but did anything change in your systems at
that time?"
“我明白了,”我说,然后把头放在手里。 “这是什么时候开始的?
几天前,您说,但是您的系统是否发生了任何变化
那个时候?
"Well, the consultant came in and patched our server and rebooted it.
But I called him, and he said he didn't touch the mail system."
“嗯,顾问进来修补了我们的服务器并重新启动了它。
但我打电话给他,他说他没有碰邮件系统。
"Okay, let me take a look, and I'll call you back," I said, scarcely
believing that I was playing along. It wasn't April Fool's Day. I
tried to remember if someone owed me a practical joke.
“好吧,我看看,然后给你回电话,”我几乎不停地说
相信我在玩。 那天不是愚人节。 我
试着想起是不是有人欠我一个实际的笑话。
I logged into their department's server, and sent a few test mails.
This was in the Research Triangle of North Carolina, and a test mail to
my own account was delivered without a hitch. Ditto for one sent to
Richmond, and Atlanta, and Washington. Another to Princeton (400 miles)
worked.
我登录了他们部门的服务器,并发送了几封测试邮件。
这是在北卡罗来纳州的三角研究区,以及一封寄给
我自己的账户顺利交付。 发送到
里士满、亚特兰大和华盛顿。 另一次前往普林斯顿(400 英里)
工作。
But then I tried to send an email to Memphis (600 miles). It failed.
Boston, failed. Detroit, failed. I got out my address book and started
trying to narrow this down. New York (420 miles) worked, but Providence
(580 miles) failed.
但后来我试图给孟菲斯(600 英里)发一封电子邮件。 它失败了。
Boston,失败。 底特律,失败。 我拿出我的地址簿开始
试图缩小范围。 纽约(420 英里)有效,但普罗维登斯
(580 英里) 失败。
I was beginning to wonder if I had lost my sanity. I tried emailing a
friend who lived in North Carolina, but whose ISP was in Seattle.
Thankfully, it failed. If the problem had had to do with the geography
of the human recipient and not his mail server, I think I would have
broken down in tears.
我开始怀疑我是否已经失去了理智。 我尝试向
住在北卡罗来纳州,但 ISP 在西雅图的朋友。
值得庆幸的是,它失败了。 如果问题与地理有关
人类收件人而不是他的邮件服务器,我想我会
泪流满面。
Having established that -- unbelievably -- the problem as reported was
true, and repeatable, I took a look at the sendmail.cf file. It looked
fairly normal. In fact, it looked familiar.
在确定了这一点之后 - 令人难以置信的 - 报告的问题是
true,并且可重复,我看了一下 sendmail.cf 文件。 看起来
相当正常。 事实上,它看起来很熟悉。
I diffed it against the sendmail.cf in my home directory. It hadn't been
altered -- it was a sendmail.cf I had written. And I was fairly certain
I hadn't enabled the "FAIL_MAIL_OVER_500_MILES" option. At a loss, I
telnetted into the SMTP port. The server happily responded with a SunOS
sendmail banner.
我将其与主目录中的 sendmail.cf 进行了比较。 但事实并非如此
修改了——这是我写的一篇 sendmail.cf。 我相当确定
我没有启用“FAIL_MAIL_OVER_500_MILES”选项。 不知所措的我
telnet 到 SMTP 端口。 服务器很高兴地使用 SunOS 进行响应
sendmail 横幅。
Wait a minute... a SunOS sendmail banner? At the time, Sun was still
shipping Sendmail 5 with its operating system, even though Sendmail 8 was
fairly mature. Being a good system administrator, I had standardized on
Sendmail 8. And also being a good system administrator, I had written a
sendmail.cf that used the nice long self-documenting option and variable
names available in Sendmail 8 rather than the cryptic punctuation-mark
codes that had been used in Sendmail 5.
等一会。。。SunOS sendmail 横幅? 当时,Sun 还在
将 Sendmail 5 与其操作系统一起发布,即使 Sendmail 8 是
相当成熟。 作为一名优秀的系统管理员,我已经将
发送邮件 8. 作为一名优秀的系统管理员,我编写了一篇
使用漂亮的 long self-documenting 选项和变量的 sendmail.cf
名称在 Sendmail 8 中可用,而不是晦涩难懂的标点符号
在 Sendmail 5 中使用的代码。
The pieces fell into place, all at once, and I again choked on the dregs
of my now-cold latte. When the consultant had "patched the server," he
had apparently upgraded the version of SunOS, and in so doing
downgraded Sendmail. The upgrade helpfully left the sendmail.cf
alone, even though it was now the wrong version.
碎片一下子就位了,我又一次被渣滓呛住了
我现在冰凉的拿铁咖啡。 当顾问“修补服务器”后,他
显然升级了 SunOS 的版本,并在此过程中
降级 Sendmail。 升级有益地离开了 sendmail.cf
独自一人,即使它现在是错误的版本。
It so happens that Sendmail 5 -- at least, the version that Sun shipped,
which had some tweaks -- could deal with the Sendmail 8 sendmail.cf, as
most of the rules had at that point remained unaltered. But the new
long configuration options -- those it saw as junk, and skipped. And
the sendmail binary had no defaults compiled in for most of these, so,
finding no suitable settings in the sendmail.cf file, they were set to
zero.
碰巧的是 Sendmail 5 —— 至少是 Sun 发布的版本,
它有一些调整 -- 可以处理 Sendmail 8 sendmail.cf,因为
当时大多数规则都没有改变。 但是新的
long configuration options —— 那些被它视为垃圾并跳过的选项。 和
sendmail 二进制文件没有为大多数 API 编译默认值,因此,
在 sendmail.cf 文件中找不到合适的设置,因此将它们设置为
零。
One of the settings that was set to zero was the timeout to connect to
the remote SMTP server. Some experimentation established that on this
particular machine with its typical load, a zero timeout would abort a
connect call in slightly over three milliseconds.
设置为零的设置之一是要连接的超时
远程 SMTP 服务器。 一些实验确定,在此
特定机器的典型负载,零超时将中止
connect 调用的调用时间略多于 3 毫秒。
An odd feature of our campus network at the time was that it was 100%
switched. An outgoing packet wouldn't incur a router delay until hitting
the POP and reaching a router on the far side. So time to connect to a
lightly-loaded remote host on a nearby network would actually largely be
governed by the speed of light distance to the destination rather than by
incidental router delays.
当时我们校园网络的一个奇怪特点是它是 100% 的
开关。 传出数据包在命中
POP 并到达远端的路由器。 因此,是时候连接到
附近网络上的轻负载远程主机实际上在很大程度上是
由到目的地的光速距离控制,而不是
附带的路由器延迟。
Feeling slightly giddy, I typed into my shell:
我感到有点头晕目眩,在我的 shell 中输入:
$ units
1311 units, 63 prefixes
$ 个单位
1311 个单位,63 个前缀
You have: 3 millilightseconds
You want: miles
* 558.84719
/ 0.0017893979
您有:3 millilightseconds
您需要:里程
* 558.84719
/ 0.0017893979
"500 miles, or a little bit more."
“500 英里,或者更多一点。”
Trey Harris
I'm looking for work. If you need a SAGE Level IV with 10 years Perl,
tool development, training, and architecture experience, please email
me at trey@sage.org. I'm willing to relocate for the right opportunity.
特雷·哈里斯
我正在找工作。 如果您需要 10 年 Perl 的 SAGE IV 级,
有工具开发、培训和架构经验,请发送电子邮件至
我在 trey@sage.org。 我愿意为合适的机会搬迁。
发表评论