Eingehende E-Mails mit Signaturen/Tabellen/Inline-Bildern werden mit „Zugriff verweigert“ abgelehnt

Update: Ich konnte die Ursache der Access Denied-Fehler, die ich beobachtet habe, nachstellen und einen PR erstellen:

Der wichtige Teil meiner ursprünglichen Beobachtung war:

  • einfache/normaler eingehender E-Mail → akzeptiert
  • umfangreichere E-Mail mit eingebetteten Medien → abgelehnt mit Access Denied

Die abgelehnten Nachrichten wurden als gestufte/Unbekannte Benutzer in einer Kategorie verarbeitet, die eingehende E-Mails von Unbekannten zulässt.

Seit #42079 erkennt NewPostManager eingebettete Medien direkt aus dem Beitragsinhalt, wenn Metadaten zur Bildgröße fehlen. Dies führt dazu, dass diese Nachrichten korrekt in den :contains_media-Überprüfungspfad eingehen.

Allerdings führt NewPostManager.default_handler vor dem Einreihen des Beitrags zur Überprüfung die normale Guardian-Prüfung für die Kategorie-Themen-Erstellung durch.

Für einen gestuften eingehenden E-Mail-Benutzer kann diese Prüfung fehlschlagen, obwohl Email::Receiver den Pfad für E-Mails von Unbekannten in der Kategorie bereits akzeptiert und skip_validations übergeben hat.

Dadurch entsteht der Fehler, den ich beobachtet habe:

Email::Receiver::InvalidPost: Access Denied

Ich habe einen End-to-End-Receiver-Regressionstest für eine E-Mail mit Medieninhalten von einem Unbekannten hinzugefügt.

Auf dem aktuellen main-Zweig reproduziert der Test vor dem Fix:

Email::Receiver::InvalidPost: Access Denied

Ich habe denselben Fall auch unmittelbar vor #42079 getestet, wobei die eingehende E-Mail akzeptiert wurde, was bestätigt, dass es sich um eine Regression handelt, die durch diese Änderung eingeführt wurde.

Der PR bewahrt die beabsichtigte Medienmoderation, anstatt sie zu umgehen. Mit dem Fix wird die eingehende E-Mail als ReviewableQueuedPost eingereiht und der Überprüfungsgrund bleibt:

contains_media

Die relevanten Email::Receiver- und NewPostManager-Specs bestanden lokal:

261 Beispiele, 0 Fehler

Dies scheint also das oben gemeldete Access Denied-Verhalten zu erklären, einschließlich der Frage, warum einfache E-Mails funktionierten, während die umfangreicheren Nachrichten mit eingebetteten Medien nicht funktionierten.