يُرسل Discourse SMTP "EHLO localhost" بدلاً من النطاق، مما يكسر Google smtp-relay

@iwaffles -

هل جربت خطوات حل المشكلة في هذا الموضوع والمواضيع ذات الصلة الأخرى؟

أضف سطرًا إلى ملف app.yml:

DISCOURSE_SMTP_DOMAIN: [النطاق الكامل للخادم الخاص بك]

ثم في دليل /var/discourse، نفذ الأمر: ./launcher rebuild app

قد يظل discourse-doctor يُبلغ عن فشل، لكن يجب أن تعمل رسائل البريد الإلكتروني الاختبارية من وحدة تحكم المسؤول، ويجب أن يستمر تدفق البريد العادي.

إذا لم ينجح ذلك، يرجى الإبلاغ مرة أخرى، لأن هناك جانبًا آخر لم يتم اكتشافه بعد.

3 إعجابات

لقد جربت إعادة البناء وهو يعمل!

أنت محق، لا يزال discourse-doctor يفشل بالنسبة لي.

أعتقد أنني قمت بإعادة تشغيل discourse من قبل بدلاً من إعادة البناء، وهو ما يفسر على الأرجح سبب عدم تطبيق التغيير. شكرًا لك @Syonyk!

إعجابَين (2)

يبدو واضحًا أن localhost خاطئ دائمًا، لكن معظم خوادم SMTP تتجاهل هذه القيمة، لذا لم يكن الأمر مهمًا.

تظهر smtp_domain في ثلاثة أماكن فقط داخل https://github.com/discourse/discourse، وكلها تعود إلى ما بين 2-7 سنوات. كنت أتساءل عما إذا كانت مكتبة ما بدأت في إرسال localhost لسبب ما.

أعتقد أن أفضل حل، رغم مخاوف @Falco، هو إصلاح الأمر في مكان ما مثل

بغض النظر عما إذا كان الإجماع هو الاستمرار في إرسال localhost رغم أنه يتعارض مع معايير RFCs، فإن إصلاح مهمة rake كما هو موضح أعلاه ضروري. أوه، وأنا من كتب هذا الكود. :man_shrugging: لكن، انتظر. أرى أن action_mailer.smtp_settings['domain'] يمكن أن تكون فارغة. لذا أفترض أن

    Net::SMTP.start(smtp[:address], smtp[:port], 'localhost', smtp[:user_name], smtp[:password], smtp[:authentication])

يجب أن تصبح

     Net::SMTP.start(smtp[:address], smtp[:port], smtp[:domain] || 'localhost', smtp[:user_name], smtp[:password], smtp[:authentication])

على الأقل مؤقتًا. أعتقد أنه يجب استخدام domain إذا كانت موجودة، واستخدام السلوك الحالي (ولكن الخاطئ؟) وهو استخدام localhost إذا لم يتم تعريف discourse_smtp_host.

أتردد في إضافة هذا إلى discourse-setup، لأن الأمر يعمل بشكل جيد تقريبًا للجميع كما هو الآن، وهو سؤال إضافي محير نسبيًا. (وأنا على وشك إضافة سؤال لـ notification_email، لذا إذا لم نتوخّ الحذر، قد يبدأ الأمر في الظهور كما أتذكر أن صياغة نواة لينكس كانت عليه قبل بضعة عقود.)

ربما يكون هذا هو المصدر الذي يأتي منه localhost؟

إعجابَين (2)

تمت الإشارة إلى هذه المشكلة للتو، ويمكنني تأكيد أن الإصلاح يعمل. كما حدث أيضًا انفجار في Sidekiq في مثيلتنا ذات الحجم المنخفض عادةً، ويبدو أن ذلك ناتج عن إعادة محاولة مهام التجزئة (digest jobs) عدة مرات.

ظننت أن جوجل قد فرضت حدودًا جديدة على الاستخدام، حيث أن رسالة الخطأ هذه هي ما تظهر عادةً لرفض هجمات حجب الخدمة (DoS).

إعجابَين (2)

شكرًا للتقرير! سأضيف إصلاحًا لهذه المشكلة إلى إعدادات discourse قريبًا.

إعجابَين (2)

أصبح هذا الآن:

  • مُضافًا كإعداد بيئة مثال في جميع ملفات العينات

  • يُطلب أثناء إعداد تثبيت Discourse الجديد

  • تم إصلاحه في أداة discourse doctor ومهمة rake

شكرًا للجميع :tada:

5 إعجابات