Atualização: Reproduzi a causa das falhas de Access Denied que estava observando e abri um PR:
A parte importante da minha observação original foi:
- e-mail simples/plano recebido → aceito
- e-mail mais rico contendo mídia incorporada → rejeitado com
Access Denied
As mensagens rejeitadas estavam sendo processadas como usuários em fase de staging/estrangeiros em uma categoria que permite e-mails de entrada de estrangeiros.
Desde #42079, o NewPostManager detecta mídia incorporada diretamente no conteúdo da publicação quando os metadados de tamanho de imagem estão ausentes. Isso faz com que essas mensagens entrem corretamente no fluxo de revisão :contains_media.
No entanto, antes de enfileirar a publicação para revisão, o NewPostManager.default_handler realiza a verificação normal do Guardian para criação de tópicos na categoria.
Para um usuário de e-mail de entrada em fase de staging, essa verificação pode falhar, mesmo que o Email::Receiver já tenha aceitado o caminho de e-mail de estrangeiros da categoria e passado skip_validations.
Isso produz o erro que estava observando:
Email::Receiver::InvalidPost: Access Denied
Adicionei um teste de regressão end-to-end do receiver para um e-mail contendo mídia enviado por um estrangeiro.
No main atual, antes da correção, o teste reproduz:
Email::Receiver::InvalidPost: Access Denied
Também testei o mesmo caso imediatamente antes de #42079, onde o e-mail de entrada é aceito, confirmando que esta é uma regressão introduzida por aquela alteração.
O PR preserva a moderação de mídia pretendida, em vez de contorná-la. Com a correção, o e-mail de entrada é enfileirado como um ReviewableQueuedPost e seu motivo de revisão permanece:
contains_media
Os specs relevantes do Email::Receiver e do NewPostManager passam localmente:
261 exemplos, 0 falhas
Portanto, isso parece explicar o comportamento de Access Denied que relatei acima, incluindo por que os e-mails simples funcionavam enquanto as mensagens mais ricas contendo mídia incorporada não.