bg-tutorials

Qmail पर SSL सर्टिफिकेट कैसे इंस्टॉल करें

यह ट्यूटोरियल आपको दिखाता है Qmail पर SSL/TLS सर्टिफिकेट कैसे इंस्टॉल करें, जो D. J. Bernstein द्वारा मूल रूप से लिखा गया मेल ट्रांसफर एजेंट है। यह वही प्रक्रिया है जिसका उपयोग Qmail वर्षों से करता आ रहा है: एक ऐसी सिंगल PEM फाइल बनाएं जिसमें प्राइवेट की, आपका सर्वर सर्टिफिकेट, और इंटरमीडिएट चेन शामिल हो, इसे /var/qmail/control/servercert.pem पर रखें, और Qmail को रीस्टार्ट करें।

शुरू करने से पहले: Qmail एक लेगेसी MTA है

Qmail खुद 1998 में मूल qmail-1.03 रिलीज़ के बाद से अपडेट नहीं हुआ है। D. J. Bernstein ने 2007 में कोड को पब्लिक डोमेन में रखा लेकिन डेवलपमेंट फिर से शुरू नहीं किया। प्रसिद्ध कम्युनिटी फोर्क netqmail ने 2007 में अपना अंतिम 1.06 रिलीज़ जारी किया और एक दशक से अधिक समय से इसका रखरखाव नहीं हुआ है। सक्रिय आधुनिक उत्तराधिकारी notqmail है (वर्तमान रिलीज़ 1.09, मई 2024), जो मूल के साथ ड्रॉप-इन कम्पैटिबल बने रहते हुए बग फिक्स और आधुनिक-सिस्टम कम्पैटिबिलिटी को आगे ले जाता है।

इस गाइड के लिए यह भी महत्वपूर्ण है: स्टॉक qmail में कोई मूल SSL/TLS सपोर्ट नहीं है। TLS को दो थर्ड-पार्टी तरीकों में से किसी एक द्वारा जोड़ा जाता है:

  • Frederik Vermeulen द्वारा qmail-tls पैच, जो qmail-smtpd में STARTTLS जोड़ता है और एक हार्डकोडेड पाथ से सर्टिफिकेट पढ़ता है: /var/qmail/control/servercert.pem। अधिकतर आधुनिक qmail पैकेज (netqmail और notqmail बिल्ड, s/qmail डिस्ट्रीब्यूशन, और कई वेंडर पैकेज सहित) यह पैच या इसके समान कुछ शिप करते हैं।
  • qmail-smtpd के आगे stunnel, जो पोर्ट 465 (SMTPS) पर कनेक्शन को TLS में लपेटता है। यह किसी भी qmail बिल्ड के साथ काम करता है क्योंकि TLS टर्मिनेशन Qmail के बाहर होता है।

यदि आप एक मौजूदा qmail डिप्लॉयमेंट का रखरखाव कर रहे हैं, तो नीचे दिए गए स्टेप्स अभी भी लागू होते हैं। यदि आप एक नया मेल सर्वर शुरू से बना रहे हैं, तो इसके बजाय Postfix या OpenSMTPD पर विचार करें: दोनों में मूल, अच्छी तरह से मेंटेन किया गया TLS सपोर्ट और सक्रिय सुरक्षा टीमें हैं। हमारे पास एक अलग ट्यूटोरियल है Postfix पर SSL सर्टिफिकेट कैसे इंस्टॉल करें पर।

Qmail के लिए CSR कोड जनरेट करें

यदि आपने पहले ही अपना CSR जनरेट कर लिया है और अपने CA से SSL फाइलें प्राप्त कर ली हैं, तो आगे बढ़ें Qmail पर SSL सर्टिफिकेट इंस्टॉल करें पर।

CSR का मतलब है सर्टिफिकेट साइनिंग रिक्वेस्ट: एन्कोडेड टेक्स्ट का एक ब्लॉक जिसमें आपके डोमेन और संगठन का विवरण होता है। आप इसे सर्टिफिकेट अथॉरिटी (CA) को सबमिट करते हैं ताकि वह आपके रिक्वेस्ट को वैलिडेट करके सर्टिफिकेट जारी कर सके। CSR जनरेट करने से मिलती-जुलती प्राइवेट की भी बनती है, जो आपके सर्वर पर रहती है और इंस्टॉलेशन के लिए आवश्यक है। आपके पास दो विकल्प हैं:

CSR फाइल को किसी भी प्लेन टेक्स्ट एडिटर में खोलें और पूरे ब्लॉक को कॉपी करें, जिसमें BEGIN CERTIFICATE REQUEST और END CERTIFICATE REQUEST लाइनें शामिल हैं, अपने ऑर्डर फॉर्म के CSR फील्ड में। प्राइवेट की फाइल को सुरक्षित रखें: आप इसे अगले सेक्शन में PEM फाइल में मर्ज करेंगे।

Qmail पर SSL सर्टिफिकेट इंस्टॉल करें

वैलिडेशन के बाद, CA आपको एक ZIP आर्काइव ईमेल करता है जिसमें आपकी SSL फाइलें होती हैं: प्राइमरी (सर्वर) सर्टिफिकेट और एक या अधिक इंटरमीडिएट (CA) सर्टिफिकेट। अपने सर्वर पर आर्काइव को एक्सट्रेक्ट करें, फिर नीचे दिए गए स्टेप्स का पालन करें।

स्टेप 1: की, सर्टिफिकेट, और चेन को एक PEM फाइल में जोड़ें

qmail-tls पैच (और netqmail, notqmail, और s/qmail में इसके समान) TLS टर्मिनेट करने के लिए आवश्यक सब कुछ एक PEM फाइल से पढ़ता है। फाइलों को इस क्रम में जोड़ें: पहले आपकी प्राइवेट की, फिर आपका सर्वर सर्टिफिकेट, फिर इंटरमीडिएट (CA) चेन। रूट सर्टिफिकेट आवश्यक नहीं है (क्लाइंट्स इस पर पहले से ही भरोसा करते हैं)। अपनी एक्सट्रेक्ट की गई फाइलों वाली डायरेक्टरी से, चलाएं:

cat yourdomain.key yourdomain.crt yourdomain.ca-bundle > servercert.pem

यदि आपके CA ने इंटरमीडिएट्स को एक सिंगल .ca-bundle के बजाय अलग-अलग फाइलों के रूप में भेजा है, तो सर्वर सर्टिफिकेट के बाद प्रत्येक को सूचीबद्ध करें, पहले लीफ और अंत में रूट-इश्यूइंग इंटरमीडिएट:

cat yourdomain.key yourdomain.crt intermediate1.crt intermediate2.crt > servercert.pem

संरचना की पुष्टि करने के लिए परिणामी फाइल को टेक्स्ट एडिटर में खोलें। यह इस तरह दिखनी चाहिए, प्रत्येक ब्लॉक के आसपास वास्तविक पांच-हाइफन मार्करों के साथ:

-----BEGIN RSA PRIVATE KEY-----
(the text of your private key)
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
(the text of your primary SSL certificate)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(the text of the intermediate CA certificate)
-----END CERTIFICATE-----

नई कीज़ को BEGIN RSA PRIVATE KEY के बजाय BEGIN PRIVATE KEY लेबल किया जा सकता है; दोनों ठीक हैं। की को पासफ्रेज़ से एन्क्रिप्ट नहीं किया जाना चाहिए, क्योंकि qmail-smtpd इसे स्टार्टअप पर बिना प्रॉम्प्ट किए लोड करता है। यदि आपके CA ने ECDSA सर्टिफिकेट जारी किया है, तो की ब्लॉक BEGIN EC PRIVATE KEY होगा; बाकी कुछ नहीं बदलता।

स्टेप 2: फाइल को Qmail की कंट्रोल डायरेक्टरी में ले जाएं

फाइल का नाम और पाथ qmail-tls पैच द्वारा तय किया गया है। संयुक्त PEM को Qmail की कंट्रोल डायरेक्टरी में ले जाएं और इसकी अनुमतियों को कड़ा करें, क्योंकि इसमें आपकी प्राइवेट की शामिल है:

sudo mv servercert.pem /var/qmail/control/servercert.pem
sudo chmod 600 /var/qmail/control/servercert.pem
sudo chown root:qmail /var/qmail/control/servercert.pem

मालिक और ग्रुप इस पर निर्भर करते हैं कि आपके सिस्टम पर qmail-smtpd किस यूज़र के रूप में चलता है। एक स्टॉक netqmail या notqmail इंस्टॉल पर वह आमतौर पर qmaild या qmail ग्रुप होता है, इसलिए मोड 600 के साथ root:qmail काम करता है। एक vpopmail-आधारित सेटअप पर, qmail-smtpd vpopmail के रूप में चलता है, इसलिए उपयोग करें:

sudo chown vpopmail:vchkpw /var/qmail/control/servercert.pem
sudo chmod 640 /var/qmail/control/servercert.pem

दोनों ही तरीकों से, लक्ष्य वही है: qmail-smtpd प्रोसेस को फाइल पढ़ने में सक्षम होना चाहिए, और किसी और को नहीं होना चाहिए।

स्टेप 3: कस्टम बिल्ड के लिए एडजस्ट करें

अधिकतर qmail फ्लेवर डिफॉल्ट लोकेशन में देखते हैं, लेकिन कुछ इसके बजाय एनवायरनमेंट वेरिएबल्स का उपयोग करते हैं। अपने बिल्ड से मैच करें:

  • qmail-tls पैच के साथ स्टॉक qmail (netqmail / notqmail / वेंडर पैकेज): कोई और कॉन्फ़िगरेशन की आवश्यकता नहीं है। qmail-smtpd स्वचालित रूप से /var/qmail/control/servercert.pem पढ़ता है। qmail-smtpd को EHLO प्रतिक्रिया में STARTTLS को विज्ञापित करने के लिए, UCSPITLS एनवायरनमेंट वेरिएबल को qmail-smtpd रन स्क्रिप्ट में सेट किया जाना चाहिए (आमतौर पर /var/qmail/supervise/qmail-smtpd/run): qmail-smtpd लाइन से पहले UCSPITLS=”” export करें। ऑथेंटिकेशन से पहले एन्क्रिप्शन की आवश्यकता के लिए, FORCE_TLS=1 भी सेट करें।
  • ucspi-ssl के साथ s/qmail: सर्टिफिकेट पाथ हार्डकोडेड नहीं है। अपने qmail-smtpd रन स्क्रिप्ट (या मैचिंग tcpserver / sslserver रैपर) में ये एनवायरनमेंट वेरिएबल सेट करें: सर्वर सर्टिफिकेट के लिए CERTFILE, प्राइवेट की के लिए KEYFILE (ये एक ही संयुक्त PEM की ओर इशारा कर सकते हैं), और इंटरमीडिएट्स के लिए CERTCHAINFILE। अपने वर्जन में सटीक डायरेक्टिव नामों के लिए s/qmail डॉक्यूमेंटेशन देखें।
  • stunnel फ्रंट-एंड (पोर्ट 465 पर SMTPS): stunnel के cert डायरेक्टिव को /var/qmail/control/servercert.pem पर इंगित करें और इसके exec को qmail-smtpd लॉन्च करने दें। इस पाथ को qmail-tls पैच की बिल्कुल आवश्यकता नहीं है; TLS stunnel पर टर्मिनेट होता है।

यदि आप नहीं जानते कि आपका qmail-smtpd किस पैच के साथ बनाया गया था, तो बाइनरी की जांच करें:

strings /var/qmail/bin/qmail-smtpd | grep -iE 'tls|starttls|servercert'

यदि आपको STARTTLS, servercert.pem, या UCSPITLS के संदर्भ दिखते हैं, तो बाइनरी में qmail-tls पैच कंपाइल किया गया है।

स्टेप 4: Qmail को रीस्टार्ट करें

Qmail प्रोसेस स्टार्ट पर सर्टिफिकेट पढ़ता है, इसलिए qmail-smtpd का रीस्टार्ट आवश्यक है। अधिकतर इंस्टॉलेशन पर जो प्रदान की गई कंट्रोल स्क्रिप्ट्स का उपयोग करते हैं:

sudo qmailctl restart

यदि आपका डिस्ट्रीब्यूशन इसके बजाय Qmail को systemd सर्विस में रैप करता है, तो उपयोग करें:

sudo systemctl restart qmail

daemontools / runit सेटअप पर, इसके बजाय svc के माध्यम से qmail-smtpd को TERM भेजें:

sudo svc -t /service/qmail-smtpd

स्टार्टअप के दौरान त्रुटियों के लिए लॉग देखें (आमतौर पर /var/log/qmail/smtpd/current)। एक गलत-फॉर्मेटेड PEM या गलत ओनरशिप सबसे सामान्य कारण है जिसके लिए qmail-smtpd TLS सक्षम करने से इनकार करता है।

अपने SSL इंस्टॉलेशन का परीक्षण करें

OpenSSL के साथ पुष्टि करें कि Qmail STARTTLS ऑफर कर रहा है और सही सर्टिफिकेट सर्व कर रहा है। mail.yourdomain.com को अपने मेल सर्वर होस्टनेम से बदलें:

openssl s_client -starttls smtp -connect mail.yourdomain.com:25 -servername mail.yourdomain.com </dev/null 
| openssl x509 -noout -issuer -subject -dates

आउटपुट में आपके सर्टिफिकेट का सब्जेक्ट (कॉमन नेम), इश्यूअर (CA), और वैलिडिटी डेट्स प्रिंट होनी चाहिए। यदि आपने इसके बजाय पोर्ट 465 पर stunnel के माध्यम से SMTPS सेट किया है, तो -starttls smtp हटा दें और सीधे पोर्ट 465 से कनेक्ट करें:

openssl s_client -connect mail.yourdomain.com:465 -servername mail.yourdomain.com

हैंडशेक के नीचे Verify return code: 0 (ok) देखें। यदि आपको कोई चेन एरर दिखती है, तो इंटरमीडिएट सर्टिफिकेट servercert.pem से गायब हैं: उन्हें जोड़ें और qmail-smtpd को रीस्टार्ट करें। सर्टिफिकेट, चेन, और प्रोटोकॉल सपोर्ट पर एक पूर्ण रिपोर्ट के लिए, अपने मेल होस्टनेम के विरुद्ध हमारा SSL Checker चलाएं।

अक्सर पूछे जाने वाले प्रश्न

Qmail SSL सर्टिफिकेट कहां से पढ़ता है?

फाइल /var/qmail/control/servercert.pem से। यह पाथ qmail-tls पैच में हार्डकोडेड है जो qmail-smtpd में STARTTLS जोड़ता है, और यही पाथ हर सामान्य qmail फ्लेवर (netqmail, notqmail, वेंडर पैकेज) द्वारा उपयोग किया जाता है। फाइल में प्राइवेट की, सर्वर सर्टिफिकेट, और इंटरमीडिएट चेन उस क्रम में शामिल होनी चाहिए। ucspi-ssl के साथ s/qmail अपवाद है: यह इसके बजाय CERTFILE, KEYFILE, और CERTCHAINFILE एनवायरनमेंट वेरिएबल पढ़ता है।

servercert.pem में फाइलों को किस क्रम में रखें?

पहले प्राइवेट की, फिर सर्वर (लीफ) सर्टिफिकेट, फिर इंटरमीडिएट CA सर्टिफिकेट(s)। रूट सर्टिफिकेट आवश्यक नहीं है, क्योंकि मेल क्लाइंट्स इस पर पहले से ही भरोसा करते हैं। एक-लाइन बिल्ड पर्याप्त है:
cat yourdomain.key yourdomain.crt yourdomain.ca-bundle > servercert.pem
यदि क्रम गलत है, तो qmail-smtpd स्टार्टअप पर सर्टिफिकेट लोड करने में विफल हो जाएगा और TLS ऑफर नहीं किया जाएगा। यदि आपको इस पर संदेह है तो /var/log/qmail/smtpd/ के अंतर्गत लॉग जांचें।

क्या स्टॉक qmail TLS सपोर्ट करता है?

अपने आप नहीं। 1998 का मूल qmail-1.03 रिलीज़ में कोई SSL या TLS सपोर्ट नहीं है। TLS को या तो qmail-tls पैच द्वारा जोड़ा जाता है (qmail-smtpd बाइनरी में कंपाइल किया गया, पोर्ट 25 और 587 पर STARTTLS जोड़ता है) या पोर्ट 465 पर SMTPS के लिए qmail-smtpd के आगे stunnel चलाकर। लगभग हर आधुनिक qmail पैकेज qmail-tls पैच के साथ पहले से ही शिप होता है, इसलिए आपको आमतौर पर सोर्स को खुद पैच करने की आवश्यकता नहीं होती।

क्या Qmail का अभी भी रखरखाव किया जाता है?

मूल Qmail (qmail-1.03) 1998 से अपडेट नहीं हुआ है। पहला कम्युनिटी फोर्क, netqmail, ने 2007 में अपना अंतिम रिलीज़ (1.06) बनाया। सक्रिय आधुनिक उत्तराधिकारी notqmail है, जिसने मई 2024 में वर्जन 1.09 रिलीज़ किया और बग फिक्स और आधुनिक-सिस्टम कम्पैटिबिलिटी पैच शिप करना जारी रखता है। नए मेल सर्वर के लिए, अधिकतर ऑपरेटर इसके बजाय Postfix या OpenSMTPD चुनते हैं, दोनों में मूल और सक्रिय रूप से मेंटेन किया गया TLS सपोर्ट है।

qmail-smtpd स्टार्ट क्यों होता है लेकिन STARTTLS ऑफर नहीं करता?

तीन सामान्य कारण। पहला, UCSPITLS एनवायरनमेंट वेरिएबल qmail-smtpd रन स्क्रिप्ट में एक्सपोर्ट नहीं किया गया है: qmail-smtpd लाइन से पहले UCSPITLS=”” सेट करें (वैल्यू खाली हो सकता है) और सर्विस को रीस्टार्ट करें। दूसरा, qmail-smtpd बाइनरी qmail-tls पैच के बिना बनाया गया था: strings /var/qmail/bin/qmail-smtpd | grep -i tls के साथ पुष्टि करें। तीसरा, /var/qmail/control/servercert.pem गायब है, qmail-smtpd यूज़र के लिए अनरीडेबल है, या मैलफॉर्म्ड है; अनुमतियों और PEM ब्लॉक्स के क्रम की जांच करें।

Qmail को रीस्टार्ट करने के बाद मैं सर्टिफिकेट को कैसे वेरीफाई करूं?

OpenSSL के साथ SMTP पोर्ट से कनेक्ट करें और वह सर्टिफिकेट पढ़ें जो Qmail STARTTLS पर प्रस्तुत करता है:
openssl s_client -starttls smtp -connect mail.yourdomain.com:25 -servername mail.yourdomain.com </dev/null | openssl x509 -noout -issuer -subject -dates
यह सब्जेक्ट, इश्यूअर, और वैलिडिटी डेट्स प्रिंट करता है। पोर्ट 465 पर stunnel के माध्यम से SMTPS के लिए, -starttls smtp फ्लैग हटा दें। पुष्टि करें कि इश्यूअर आपके CA से मैच करता है और हैंडशेक Verify return code: 0 (ok) के साथ समाप्त होता है।

आज ऑर्डर करते समय एसएसएल प्रमाणपत्रों पर 10% की बचत करें!

तेजी से जारी करना, मजबूत एन्क्रिप्शन, 99.99% ब्राउज़र ट्रस्ट, समर्पित समर्थन और 25 दिन की मनी-बैक गारंटी। कूपन कोड: SAVE10

उड़ान में एक ड्रैगन की एक विस्तृत छवि
द्वारा लिखित

एसएसएल प्रमाणपत्रों में विशेषज्ञता वाला अनुभवी सामग्री लेखक। जटिल साइबर सुरक्षा विषयों को स्पष्ट, आकर्षक सामग्री में बदलना। प्रभावशाली आख्यानों के माध्यम से डिजिटल सुरक्षा को बेहतर बनाने में योगदान करें।