عند ضبط email_in_authserv_id وحمل البريد الوارد رأس Authentication-Results مطابقًا بلا نتيجة (Authentication-Results: ``mx.example.com``; none، وهو شكل “لا نتيجة” وفقًا للقسم 2.2 من RFC 8601)، يفشل إنشاء المنشور مع ظهور الخطأ التالي:
NoMethodError: undefined method 'each' for nil
lib/email/authentication_results.rb:45:in 'block in Email::AuthenticationResults#calc_dmarc'
يُفقد المنشور، ولا يتلقى المرسل أي بريد رفض.
السبب: في parse_header، يتطابق فرع no_result من authres_payload، لذا تكون resinfo_val فارغة (nil) ولا يتم تعيين parsed_resinfo أبدًا. النتيجة هي { authserv_id: "``mx.example.com``", resinfo: nil }، ثم يستدعي calc_dmarc الأمر result[:resinfo].each.
متى يحدث ذلك: تضيف بعض خوادم البريد (MTAs) شكل “لا نتيجة” عندما لا تجري أي فحوصات. يقوم rspamd بذلك على سبيل المثال للبريد غير المصادق عليه من عناوين local_addrs الخاصة به، مثل البريد المُعاد توجيهه من داخل الشبكة. لا يظهر الانهيار إلا عند إنشاء منشور (Email::Receiver#create_post → auth_res_action). البريد المرفوض مبكرًا، مثل ذلك القادم من شخص غريب، لا يصل إلى هذه النقطة أبدًا.
التكرار (عبر rails console):
SiteSetting.email_in_authserv_id = "mx.example.com"
Email::AuthenticationResults.new(["mx.example.com; none"]).verdict
# => NoMethodError: undefined method 'each' for nil
الإصلاح المقترح: في calc_dmarc، استخدم Array(result[:resinfo]).each do |resinfo|، أو اضبط parsed_resinfo = [] في parse_header. في هذه الحالة، يُحتسب رأس “لا نتيجة” كرمادي، وهو ما يتوافق مع معناه.
رُصد هذا في ESR v2026.7.3، وما زال السطر نفسه موجودًا في فرع main.