bg-tutorials

Qmail-এ কীভাবে একটি SSL Certificate ইনস্টল করবেন

এই টিউটোরিয়ালে দেখানো হয়েছে 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 রিলিজে পৌঁছেছিল এবং এক দশকেরও বেশি সময় ধরে এটি অরক্ষিত (unmaintained) রয়েছে। সক্রিয় আধুনিক উত্তরসূরী হলো 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 আপনাকে আপনার SSL ফাইল সহ একটি ZIP আর্কাইভ ইমেইল করে: প্রাথমিক (সার্ভার) সার্টিফিকেট এবং একটি বা একাধিক ইন্টারমিডিয়েট (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 পড়ে। EHLO রেসপন্সে qmail-smtpd যাতে STARTTLS ঘোষণা করে, সেজন্য qmail-smtpd রান স্ক্রিপ্টে (সাধারণত /var/qmail/supervise/qmail-smtpd/run) অবশ্যই UCSPITLS এনভায়রনমেন্ট ভেরিয়েবল সেট করতে হবে: qmail-smtpd লাইনের আগে export UCSPITLS=””। প্রমাণীকরণের আগে এনক্রিপশন বাধ্যতামূলক করতে, 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), এবং বৈধতার তারিখ প্রিন্ট হওয়া উচিত। যদি আপনি পরিবর্তে stunnel-এর মাধ্যমে পোর্ট 465-এ 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 সার্টিফিকেট(গুলো)। রুট সার্টিফিকেট প্রয়োজন নেই, কারণ মেইল ক্লায়েন্টগুলো ইতিমধ্যে এটি বিশ্বাস করে। একটি এক-লাইনের বিল্ডই যথেষ্ট:
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 প্রস্তাব করে না কেন?

তিনটি সাধারণ কারণ। প্রথমত, qmail-smtpd রান স্ক্রিপ্টে UCSPITLS এনভায়রনমেন্ট ভেরিয়েবল এক্সপোর্ট করা হয়নি: 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 পোর্টে সংযোগ করুন এবং STARTTLS-এর মাধ্যমে Qmail যে সার্টিফিকেট উপস্থাপন করে তা পড়ুন:
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)-এর সাথে শেষ হয় কিনা তা নিশ্চিত করুন।

আজ অর্ডার করার সময় SSL শংসাপত্রে 10% সংরক্ষণ করুন!

দ্রুত ইস্যু, শক্তিশালী এনক্রিপশন, 99.99% ব্রাউজার বিশ্বাস, নিবেদিত সমর্থন, এবং 25 দিনের অর্থ ফেরত গ্যারান্টি। কুপন কোড: SAVE10

উড়ন্ত একটি ড্রাগনের একটি বিস্তারিত চিত্র
লিখেছেন

SSL শংসাপত্রে বিশেষজ্ঞ অভিজ্ঞ বিষয়বস্তু লেখক। জটিল সাইবারসিকিউরিটি বিষয়গুলিকে পরিষ্কার, আকর্ষক সামগ্রীতে রূপান্তর করা। প্রভাবশালী বর্ণনার মাধ্যমে ডিজিটাল নিরাপত্তার উন্নতিতে অবদান রাখুন।