เหตุการณ์ที่ส่งอีเมลได้ไม่ไกลเกิน 500 ไมล์ (2002)
(web.mit.edu)- เมลเซิร์ฟเวอร์ของภาควิชาสถิติในมหาวิทยาลัยแห่งหนึ่ง อยู่ดี ๆ ก็ไม่สามารถส่งอีเมลไปยังปลายทางที่ไกลกว่า ประมาณ 500–520 ไมล์ ได้ และปัญหานี้ทำซ้ำได้ตามรัศมีทางภูมิศาสตร์
- หัวหน้าภาควิชาเก็บข้อมูลอยู่หลายวันแล้วมอบหมายให้นักภูมิสถิติวิเคราะห์ พร้อมทำแผนที่ รัศมีที่ส่งถึงได้ และปลายทางข้อยกเว้นภายในรัศมีนั้น
- จากการทดสอบของผู้ดูแลระบบ พบว่าจาก Research Triangle ใน North Carolina ส่งไป Richmond, Atlanta, Washington, Princeton, New York ได้สำเร็จ แต่ส่งไป Memphis, Boston, Detroit, Providence ล้มเหลว จึงเผยให้เห็นว่าเกณฑ์คือ ตำแหน่งของเมลเซิร์ฟเวอร์ ไม่ใช่ตำแหน่งของผู้รับ
- สาเหตุคือระหว่างแพตช์เซิร์ฟเวอร์ SunOS ถูกอัปเกรด ทำให้ Sendmail 8 ถูกดาวน์เกรดในทางปฏิบัติเป็น Sendmail 5 และ Sendmail 5 เพิกเฉยต่อชื่อการตั้งค่ายาว ๆ ใน
sendmail.cfเดิมที่เขียนสำหรับ Sendmail 8 - ผลคือ timeout การเชื่อมต่อถูกตั้งเป็น 0 และบนเครื่องนั้นการเชื่อมต่อถูกตัดหลังผ่านไปประมาณ 3 มิลลิวินาที ซึ่งตรงกับค่าที่สังเกตได้จากการคำนวณด้วย
unitsที่ประมาณ 559 ไมล์
รายงานว่า “ส่งเมลไปไกลเกิน 500 ไมล์ไม่ได้”
- ระหว่างดูแลระบบอีเมลของแคมปัส หัวหน้าภาควิชาสถิติติดต่อมาว่า “มีปัญหาในการส่งอีเมลออกนอกภาควิชา”
- ประเด็นหลักของปัญหาคือ “จากที่นี่ส่งเมลไปยังที่ที่ไกลกว่า 500 ไมล์ ไม่ได้” และหัวหน้าภาควิชาเสริมว่าขอบเขตจริงคือ “ไกลกว่านั้นอีกเล็กน้อย ประมาณ 520 ไมล์”
- ผู้ดูแลระบบตอบว่าโดยทั่วไปอีเมลไม่ได้ทำงานแบบนั้น แต่หัวหน้าภาควิชาได้เก็บข้อมูลมาพอสมควรตลอดหลายวันก่อนติดต่อมาแล้ว
- ภาควิชาสถิติให้ผู้เชี่ยวชาญด้านภูมิสถิติตรวจสอบ และทำแผนที่ที่แสดงว่าขอบเขตที่ส่งเมลได้เป็นรัศมีที่มากกว่า 500 ไมล์เล็กน้อย
- แม้ภายในรัศมีก็มีปลายทางที่ส่งไม่ถึง หรือส่งถึงเป็นครั้งคราวเท่านั้น
- นอกรัศมีนั้น อีเมลจะไม่ถูกส่งถึงเลย
- ในช่วงเวลาเดียวกัน ที่ปรึกษาได้แพตช์และรีบูตเซิร์ฟเวอร์ แต่ระบุว่าไม่ได้แตะระบบเมล
การทดสอบซ้ำและขอบเขตทางภูมิศาสตร์
- เมื่อผู้ดูแลระบบล็อกอินเข้าเซิร์ฟเวอร์ของภาควิชาและส่งเมลทดสอบ ก็พบว่าปัญหานี้ ทำซ้ำได้จริง
- ตำแหน่งขณะนั้นคือ Research Triangle ใน North Carolina และปลายทางที่อยู่ใกล้ทำงานได้ตามปกติ
- เมลทดสอบที่ส่งไปยังบัญชีของตนเองถูกส่งถึงตามปกติ
- เมลที่ส่งไป Richmond, Atlanta, Washington ก็สำเร็จเช่นกัน
- การทดสอบไปถึง Princeton ซึ่งอยู่ราว 400 ไมล์ ก็ผ่าน
- ปลายทางที่ไกลกว่านั้นล้มเหลวต่อเนื่อง
- Memphis ราว 600 ไมล์ ล้มเหลว
- Boston ล้มเหลว
- Detroit ล้มเหลว
- New York ราว 420 ไมล์ สำเร็จ
- Providence ราว 580 ไมล์ ล้มเหลว
- เมลที่ส่งไปยังบัญชีของเพื่อนที่อาศัยอยู่ใน North Carolina ล้มเหลว เพราะ ISP ของบัญชีนั้นอยู่ที่ Seattle
- จึงยืนยันได้ว่าปัญหาเกี่ยวข้องกับ ตำแหน่งทางภูมิศาสตร์ของเมลเซิร์ฟเวอร์ ไม่ใช่ตำแหน่งจริงของบุคคล
การตั้งค่า Sendmail ที่ดูเหมือนปกติ
- ไฟล์
sendmail.cfโดยรวมดูเหมือนปกติ และเหมือนกับไฟล์ที่ผู้ดูแลระบบเคยเขียนไว้ - ผู้ดูแลระบบสรุปว่าตนไม่ได้เปิดตัวเลือกอย่าง
FAIL_MAIL_OVER_500_MILESไว้แน่นอน - เมื่อต่อเข้าพอร์ต SMTP ด้วย
telnetเซิร์ฟเวอร์ตอบกลับเป็น แบนเนอร์ SunOS sendmail - ตอนนั้น Sun แจกจ่ายระบบปฏิบัติการโดยรวม Sendmail 5 มาด้วย ขณะที่ Sendmail 8 โตเต็มที่แล้ว
- ผู้ดูแลระบบได้ทำให้ระบบเป็นมาตรฐานด้วย Sendmail 8 และใช้งาน
sendmail.cfที่เขียนขึ้นโดยใช้ชื่อตัวเลือกและชื่อตัวแปรแบบยาวที่อธิบายตัวเองของ Sendmail 8- Sendmail 5 ใช้โค้ดการตั้งค่าแบบเก่ากว่า คล้ายรหัสลับที่เน้นเครื่องหมายวรรคตอน
การอัปเกรดที่ทำให้เกิดการดาวน์เกรด
- เมื่อที่ปรึกษา “แพตช์” เซิร์ฟเวอร์ ก็ได้อัปเวอร์ชัน SunOS และในกระบวนการนั้น Sendmail ถูกลดลงเป็น Sendmail 5
- การอัปเกรดระบบปฏิบัติการปล่อย
sendmail.cfเดิมไว้ตามเดิม แต่ไฟล์นั้นไม่ตรงกับเวอร์ชัน Sendmail ที่กำลังรันอยู่อีกต่อไป - Sendmail 5 เวอร์ชันที่ Sun แจกจ่ายสามารถประมวลผลกฎจำนวนมากใน
sendmail.cfสำหรับ Sendmail 8 ได้- กฎส่วนใหญ่ในตอนนั้นยังไม่ได้เปลี่ยนไปมากนัก
- ปัญหาอยู่ที่ตัวเลือกการตั้งค่ายาว ๆ ของ Sendmail 8 ซึ่ง Sendmail 5 มองเป็นค่าขยะแล้วข้ามไป
- ในไบนารีของ Sendmail ไม่ได้คอมไพล์ค่าเริ่มต้นของตัวเลือกเหล่านี้ส่วนใหญ่ไว้ และเมื่อหาไม่พบในไฟล์ตั้งค่า ผลลัพธ์จึงถูก ตั้งเป็น 0
timeout 3 มิลลิวินาที กับ 558 ไมล์
- หนึ่งในค่าที่ถูกตั้งเป็น 0 คือ timeout การเชื่อมต่อ ที่ใช้เมื่อต่อไปยังเซิร์ฟเวอร์ SMTP ระยะไกล
- จากการทดลอง ภายใต้เงื่อนไขโหลดทั่วไปของเครื่องนั้น ค่า timeout 0 ทำให้การเรียก
connectถูกยกเลิกหลังผ่านไป มากกว่า 3 มิลลิวินาทีเล็กน้อย - เครือข่ายแคมปัสในตอนนั้นเป็นแบบสวิตช์ 100%
- แพ็กเก็ตที่ออกไปภายนอกไม่เจอดีเลย์จากเราเตอร์จนกว่าจะถึง POP และพบเราเตอร์ฝั่งตรงข้าม
- เวลาที่ใช้เชื่อมต่อไปยังโฮสต์ระยะไกลบนเครือข่ายใกล้ ๆ ที่มีโหลดต่ำ ได้รับผลจาก ระยะทางตามความเร็วแสง มากกว่าดีเลย์จากเราเตอร์ประกอบ
- เมื่อผู้ดูแลระบบแปลง
3 millilightsecondsเป็นmilesในunitsผลลัพธ์คือ 558.84719 ไมล์ - ค่าที่คำนวณได้แทบตรงกับข้อสังเกตของหัวหน้าภาควิชาที่ว่า “500 ไมล์ หรือมากกว่านั้นอีกเล็กน้อย”
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ตอนปี 1998 ตอนที่ผมทำงานซัพพอร์ต IT ให้บริษัทเล็ก ๆ ในออสเตรเลีย พนักงานที่สำนักงานสาขาโทรมาบอกว่า “สกรีนเซฟเวอร์หล่นจากจอไปกดปุ่มบนคีย์บอร์ด แล้วเทอร์มินัลก็ล็อก”
ตอนแรกคิดว่าเป็นไปไม่ได้ แต่ปรากฏว่าสิ่งที่เขาเรียกว่า “สกรีนเซฟเวอร์” คือ ฟิลเตอร์กันแสงสะท้อน CRT แบบกายภาพที่พบได้ทั่วไปในตอนนั้น และฟิลเตอร์นั้นหล่นลงไปกด Scroll Lock ค้างไว้
https://dylbs6e8mhm2w.cloudfront.net/productimages/500x500/E...
ผมชอบเรื่องแนวนี้ มีช่วงเวลาที่เราได้รู้ว่าปรากฏการณ์ที่มั่นใจว่าไม่มีทางเกิดขึ้นได้ กลับเกิดขึ้นจริงเพราะกฎฟิสิกส์อย่าง ความเร็วแสง
ในงานแรก ๆ งานหนึ่ง ผมเจอปัญหาจอ CRT กะพริบเล็กน้อย เปลี่ยนทั้งจอ สาย สายไฟ และคอมพิวเตอร์แล้วก็ยังเหมือนเดิม
สุดท้ายพอยกคอมพิวเตอร์กับจอขึ้นรถเข็นแล้วลากออกไปที่โถงทางเดิน ปัญหาก็หายไป สาเหตุคือ การชีลด์ไฟฟ้าไม่ดี ของสำนักงานนั้น
ภายหลังพบว่าเป็นเพราะเอาทีวีเครื่องใหญ่กว่ามาวางใกล้เกินไป ทำให้เกิด ไฟฟ้าสถิต สะสมจนเกิดผลแบบนั้น พอไปถึงร้านซ่อมก็คงคายประจุไปพอแล้ว เลยปกติอยู่พักหนึ่ง
เราขายคอมพิวเตอร์ให้เขา แต่เขาบอกว่าใช้แล้วขึ้นจอฟ้า พอเอากลับมาทดสอบก็ไม่มีปัญหาอะไร และใช้ร่วมกันที่ออฟฟิศ 30 นาทีก็ยังปกติ
แต่ทันทีที่คนนั้นแตะเมาส์ คอมพิวเตอร์ก็ขึ้นจอฟ้า และปัญหาหายไปเมื่อ เปลี่ยนเมาส์
พอมีคนเปิดเครื่องปรับแรงดัน จอ CRT แถว ๆ นั้นจะบิดเบี้ยว กะพริบ และสีเพี้ยนไปชั่วครู่ โต๊ะริมผนังโดนน้อยกว่า แต่ปวดหัวหนักมาก และผมทนอยู่บริษัทนั้นได้แค่ 6 เดือน
ส่วนที่ดีที่สุดของเรื่องนี้คือคอนซัลแทนต์ที่แพตช์เซิร์ฟเวอร์อยู่ใน Hacker News ด้วย
เจ้าตัวมาเล่าส่วนที่เขารับผิดชอบไว้ในคอมเมนต์ที่นี่: https://news.ycombinator.com/item?id=23775404
สำหรับคนที่สนใจ ผมใส่ไว้ใน
/highlightsด้วย: https://news.ycombinator.com/highlightsบางทีท่อนที่ว่า “เปลี่ยนเรื่องเล็กน้อยเพื่อปกป้องผู้กระทำผิด” น่าจะหมายถึงส่วนนี้
เรื่องนี้ถูกขุดขึ้นมาใหม่ทุก ๆ สองสามปี และทุกครั้งก็ทำให้ยิ้มได้
3 มิลลิไลต์เซคันด์ ตอนท้ายเป็นระยะทางขาเดียว จึงไม่น่าจะถูกต้อง
ในปี 2007 ตอนทำงานเป็นช่างซัพพอร์ตระดับ 2 ให้หลายบริการใน ISP รายใหญ่ ADSL ยังพบได้ทั่วไป และเพราะใช้สายทองแดง จึงมีระยะทางสูงสุดที่สามารถทำงานได้อย่างเสถียร
ลูกค้าบางรายใช้แพ็กเกจพิเศษที่พยายามขยายระยะนั้นออกไปอีกประมาณ 2–3 กม. แต่ในทางปฏิบัติค่อนข้างไม่เสถียร และทำได้แค่พอท่องเว็บไหวเท่านั้น
ฤดูร้อนปีหนึ่ง ลูกค้ารายหนึ่งติดต่อมาว่า IPTV หลุดช่วงกลางวันมาเกือบเดือนแล้ว และอินเทอร์เน็ตก็บางครั้งช้าราวกับธารน้ำแข็ง พอวัดดูพบว่าอยู่ไกลจากชุมสายโทรศัพท์ที่ใกล้ที่สุดมาก และสรุปว่าในช่วงกลางวันที่อากาศร้อน สายขยายตัวจนเกินขีดจำกัดระยะไปเล็กน้อย ทำให้ไม่เสถียร
แทบไม่มีวิธีช่วยเลย และผมไม่คิดถึง เครือข่ายสายทองแดง เลย
ราว 15–20 ปีก่อน ตอนทำงานที่ร้านซ่อม มีคนเอาทีวีมาบอกว่าทุกวันพอถึง 5 โมงเย็น ทีวีจะเปลี่ยนเป็นภาษาสเปน
เขาดูทีวีภาคพื้นดินอยู่ และในการตั้งค่าทีวีมีแค่ภาษาเมนู แต่พอถึง 5 โมงเย็นจริง ๆ เสียงทีวีก็เปลี่ยนเป็นภาษาสเปน พอลองดูอีกหลายช่อง พบว่านอกจากหนึ่งหรือสองช่องแล้วทั้งหมดเป็นภาษาสเปน
ปรากฏว่าสถานีบางแห่งส่งเสียงหลายภาษา และทีวีบางรุ่นสามารถเปลี่ยนภาษาที่ต้องการได้ น่าเสียดายที่ทีวีมือสองที่เขาซื้อมาเป็นเครื่องจาก ประเทศที่ใช้ภาษาสเปน จึงไม่มีวิธีเปลี่ยนค่าความชอบนั้น
ไม่กี่วันก่อนผมนำหุ่นยนต์ดูดฝุ่นที่ผลิตและซื้อในจีนเข้าบ้าน พอเปิดเครื่องครั้งแรกมันก็ชนเซิร์ฟเวอร์จนปลั๊กหลุด
ดังนั้นจึงตัดความเป็นไปได้ของ การโจมตีไซเบอร์ที่มีรัฐหนุนหลัง ออกไม่ได้
เป็นตัวอย่างระดับแม่ของ abstraction ที่รั่ว อย่างแท้จริง
ในจังหวะที่พยายามส่งอีเมล โปรโตคอลส่งข้อมูลระดับล่างที่แท้จริงของเอกภพเชิงสัมพัทธภาพก็เผยตัวออกมา
วันนี้ตอนมื้อเที่ยงบังเอิญคุยเรื่อง Sendmail ซึ่งผมรับประกันได้ว่าเป็นเรื่องค่อนข้างหายาก
นึกถึงตอนตั้งค่า Sendmail ครั้งแรกในปี 1991 หรือ 1992 ตอนนั้นเปิด bat book แล้วแทบจะทึ้งผมตัวเองอยู่หนึ่งสัปดาห์ กว่าจะตั้งค่าครั้งแรกสำเร็จ
ภายหลังผมเข้าใจการตั้งค่า m4 และเริ่มยอมรับมันได้ในระดับหนึ่ง แต่หลังจากย้ายไป qmail และ postfix ในช่วงกลางยุค 90 แล้ว ก็ไม่เคยหันกลับไปอีก
บทความแบบนี้น่าจะควรระบุว่าเป็นปี 1997 ไม่ใช่ปี 2002 อย่างไรก็ตาม ดูเหมือนว่า Trey เองก็จำไม่ได้เช่นกัน: https://www.ibiblio.org/harris/500milemail-faq.html
บทความที่เกี่ยวข้อง ยังมีอีกไหม?
The case of the 500-mile email (2002) - https://news.ycombinator.com/item?id=29213064 - พ.ย. 2021 (93 ความเห็น)
We can't send email more than 500 miles (2002) - https://news.ycombinator.com/item?id=23775404 - ก.ค. 2020 (135 ความเห็น)
500 miles (2002) - https://news.ycombinator.com/item?id=18675375 - ธ.ค. 2018 (32 ความเห็น)
The case of the 500-mile email (2002) - https://news.ycombinator.com/item?id=14676835 - ก.ค. 2017 (56 ความเห็น)
The 500-mile email (2002) - https://news.ycombinator.com/item?id=9338708 - เม.ย. 2015 (139 ความเห็น)
The case of the 500-mile email - https://news.ycombinator.com/item?id=2701063 - มิ.ย. 2011 (18 ความเห็น)
The case of the 500-mile email - https://news.ycombinator.com/item?id=1293652 - เม.ย. 2010 (24 ความเห็น)
The case of the 500-mile email - https://news.ycombinator.com/item?id=385068 - ธ.ค. 2008 (28 ความเห็น)
The case of the 500-mile email - https://news.ycombinator.com/item?id=123489 - ก.พ. 2008 (7 ความเห็น)