أخطاء Unexplained Email::Receiver::InvalidPost غير مفسرة

مماثل لـ Mirrored mailing list is rejecting registered forum users

لا يبدو الأمر كذلك. يبدو أن الموضوع المشار إليه هو مشكلة في الأذونات ناتجة عن تكوين غير صحيح.

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

أنا آسف، أعتذر عن الإزعاج.

لقد اقترحت حلاً للمشكلة التي وجدتها، ولكن من كل ما وجدته حتى الآن، فإن المكون الذي كان يقوم بالتشويه يؤثر فقط على السجل المحفوظ ولا يؤثر على البريد الوارد أثناء المعالجة.

أنا واثق إلى حد ما من أن مصدر المشكلة يجب أن يكون شيئًا آخر، ولكني لا أعرف ما قد يكون ذلك بعد.

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

بما أن هذا التغيير قد تم دمجه، قمت بترقية مثيل Discourse الخاص بنا اليوم وسأراقب سجلات البريد الإلكتروني المرفوضة في الأيام القادمة.

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

منذ الترقية، تم تسجيل ثلاث أخطاء InvalidPost جديدة، ولكن تفاصيل الرفض مختلفة: تُظهر جميع الأخطاء الثلاثة نص الرسالة الصحيح (حيث كان يُعرض توقيع القائمة البريدية من قبل) وسبب الرفض هو الآن Access Denied.

هذا تحسن على الأقل.

هل يبقى سبب الخطأ مع المستخدم؟

هل أنت متأكد من أن الخطأ غير صحيح؟ هل لدى المستخدم إذن بالنشر في الفئة؟ هل المستخدم نشط؟

مبدئيًا، لا يبدو أن السبب منطقي: الحساب نشط، وليس معلقًا أو مكتومًا. ومع ذلك، لاحظت أن الحساب ليس “مُجهزًا” (staged)، وهو ما ينطبق على معظم الحسابات التي تصل منشورات قائمتها البريدية إلى ديسكورس (Discourse). جميع المنشورات من المستخدمين غير المُجهزين هي من أعضاء فريق الإشراف.

تم إعداد فئة مرآة القائمة البريدية الخاصة بنا في البداية باستخدام هذا الدليل: Mirroring a read-only mailing list in Discourse

ومع ذلك، قمت للتو بمراجعة الأذونات المكونة للفئة ويبدو أنه تمت إضافة مجموعة المشرفين لدينا، وتم منح everyone (الجميع) أذونات reply (الرد).

لقد أزلت هذه الأذونات الإضافية وتركت فقط everyone مع إذن see (المشاهدة). ربما تتداخل هذه الأذونات “الإضافية” مع الطريقة التي يتعامل بها ديسكورس مع فئات “مرآة القائمة البريدية” الخاصة هذه؟

قد تكون حقيقة أن المستخدم ليس في مرحلة الإعداد هي المشكلة. لا يتم التحقق من المستخدمين في مرحلة الإعداد لمعرفة ما إذا كان لديهم إذن بالنشر في الفئة، ولكن يتم التحقق من المستخدمين المسجلين. لذلك، إذا لم يكن المستخدم في مجموعة لديها إذن بالرد على المواضيع في الفئة، فسيتم رفض رده لأنه لا يملك الإذن. وينطبق الشيء نفسه على المواضيع الجديدة وإذن “الإنشاء”.

هناك موضوع حول هذه المشكلة هنا: Category not accepting "anonymous email" from known users

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

ومع ذلك، لقد راجعت للتو الأذونات المكوّنة للفئة ويبدو أنه تمت إضافة مجموعة المشرفين لدينا، وتم منح everyone (الجميع) إذن reply (الرد).

لقد قمت بإزالة هذه الأذونات الإضافية وتركت فقط everyone (الجميع) مع إذن see (الاطلاع). ربما تتداخل هذه الأذونات “الإضافية” مع الطريقة التي يتعامل بها Discourse مع فئات “مرآة القائمة البريدية” الخاصة هذه؟

في الواقع، انسَ ذلك، لا بد أنني كنت أنظر إلى فئة أخرى، لأن أذونات فئة مرآة القائمة البريدية هي كما هو متوقع: فقط everyone (الجميع) لديه إذن see (الاطلاع). ومع ذلك، فإن ملاحظتي بأن المشاركات من المستخدمين غير المشرفين وغير المستخدمين الذين تم إعدادهم يتم رفضها باستمرار.

هذا الشرح منطقي بالتأكيد بناءً على ما أراه، ولكن إذا كانت هذه هي الحالة، فهذا بالتأكيد سلوك غير متوقع ومربك: يجب السماح للمرسلين الذين ينشرون إلى القائمة البريدية المعكوسة ولكن لديهم حساب بالفعل على Discourse بعنوان البريد الإلكتروني المرتبط بالنشر في الفئات التي تم تمكين إعداد “تعكس هذه الفئة قائمة بريدية” فيها.

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

سيكون من المدهش لو تمكن Discourse من إقناع/دفع شخص ما من فريق Mailman (أو شخص مماثل) لتحسين كيفية تعامل Discourse مع رسائل البريد الإلكتروني.

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

لدينا اختبارات تضمن أن Discourse يمكنه استقبال البريد للفئات للقراءة فقط التي تعكس قائمة بريدية:

لدعم ذلك، تتجاوز المشاركات المرسلة إلى نسخ القوائم البريدية بعض عمليات التحقق:

    def create_post(options = {})
      …
      if sent_to_mailinglist_mirror?
        options[:skip_validations] = true
        options[:skip_guardian] = true
      else
        options[:email_spam] = is_spam?
        options[:first_post_checks] = true if is_spam?
        options[:email_auth_res_action] = auth_res_action
      end
    def sent_to_mailinglist_mirror?
      @sent_to_mailinglist_mirror ||=
        begin
          destinations.each do |destination|
            return true if destination.is_a?(Category) && destination.mailinglist_mirror?
          end

          false
        end
    end

تخمينًا، قد يتسبب شيء ما يتعلق بإعداداتك في إنشاء حالة لا يتم فيها اكتشاف أنها نسخة قائمة بريدية؟ لاحظ أنه لتجاوز هذه الفحوصات، يجب إرسال البريد إلى عنوان البريد الإلكتروني للفئة وليس إلى reply_by_email_address الخاص بالموقع.

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

أوه هذا مثير للاهتمام، ويبدو أنه يتعارض مع الإرشادات المنشورة هنا لإعداد نسخة طبق الأصل من القائمة البريدية:

اشترك في القائمة البريدية باستخدام عنوان بريدك الإلكتروني في Discourse (على سبيل المثال، discourse@example.com).

لقد تحققت من عنوان البريد الإلكتروني المشترك في قوائمنا البريدية نيابة عن Discourse وهو بالفعل discourse@forum.torproject.org.

هل يجب أن أستخدم عنوان بريد إلكتروني مختلف هنا؟ إذا كان الأمر كذلك، فأي واحد؟

لا، كل هذا على ما يرام.

الجزء الذي قد تكون تفتقده هو هذا:

(تذكر أن Discourse يستخدم فقط ترويسات الرسالة (إلى/نسخة) ولا يعرف عنوان الظرف)

بالنسبة لفئة tor-relays، لدي “عنوان البريد الإلكتروني الوارد المخصص” مضبوطًا على tor-relays@lists.torproject.org والذي أعتقد أنه يطابق رأس To: للرسائل المرسلة بواسطة Mailman.

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