Los correos entrantes con firmas/tablas/imágenes incrustadas son rechazados con «Acceso denegado»

Actualización: He reproducido la causa de los fallos de Access Denied que estaba viendo y he abierto un PR:

La parte importante de mi observación original fue:

  • correo electrónico entrante simple/plano → aceptado
  • correo electrónico más rico que contiene medios incrustados → rechazado con Access Denied

Los mensajes rechazados se estaban procesando como usuarios en espera/desconocidos en una categoría que permite correos electrónicos entrantes de desconocidos.

Desde #42079, NewPostManager detecta los medios incrustados directamente desde el contenido del mensaje cuando faltan los metadatos de tamaño de imagen. Esto hace correctamente que estos mensajes entren en la ruta de revisión :contains_media.

Sin embargo, antes de poner el mensaje en cola para su revisión, NewPostManager.default_handler realiza la comprobación normal de Guardian para la creación de temas en la categoría.

Para un usuario de correo electrónico entrante en espera, esa comprobación puede fallar incluso aunque Email::Receiver ya haya aceptado la ruta de correo electrónico de desconocidos de la categoría y haya pasado skip_validations.

Eso produce el error que estaba viendo:

Email::Receiver::InvalidPost: Access Denied

He añadido una prueba de regresión de extremo a extremo del receptor para un correo electrónico que contiene medios de un desconocido.

En main actual, antes de la corrección, la prueba reproduce:

Email::Receiver::InvalidPost: Access Denied

También probé el mismo caso inmediatamente antes de #42079, donde el correo electrónico entrante es aceptado, confirmando que se trata de una regresión introducida por ese cambio.

El PR conserva la moderación de medios prevista en lugar de omitirla. Con la corrección, el correo electrónico entrante se pone en cola como ReviewableQueuedPost y su motivo de revisión sigue siendo:

contains_media

Las pruebas relevantes de Email::Receiver y NewPostManager pasan localmente:

261 ejemplos, 0 fallos

Así que esto parece explicar el comportamiento de Access Denied que informé anteriormente, incluido el motivo por el que los correos electrónicos simples funcionaban mientras que los mensajes más ricos que contenían medios incrustados no lo hacían.