في هذا الدرس، ستتعلم كيفية تثبيت شهادة SSL/TLS على Postfix، وكيل نقل البريد الشائع في Linux.
سجّلنا أيضاً فيديو يشرح لك العملية كاملة خطوة بخطوة. شاهده أدناه، أو استمر في القراءة لمتابعة النسخة النصية.
إنشاء رمز CSR على Postfix
إذا كنت قد أنشأت رمز CSR بالفعل وتحتاج فقط إلى خطوات التثبيت، انتقل مباشرة إلى تثبيت شهادة SSL على Postfix.
للحصول على شهادة SSL من CA (جهة إصدار الشهادات) موثوقة، يجب عليك تقديم CSR (طلب توقيع الشهادة). CSR هو كتلة من النص المُشفَّر يحتوي على بيانات الاتصال والمؤسسة الخاصة بك. لديك خياران:
- استخدم مولّد CSR الخاص بنا لإنشاء CSR تلقائياً.
- اتبع درسنا التفصيلي حول كيفية إنشاء CSR في Postfix.
خلال عملية الطلب مع مزوّد SSL الخاص بك، افتح ملف CSR في أي محرّر نصوص عادي وانسخ الكتلة كاملة، بما في ذلك سطرَي —–BEGIN CERTIFICATE REQUEST—– و—–END CERTIFICATE REQUEST—–، ثم الصقها في الحقل المخصص. بعد أن تتحقّق CA من طلبك وتُصدر الشهادة، تابع عملية التثبيت أدناه.
تثبيت شهادة SSL على Postfix
بعد أن تتحقّق CA من طلبك وترسل ملفات الشهادة إلى بريدك الوارد، يمكنك بدء عملية التثبيت.
الخطوة 1: تحضير ملفات SSL
يستخدم Postfix شهادات SSL/TLS بصيغة X.509. يتطلب التثبيت الصحيح ثلاثة ملفات:
- مفتاحك الخاص، الذي تم إنشاؤه مع CSR على خادمك (على سبيل المثال privkey.key).
- شهادة SSL الأساسية، وهي الملف الموجود داخل أرشيف ZIP الذي أرسلته CA إليك عبر البريد الإلكتروني. في هذا الدليل سنشير إليها باسم server.crt.
- الشهادة (أو الشهادات) الوسيطة، وهي حزمة CA الموجودة في أرشيف ZIP نفسه. سنشير إليها باسم intermediate.pem.
يمكنك الاحتفاظ بجميع الملفات الثلاثة في مجلد واحد، على سبيل المثال /etc/postfix/. تأكد من أن المفتاح الخاص قابل للقراءة فقط من طرف root:
sudo chmod 600 /etc/postfix/privkey.key
الخطوة 2: بناء سلسلة الشهادات
تعتمد طريقة تجميع الملفات على إصدار Postfix الخاص بك. تحقّق منه أولاً:
postconf mail_version
الطريقة المُوصى بها (Postfix 3.4 وأحدث)
أنشئ ملف سلسلة واحد يحتوي على المفتاح الخاص وشهادة الخادم والشهادة (أو الشهادات) الوسيطة، بالترتيب الدقيق التالي:
cat /path/to/privkey.key /path/to/server.crt /path/to/intermediate.pem > /etc/postfix/rsachain.pem
تتجنّب هذه الطريقة الحديثة مشكلات تدوير الشهادات وتعمل بسلاسة مع توجيه smtpd_tls_chain_files في Postfix. احمِ ملف السلسلة بالطريقة نفسها التي تحمي بها المفتاح، لأنه يحتوي على مفتاحك الخاص:
sudo chmod 600 /etc/postfix/rsachain.pem
الطريقة البديلة (جميع إصدارات Postfix)
إذا كنت تستخدم إصداراً من Postfix أقدم من 3.4، احتفظ بالمفتاح منفصلاً واجمع فقط شهادة الخادم مع الشهادة (أو الشهادات) الوسيطة:
cat /path/to/server.crt /path/to/intermediate.pem > /etc/postfix/server.pem
ستشير إلى هذه الحزمة والمفتاح الخاص بشكل منفصل في التكوين أدناه.
الخطوة 3: تكوين Postfix
افتح ملف التكوين الرئيسي /etc/postfix/main.cf واختر النمط الذي يتوافق مع إعدادك.
الخيار أ: Postfix 3.4 أو أحدث (موصى به). وجّه Postfix إلى ملف السلسلة الواحد الذي أنشأته:
smtpd_tls_chain_files = /etc/postfix/rsachain.pem
smtpd_tls_security_level = may
الخيار ب: الطريقة القديمة (Postfix أقدم من 3.4). أشِر إلى حزمة الشهادة والمفتاح بشكل منفصل:
smtpd_tls_cert_file = /etc/postfix/server.pem
smtpd_tls_key_file = /etc/postfix/privkey.key
smtpd_tls_security_level = may
بعض الملاحظات حول هذه التوجيهات:
- smtpd_tls_security_level = may يُفعّل TLS الاختياري للبريد الوارد على المنفذ 25. هذا هو الإعداد الصحيح لخادم MX عام: فهو يعلن STARTTLS للمُرسلين الذين يدعمونه، بينما يستمر في قبول الاتصالات العادية من المرسلين الذين لا يدعمونه. لا تُعيّن القيمة encrypt على خادم MX عام، لأن ذلك سيرفض البريد الشرعي من المُرسلين الذين لا يدعمون سوى الاتصال العادي. (المفتاح القديم smtpd_use_tls = yes أصبح مُهملاً؛ ويحل محله smtpd_tls_security_level.)
- استخدم شهادة بسلسلة كاملة (شهادتك بالإضافة إلى الشهادات الوسيطة)، سواء قدّمتها عبر smtpd_tls_chain_files (الخيار أ) أو smtpd_tls_cert_file (الخيار ب). تقديم شهادة الطرف فقط يسبب فشل التحقق من السلسلة على الطرف المستقبل.
- يعطّل Postfix الحديث بالفعل SSLv2 وSSLv3 والخوارزميات الضعيفة بشكل افتراضي، لذا لا تحتاج إلى قوائم استثناء إضافية لحركة المرور الواردة عبر المنفذ 25.
تأمين خدمة الإرسال (المنفذ 587)
عندما يرسل مستخدموك البريد عبر Postfix (باستخدام Outlook أو Thunderbird أو Apple Mail، وغيرها)، فإنهم يتصلون عبر منفذ الإرسال (submission) 587، وليس المنفذ 25، المخصص للتسليم بين الخوادم. ولأن هذا المنفذ يُستخدم فقط من قِبَل مستخدميك المُصادَق عليهم، يمكنك تطبيق قواعد أكثر صرامة بأمان: فرض TLS وتحديد بروتوكول أدنى وهو TLS 1.2.
افتح /etc/postfix/master.cf، وتأكد من أن خدمة submission مُفعّلة، وأضف التجاوزات أدناه:
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_mandatory_protocols=>=TLSv1.2
بعض التفاصيل التي قد تسبب الالتباس:
- يسري توجيه smtpd_tls_mandatory_protocols فقط عندما يكون مستوى الأمان encrypt (TLS إلزامي)، وهذا تحديداً هو الحال هنا على المنفذ 587. أما بالنسبة لـ TLS الاختياري على المنفذ 25 (مستوى الأمان may)، فإن الإعداد المُقابل يكون smtpd_tls_protocols بدلاً منه، ولكن على خادم MX عام، من الأفضل عموماً تركه على القيم الافتراضية لـ Postfix حتى لا ترفض المُرسلين الأقدم.
- الصيغة المختصرة >=TLSv1.2 تتطلب Postfix 3.6 أو أحدث ويجب عدم وجود فراغ بين >= والإصدار. في Postfix 3.4 أو 3.5، استخدم بدلاً من ذلك صيغة الاستثناء: smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1.
- في ملف master.cf، لا يوجد فراغ حول علامة = في تجاوز -o (على سبيل المثال -o smtpd_tls_security_level=encrypt)، بينما في main.cf تكتب key = value مع فراغات.
اختياري: TLS الضمني على المنفذ 465. يفضّل العديد من العملاء الحديثين المنفذ 465 (SMTPS / “submissions”)، الذي يُغلّف الجلسة بأكملها بـ TLS من البداية. توصي RFC 8314 باستخدامه إلى جانب المنفذ 587. لتفعيله، قم بتمكين خدمة smtps في master.cf باستخدام وضع wrapper:
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
الخطوة 4: إعادة تحميل Postfix
قبل إعادة التحميل، من الجيد التحقق من التكوين بحثاً عن أي أخطاء نحوية:
sudo postfix check
إذا لم يُظهر ذلك أي نتيجة، فطبّق التغييرات. تُعيد عملية إعادة التحميل قراءة التكوين دون قطع الاتصالات النشطة:
sudo systemctl reload postfix
على الأنظمة التي لا تستخدم systemd، الأمر المُعادل هو:
sudo postfix reload
الخطوة 5: التحقق من الشهادة
تأكد من أن Postfix يقدّم الشهادة والسلسلة الصحيحة باستخدام OpenSSL. استبدل yourdomain.com باسم مضيف خادم بريدك:
openssl s_client -starttls smtp -connect yourdomain.com:25 -servername yourdomain.com </dev/null
| openssl x509 -noout -issuer -subject -dates
يجب أن يُظهر الناتج موضوع شهادة خادمك، وجهة إصدارها (CA)، وتواريخ صلاحيتها. لاختبار خدمة الإرسال بدلاً من ذلك، غيّر المنفذ إلى 587 (وهو يستخدم STARTTLS أيضاً)، أو بالنسبة للمنفذ 465 ذي TLS الضمني، أزِل -starttls smtp واتصل بالمنفذ 465 مباشرة. تهانينا، لقد نجحت في تثبيت شهادة SSL على Postfix.
اختبار تثبيت SSL
بعد تثبيت الشهادة، من الحكمة فحص تكوينك بحثاً عن أخطاء أو ثغرات. تُقدّم لك أداة SSL Checker الخاصة بنا تقارير فورية عن كل جانب من جوانب شهادتك وإعدادها، حتى تتأكد من أن السلسلة كاملة ومن أن البروتوكولات مُهيّأة بشكل صحيح.
أين تشتري أفضل شهادة SSL لـ Postfix؟
لقد وصلت إلى المكان الصحيح. في SSL Dragon، نُقدّم إحدى أوسع تشكيلات منتجات SSL بأسعار من بين الأقل في السوق، وجميع شهاداتنا متوافقة مع وكيل نقل البريد Postfix.
غير متأكد من الشهادة التي يجب اختيارها؟ يجعل معالج SSL الخاص بنا إيجاد المنتج المناسب لخادم بريدك أمراً سريعاً وسهلاً.
الأسئلة الشائعة
يتم تكوين TLS في /etc/postfix/main.cf. في Postfix 3.4 وأحدث، التوجيه المُوصى به هو smtpd_tls_chain_files، الذي يشير إلى ملف PEM واحد يحتوي على المفتاح الخاص وشهادة الخادم والشهادات الوسيطة. في الإصدارات الأقدم، تُعيّن بدلاً من ذلك smtpd_tls_cert_file (شهادة بسلسلة كاملة) وsmtpd_tls_key_file (المفتاح الخاص) بشكل منفصل. توجد التجاوزات الخاصة بكل خدمة للمنفذين 587 و465 في /etc/postfix/master.cf.
بالنسبة لـ smtpd_tls_chain_files، يكون الترتيب هو المفتاح الخاص أولاً، ثم شهادة الخادم (الطرف)، ثم الشهادة (أو الشهادات) الوسيطة:cat privkey.key server.crt intermediate.pem > /etc/postfix/rsachain.pem
إذا كان الترتيب خاطئاً، سيفشل Postfix في تحميل السلسلة. لا تُدرج شهادة CA الجذرية؛ فالعملاء يثقون بها بالفعل.
استخدم may (TLS الاختياري) للبريد الوارد على المنفذ 25. يجب أن يقبل خادم MX العام البريد من المُرسلين الذين لا يدعمون TLS، وسيرفضهم encrypt، مما يسبب ضياع البريد. احتفظ بـ encrypt (TLS إلزامي) لخدمة الإرسال المُصادَق عليها على المنفذ 587، حيث يتصل مستخدموك فقط.
إعادة التحميل كافية للتغييرات المتعلقة بالشهادة وTLS؛ نفّذ sudo systemctl reload postfix (أو sudo postfix reload). تُعيد عملية إعادة التحميل قراءة التكوين دون قطع الاتصالات النشطة. نفّذ sudo postfix check أولاً للكشف عن الأخطاء النحوية قبل أن تصبح فعّالة.
اتصل باستخدام OpenSSL واقرأ الشهادة التي يقدّمها Postfix عبر STARTTLS:openssl s_client -starttls smtp -connect yourdomain.com:25 -servername yourdomain.com </dev/null | openssl x509 -noout -issuer -subject -dates
يعرض هذا موضوع الشهادة، وجهة الإصدار، وتواريخ الصلاحية. يمكنك أيضاً تشغيل فحص كامل باستخدام أدوات SSL الخاصة بنا للتأكد من أن السلسلة كاملة.
الخلاصة
يتلخّص تثبيت شهادة SSL على Postfix في تجميع ملف PEM بسلسلة كاملة، وتوجيه main.cf إليه باستخدام smtpd_tls_chain_files (أو الزوج القديم smtpd_tls_cert_file / smtpd_tls_key_file)، وتعيين smtpd_tls_security_level = may للبريد الوارد، وتعزيز أمان خدمة الإرسال على المنفذ 587، وفحص التكوين باستخدام sudo postfix check، وإعادة تحميل Postfix.
تحتاج إلى شهادة أولاً؟ تصفّح شهادات SSL الخاصة بنا.
وفِّر 10% على شهادات SSL عند الطلب اليوم!
إصدار سريع، وتشفير قوي، وثقة في المتصفح بنسبة 99.99%، ودعم مخصص، وضمان استرداد المال خلال 25 يومًا. رمز القسيمة: SAVE10


