概要
- 500マイル以上 メールが送信できないという伝説的な話の再検証
- ネットワーク遅延 とサーバ設定による現象の再現実験
- クラウド化 による距離感の希薄化と現代の検証結果
- 接続確認用コード の紹介とその挙動分析
- 結論 :2025年でも設定次第で500マイル制限は再現可能
500マイルメール伝説の再検証
- 昔話として語られる「大学の 学長が500マイル以上メール送信できない」現象
- システム管理者 は「そんなことはあり得ない」と反論
- 実際に試すと、 500マイルを超えるとメールが届かない 事象の再現
- 技術の進歩による変化や、 2025年でもこの制限が存在するか の検証
非同期接続とタイムアウトの短縮
- 非同期接続 を用いた短時間タイムアウトのCコードを利用
- pollによる 3msタイムアウト 設定(カーネルのtickで実際は10ms~19ms程度)
- 3msという値は 伝説に基づく設定 で、技術的な根拠は薄い
- selectやpollのゼロタイムアウト では即時失敗となり接続困難
- sendmailの再送待機を避けるため、 即座に結果が出る接続確認 を実施
実験:大学への接続確認
- 東から西へ 複数大学への接続テスト
- upenn.edu、uchicago.edu、ucla.edu いずれも「 it's a live one!」で成功
- pingの結果 から、実際には物理的距離が反映されていないことに気付く
- 多くの大学が クラウド上でホスト され、同一データセンター内の可能性
- 物理距離500マイル の基準が意味を持たなくなっている現状
距離と遅延を意識した再実験
- pingで遅延が現実的な大学 を選定して再挑戦
- rutgers.edu(近距離)は成功、cmu.edu(中距離)は時々失敗
- maine.edu(約500マイル)は成功と失敗が混在
- udayton.edu(遠距離)はタイムアウトで失敗
- 光速の制限 が2025年でも依然として有効
メールサーバ(MX)での再検証
- MXレコード を取得し、実際のメールサーバでpingテスト
- 多くの大学が 外部サービス(pphosted.com, Googleなど) を利用
- pingの遅延値は大きくばらつき、 物理距離と一致しない結果
- smtp.google.com の場合、UCLAへのメールは3000マイル離れても問題なし
結論
- 設定ミスによる500マイル制限 は、2025年でも再現可能
- ただし、 クラウドホスティングや外部サービス利用 により、物理距離と到達性の関係は希薄化
- 地図を見ても実際の接続可能性は予測困難
- ネットワーク設定やインフラの進化で、 伝説の再現はますます難しくなっている現状
参考:接続確認用Cコード(抜粋)
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/select.h>
#include <poll.h>
#include <netdb.h>
#include <err.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <stdio.h>
int connect_wait(int s) {
struct pollfd pfd[1];
int error = 0;
socklen_t len = sizeof(error);
pfd[0].fd = s;
pfd[0].events = POLLOUT;
error = poll(pfd, 1, 3);
if (error == -1) return -1;
if (error == 0) {
errno = ETIMEDOUT;
return -1;
}
if (getsockopt(s, SOL_SOCKET, SO_ERROR, &error, &len) == -1) return -1;
if (error != 0) {
errno = error;
return -1;
}
return 0;
}
ポイント
- 3msタイムアウト では、実際のネットワーク遅延が大きいと遠距離接続が失敗
- クラウド化 により、物理距離とネットワーク距離が一致しないケースが増加