UbuntuD 12.04LTS पर openDKIM और पोस्टफिक्स
मैं वापस आने की कोशिश करूंगा और इसे बेहतर स्वरूप दूंगा। लेकिन चूंकि मेरा जवाब पोस्ट करने का अनुरोध था, इसलिए मैं इंतजार करने के बजाय इसे तब तक पोस्ट करना चाहता था जब तक मेरे पास इसे ठीक से प्रारूपित करने का समय नहीं था। समय की कमी के कारण, मैंने अपना पूरा उत्तर एक ब्लॉकचोट में लपेट दिया। मुझे उम्मीद है कि यह समाधान सहायक है।
ये मेरे संदर्भ हैं:
और इस विषय पर विकिपीडिया की अच्छी प्रविष्टि है
कम से कम आपको आवश्यकता होगी:
- अपने मेल सर्वर तक रूट पहुँच
- अपने डोमेन के लिए dns रिकॉर्ड अपडेट करने के लिए पहुँच
रिपॉजिटरी से opendkim स्थापित करें:
# sudo apt-get install opendkim opendkim-tools
आपको यह चुनना होगा कि आप किस "चयनकर्ता" का उपयोग करना चाहते हैं। चयनकर्ता मूल रूप से उस शब्द का वर्णन करने के लिए है जिसका उपयोग आप करना चाहते हैं। यहां मैं चयनकर्ता 201205 का उपयोग करने जा रहा हूं क्योंकि कुंजी मई 2012 में वैध हो गई (चालाक ईएच?)। मैं विविधता के लिए दो उदाहरण देता हूं, जो स्पष्ट रूप से स्पष्टता जोड़ेंगे। आपको केवल एक कुंजी उत्पन्न करनी होगी। हालांकि, मैं दोनों उदाहरण दे रहा हूं ताकि आप उनकी तुलना कर सकें।
- 201205 (पहली कुंजी)
- my_selector (दूसरी कुंजी)
मेरा डोमेन होगा example.com
, लेकिन मैं अपने दूसरे उदाहरण के लिए एक उपडोमेन का उपयोग करूंगा:
- example.com (पहली कुंजी)
- mail.example.com (दूसरी कुंजी)
मैंने निम्नलिखित निर्देशिका में काम करने का फैसला किया:
# mkdir /etc/opendkim/
# cd /etc/opendkim
अपने चुने हुए चयनकर्ता और डोमेन का उपयोग करके, वर्तमान निर्देशिका में कुंजियाँ बनाएँ।
# opendkim-genkey -s 201205 -d example.com
आपको स्वामित्व बदलने की आवश्यकता हो सकती है या नहीं। स्वामित्व और अनुमतियां क्या होनी चाहिए, इसके लिए नीचे दी गई 2 कुंजी के लिए मेरे उदाहरण में विवरण देखें।
पहले आपको जांचना चाहिए कि क्या कोई opendkim
उपयोगकर्ता है (आपका उपयोगकर्ता / समूह आईडी भिन्न हो सकता है):
# grep opendkim /etc/passwd
opendkim:x:108:117::/var/run/opendkim:/bin/false
और आपको शायद ऐसा करने की आवश्यकता है:
# chmod 700 /var/run/opendkim
नोट: ये अगले दो आदेश उबंटू 12.04 पर आवश्यक नहीं हैं। लेकिन अगर ऊपर की कमांड यह नहीं दिखाती है कि उपयोगकर्ता opendkim को ठीक से स्थापित किया गया था, तो इसे इसी तरह करें:
# useradd -r -g opendkim -G mail -s /sbin/nologin -d /var/run/opendkim -c "OpenDKIM" opendkim
# chown opendkim:opendkim 201205.private
# cat 201205.private
-----BEGIN RSA PRIVATE KEY-----
ABCCXQ...[long string]...SdQaZw9
-----END RSA PRIVATE KEY-----
अब सार्वजनिक कुंजी की जांच करें और ध्यान दें कि उबंटू 12.04 पर एक बग (OpenDKIM 2.5.2 में) है! जिसमें ;=rsa;
सम्मिलित है, उसमें सम्मिलित होना चाहिए ;k=rsa;
। k
याद आ रही है। कृपया इसे डालें।
# cat 201205.txt
201205._domainkey IN TXT "v=DKIM1;=rsa; p=WIGfM..[snip]..QIDIAB" ; ----- DKIM 201205 for example.com
तय होने के बाद, यह इस तरह दिखाई देगा:
201205._domainkey IN TXT "v=DKIM1;k=rsa; p=WIGfM..[snip]..QIDIAB" ; ----- DKIM 201205 for example.com
इसके अलावा, आप शायद इस तरह अर्धविराम से बचने की जरूरत है। यदि आप समाप्ति टिप्पणी नहीं चाहते हैं, तो इसे हटा दें। यह भी ध्यान दें कि आपको सर्वर प्राप्त करने के संकेत के लिए t = y ध्वज जोड़ना चाहिए जिसे आप DKIM परीक्षण कर रहे हैं लेकिन सक्रिय रूप से अभी तक इसका उपयोग नहीं कर रहे हैं। आप एक व्यवहार्य संसाधन रिकॉर्ड के साथ बचे हैं:
201205._domainkey IN TXT "v=DKIM1\;k=rsa\;t=y\;p=WIGfM..[snip]..QIDIAB"
आपको अपने आधिकारिक DNS सर्वर के लिए उपरोक्त सार्वजनिक कुंजी की सामग्री प्रकाशित करनी होगी। मैं एक TXT रिकॉर्ड का उपयोग करने की सलाह देता हूं। एसपीएफ रिकॉर्ड का उपयोग करने के लिए या दोनों प्रकारों पर थोड़ा विवाद हो रहा है। थोड़ा पढ़ने के बाद, मैं विशेष रूप से TXT रिकॉर्ड प्रकार के साथ रहने के लिए चुना गया, हालांकि मुझे विश्वास नहीं है कि यह इस विषय पर अंतिम शब्द है।
आपको एक छोटी TTL (जीने के लिए समय) का उपयोग करना चाहिए ताकि आप DNS का प्रचार करने के लिए इसके लिए प्रतीक्षा किए बिना उम्र को बदल सकें। मैंने 180 सेकंड का उपयोग किया।
एक प्रमुख जोड़ी बनाने का दूसरा उदाहरण मेरे लिए थोड़ा मुश्किल था। मैंने जो किया उसका वर्णन करूँगा। पहला तत्व यह है कि मैंने डोमेन मूल्य "example.com" का उपयोग किया था, भले ही कुंजी "mail.example.com" के लिए उपयोग की जाएगी। मैं परीक्षण और त्रुटि के माध्यम से इस पर पहुंचा। यह काम करता है, जबकि "mail.example.com" का उपयोग नहीं किया गया। दुर्भाग्य से, मुझे इसके पीछे के कारणों की जानकारी नहीं है। यह वास्तव में एकमात्र अंतर है जिसका मैंने सामना किया था, लेकिन यह काफी परेशान कर रहा था कि मुझे लगा कि मुझे अपने अनुभवों को उप-डोमेन के साथ दस्तावेज़ित करना चाहिए। अन्य शुरुआती स्तर के किसी भी ट्यूटोरियल को मैंने ऐसा नहीं किया। दूसरी कुंजी उत्पन्न करें:
opendkim-genkey -s my_selector -d example.com
निजी कुंजी के स्वामित्व और अनुमतियों की जाँच करें, जैसा कि ऊपर दिया गया है। यहाँ वे क्या दिखना चाहिए:
# ls -la /etc/opendkim
-rw------- 1 opendkim opendkim 891 May 10 07:44 my_selector.private
DNS रिकॉर्ड प्रकाशित करने के बाद, इसे देखें dig
। यह वही लौटना चाहिए जो आपने संसाधन रिकॉर्ड (आरआर) में दर्ज किया था।
$ dig 201205._domainkey.example.com txt +short
"v=DKIM1\;k=rsa\;t=y\;p=WIGfM..[snip]..QIDIAB"
अब, कुंजी का परीक्षण करें। नीचे दिए गए आदेश यह मानते हैं कि आप उस निर्देशिका में हैं जहाँ कुंजी मेरे लिए रहती है (/ etc / opendkim)।
# opendkim-testkey -d example.com -s 201205 -k 201205.private -vvv
opendkim-testkey: key loaded from /etc/opendkim/201205.private
opendkim-testkey: checking key '201205._domainkey.example.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK
ये परिणाम अपेक्षित हैं। "कुंजी सुरक्षित नहीं" त्रुटि का संकेत नहीं देती है। यह DNSSSEC का उपयोग नहीं करने का एक अपेक्षित परिणाम है। DNSSEC आ रहा है, लेकिन यह अभी तक प्राइम टाइम के लिए तैयार नहीं है, मेरे पढ़ने के अनुसार।
2 कुंजी के साथ उदाहरण:
# opendkim-testkey -d example.com -s my_selector -k /etc/opendkim/my_selector.private -vvvv
opendkim-testkey: key loaded from /etc/opendkim/my_selector.private
opendkim-testkey: checking key 'my_selector._domainkey.example.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK
ध्यान दें कि opendkim यह बता रहा है कि कुंजी सुरक्षित नहीं है। यह इस तथ्य से संबंधित है कि DNSSEC मेरे DNS सर्वर पर लागू नहीं है और सैद्धांतिक रूप से कोई व्यक्ति DNS लुकअप को रोक सकता है और इसे अपनी कुंजी से बदल सकता है।
OpenDKIM कॉन्फ़िग फ़ाइल संपादित करें:
# nano /etc/opendkim.conf
# cat /etc/opendkim.conf
# This is a basic configuration that can easily be adapted to suit a standard
# installation. For more advanced options, see opendkim.conf(5) and/or
# /usr/share/doc/opendkim/examples/opendkim.conf.sample.
#
Domain example.com
KeyFile /etc/opendkim/201205.private
Selector 201205
#
# Commonly-used options
Canonicalization relaxed/simple
Mode sv
SubDomains yes
# Log to syslog
Syslog yes
LogWhy yes
# Required to use local socket with MTAs that access the socket as a non-
# privileged user (e.g. Postfix)
UMask 022
UserID opendkim:opendkim
#
KeyTable /etc/opendkim/KeyTable
SigningTable /etc/opendkim/SigningTable
ExternalIgnoreList /etc/opendkim/TrustedHosts
InternalHosts /etc/opendkim/TrustedHosts
#
Socket inet:8891@localhost
#EOF
यदि आप लक्षित डोमेन "mail.example.com" के साथ मेरे 2 मुख्य उदाहरण का उपयोग कर रहे हैं, तो प्रविष्टि अभी भी मुख्य डोमेन को संदर्भित करेगी:
Domain example.com
KeyFile /etc/dkim/my_selector.private
Selector my_selector
-----
मेरे स्रोतों में से एक से नोट करें: यदि आप पोस्टफिक्स के कई उदाहरण चलाते हैं, तो आपको इसे प्रत्येक उदाहरण के लिए opendkim.conf में जोड़ना होगा (या जिन्हें आप opendkim का उपयोग करना चाहते हैं)
अपने पाठ संपादक के साथ एक फ़ाइल बनाएँ /etc/opendkim/TrustedHosts
:
डोमेन, होस्टनाम और / या IP जोड़ें जो OpenDKIM द्वारा नियंत्रित किया जाना चाहिए। लोकलहोस्ट को मत भूलना।
127.0.0.1
localhost
example.com
mail.example.com
192.168.1.100 #(IP address of your server, if applicable)
(ऊपर की अंतिम पंक्ति की शायद जरूरत नहीं होगी। यदि आपके पास जोड़ने के लिए एक आईपी पता है, तो सुनिश्चित करें कि आप अपने स्वयं के उपयोग करते हैं, उदाहरण के लिए ऊपर नहीं।)
संपादित करें /etc/default/opendkim
:
इस पंक्ति को रद्द करें और पोर्ट 8891 का उपयोग करें:
SOCKET="inet:8891@localhost" # listen on loopback on port
सुनिश्चित करें कि आपका फ़ायरवॉल (iptables) लोकलहोस्ट पर लूपबैक की अनुमति देता है:
sudo iptables -A INPUT -i lo -j ACCEPT
इसके बाद, अपने टेक्स्ट एडिटर के साथ एक फ़ाइल बनाएं /etc/opendkim/KeyTable
और KeyTable में डोमेन जोड़ें
पंक्ति जोड़ें:
#EXAMPLE showing my 2nd key:
my_selector._domainkey.example.com example.com:my_selector:/etc/opendkim/my_selector.private
अगला अपने टेक्स्ट एडिटर के साथ एक फ़ाइल बनाएं /etc/opendkim/SigningTable
और साइनिंगटेबल में डोमेन जोड़ें
मैं दोनों उदाहरण दिखाता हूं। ध्यान दें कि मेरी दूसरी कुंजी के लिए, मुझे अब पूर्ण डोमेन नाम "mail.example.com" का उपयोग करना होगा:
example.com 201205._domainkey.example.com
mail.example.com my_selector._domainkey.example.com
ध्यान दें कि OpenDKIM 2.0.1 डोमेन नाम केस संवेदी हैं। इस उदाहरण में हम OpenDKIM के एक नए संस्करण का उपयोग कर रहे हैं और यह एक समस्या नहीं है।
पोस्टफ़िक्स कॉन्फ़िगर करें। /Etc/postfix/main.cf संपादित करें और अंत में लाइनें जोड़ें
milter_default_action = accept
milter_protocol = 2
smtpd_milters=inet:localhost:8891
non_smtpd_milters=inet:localhost:8891
होस्टनाम भी बदलें:
#myhostname = localhost #original
myhostname = mail.example.com
आपको / etc / host में संबंधित प्रविष्टि को भी बदलना चाहिए। रिबूट के बाद ये बदलाव प्रभावी हैं (हालांकि आप इसे तुरंत कमांड के साथ सेट कर सकते हैं:) hostname NEW_NAME
।
यदि आपने रिबूट नहीं किया है तो पोस्टफ़िक्स और ऑपेंडिक्म को फिर से शुरू करें:
# service opendkim restart
Restarting OpenDKIM: opendkim.
# service postfix restart
* Stopping Postfix Mail Transport Agent postfix [ OK ]
* Starting Postfix Mail Transport Agent postfix [ OK ]
परिक्षण
यह जांचने का सबसे अच्छा तरीका है कि आपके हस्ताक्षरित मेल को प्रमाणित किया जा रहा है और यह कि आपके DNS रिकॉर्ड ठीक से सेट किए गए हैं, मुफ्त परीक्षण सेवाओं में से एक का उपयोग करना है। मैंने इनका इस्तेमाल किया:
- ब्रैंडन चेकसेट ईमेल मान्यकर्ता - http://www.brandonchecketts.com/emailtest.php (मेरा पसंदीदा)
- एक हस्ताक्षरित ईमेल भेजें: check-auth@verifier.port25.com (मेरा पसंदीदा भी)
एक हस्ताक्षरित ईमेल भेजें: sa-test@sendmail.net (आप परीक्षण करने के लिए एक ही आउटगोइंग संदेश के क्षेत्र में परीक्षण ईमेल पते के सभी डाल सकते हैं)
एक हस्ताक्षरित ईमेल भेजें: autorespond+dkim@dk.elandsys.com <--- BROKEN !!! यह प्रयोग न करें।
इनमें से प्रत्येक आपको बताएगा कि क्या चीजें ठीक से काम कर रही हैं, और यदि आवश्यक हो तो समस्या निवारण पर कुछ संकेत दें।
यदि आपके पास एक जीमेल खाता है, तो आप एक त्वरित और आसान परीक्षा के लिए एक हस्ताक्षरित संदेश भी भेज सकते हैं।
एक बार जब आप खुश हो जाते हैं कि सब ठीक है, तो आप DNS TXT रिकॉर्ड में परीक्षण ध्वज को हटा सकते हैं और TTL बढ़ा सकते हैं।
किया हुआ!