Ethsim2
(Ethan )
2
更新:Access Denied(アクセス拒否)エラーの原因を再現し、PR を作成しました:
私の元の観察結果の重要な点は以下の通りです:
- 簡易/プレーンな受信メール → 受理
- 埋め込みメディアを含むリッチなメール →
Access Denied で拒否
拒否されたメッセージは、外部ユーザーからの受信メールを許可するカテゴリにおいて、ステージング/外部ユーザーとして処理されていました。
#42079 以降、NewPostManager は画像サイズのメタデータがない場合、投稿コンテンツから直接埋め込みメディアを検出します。これにより、これらのメッセージは正しく :contains_media のレビューパスに送られます。
しかし、投稿をレビューキューに追加する前に、NewPostManager.default_handler は通常のカテゴリトピック作成の Guardian チェックを実行します。
ステージング中の受信メールユーザーの場合、Email::Receiver がすでにカテゴリの外部ユーザーメールパスを受理し skip_validations を渡しているにもかかわらず、このチェックは失敗する可能性があります。
これにより、私が遭遇していた以下のエラーが発生します:
Email::Receiver::InvalidPost: Access Denied
外部ユーザーからのメディアを含むメールに対するエンドツーエンドの受信機回帰テストを追加しました。
現在の main ブランチでは、修正前にこのテストは以下を再現します:
Email::Receiver::InvalidPost: Access Denied
また、#42079 の直前でも同様のケースをテストし、受信メールが受理されることを確認しました。これにより、この問題がその変更によって導入された回帰エラーであることが確認できました。
この PR は意図されたメディアモデレーションをバイパスするのではなく、それを維持します。修正により、受信メールは ReviewableQueuedPost としてキューに追加され、そのレビュー理由は以下のように保持されます:
contains_media
関連する Email::Receiver および NewPostManager のスペックはローカルで正常に実行されました:
261 examples, 0 failures
したがって、これは私が上記で報告した Access Denied の挙動、特にプレーンなメールが機能した一方で埋め込みメディアを含むリッチなメッセージが機能しなかった理由を説明していると考えられます。