पोस्टफ़िक्स "चेतावनी: फ़ाइल से RSA निजी कुंजी प्राप्त नहीं कर सकता"


14

मैंने बस पीछा किया वर्चुअल उपयोगकर्ताओं के बैकएंड के रूप में dovecot और mysql के साथ पोस्टफ़िक्स मेलस्वर सेट करने के लिए इस ट्यूटोरियल का ।

अब मुझे अधिकांश भाग काम करने लगे, मैं POP3 (S) और IMAP (S) से जुड़ सकता हूं।

का उपयोग करते हुए

echo TEST-MAIL | mail myaccount@hotmail.com

ठीक है, जब मैं अपने हॉटमेल खाते में प्रवेश करता हूं तो यह ईमेल दिखाता है।

यह रिवर्स में भी काम करता है इसलिए example.com के लिए मेरी MX प्रविष्टि अंततः प्रचारित की गई है, इसलिए मैं myaccount@hotmail.com से myvirtualuser@example.com पर भेजे गए ईमेल प्राप्त करने में सक्षम हो रहा हूँ और उन्हें IMAP के माध्यम से STARTTLS से थंडरबर्ड में देखने में ।

त्रुटि संदेश " 5.7.1: रिले एक्सेस अस्वीकृत " होने के बाद थोड़ा और अधिक शोध करने पर myaccount@hotmail.com पर मेल भेजने की कोशिश करते समय थंडरबर्ड का उपयोग करके myvirtualuser@example.com में लॉग इन किया जा रहा है , मुझे लगा कि मेरा सर्वर काम कर रहा था एक "ओपन मेल रिले" के रूप में, जो - ofcourse - एक बुरी बात है।

जैसे ट्यूटोरियल के वैकल्पिक भागों में अधिक खुदाई इस टिप्पणी और अन्य turorial , मैं भी के माध्यम से मेल भेजने के लिए सक्षम होने के लिए इन चरणों को पूरा करने का निर्णय लिया myvirtualuser@example.com मोज़िला थंडरबर्ड के माध्यम से, त्रुटि संदेश "नहीं मिल रहा है 5.7.1 : प्रसारण प्रवेश निषेध "अब (जैसा कि आम मेलवेर्वर्स खुले रिले ईमेल को अस्वीकार करते हैं)।

लेकिन अब मैं SMTPS के साथ, /var/log/mail.log में पोस्टफ़िक्स को पाने की कोशिश में एक त्रुटि में भाग गया। यह पढ़ता है

Sep 28 17:29:34 domain postfix/smtpd[20251]: warning: cannot get RSA private key from file /etc/ssl/certs/postfix.pem: disabling TLS support
Sep 28 17:29:34 domain postfix/smtpd[20251]: warning: TLS library problem: 20251:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: ANY PRIVATE KEY:
Sep 28 17:29:34 domain postfix/smtpd[20251]: warning: TLS library problem: 20251:error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib:ssl_rsa.c:669:

थंडरबर्ड में पोर्ट 465 के माध्यम से एसएमटीपी एसएसएल / टीएलएस का उपयोग करके अपने नए इंस्टॉल किए गए मेल से एक मेल भेजने की कोशिश करने के बाद उस त्रुटि को सही तरीके से लॉग किया गया है। थंडरबर्ड ने मुझे एक टाइमआउट बताया।

Google के पास उस समस्या से संबंधित कुछ परिणाम हैं, फिर भी मैं उनमें से किसी के साथ भी काम नहीं कर सका। मैं उनमें से कुछ को यहां लिंक करूंगा लेकिन एक नए उपयोगकर्ता के रूप में मुझे केवल दो हाइपरलिंक का उपयोग करने की अनुमति है।

मेरा /etc/postfix/master.cf दिखता है

smtp      inet  n       -       -       -       -       smtpd
smtps     inet  n       -       -       -       -       smtpd
   -o smtpd_tls_wrappermode=yes
   -o smtpd_sasl_auth_enable=yes

और नैंप मुझे बताता है

PORT     STATE SERVICE
[...]
465/tcp  open  smtps
[...]

मेरा /etc/postfix/main.cf दिखता है

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
readme_directory = no
#smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem            #default postfix generated
#smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key #default postfix generated
smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem
smptd_tls_key_file = /etc/ssl/private/postfix.pem
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smptd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

myhostname = example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost.com, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
mailbox_command = /usr/lib/dovecot/deliver

* .Pem फ़ाइलों का उपयोग करके ऊपर दिए गए ट्यूटोरियल में वर्णित किया गया था

Postfix
To create a certificate to be used by Postfix use:

openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/postfix.pem -keyout /etc/ssl/private/postfix.pem

Do not forget to set the permissions on the private key so that no unauthorized people can read it:

chmod o= /etc/ssl/private/postfix.pem

You will have to tell Postfix where to find your certificate and private key because by default it will look for a dummy certificate file called "ssl-cert-snakeoil":

postconf -e smtpd_tls_cert_file=/etc/ssl/certs/postfix.pem
postconf -e smtpd_tls_key_file=/etc/ssl/private/postfix.pem

मुझे लगता है कि मुझे /etc/dovecot/dovecot.conf को शामिल नहीं करना है यहाँ , क्योंकि लॉगिन के माध्यम से लॉगिन और पॉप 3 लॉग के अनुसार ठीक काम करता है। केवल समस्या यह है कि उपसर्ग को ठीक से स्व-निर्मित, स्व-हस्ताक्षरित प्रमाण पत्र का उपयोग करना है।

किसी भी मदद की सराहना की!

संपादित करें: मैंने अभी-अभी पोस्टफ़िक्स के लिए स्व-हस्ताक्षरित प्रमाण पत्र बनाने पर इस अलग ट्यूटोरियल की कोशिश की, अभी भी वही त्रुटि हो रही है। मैं वास्तव में परीक्षण करने के लिए और क्या नहीं जानता।

मैंने SSL पुस्तकालयों के लिए भी जाँच की थी, लेकिन सभी ठीक लग रहे हैं:

  root@domain:~# ldd /usr/sbin/postfix
    linux-vdso.so.1 =>  (0x00007fff91b25000)
    libpostfix-global.so.1 => /usr/lib/libpostfix-global.so.1 (0x00007f6f8313d000)
    libpostfix-util.so.1 => /usr/lib/libpostfix-util.so.1 (0x00007f6f82f07000)
    libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0x00007f6f82cb1000)
    libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x00007f6f82910000)
    libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x00007f6f826f7000)
    libdb-4.8.so => /usr/lib/libdb-4.8.so (0x00007f6f8237c000)
    libnsl.so.1 => /lib/libnsl.so.1 (0x00007f6f82164000)
    libresolv.so.2 => /lib/libresolv.so.2 (0x00007f6f81f4e000)
    libc.so.6 => /lib/libc.so.6 (0x00007f6f81beb000)
    libdl.so.2 => /lib/libdl.so.2 (0x00007f6f819e7000)
    libz.so.1 => /usr/lib/libz.so.1 (0x00007f6f817d0000)
    libpthread.so.0 => /lib/libpthread.so.0 (0x00007f6f815b3000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f6f83581000)

अंसार वाइकर के बाद आखिरकार यह काम कर रहा है।

postconf -nलाइनों के रूप में यह चाहिए। Opensl के माध्यम से प्रमाण पत्र / कुंजी जांच से पता चला है कि दोनों फाइलें वैध हैं।

तो यह वास्तव में एक अनुमति समस्या रही है! पता नहीं था कि /etc/ssl/*/postfix.pem फ़ाइलों को पोस्टफ़िक्स को chown'ing करना: पोस्टफ़िक्स के लिए पोस्टफ़िक्स के लिए पोस्टफ़िक्स पर्याप्त नहीं है।

जवाबों:


16

main.cfजरूरी नहीं कि सामग्री आपके सक्रिय पोस्टफिक्स कॉन्फ़िगरेशन का प्रतिनिधित्व करे। postconf -nनिम्नलिखित दो मापदंडों के लिए आउटपुट की जाँच करें :

smtpd_recipient_restrictions = 
  permit_mynetworks, 
  permit_sasl_authenticated, 
  reject_unauth_destination
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

यदि $mynetworksस्थानीयहोस्ट के लिए प्रतिबंधित है और पहले तीन प्रतिबंधों के रूप में $smtpd_recipient_restrictionsदिखाता है permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, तो आप एक खुले रिले नहीं हैं।

सत्यापित करें कि /etc/ssl/private/postfix.pemएक मान्य कुंजी /etc/ssl/certs/postfix.pemशामिल है और एक मान्य प्रमाणपत्र है:

openssl rsa -in /etc/ssl/private/postfix.pem -check -noout
openssl x509 -in /etc/ssl/certs/postfix.pem -text -noout

आपको यह भी जांचना होगा कि क्या पोस्टफिक्स फाइल तक पहुंच सकता है। मेरे सर्वर पर, अनुमतियाँ /etc/ssl/privateहैं

drwx--x---  2 root ssl-cert  4096 Aug 03 01:55 private/

इस प्रकार बस chownकुंजी फ़ाइल आईएनजी आपको कोई अच्छा नहीं करेगी, क्योंकि निर्देशिका अनुमतियाँ पोस्टफ़िक्स को इसमें किसी भी फ़ाइल तक पहुँचने से रोकती हैं।

अपने सेटअप को सरल बनाने का प्रयास करें। प्रमाण पत्र और कुंजी को एक फाइल में रखें:

cat /etc/ssl/*/postfix.pem > /etc/postfix/server.pem
chmod 640 /etc/postfix/server.pem
chown postfix:postfix /etc/postfix/server.pem

और अपना परिवर्तन main.cfइस तरह से करें:

smtpd_tls_cert_file = /etc/postfix/server.pem
smtpd_tls_key_file = $smtpd_tls_cert_file

पोस्टफ़िक्स को पुनरारंभ करें और देखें कि क्या सर्वर कुंजी तक पहुंच सकता है।


यही कारण है कि यह तय हो गई, बहुत बहुत, दोनों आप के धन्यवाद Ladadadada और Ansgar Wiechers
ओफ़्फ़

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

2

उन निर्देशों में chmod o= /etc/ssl/private/postfix.pemकुछ भी नहीं है, जिसके बारे में कुछ भी कहा जाता है कि उपयोगकर्ता फ़ाइल का मालिक है।

मेरे बक्से पर, smtpdप्रक्रिया postfixउपयोगकर्ता के रूप में चलती है । जांचें कि postfixउपयोगकर्ता पहुंच सकता है /etc/ssl/private/postfix.pem। या संभवतः बस chown postfix:postfix /etc/ssl/private/postfix.pem

अन्य स्पष्ट समस्या वही है जो त्रुटि संदेश कहता है: उस फ़ाइल में एक मान्य RSA कुंजी नहीं है। एक नज़र डालें /etc/ssl/private/postfix.pemऔर सुनिश्चित करें कि इसमें कम से कम ऐसा कुछ है जो RSA कुंजी की तरह दिखता है। इसे अपने प्रश्न में पेस्ट न करें।

दरअसल, मैंने सिर्फ यह देखा कि त्रुटि संदेश के लिए है /etc/ssl/certs/postfix.pem, नहीं /etc/ssl/private/postfix.pem। स्वामित्व, अनुमति और सामग्री की /etc/ssl/certs/postfix.pemभी जाँच करें।


वह त्रुटि संदेश थोड़ा भ्रामक है। यह कहता है cannot get RSA private key from file /etc/ssl/certs/postfix.pemलेकिन निजी कुंजी में होना चाहिए /etc/ssl/private/postfix.pem। मुझे यह जानने के लिए टीएलएस का उपयोग करके पोस्टफ़िक्स के साथ पर्याप्त अनुभव नहीं है कि यह बग पोस्टफ़िक्स है या आपके कॉन्फ़िगरेशन में कोई गलती है।


मैंने पोस्टफ़िक्स में दोनों फाइलों को चॉइस किया: पोस्टफ़िक्स फिर पोस्टफ़िक्स को फिर से शुरू किया, लेकिन ईमेल भेजने की कोशिश अभी भी /var/log/mail.log में त्रुटि को पुन: पेश कर रही है
पाब्लो

रूट @ डोमेन: / etc / ssl / certs # ls -l postfix.pem -rw -r - r-- 1 पोस्टफिक्स पोस्टफिक्स 1363 सितंबर 28 16:36 पोस्टफिक्स.पेम और इसमें सर्टिफिकेट कंटेंट सम्‍मिलित लगता है, जिससे शुरुआत होती है - --- BEGIN CERTIFICATE ----- सम्‍मिलित डेटा तक ----- END CERTIFICATE -----
phew

मैं उस के बारे में सोच रहा था, भी, इसलिए मैंने फाइलों को स्वैप करने की कोशिश की। लेकिन इसका कोई मतलब नहीं है कि फाइल / सेर्ट्स / सर्टिफिकेट हैडर में "---- BEGIN CERTIFICATE -----" है। वैसे भी आपकी मदद के लिए धन्यवाद।
पाब्लो

1

प्रमाणपत्र को कुंजी से मिलान करना होगा, मेरे मामले में अनुमतियों से कोई लेना-देना नहीं था

स्व हस्ताक्षरित प्रमाण पत्र और कुंजी बनाएं https://msol.io/blog/tech/create-a-self-signed-ssl-certificate-with-openssl/

उम्मीद है की यह मदद करेगा


क्या यह बेहतर होगा कि एक निशुल्क एन्क्रिप्टेड सर्टिफिकेट का उपयोग करें?
लड़कियों को

दोहे, धन्यवाद! कॉपी और पेस्ट के परिणामस्वरूप एक प्रमाणित फ़ाइल और एक असंबंधित कुंजी है।
एडम केर्ज़

0

जांचें कि कुंजी के पास इस पर पासफ़्रेज़ नहीं है। आप इसे हटा सकते हैं

openssl rsa -in key.pem -out newkey.pem

अगर वे एक साथ उपयोग कर रहे हैं

openssl rsa -in mycert.pem -out newcert.pem
openssl x509 -in mycert.pem >>newcert.pem

पासफ़्रेज़ ने लॉग पर चेतावनी देते हुए कहा कि यह RSAA निजी कुंजी प्राप्त करने में सक्षम नहीं है, जो बदले में TLS समर्थन को अक्षम करता है। आशा है कि यह किसी की मदद करता है!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.