ईमेल के मुख्य भाग से गायब हुए पूर्णविराम का रहस्य
Simple Mail Transfer Protocol उतना सरल नहीं है
समस्या की शुरुआत
- एक ग्राहक ने बताया कि उसे भेजे गए ईमेल के मुख्य भाग से पूर्णविराम गायब हो गए थे।
- वही ईमेल किसी दूसरे ग्राहक को भेजने पर पूर्णविराम गायब नहीं हुए।
प्रोजेक्ट की याद
- लगभग 7 साल पहले, दस्तावेज़ टेम्पलेट्स को एक ही सिस्टम में एकीकृत करने वाला समाधान विकसित किया गया था।
- क्लाइंट दस्तावेज़ों में placeholders डालने के लिए Microsoft Word templates का उपयोग करते थे।
- हर बार जब कोई कर्मचारी ईमेल से दस्तावेज़ भेजता, तो placeholders को वास्तविक सामग्री से बदलना पड़ता था।
टेम्पलेट प्रबंधन की समस्या
- कई टेम्पलेट versions मौजूद थे, इसलिए उन्हें प्रबंधित करना मुश्किल था।
- कुछ टेम्पलेट्स में पुराने terms, logos, fonts आदि इस्तेमाल हो रहे थे।
- सभी टेम्पलेट्स को केंद्र से प्रबंधित करने वाला एक समाधान विकसित किया गया।
समाधान का कार्यान्वयन
- क्लाइंट PDF दस्तावेज़, text messages और email body बनाने वाले templates को केंद्र से प्रबंधित कर सकते थे।
- उदाहरण के लिए, नए ग्राहक को भेजे जाने वाले welcome letter template को सेट किया जा सकता था।
- हर delivery method (email, text message, postal mail) के अनुसार अलग templates कॉन्फ़िगर किए जा सकते थे।
समस्या को दोहराना
- समस्या केवल एक खास ग्राहक को भेजे गए ईमेल में ही आती थी, जहाँ पूर्णविराम गायब हो जाते थे।
- टेम्पलेट source code में पूर्णविराम मौजूद था।
- लोकल environment में email body का preview करने पर पूर्णविराम दिखाई दे रहा था।
कारण का विश्लेषण
- email body बनाते समय हर line की लंबाई सीमित करने वाला code मौजूद था।
- जब line तय लंबाई से लंबी हो जाती, तो नई line बनाई जाती और बाकी सामग्री वहाँ भेज दी जाती।
- SMTP specification के अनुसार, यदि कोई line पूर्णविराम से शुरू होती है, तो एक अतिरिक्त पूर्णविराम जोड़ा जाता है, और server पहला पूर्णविराम हटा देता है।
समाधान
- code में बदलाव: यदि कोई line पूर्णविराम से शुरू होती है, तो एक अतिरिक्त पूर्णविराम जोड़ा जाए ताकि server एक हटाए तब भी एक पूर्णविराम बचा रहे।
- संशोधित code का परीक्षण करने पर पुष्टि हुई कि पूर्णविराम अब गायब नहीं हो रहे थे।
- समस्या हल की गई और दूसरे teams को भी इस bug की जानकारी दी गई।
बाद की समस्या
- कुछ महीनों बाद, एक दूसरी team ने वही bug fix लागू नहीं किया, जिससे एक महत्वपूर्ण ईमेल में पूर्णविराम फिर गायब हो गए।
- कुछ ग्राहकों को ऐसे ईमेल मिले जिनमें नई monthly fee $27.00 की जगह $2700 दिखाई गई।
- तुरंत code patch करने के बाद समस्या हल कर दी गई।
GN⁺ की राय
- SMTP specification को समझने का महत्व: ईमेल ट्रांसमिशन के दौरान आने वाली समस्याओं को सुलझाने के लिए SMTP specification की गहरी समझ ज़रूरी है।
- टेम्पलेट प्रबंधन की जटिलता: कई versions वाले templates को संभालना जटिल हो सकता है, इसलिए एक केंद्रीय प्रबंधन प्रणाली की ज़रूरत होती है।
- डिबगिंग कौशल: समस्या को दोहराने और उसके कारण का विश्लेषण करने की डिबगिंग क्षमता महत्वपूर्ण है।
- टीमों के बीच संचार: समस्या हल करने के बाद दूसरी teams के साथ जानकारी साझा करना महत्वपूर्ण है।
- स्वचालित परीक्षण: ऐसी समस्याओं को रोकने के लिए automated tests लागू करना अच्छा रहेगा।
2 टिप्पणियां
लगता है कि शीर्षक में
periodको full stop की बजाय अवधि के रूप में लिया गया है, हाहा।Hacker News की राय
Hacker News टिप्पणियों का सारांश
SMTP client implementation की कठिनाई
जर्मनी में recommendation letter की कहानी
cron job और SMTP client
MAILTOvariable का उपयोग करके email address सेट किया जा सकता है।दो बुरी आदतें
dot stuffing की ज़रूरत
HTML MIME attachment समस्या
जब पहला character dot हो
bug patch सूचना
NNTP server implementation का अनुभव