3 คะแนน โดย GN⁺ 2026-01-30 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เกิดอาการผิดปกติที่ เมลเซิร์ฟเวอร์ของภาควิชาสถิติ ในมหาวิทยาลัยแห่งหนึ่งของสหรัฐฯ ไม่สามารถส่งอีเมลไปยังปลายทางที่อยู่ไกลเกิน 500 ไมล์ได้
  • จากการตรวจสอบพบว่า สาเหตุคือ ระหว่างการอัปเดต SunOS เวอร์ชันของ Sendmail ถูกดาวน์เกรด ทำให้ไฟล์ตั้งค่าไม่เข้ากัน
  • เนื่องจาก Sendmail 5 ไม่รู้จักชื่อตัวเลือกแบบยาวในไฟล์ตั้งค่าของ Sendmail 8 ทำให้ค่าปริยายหลายรายการถูกตั้งเป็น 0
  • ในจำนวนนั้น ค่า timeout ของการเชื่อมต่อ SMTP ถูกตั้งเป็น 0 ทำให้การเชื่อมต่อระยะไกลที่ใช้เวลามากกว่าประมาณ 3 มิลลิวินาทีล้มเหลวทั้งหมด
  • เมื่อความหน่วงของเครือข่ายเพิ่มขึ้นตามระยะทาง จึงเกิดปรากฏการณ์ที่ดูเหมือนว่า การส่งเมลไปยังเซิร์ฟเวอร์ที่อยู่ไกลเกิน 500 ไมล์ถูกปิดกั้น

จุดเริ่มต้นของปัญหา

  • ภาควิชาสถิติแจ้งปัญหาว่า “ส่งเมลไปยังที่ที่อยู่ไกลเกิน 500 ไมล์ไม่ได้”
    • ส่งได้ถึงราว 520 ไมล์ แต่ไกลกว่านั้นจะล้มเหลว
    • หัวหน้าภาคถึงกับให้ผู้เชี่ยวชาญด้านภูมิสถิติมาช่วย ทำแผนที่รัศมีที่เมลส่งไปถึงได้ และพบว่ารัศมีอยู่ที่ประมาณ 500 ไมล์
  • ผู้ดูแลระบบลองส่งเมลทดสอบไปยังหลายพื้นที่เพื่อจำลองปัญหา
    • Princeton ที่อยู่ห่าง 400 ไมล์ ส่งสำเร็จ แต่ Memphis ที่อยู่ห่าง 600 ไมล์ ส่งล้มเหลว
    • New York (420 ไมล์) ส่งสำเร็จ แต่ Providence (580 ไมล์) ส่งล้มเหลว

การวิเคราะห์สาเหตุ

  • ไฟล์ตั้งค่า sendmail.cf ของเซิร์ฟเวอร์ดูปกติดี และเป็นไฟล์ตั้งค่าสำหรับ Sendmail 8 ที่ผู้เขียนทำขึ้นเอง
  • แต่เมื่อตรวจสอบแบนเนอร์ของพอร์ต SMTP กลับพบว่ากำลังรัน SunOS Sendmail 5 อยู่
    • ระหว่างการแพตช์เซิร์ฟเวอร์ ระบบปฏิบัติการถูกอัปเกรดและทำให้ Sendmail ถูกดาวน์เกรดจาก 8 ลงมาเป็น 5
    • แม้ไฟล์ตั้งค่าเดิมจะยังคงอยู่ แต่ Sendmail 5 ไม่รู้จักชื่อตัวเลือกแบบยาวของ Sendmail 8
  • ตัวเลือกที่ไม่รู้จักจึงถูกมองข้าม และค่าปริยายของรายการเหล่านั้นถูก รีเซ็ตเป็น 0
    • โดยเฉพาะ ค่า timeout สำหรับการเชื่อมต่อไปยังเซิร์ฟเวอร์ SMTP ปลายทางถูกตั้งเป็น 0 ทำให้ความพยายามเชื่อมต่อถูกยกเลิกหลังผ่านไปราว 3 มิลลิวินาที

ความสัมพันธ์ระหว่างระยะทางกับความเร็ว

  • ในเวลานั้นเครือข่ายของแคมปัสเป็น โครงสร้างแบบสวิตช์ 100% จึงแทบไม่มีความหน่วงจากเราเตอร์
    • ดังนั้นเวลาเชื่อมต่อจึงถูกกำหนดโดย ระยะทางทางกายภาพ (ความเร็วแสง)
  • เมื่อนำมาคำนวณ 3 มิลลิวินาทีจะเทียบได้กับระยะทางประมาณ 558 ไมล์
    • ซึ่งสอดคล้องกับอาการที่รายงานว่า “500 ไมล์หรือมากกว่านั้นเล็กน้อย”

บทสรุป

  • ต้นตอของปัญหาคือ ข้อผิดพลาดในการพาร์สค่าตั้งค่าจากความไม่ตรงกันของเวอร์ชัน Sendmail
  • เมื่อค่า timeout ถูกตั้งเป็น 0 จึงเกิด ปรากฏการณ์ทางเครือข่ายที่ดูเหมือนมีข้อจำกัดตามระยะทางทางกายภาพ
  • กรณีนี้จึงกลายเป็นเกร็ดคลาสสิกที่แสดงให้เห็นถึง ความสำคัญของความเข้ากันได้ของเวอร์ชันและการตรวจสอบไฟล์ตั้งค่า ในงานดูแลระบบ

1 ความคิดเห็น

 
GN⁺ 2026-01-30
ความคิดเห็นจาก Hacker News
  • ช่วงกลางทศวรรษ 1990 มีปัญหาแปลก ๆ ที่พีซีในออฟฟิศบูตไม่ขึ้นทุกเช้า
    สุดท้ายพบว่าทุกหน้าหนาวจะมีหนูตัวเล็กมุดเข้ามาทางช่องใส่ฮาร์ดไดรฟ์เพื่ออาศัยความอบอุ่น แล้วปัสสาวะจนวงจรลัดวงจร
    พอคอมพิวเตอร์เปิดทิ้งไว้สักพักจนเกิดความร้อน มันก็แห้งและบูตได้
    หลังจากนั้นก็ซื้อถาดไดรฟ์เปล่ามาปิดไว้ และปัญหาก็หายไปอย่างสิ้นเชิง

    • ทำให้นึกถึงเรื่องไอศกรีมสตรอว์เบอร์รีที่เคยอ่าน เรื่องที่ว่ารถสตาร์ตติดถ้าซื้อไอศกรีมวานิลลา แต่ไม่ติดถ้าซื้อสตรอว์เบอร์รี
      ไม่ว่าจะเป็นเรื่องจริงไหม กระบวนการไล่หาต้นตอของปัญหาแบบนี้ก็น่าสนใจ
      ลิงก์ที่เกี่ยวข้อง
    • เป็นเรื่องเมาส์คอมพิวเตอร์จริง ๆ ซะด้วย ชวนขำดี
    • หนูสามารถมุดผ่านรูที่ใหญ่พอให้ดินสอผ่านได้
      เมื่อก่อนเคยมีค้างคาวมาเกาะสาย CATของฉันด้วย
      ถ้าเปิดหน้าต่างตอนกลางคืนไว้ อาจกระทบแบนด์วิดท์ได้เหมือนกัน
      ถ้าเป็นนักพัฒนา ก็ควรเตรียมรับมือสถานการณ์ชวนงงอย่าง "Frog on Keyboard error" ด้วย
      บทความที่เกี่ยวข้อง
    • เมาส์ของฉันไม่ทำอะไรแบบนั้น
    • แทบจะเป็นที่มาของชื่อ deadmau5 ได้เลย
  • ดูเหมือนในบทความต้นฉบับจะยังให้เครดิตประธานที่ช่วยรวบรวมข้อมูลที่จำเป็นต่อการแก้ปัญหานี้ไม่มากพอ
    ถ้าไม่มีข้อมูลนั้น ผู้เขียนคงจะเสียเวลาไล่หาปัญหาที่เซิร์ฟเวอร์ผิดตัวไปอีกนาน
    ถ้าเอาแต่บอกว่า “อีเมลไม่ได้ทำงานแบบนั้น” ครั้งหน้าก็จะไม่มีใครให้ข้อมูล หรือไม่ก็จะได้แต่การคาดเดาผิด ๆ

    • ฉันก็ชอบเรื่องนี้มากเหมือนกัน ทำให้นึกว่าคงดีแค่ไหนถ้าผู้ใช้บอกรายละเอียดของขั้นตอนการทำซ้ำปัญหาได้ชัดเจนแบบนี้
    • ถ้าลูกค้าเป็นนักสถิติและนักภูมิสถิติ การเก็บข้อมูลแบบนี้คงง่ายกว่านี้มาก
    • คอมเมนต์ยอดเยี่ยมเลย เห็นด้วยทุกอย่าง
  • บทความนี้เป็นโพสต์คลาสสิกที่กลับมาได้รับความนิยมซ้ำ ๆ บน HN มาหลายปี
    ถูกนำกลับมาพูดถึงอีกครั้งในหลายช่วง เช่น 2023, 2020, 2015
    เวอร์ชัน 2023, เวอร์ชัน 2020, เวอร์ชัน 2015

    • เพราะบทความแบบนี้นี่แหละ ฉันถึงเช็ก HN ทุกวันมานานกว่า 15 ปี
      โชคดีที่รอบนี้ไม่พลาด และมันก็เตือนใจว่าอย่าสูญเสียความถ่อมตน
    • บทความนี้เว้นช่วงนานพอที่ทุกครั้งที่กลับมาอ่าน ฉันจะลืมไปแล้วว่าอีเมลส่งไม่ออกเพราะอะไร เลยได้อ่านซ้ำอีกรอบ
    • ฉันก็กำลังจะทำลิสต์อยู่เหมือนกัน แต่มีคนโพสต์ไปแล้ว
      บน HN ถ้าผ่านไปสักปีหนึ่ง การรีโพสต์ก็ถือว่าโอเค และงานคลาสสิกก็ควรถูกหยิบกลับมาให้ผู้ใช้ใหม่ได้อ่าน
      ดู HN FAQ
      ฉันยังรวบรวมลิงก์ของเวอร์ชันอื่น ๆ ที่เกี่ยวข้องไว้ด้วย
    • หวังว่าสักวันจะมีงานเขียนแนวนี้เกี่ยวกับ AI ที่กลายเป็นงานคลาสสิกเหนือกาลเวลา
      ตอนนั้นเราอาจได้นั่งหัวเราะไปกับการดีบักความผิดพลาดของ AI
    • อีกไม่กี่เดือนฉันอาจจะเป็นคนโพสต์เรื่องแบบนั้นเองก็ได้
  • เมื่อคืนฉันเปิดตอนหนึ่งของซีรีส์ทีวีด้วย VLC แต่พอผ่านไปประมาณ 30 วินาที เครื่องก็ดับ
    มันดับตรงจุดเดิมถึงสามครั้ง เลยรู้สึกแปลก ๆ และเริ่มสงสัยว่าอาจเป็นเพราะตัววิดีโอเอง
    มันทำให้นึกถึงกรณีที่วิดีโอของ Janet Jackson ทำให้ฮาร์ดไดรฟ์พัง
    แถมตอนนั้นยังเป็น Black Mirror S7E01 อีก เลยยิ่งแปลกเข้าไปใหญ่
    ลิงก์อ้างอิง

    • ประเด็นสำคัญคือมันดับที่เฟรมเดิมเป๊ะ ๆ หรือแค่ช่วงใกล้เคียงกัน
      ถ้าเป็นอย่างหลัง มีโอกาสสูงว่าจะเป็นปัญหาความร้อน
      โค้ดแต่ละตัวมีภาระในการถอดรหัสต่างกัน จึงอาจทำให้ระบบร้อนเกินในบางช่วงได้
      แนะนำให้ลองเล่นจากจุดอื่น หรือข้ามช่วงนั้นไปเพื่อทดสอบ
    • แหล่งจ่ายไฟเก่าอาจรับภาระจากการถอดรหัสไม่ไหว
      ลองเปลี่ยนพาวเวอร์ซัพพลายหรือแปลง codec ดูก็น่าจะดี
      หรืออาจเป็นไฟล์ที่ถูกดัดแปลงโดยไม่หวังดี จึงควรตรวจสอบแหล่งที่มา
    • ถ้าหาสาเหตุเจอแล้ว อย่าลืมกลับมาบอกด้วย
  • เรื่องนี้เหมือนเวอร์ชันแฮ็กเกอร์ของเกร็ดเล่าเรื่องเช็กความเร็วของ SR-71 Blackbird
    เป็นงานคลาสสิกที่อ่านกี่ครั้งก็ยังอยากอ่านอีก
    ลิงก์ที่เกี่ยวข้อง

  • ทำให้นึกถึงเรื่องคลาสสิกที่ว่า “ถ้าซื้อไอศกรีมวานิลลา รถจะสตาร์ตติด แต่ถ้าซื้อสตรอว์เบอร์รีจะสตาร์ตไม่ติด”
    ลิงก์เรื่องเล่า

  • เรื่องอย่าง “Stalking the Wiley Hacker” คือสิ่งที่พาฉันเข้าสู่โลกคอมพิวเตอร์
    แต่พอมาทำงานในอุตสาหกรรมนี้จริง ๆ ก็รู้สึกเสียดายที่ความสนุกอันบริสุทธิ์ในตอนนั้นหายไป
    ลิงก์ต้นฉบับ

    • ฉันเคยเจอ Cliff Stoll ตัวจริงมาก่อน
      เขาไปบรรยายในงานสมาคมควิลต์ และแม้จะไม่เกี่ยวกับหัวข้อหลักเลย เขาก็ยังเป็นคนที่เปี่ยมพลังและมีเสน่ห์มาก
      ฉันประทับใจในพลังงานและความอยากรู้อยากเห็นของเขาแบบเต็ม ๆ
  • ทำให้นึกถึงมุก “งั้นก็ลองส่งเมลให้ไกลออกไปอีก 500 ไมล์สิ”
    ประโยค “You had me at EHLO” ก็ทำให้ฉันขำเหมือนกัน

    • ตอนเคยทำงานที่ Sendmail ฉันเคย telnet เข้า port 25 แล้วพิมพ์คำสั่ง SMTP เองโดยตรงบ่อย ๆ
      ตอนนั้นจำคำสั่งได้หมด แต่ตอนนี้ไม่มั่นใจแล้ว
  • เมื่อก่อนคอมพิวเตอร์ที่ฉันใช้มีปัญหาดับทุกครั้งที่ฉันลุกจากโต๊ะ
    สุดท้ายพบว่าสาเหตุคือพื้นไม้ที่หลวมในอาคารเก่า
    แรงสั่นตอนลุกขึ้นทำให้แหล่งจ่ายไฟที่เสียอยู่แล้วลัดวงจร

  • พออ่านบทความจบ ฉันก็รัน apt install units ทันที เป็นเครื่องมือที่ยอดเยี่ยมจริง ๆ

    • ฉันก็ติดตั้งแล้วเหมือนกัน และเจอบั๊กทันที
      ถ้าใช้คำสั่ง units ผลการคำนวณจะออกมากลับด้าน
      ตัวอย่าง: 1 mile → 1.609 km ถูกต้อง แต่ถ้า 1 unit → 1.609 units มันจะคำนวณกลับทาง
    • น่าเสียดายที่ Arch Linux ไม่มีแพ็กเกจนี้