التسليم المباشر: فشل في البريد الوارد لـ LetsEncrypt (ملف prop.ltcmp.net.key غير صحيح) وهل يؤدي ذلك إلى عدم التسليم؟

عند استخدامي لإعداد استلام البريد عبر التسليم المباشر كما هو موضح هنا، أواجه الأخطاء التالية في السجلات، والتي تتضمن فشلًا في Let’s Encrypt واختبارًا واردًا إلى “nobody@discourse.domain.tld” من حساب Gmail:

<22> postfix/master[1]: daemon started -- version 3.1.1, configuration /etc/postfix
<20> postfix/smtpd[97]: warning: cannot get RSA private key from file "/letsencrypt/domain.tld/prop.ltcmp.net.key": disabling TLS support
<20> postfix/smtpd[97]: warning: TLS library problem: error:02001002:system library:fopen:No such file or directory:bss_file.c:402:fopen('/letsencrypt/domain.tld/prop.ltcmp.net.key','r'):
<20> postfix/smtpd[97]: warning: TLS library problem: error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:404:
<20> postfix/smtpd[97]: warning: TLS library problem: error:140B0002:SSL routines:SSL_CTX_use_PrivateKey_file:system lib:ssl_rsa.c:633:
<22> postfix/smtpd[97]: connect from mail-qk1-f180.google.com[209.85.222.180]
<22> postfix/smtpd[97]: lost connection after STARTTLS from mail-qk1-f180.google.com[209.85.222.180]
<22> postfix/cleanup[101]: 20A0CBCE22: message-id=<20191115221116.20A0CBCE22@discourse-mail-receiver.localdomain>
<22> postfix/qmgr[83]: 20A0CBCE22: from=<double-bounce@discourse-mail-receiver.localdomain>, size=900, nrcpt=1 (queue active)
<22> postfix/smtpd[97]: disconnect from mail-qk1-f180.google.com[209.85.222.180] ehlo=1 starttls=0/1 commands=1/2
<22> postfix/smtp[103]: 20A0CBCE22: to=<postmaster@discourse-mail-receiver.localdomain>, orig_to=<postmaster>, relay=none, delay=0.01, delays=0.01/0/0/0, dsn=5.4.4, status=bounced (Name service error for name=discourse-mail-receiver.localdomain type=AAAA: Malformed or unexpected name server reply)
<20> postfix/bounce[104]: warning: 20A0CBCE22: undeliverable postmaster notification discarded
<22> postfix/qmgr[83]: 20A0CBCE22: removed

تكويني بحيث يكون لدي خادم بريد آخر على mail.domain.tld، لكن Discourse يعمل مباشرة على domain.tld. كما أن discourse.domain.tld هو أيضًا اسم المضيف لخادم Docker الذي يشغّل حاويات Discourse و mail-receiver معًا.

لدي أيضًا سجلات MX التالية:

domain.tld > mail.domain.tld            priority: 10
d > discourse.domain.tld                priority: 20
domain.tld > discourse.domain.tld       priority: 30

ما الذي قد يكون خاطئًا هنا؟

شيء واحد لاحظته، وبشكل واضح، هو أن الملف /letsencrypt/domain.tld/prop.ltcmp.net.key مفقود من محتويات المجلد:

discourse-mail-receiver:/# ls -tlrha letsencrypt/domain.tld
total 40
-rw-r--r--    1 root     root        3.2K Nov 10 05:10 domain.tld.key
-rw-r--r--    1 root     root         208 Nov 10 05:10 domain.tld.csr.conf
-rw-r--r--    1 root     root        1.6K Nov 10 05:10 domain.tld.csr
-rw-r--r--    1 root     root        2.2K Nov 10 05:10 domain.tld.cer
-rw-r--r--    1 root     root        3.8K Nov 10 05:10 fullchain.cer
-rw-r--r--    1 root     root        1.6K Nov 10 05:10 ca.cer
drwxr-xr-x    3 root     root        4.0K Nov 10 05:10 .
-rw-r--r--    1 root     root         799 Nov 11 15:56 domain.tld.conf
drwxr-xr-x    2 root     root        4.0K Nov 11 27 15:56 backup
drwxr-xr-x    8 root     root        4.0K Nov 16 00:49 ..

الأمر مثير للاهتمام لأن هذا يعود إلى هذا السؤال هنا من @surety والذي يبدو أنه لم يتلقَ إجابة مباشرة.

يبدو أن الموضوع هناك يستمر في مناقشة هذه النقطة، لكن هناك الكثير من الضجيج في ذلك الموضوع الآن مما قد يسبب الارتباك، ولهذا السبب قمت بإنشاء موضوع هنا (لتحقيق وضوح أكبر للمستخدمين المستقبليين الذين يواجهون مثل هذه المشكلة).

يبدو أن قيمة إدخال POSTCONF_smtpd_tls_key_file في ملف إعداد mail-receiver.yml وهي /letsencrypt/domain.tld/prop.ltcmp.net.key يجب استبدالها بـ /letsencrypt/domain.tld/domain.tld.key.

إذن، الإجابة على السؤال الأول لـ @surety هي “نعم”، هذا صحيح لاستبدال محتوى هذا الإدخال بما تراه. أما السؤال الثاني فيبدو أيضًا صحيحًا للتركيب على الإعداد الافتراضي.

أعتقد أن @pfaffman أو @mpalmer ربما يجب عليهما إعادة صياغة سكريبت إنشاء الحاوية ليشمل ملف .key الصحيح بدلاً من هذا الإدخال الخاطئ (ظاهريًا) prop.ltcmp.net.key

في هذه اللحظة، أنا الآن بحمد الله قادر على المضي قدمًا وتجاوز خطوة @mpalmer:

يمكنك أيضًا الآن محاولة إرسال بريد إلكتروني إلى nobody@forum.example.com. في حين أن Discourse لن يفعل أي شيء مفيد به بعد، يجب أن تظهر الرسالة التي أرسلتها في لوحة التحكم الخاصة بك تحت “البريد الإلكتروني”، “مرفوضة” في غضون ثوانٍ. إذا حدث ذلك، فأنت مؤكد جاهز للمتابعة.

حيث تظهر الآن رسالتي التجريبية في قائمة /admin/email/rejected في Discourse! :slight_smile:

اعتقدتُ أن من الواضح أن prop.ltcmp.net كانت مجرد مكان مؤقت تمامًا مثل domain.tld.

بين الانتقال إلى Debian واستقبال البريد الجديد، قد تكون هناك حاجة إلى بعض التغييرات الأخرى. سأحاول الاطلاع على الأمر خلال الأيام القليلة القادمة، حيث قد تكون سكريبتات التثبيت الخاصة بي قد تعطلت بسبب هذه التحديثات.

مثير للاهتمام، لماذا تعتقد أن هذا يُعتبر بوضوح مجرد عنصر نائب؟ هل يجب أن تكون الاختصارات واضحة بذاتها؟ إذا كان الأمر كذلك، فربما يمكننا جعلها أكثر وضوحًا باستخدام شيء مثل: <REPLACE_THIS_WITH_LETSENCRYPT_DOT.KEY_FILE_PATH.key>