Ubuntu, Postfix और Mailman के लिए DKIM (DomainKeys) सेटअप करें


22

मैं पोस्टफिक्स और मेलमैन के साथ Ubuntu 12.04 चला रहा हूं। मैं डीकेआईएम स्थापित करना चाहता हूं । DomainKeys आइडेंटिफाईड मेल या DKIM, Yahoo के "DomainKeys" का उत्तराधिकारी है। इसमें सिस्को की आइडेंटिफाइड मेल शामिल है।

इसे स्थापित करने के लिए क्या कदम हैं?

क्या opendkim की सिफारिश की गई है?

एकमात्र संदर्भ मेरे पास है HowToForge , लेकिन मैं यहां सहायता प्राप्त करना पसंद करता हूं (भले ही यह उस लिंक पर दिए चरणों की पुष्टि हो)। दरअसल, मुझे लगता है कि HowToForge की जानकारी पुरानी है क्योंकि इसमें opendkim के बजाय dkim-filter का उल्लेख है।

जवाबों:


39

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 बढ़ा सकते हैं।

किया हुआ!


पूरी तरह से सटीक पर काम करता है। अच्छा walkthrough धन्यवाद।
अकी

1024 बिट्स की चाबियाँ उत्पन्न करने के लिए -b 1024 का उपयोग करें। यह मेरे जीमेल पर हस्ताक्षर करने के लिए जरूरी है!
प्रशांत सिंह

1
Opendkim.conf में कृपया ध्यान दें कि "साइनिंगटेबल" और "कीटेबल" का उपयोग करते समय तीन पैरामीटर "डोमेन", "कीफाइल" और "चयनकर्ता" को नजरअंदाज कर दिया जाता है। निश्चित नहीं है कि यह किसी बिंदु पर बदल गया है, लेकिन यह ध्यान देने योग्य है ( opendkim.org/opendkim.conf.5.html )
बिलीन्हो

0

यह एक अच्छा मार्गदर्शक है।

यह बताते हैं कि opendkim है वास्तव में सिफारिश की है और कहा कि अपनी DKIM हस्ताक्षर करने को लागू करने के लिए कदम DKIM-फिल्टर के साथ जैसे ही हैं।

dkim-milter अब विकसित नहीं हो रहा है। यह मूल लेखक ने स्रोत को forked किया है और अब opendkim विकसित कर रहा है। ल्यूसिड और बाद में रिलीज के लिए, डेकिम-फिल्टर पर ओपेंडेकिम को पसंद किया जाता है। इस पृष्ठ पर निर्देश समान होना चाहिए (बस आवश्यकतानुसार समायोजित पैकेज नामों के साथ)।

BTW Domainkeys DKIM का पदावनत पूर्ववर्ती है। एसपीएफ और डीकेआईएम के लिए अपने डीएनएस क्षेत्र में TXT रिकॉर्ड जोड़ें, लेकिन यह अब डोमेनकी के साथ परेशान करने के लिए आवश्यक नहीं है।


आपके द्वारा जोड़ा गया वह लेख पुराना है। opendkim अभी उपयोग करने के लिए पैकेज है। मैं इसे स्थापित करने के माध्यम से काम कर रहा हूं ...
मोनिका सेलियो के लिए माउंटेनएक्स

मुझे आपके अनुभवों से एक अपडेट का मूल्य मिलेगा क्योंकि मैं Exim4 से पोस्टफिक्स-डवकोट पर एक सर्वर को स्विच करने वाला हूं और अप-टू-डेट मार्गदर्शन की तलाश करूंगा।
आईएनएच

मैंने अपना समाधान पोस्ट किया लेकिन मेरे पास इसे प्रारूपित करने का समय नहीं था। इसे प्रारूपित करने के लिए आपका (या किसी और का) स्वागत है। लेकिन मेरे नोट्स बहुत व्यापक हैं, इसलिए मैं चाहता था कि आप बिना देरी किए उनके पास पहुँचें। मुझे उम्मीद है कि वे मददगार होंगे।
मोनिका सेलियो के लिए माउंटेनएक्स

-1

http://wiki.zimbra.com/wiki/Configuring_for_DKIM_Signing

मैं हमेशा किसी भी चीज़ पर कुछ गाइड को पार करना सुनिश्चित करता हूं। सेट-अप कार्यों पर यह टोट, मैंने इसे सत्यापित किया और यह इसे मान्य करता है। लेकिन, आप डोमेन रिकॉर्ड के विस्तृत विवरण के लिए एक उदाहरण TXT प्रदर्शित करना चाह सकते हैं। लोग भ्रमित हो सकते हैं और स्पष्ट रूप से कुंजी की सभी चीजों को पी मूल्य में डाल सकते हैं, जो मुझे पूरी तरह से यकीन नहीं है कि सही है। अर्थात् ... ----- BEGIN सार्वजनिक कुंजी ----- और ----- अंत सार्वजनिक कुंजी ----- सहित। इससे कुछ भ्रम हो सकता है। बस यह सुनिश्चित करें कि सिर्फ एन्क्रिप्शन पार्ट ही लगाएं और मार्कर नहीं।


3
उबंटू पूछने के लिए आपका स्वागत है! जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो यहां उत्तर के आवश्यक भागों को शामिल करना बेहतर होगा , और संदर्भ के लिए लिंक प्रदान करना होगा।
ब्राह्म
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.