最离谱的BUG电子邮件传不出500英里
2025年到了,一封电子邮件能传出500英里了吗?
乍一看这个问题有些丈二和尚摸不着头脑。实际上,这是一个互联网流传已久的趣闻。
最初的故事要从2002年开始说起。某天,MIT的统计系主任找到了校园邮件系统的负责人Trey Harris,向他上报了一个离奇的大问题:
“我们系的邮件有问题,传不出500英里外!最多就是520英里。”
Trey Harris大吃一惊,因为所有人都知道,电子邮件根本不是以这种方式运作的。
但系主任说得有鼻子有眼,甚至还让一位地质统计学家做了地图分析,邮件有效投递范围刚好就是500多英里。
听完了系主任的话,Trey Harris忍不住陷入沉思,他半信半疑地亲自测试了一下,结果…居然真的是这样!
他连忙给一位住本地但用西雅图ISP的朋友发邮件,还好,这次发送也失败了,说明问题还是出现在服务器之上。
那么,问题到底出现在哪呢?经过层层排查之后,Trey Harris终于发现了罪魁祸首:
原来,几天前一名顾问在维护服务器时,意外将邮件服务软件Sendmail 8降级回了Sendmail 5。
然而,系统保留了原有的Sendmail 8配置文件(sendmail.cf),Sendmail 5无法识别Sendmail 8引入的新参数,于是直接跳过了它们。
由于这些参数没有默认值,它们被自动设置为0,其中就包括SMTP连接超时时间。
在零超时设置下,服务器只允许3毫秒的时间来建立SMTP连接。如果远程服务器在这段时间内没有响应,连接就会被强制中断。
问题的关键来了:由于MIT采用100%交换机组网,因此连接能否成功,主要取决于数据包在物理上的传输时间,也就是光速。
光在 3 毫秒内能跑多远?正好就是558英里(约900公里)。
当Trey Harris将他的经历分享到互联网上之后,这个离谱的bug也随之成为了一个经典的程序员传说。
那么,回到开头的问题,都2025年了,一封邮件还能传出500英里吗?
好奇的网友亲自测试了一下,结果当然不会改变:配置错误的服务器依然恪守着500英里的铁律。
最初的博客原文: