DKIM যেভাবে key খুঁজে পায়
একটি মেসেজের DKIM signature-এ একটি domain (d=) ও একটি selector (s=) উল্লেখ থাকে। প্রাপক এগুলো যুক্ত করে selector._domainkey.domain তৈরি করে, সেখানকার TXT record পড়ে এবং তার p= tag-এর public key দিয়ে signature যাচাই করে। একটি domain যেকোনো সংখ্যক selector প্রকাশ করতে পারে, তাই প্রতিটি sending service-এর নিজস্ব key থাকতে পারে এবং downtime ছাড়াই key পরিবর্তন করা যায়।
পরীক্ষার জন্য selector প্রয়োজন, কারণ কোনো domain-এর selector-এর তালিকা দেখার উপায় DNS-এ নেই। scan করার মতো কিছু নেই, selector একটি আসল মেসেজের signature থেকে পাওয়া যায়।
কোন কারণে একটি key দুর্বল বা অকার্যকর হয়
RFC 8301 অনুযায়ী RSA key কমপক্ষে 1024 bit হতে হবে এবং 2048 bit হওয়া উচিত। যাচাইকারী এর চেয়ে ছোট key উপেক্ষা করতে পারে, আমাদের যাচাইকারীও তা করে। তাই 512-bit key থাকলে সেটি কোনো signature না থাকার সমান। Ed25519 key (RFC 8463) নকশাগতভাবেই ছোট ও শক্তিশালী, কিন্তু এখনো সব receiver এটি যাচাই করে না। তাই সাধারণত RSA key-এর পরিবর্তে নয়, বরং তার পাশাপাশি এটি প্রকাশ করা হয়।
চেকারটি সম্পূর্ণ key decode করে, কারণ TXT string-এ ভুলভাবে ভাগ করা record বা decode করা যায় না এমন base64 থেকে তৈরি key কোনো receiver ব্যবহার করতে পারে না। খালি p= মানে key-টি ইচ্ছাকৃতভাবে বাতিল করা হয়েছে। t=y দিয়ে বোঝানো হয় যে domain-টি এখনো পরীক্ষাধীন, এবং RFC 6376 §3.6.1 অনুযায়ী যাচাইকারীদের এর mail-কে unsigned mail-এর মতোই বিবেচনা করতে হবে।
প্রশ্ন
আমার DKIM selector কীভাবে খুঁজব এবং DKIM আদৌ চালু আছে কি না বুঝব?
নিজেকে একটি মেসেজ পাঠান এবং পৌঁছানো কপিটির header খুলুন। সেখানে DKIM-Signature header থাকলে মেসেজটি স্বাক্ষরিত হয়েছে: selector হলো s= মান এবং ডোমেইন হলো d=। এমন header না থাকলে আপনি যে পরিষেবা দিয়ে পাঠিয়েছেন, সেটি স্বাক্ষর করে না। প্রতিটি পাঠানোর পরিষেবা নিজস্ব selector দিয়ে স্বাক্ষর করে, তাই newsletter এবং আপনার mailbox থেকে পাঠানো মেসেজে আলাদা selector থাকতে পারে।
key ঠিক আছে, কিন্তু "body hash did not verify" দেখিয়ে DKIM ব্যর্থ হচ্ছে। কেন?
সাধারণত sign করার পর message পরিবর্তন করা হলে এমন হয়। যেমন mailing list কোনো footer যোগ করেছে বা security gateway কোনো link rewrite করেছে। Key শুধু sign করা বিষয়বস্তুই নিশ্চিত করতে পারে। পূর্ণ পরীক্ষায় আপনার message-এর প্রকৃত verification result দেখানো হয়।
সম্পূর্ণ নির্দেশিকা: DKIM fail
DKIM key-এর দৈর্ঘ্য: 1024 না 2048 বিট?
1024-বিটের key সব জায়গায় যাচাই হয় এবং RFC 8301 এটি অনুমোদন করে। তবে এটি এখনও ন্যূনতম আকার, তাই পরেরবার key rotate করার সময় 2048 বিট ব্যবহার করুন।
একটি ডোমেইনে কি একাধিক DKIM রেকর্ড থাকতে পারে?
হ্যাঁ, প্রতি selector-এর জন্য একটি। অনেক ডোমেইনে একাধিক রেকর্ড থাকে: mailbox প্রদানকারীর জন্য একটি এবং প্রতিটি newsletter বা billing পরিষেবার জন্য একটি করে। এগুলো একটি করে পরীক্ষা করুন। DNS থেকে কোনো key মুছে ফেললে, সেই key দিয়ে এখনও স্বাক্ষরিত প্রতিটি মেসেজ যাচাইয়ে ব্যর্থ হবে।
কত ঘন ঘন DKIM key rotate করা উচিত?
M3AAWG অন্তত প্রতি ছয় মাসে একবার key rotate করার পরামর্শ দেয়। private key ফাঁস হয়ে থাকতে পারে মনে হলে সঙ্গে সঙ্গে এটি করুন। নতুন selector-এর অধীনে নতুন key প্রকাশ করুন, সেটি দিয়ে স্বাক্ষর করা শুরু করুন এবং পুরোনো key দিয়ে স্বাক্ষরিত মেইল আসা বন্ধ হওয়ার পরেই পুরোনো রেকর্ড মুছুন। প্রেরকেরা চার থেকে পাঁচ দিন পর্যন্ত আবার পাঠানোর চেষ্টা করে, তাই প্রায় এক সপ্তাহ সময় দিন।