Los correos entrantes se cierran con un encabezado Authentication-Results «no result» de RFC 8601 (authserv-id; none)

Cuando email_in_authserv_id está definido y un correo entrante lleva una cabecera Authentication-Results coincidente sin resultado (Authentication-Results: ``mx.example.com``; none, la forma “sin resultado” de la RFC 8601 §2.2), la creación de la publicación falla con:

NoMethodError: undefined method 'each' for nil
lib/email/authentication_results.rb:45:in 'block in Email::AuthenticationResults#calc_dmarc'

La publicación se pierde y el remitente no recibe ningún correo de rechazo.

Por qué: en parse_header, la rama no_result de authres_payload coincide, por lo que resinfo_val es nil y parsed_resinfo nunca se asigna. El resultado es { authserv_id: "``mx.example.com``", resinfo: nil }, y luego calc_dmarc llama a result[:resinfo].each.

Cuándo ocurre: algunos MTA añaden la forma sin resultado cuando no realizaron ninguna comprobación. rspamd hace esto, por ejemplo, para correos no autenticados de sus local_addrs, como los reenviados desde dentro de la red. El error solo aparece cuando se crea una publicación (Email::Receiver#create_post → auth_res_action). Los correos rechazados antes, por ejemplo de un desconocido, nunca llegan a ese punto.

Reproducir (consola de rails):

SiteSetting.email_in_authserv_id = "mx.example.com"
Email::AuthenticationResults.new(["mx.example.com; none"]).verdict
# => NoMethodError: undefined method 'each' for nil

Corrección sugerida: en calc_dmarc, usar Array(result[:resinfo]).each do |resinfo|, o establecer parsed_resinfo = [] en parse_header. Una cabecera sin resultado se contaría entonces como gris, lo cual coincide con su significado.

Observado en ESR v2026.7.3, y la misma línea sigue presente en main.