Aggiornamento: ho ora riprodotto la causa dei fallimenti Access Denied che stavo riscontrando e ho aperto una PR:
La parte importante della mia osservazione originale era:
- email in arrivo semplice/piana → accettata
- email più ricca contenente media incorporati → rifiutata con
Access Denied
I messaggi rifiutati venivano elaborati come utenti in attesa di approvazione (staged) o sconosciuti in una categoria che consente email in arrivo da sconosciuti.
Dalla PR #42079, NewPostManager rileva i media incorporati direttamente dal contenuto del post quando i metadati delle dimensioni dell’immagine sono assenti. Questo fa sì che questi messaggi entrino correttamente nel percorso di revisione :contains_media.
Tuttavia, prima di accodare il post per la revisione, NewPostManager.default_handler esegue il normale controllo Guardian per la creazione dell’argomento nella categoria.
Per un utente in arrivo via email in attesa di approvazione, questo controllo può fallire anche se Email::Receiver ha già accettato il percorso per le email da sconosciuti della categoria e ha passato skip_validations.
Questo produce l’errore che stavo riscontrando:
Email::Receiver::InvalidPost: Access Denied
Ho aggiunto un test di regressione end-to-end per il ricevitore per un’email contenente media proveniente da uno sconosciuto.
Sulla main corrente, prima della correzione, il test riproduce:
Email::Receiver::InvalidPost: Access Denied
Ho anche testato lo stesso caso immediatamente prima della PR #42079, dove l’email in arrivo viene accettata, confermando che si tratta di una regressione introdotta da quella modifica.
La PR preserva la moderazione dei media prevista invece di aggirarla. Con la correzione, l’email in arrivo viene accodata come ReviewableQueuedPost e il motivo della revisione rimane:
contains_media
Gli spec relativi a Email::Receiver e NewPostManager passano localmente:
261 esempi, 0 fallimenti
Quindi questo sembra spiegare il comportamento Access Denied che ho segnalato sopra, incluso il motivo per cui le email semplici funzionavano mentre i messaggi più ricchi contenenti media incorporati no.