- अमेरिका की एक यूनिवर्सिटी के Statistics Department mail server में एक अजीब समस्या आई: वह 500 मील से ज़्यादा दूर स्थित जगहों पर ईमेल नहीं भेज पा रहा था
- जांच में पता चला कि SunOS update के दौरान Sendmail version downgrade हो गया, जिससे configuration file compatible नहीं रही
- Sendmail 5, Sendmail 8 की configuration file में मौजूद लंबे option names को पहचान नहीं पाया, और कई default values 0 पर सेट हो गईं
- इनमें SMTP connection timeout भी 0 पर सेट हो गया, इसलिए लगभग 3 मिलीसेकंड से ज़्यादा लेने वाले सभी remote connections fail हो गए
- नेटवर्क latency दूरी के अनुपात में बढ़ने के कारण, नतीजतन 500 मील से ज़्यादा दूर servers को mail delivery रुक जाने जैसी स्थिति बन गई
समस्या की शुरुआत
- Statistics Department से शिकायत आई कि “500 मील से ज़्यादा दूर ईमेल नहीं भेजे जा सकते”
- 520 मील तक भेजना संभव था, लेकिन उससे आगे fail हो रहा था
- विभागाध्यक्ष ने एक geostatistician की मदद से mail delivery संभव होने वाले radius का map तैयार कराया, जिससे पता चला कि radius लगभग 500 मील है
- सिस्टम administrator ने कई क्षेत्रों में test mail भेजकर समस्या को reproduce किया
- 400 मील दूर Princeton तक सफलतापूर्वक पहुँचा, लेकिन 600 मील दूर Memphis तक नहीं
- New York (420 मील) तक सफल, Providence (580 मील) तक असफल
कारण का विश्लेषण
- सर्वर की sendmail.cf configuration file सामान्य दिख रही थी, और यह लेखक द्वारा सीधे Sendmail 8 के लिए बनाई गई file थी
- लेकिन SMTP port banner की जांच करने पर पता चला कि SunOS Sendmail 5 चल रहा था
- सर्वर patching के दौरान operating system upgrade हुआ और Sendmail 8 से 5 पर downgrade हो गया
- पुरानी configuration file वहीं बनी रही, लेकिन Sendmail 5, Sendmail 8 के लंबे option names को समझ नहीं पाया
- जिन options को पहचाना नहीं गया, उन्हें ignore कर दिया गया, और संबंधित items की default values 0 पर reset हो गईं
- खास तौर पर remote SMTP server connection timeout value 0 पर सेट हो गई, जिससे connection attempts लगभग 3 मिलीसेकंड बाद ही बंद हो गए
दूरी और गति का संबंध
- उस समय campus network 100% switch-based architecture पर था, इसलिए router delay लगभग नहीं था
- इस वजह से connection time मुख्यतः physical distance (speed of light) से तय हो रहा था
- गणना के अनुसार 3 मिलीसेकंड लगभग 558 मील की दूरी के बराबर था
- यह वास्तव में रिपोर्ट किए गए “500 मील या उससे थोड़ा अधिक” वाले व्यवहार से मेल खाता था
निष्कर्ष
- समस्या की जड़ Sendmail versions के mismatch से हुई configuration parsing error थी
- timeout 0 पर सेट होने से ऐसा नेटवर्क व्यवहार दिखा मानो physical distance limit मौजूद हो
- यह घटना system administration में version compatibility और configuration validation के महत्व को दिखाने वाली एक क्लासिक कहानी बन गई
1 टिप्पणियां
Hacker News की राय
1990 के दशक के मध्य में, ऑफिस के PC में एक अजीब समस्या थी कि वे हर सुबह boot नहीं होते थे
बाद में पता चला कि हर सर्दियों में छोटे चूहे hard drive slot के रास्ते अंदर घुसकर गर्मी में रहते थे और पेशाब कर देते थे, जिससे circuit short हो जाता था
कंप्यूटर कुछ देर चालू रहकर गर्म हो जाता, तो वह सूख जाता और फिर boot हो पाता था
बाद में खाली drive sled खरीदकर उसे बंद कर दिया गया, और समस्या पूरी तरह गायब हो गई
सच हो या न हो, ऐसे bug को trace करने की प्रक्रिया दिलचस्प लगती है
संबंधित लिंक
एक बार मेरे CAT cable से एक चमगादड़ भी लटका हुआ मिला था
अगर रात में खिड़की खुली छोड़ दो, तो शायद bandwidth पर भी असर पड़ सकता है
developer को "Frog on Keyboard error" जैसी बेहूदा स्थितियों के लिए भी तैयार रहना चाहिए
संबंधित लेख
लगता है कि मूल लेख में chairman ने troubleshooting के लिए जो जानकारी इकट्ठा की, उसे पर्याप्त सराहना नहीं मिली
अगर वह data न होता, तो लेखक लंबे समय तक किसी बेकार server समस्या को खोजता रहता
अगर बस इतना कह दिया जाए कि “email ऐसे काम नहीं करता”, तो अगली बार कोई data नहीं देगा या फिर गलत अंदाज़े लगाएगा
यह लेख HN पर कई सालों से बार-बार लोकप्रिय होने वाला एक classic post है
2023, 2020, 2015 जैसे कई समयों पर यह फिर से पोस्ट हुआ है
2023 संस्करण, 2020 संस्करण, 2015 संस्करण
अच्छा हुआ इस बार यह छूटा नहीं। यह विनम्रता न खोने का सबक देता है
HN में करीब एक साल बाद repost ठीक माना जाता है, और classics का नए users के लिए फिर आना अच्छा है
HN FAQ देखें
संबंधित कई versions के links भी साथ में समेट दिए हैं
तब शायद हम AI की गलती debug करते हुए हँस सकेंगे
कल रात मैंने VLC में एक TV episode चलाया, और करीब 30 सेकंड बाद power बंद हो गई
तीन बार बिल्कुल उसी जगह बंद हुआ, तो अजीब लगा। सोचा कहीं video खुद ही वजह तो नहीं
मुझे पुराना Janet Jackson video से hard drive खराब होने वाला मामला याद आ गया
ऊपर से वह episode Black Mirror S7E01 था, इसलिए और भी अजीब लगा
संदर्भ लिंक
अगर दूसरा मामला है, तो thermal issue होने की संभावना ज़्यादा है
हर codec का decoding load अलग होता है, इसलिए किसी खास हिस्से में system overheat हो सकता है
किसी दूसरी जगह से playback करके या उस हिस्से को skip करके test करने की सलाह दूँगा
power supply बदलना या codec convert करना सही रहेगा
या फिर file के maliciously modified होने की संभावना भी है, इसलिए source की जाँच करनी चाहिए
यह कहानी किसी तरह SR-71 Blackbird speed check किस्से के hacker version जैसी लगती है
हर बार देखने पर फिर से पढ़ने का मन करता है
संबंधित लिंक
“अगर vanilla ice cream खरीदो तो कार start होती है, और strawberry खरीदो तो नहीं” वाला classic किस्सा याद आ जाता है
कहानी लिंक
संबंधित लिंक
“Stalking the Wiley Hacker” जैसी कहानियाँ ही मुझे computer की दुनिया में खींच लाई थीं
लेकिन industry में काम करते-करते उस समय वाली खरी खुशी खो जाने का अफसोस है
मूल लिंक
उन्होंने quilt society में talk दी थी, और विषय कुछ भी हो, वे बेहद उत्साही और आकर्षक व्यक्ति थे
उनकी energy और curiosity ने मुझे पूरी तरह प्रभावित कर दिया
“चलो mail को 500 mile और दूर भेजकर देखते हैं” वाला मज़ाक याद आता है
“You had me at EHLO” पढ़कर हँसी आ गई
उस समय सारे commands याद थे, अब उतना भरोसा नहीं है
कभी मेरे पुराने कंप्यूटर में यह समस्या थी कि मैं सीट से उठते ही वह बंद हो जाता था
बाद में पता चला कि पुराने building का ढीला लकड़ी का फ़र्श ही वजह था
उठते समय होने वाला कंपन खराब power supply को short कर देता था
यह पढ़ते ही मैंने तुरंत “apt install units” चला दिया। वाकई कमाल का tool निकला
“units” command इस्तेमाल करने पर calculation उलटी दिशा में निकलती है
उदाहरण: 1 mile → 1.609 km सही है, लेकिन 1 unit → 1.609 units करने पर गणना उलट जाती है