Discourse/mail-receiver: يبدو أن صورة Docker للإصدار قديمة

مرحباً،

أعتقد أن صورة Docker الرسمية discourse/mail-receiver:release قد تم تجاهلها ولم يتم إعادة بنائها منذ فترة طويلة.

يتم صيانة مستودع GitHub بنشاط مستمر:

ومع ذلك، يبدو أن صورة Docker الرسمية:

discourse/mail-receiver:release

تم بناؤها قبل سنتين تقريباً.

يبدو أن هذا يسبب مشاكل توافق مع الإصدارات الحالية من Discourse.

في حالتي، تصل البريد الإلكتروني الواردة إلى مستلم البريد بنجاح، لكنها تُرفض أثناء RCPT TO مع:

450 4.7.1 Recipient address rejected: Internal error, API request failed

لا تزال صورة Docker القديمة تستخدم آلية smtp_should_reject / الرفض السريع.

ومع ذلك، يحتوي كود Discourse الحالي على هذا التعليق:

# this endpoint has been broken for years
# and was used only in the public mail-receiver's fast rejection code,
# which is removed in https://github.com/discourse/mail-receiver/pull/33

لقد أزالت طلب السحب #33 بالفعل كود الرفض السريع من mail-receiver، لكن هذه التغييرات لا تظهر وكأنها مضمنة في صورة discourse/mail-receiver:release المنشورة حالياً.

لا تزال وثائق/قراءة المستلم الرسمي لبريد mail-receiver تشير إلى استخدام:

discourse/mail-receiver:release

لذلك أتساءل عما إذا كان نشر صورة Docker قد تم تفويته ببساطة بعد التغييرات الأخيرة.

هل يمكنكم الرجاء التحقق مما إذا كانت هناك حاجة إلى بناء ونشر صورة discourse/mail-receiver:release جديدة؟

شكراً!

تحديث: قمت باختبار فرع main الحالي

قمت ببناء فرع main الحالي محليًا واكتشفت مشكلة أخرى.

لا يزال صورة release القديمة على Docker Hub تشغّل كود الرفض السريع القديم وتفشل أثناء RCPT مع ظهور الرسالة التالية:

450 4.7.1 Recipient address rejected: Internal error, API request failed

ومع ذلك، فقد أزال فرع main الحالي بالفعل تنفيذ smtp_should_reject / الرفض السريع. بعد بناء main، يفشل Postfix بدلاً من ذلك مع:

warning: connect to private/policy: No such file or directory
451 4.3.5 Recipient address rejected: Server configuration problem

تتبعتُ السبب إلى مرجعين متبقين في Dockerfile:

check_policy_service unix:private/policy

تمت إزالة خدمة السياسة (policy service) نفسها، لكن smtpd_recipient_restrictions لا يزال يشير إلى مقبسها (socket).

أزلت unix:private/policy من smtpd_recipient_restrictions، وأعدت بناء الصورة، ثم تم قبول البريد الوارد عبر SMTP بنجاح.

بعد الانتقال إلى مفتاح API عام (Global API Key)، نجح التسليم إلى Discourse أيضًا:

dsn=2.0.0, status=sent (delivered via discourse service)

يبدو إذن أن هناك مشكلتين منفصلتين:

  1. صورة discourse/mail-receiver:release المنشورة قديمة ولا تزال تحتوي على تنفيذ الرفض السريع القديم.
  2. أزال فرع main الحالي ذلك التنفيذ، لكن Dockerfile لا يزال يهيئ Postfix لاستخدام unix:private/policy.

قد تكون هناك مشكلة منفصلة أيضًا تتعلق بمفاتيح API الدقيقة (granular API keys): فقد أعاد مفتاح مُقيّد على receive emails فقط استجابة HTTP 404 من /admin/email/handle_mail، بينما أعاد مفتاح API العام استجابة HTTP 200.

يمكنني تقديم طلب دمج (PR) للمراجعين القداميين لـ private/policy في Dockerfile إذا كان ذلك مفيدًا.

إعجابَين (2)

أؤكد وجود صورة إصدار قديمة من تغيير آخر في mail-receiver.

فتحت هذا طلب المسح (PR)، والذي تم دمجُه في 11 أغسطس:

يُغيّر هذا الطلب مستقبِل البريد من:

post.set_form_data(email: @mail)

إلى المعامل الأحدث email_encoded الذي يتوقعه Discourse.

بعد دمج الطلب، أعدت بناء mail-receiver في 17 أغسطس، لكن الحاوية المُعاد بناؤها حديثاً لا تزال تحتوي على:

post.set_form_data(email: @mail)

أضفت التفاصيل إلى الطلب المدمج هنا:

أعدت البناء مرة أخرى في 22 أغسطس، وأبلغتني أمر ./launcher rebuild mail-receiver بأن صورة الإصدار المنشورة محدّثة، مع الهاش:

sha256:2a0d45bb92a783c846a821e635413764eeadb3441ef6190085545a4bf054cb1e

لا يزال البريد الوارد يعمل على تثبيتي، لكن كل بريد واصل يستمر في تحفيز تحذير Discourse:

the email parameter is deprecated

لأن الصورة المنشورة لا تحتوي على تغيير #37 المدمج.

لذا يبدو أن هذا يؤكد بشكل مستقل المشكلة الأولى التي وجدتها: التغييرات المدمجة في مستودع mail-receiver لم تصل إلى صورة discourse/mail-receiver:release المنشورة.

إعجاب واحد (1)