DKIM key कैसे खोजता है
किसी संदेश में DKIM signature एक domain (d=) और selector (s=) बताता है। प्राप्तकर्ता इन्हें जोड़कर selector._domainkey.domain बनाता है, वहाँ TXT record पढ़ता है और signature सत्यापित करने के लिए उसके p= tag में मौजूद public key का उपयोग करता है। एक domain कितने भी selectors प्रकाशित कर सकता है, इसलिए हर sending service की अपनी key हो सकती है और बिना downtime के keys बदली जा सकती हैं।
जाँच टूल को selector चाहिए क्योंकि DNS किसी domain के selectors की सूची दिखाने का कोई तरीका नहीं देता। scan करने के लिए कुछ नहीं होता, selector किसी वास्तविक संदेश के signature से मिलता है।
किस वजह से key कमजोर या खराब होती है
RFC 8301 के अनुसार RSA कुंजियाँ कम से कम 1024 बिट की होनी चाहिए और 2048 बिट की होना बेहतर है। सत्यापनकर्ता इससे छोटी कुंजी को अनदेखा कर सकता है, और हमारा सत्यापनकर्ता ऐसा ही करता है, इसलिए 512-बिट कुंजी को कोई हस्ताक्षर न होने के बराबर माना जाता है। Ed25519 कुंजियाँ (RFC 8463) डिज़ाइन के अनुसार छोटी और मजबूत होती हैं, लेकिन अभी हर प्राप्तकर्ता उनका सत्यापन नहीं करता। इसलिए इन्हें आम तौर पर RSA कुंजी की जगह नहीं, बल्कि उसके साथ प्रकाशित किया जाता है।
जाँच टूल कुंजी को पूरी तरह डिकोड करता है, क्योंकि TXT स्ट्रिंग में गलत तरीके से विभाजित रिकॉर्ड या डिकोड न होने वाला base64 ऐसी कुंजी है जिसे कोई प्राप्तकर्ता इस्तेमाल नहीं कर सकता। खाली p= का अर्थ है कि कुंजी जानबूझकर रद्द की गई थी। t=y ऐसे डोमेन को चिह्नित करता है जिसका अभी परीक्षण चल रहा है, और RFC 6376 §3.6.1 सत्यापनकर्ताओं को उसके ईमेल के साथ ठीक वैसा ही व्यवहार करने को कहता है जैसा बिना हस्ताक्षर वाले ईमेल के साथ किया जाता है।
सवाल
मेरा DKIM सिलेक्टर कैसे मिलेगा, और क्या DKIM सक्षम भी है?
खुद को एक संदेश भेजें और पहुँची हुई कॉपी के headers खोलें। वहाँ DKIM-Signature header होने का अर्थ है कि संदेश साइन किया गया था: सिलेक्टर s= की वैल्यू है और डोमेन d= है। ऐसा header न होने का अर्थ है कि जिस सेवा से आपने संदेश भेजा, वह साइन नहीं करती। हर भेजने वाली सेवा अपने सिलेक्टर से साइन करती है, इसलिए newsletter और आपके mailbox से भेजे गए संदेशों में अलग-अलग सिलेक्टर हो सकते हैं।
Key सही है, लेकिन DKIM "body hash did not verify" के साथ विफल क्यों होता है?
आमतौर पर संदेश को हस्ताक्षर किए जाने के बाद बदल दिया गया होता है, जैसे किसी मेलिंग लिस्ट ने फुटर जोड़ दिया हो या सुरक्षा गेटवे ने लिंक दोबारा लिखा हो। कुंजी केवल उसी सामग्री की पुष्टि कर सकती है जिस पर हस्ताक्षर किया गया था। पूरा परीक्षण आपके संदेश का वास्तविक सत्यापन परिणाम दिखाता है।
पूरी गाइड: DKIM fail
DKIM key की लंबाई: 1024 या 2048 bits?
1024-bit key हर जगह सत्यापित होती है और RFC 8301 इसकी अनुमति देता है। फिर भी यह न्यूनतम लंबाई है, इसलिए अगली बार keys rotate करते समय 2048 bits अपनाएँ।
क्या एक डोमेन में एक से अधिक DKIM रिकॉर्ड हो सकते हैं?
हाँ, हर सिलेक्टर के लिए एक रिकॉर्ड हो सकता है और कई डोमेन में कई रिकॉर्ड होते हैं: एक mailbox provider के लिए और एक-एक हर newsletter या billing service के लिए। इन्हें एक बार में एक जाँचें। DNS से हटाई गई key से अब भी साइन किए गए सभी संदेश विफल हो जाते हैं।
मुझे DKIM keys कितनी बार rotate करनी चाहिए?
M3AAWG कम से कम हर छह महीने में keys rotate करने की सलाह देता है, और private key के लीक होने की आशंका हो तो तुरंत। नई key को नए सिलेक्टर के तहत publish करें, signing को उस पर switch करें और पुराना रिकॉर्ड तभी हटाएँ जब पुरानी key से साइन किए गए मेल आने बंद हो जाएँ। Senders चार से पाँच दिनों तक दोबारा प्रयास करते हैं, इसलिए लगभग एक सप्ताह दें।