رفض رسائل البريد الإلكتروني الواردة التي تحتوي على توقيعات/جداول/صور مضمنة بـ "تم رفض الوصول"

تحديث: لقد أعدت الآن إنتاج سبب أخطاء Access Denied التي كنت أراها وفتحت طلب سحب (PR):

الجزء المهم من ملاحظتي الأصلية كان:

  • البريد الإلكتروني الوارد البسيط/العادي → مقبول
  • البريد الإلكتروني الأكثر ثراءً الذي يحتوي على وسائط مضمنة → مرفوض بـ Access Denied

كانت الرسائل المرفوضة تُعالج كمستخدمين مؤقتين/غرباء في فئة تسمح بالبريد الإلكتروني الوارد من الغرباء.

منذ #42079، يكتشف NewPostManager الوسائط المضمنة مباشرةً من محتوى المنشور عند غياب بيانات حجم الصورة. وهذا يسبب بشكل صحيح دخول هذه الرسائل إلى مسار المراجعة :contains_media.

ومع ذلك، قبل وضع المنشور في طابور للمراجعة، يقوم NewPostManager.default_handler بإجراء فحص Guardian العادي لإنشاء موضوع الفئة.

لمستخدم البريد الإلكتروني الوارد المؤقت، يمكن أن يفشل هذا الفحص حتى لو كان Email::Receiver قد قبل بالفعل مسار بريد الغرباء للفئة وتمرير skip_validations.

هذا ينتج الخطأ الذي كنت أراه:

Email::Receiver::InvalidPost: Access Denied

أضفت اختبار انحدار (regression test) شامل للمستقبل (receiver) لبريد إلكتروني يحتوي على وسائط من غريب.

على الفرع main الحالي، قبل الإصلاح، يعيد الاختبار إنتاج:

Email::Receiver::InvalidPost: Access Denied

كما اختبرت الحالة نفسها مباشرةً قبل #42079، حيث يتم قبول البريد الإلكتروني الوارد، مما يؤكد أن هذا انحدار تم إدخاله بواسطة ذلك التغيير.

يحافظ طلب السحب (PR) على المراجعة المقصودة للوسائط بدلاً من تجاوزها. مع الإصلاح، يتم وضع البريد الإلكتروني الوارد في طابور كـ ReviewableQueuedPost وتظل سبب المراجعة:

contains_media

تعمل مواصفات Email::Receiver و NewPostManager ذات الصلة محلياً:

261 مثالاً، 0 إخفاقات

لذا يبدو أن هذا يفسر سلوك Access Denied الذي أبلغت عنه أعلاه، بما في ذلك سبب عمل البريد الإلكتروني العادي بينما لم تعمل الرسائل الأكثر ثراءً التي تحتوي على وسائط مضمنة.