Erreurs "Unexplained Email::Receiver::InvalidPost" inexpliquées

Similaire à Mirrored mailing list is rejecting registered forum users

Il ne semble pas l’être. Le sujet référencé semble être un problème d’autorisation provoqué par une configuration incorrecte.

1 « J'aime »

Je suis désolé, mes excuses pour la perturbation.

J’ai proposé une correction pour le problème que j’ai trouvé, mais d’après tout ce que j’ai trouvé jusqu’à présent, le composant qui effectuait le dénaturation n’affecte que l’enregistrement sauvegardé et n’affecte pas le courrier entrant pendant le traitement.

Je suis raisonnablement certain que la source du problème doit être autre chose, mais je ne sais pas encore ce que cela pourrait être.

1 « J'aime »

Voyant que ce changement a été fusionné, j’ai mis à jour notre instance Discourse aujourd’hui et je surveillerai les journaux des e-mails rejetés dans les prochains jours.

1 « J'aime »

Depuis la mise à jour, trois nouvelles erreurs InvalidPost ont été enregistrées, mais les détails du rejet sont différents : les trois erreurs affichent le corps du message correct (alors qu’auparavant la signature de la liste de diffusion était affichée) et la raison du rejet est maintenant Access Denied.

C’est au moins une amélioration.

La raison de l’erreur reste-t-elle avec l’utilisateur ?

Êtes-vous sûr que l’erreur est incorrecte ? L’utilisateur a-t-il l’autorisation de publier dans la catégorie ? L’utilisateur est-il actif ?

De prime abord, la raison ne semble pas tenir : le compte est actif, ni suspendu, ni réduit au silence. Cependant, j’ai remarqué que le compte n’est pas « mis en scène » (staged), ce qui est le cas pour la plupart des comptes dont les publications de listes de diffusion finissent dans Discourse. Toutes les publications des utilisateurs non mis en scène proviennent des membres de l’équipe de modération.

Notre catégorie de miroir de liste de diffusion a été initialement configurée en utilisant ce guide : Mirroring a read-only mailing list in Discourse

Cependant, je viens de vérifier les permissions configurées sur la catégorie et il semble que notre groupe de modérateurs ait été ajouté, et que everyone ait reçu les permissions de reply (répondre).

J’ai supprimé ces permissions supplémentaires et n’ai laissé que everyone avec la permission see (voir). Peut-être que ces permissions « supplémentaires » interfèrent avec la manière dont Discourse gère ces catégories spéciales de « miroir de liste de diffusion » ?

Le fait que l’utilisateur ne soit pas « staged » (pré-enregistré) pourrait être le problème. Les utilisateurs « staged » ne sont pas vérifiés pour savoir s’ils ont la permission de publier dans la catégorie, mais les utilisateurs enregistrés le sont. Ainsi, si l’utilisateur n’appartient pas à un groupe ayant la permission de répondre aux sujets dans la catégorie, sa réponse sera rejetée car il n’a pas la permission. Il en va de même pour les nouveaux sujets et la permission de « créer ».

Il y a un sujet à ce propos ici : Category not accepting "anonymous email" from known users

1 « J'aime »

Cependant, je viens de vérifier les autorisations configurées sur la catégorie et il semble que notre groupe de modérateurs ait été ajouté, et que everyone ait reçu les autorisations de reply.

J’ai supprimé ces autorisations supplémentaires et n’ai laissé que everyone avec l’autorisation see. Peut-être que ces autorisations « supplémentaires » interfèrent avec la façon dont Discourse gère ces catégories spéciales de « miroir de liste de diffusion » ?

En fait, oubliez ça, je devais regarder une autre catégorie, car les autorisations pour la catégorie miroir de liste de diffusion sont celles attendues : seul everyone a l’autorisation see. Cela dit, mon observation selon laquelle les publications des utilisateurs qui ne sont ni modérateurs ni en phase de préparation sont systématiquement rejetées reste valable.

Cette explication est tout à fait logique d’après ce que je constate, mais si c’est le cas, c’est un comportement certainement inattendu et déroutant : les expéditeurs qui publient sur la liste de diffusion miroir mais qui ont déjà un compte sur Discourse avec l’adresse e-mail associée devraient certainement être autorisés à publier dans les catégories où le paramètre « Cette catégorie reflète une liste de diffusion » est activé.

1 « J'aime »

Ce qui serait incroyable, c’est si Discourse pouvait persuader/payer quelqu’un de l’équipe Mailman (ou quelqu’un de similaire) pour améliorer la façon dont Discourse gère les e-mails.

1 « J'aime »

Nous avons des tests qui garantissent que Discourse peut recevoir des e-mails pour les catégories en lecture seule qui reflètent une liste de diffusion :

Pour prendre en charge cela, les messages envoyés aux miroirs de listes de diffusion contournent certaines vérifications :

    def create_post(options = {})
      …
      if sent_to_mailinglist_mirror?
        options[:skip_validations] = true
        options[:skip_guardian] = true
      else
        options[:email_spam] = is_spam?
        options[:first_post_checks] = true if is_spam?
        options[:email_auth_res_action] = auth_res_action
      end
    def sent_to_mailinglist_mirror?
      @sent_to_mailinglist_mirror ||=
        begin
          destinations.each do |destination|
            return true if destination.is_a?(Category) && destination.mailinglist_mirror?
          end

          false
        end
    end

À mon avis, quelque chose dans votre configuration pourrait créer une condition telle que le fait qu’il s’agisse d’un miroir de liste de diffusion n’est pas détecté ? Notez que pour contourner ces vérifications, l’e-mail doit être envoyé à l’adresse e-mail de la catégorie et non à l’adresse reply_by_email_address du site.

1 « J'aime »

Oh, c’est intéressant, et cela semble contredire les instructions publiées ici pour configurer un miroir de liste de diffusion :

Abonnez-vous à la liste de diffusion en utilisant votre adresse e-mail Discourse (par exemple, discourse@example.com).

J’ai vérifié l’adresse e-mail abonnée à nos listes de diffusion au nom de Discourse, et c’est bien discourse@forum.torproject.org.

Devrais-je utiliser une adresse e-mail différente ici ? Si oui, laquelle ?

Non, tout cela est correct.

L’élément qui pourrait vous manquer est celui-ci :

(rappelez-vous que Discourse n’utilise que les en-têtes de message (À/CC) et ne connaît pas l’adresse envelope-to)

[quote=“supermathie, post:36, topic:377793”]La partie qui vous manque peut-être est celle-ci :

[quote=“Discourse, post:1, topic:77990”]Réglez « Adresse e-mail entrante personnalisée » sur l’adresse e-mail de la liste de diffusion (par exemple, mailing-list@foo.test)

[/quote]

(rappelez-vous que Discourse n’utilise que les en-têtes de message (À/CC) et ne connaît pas l’adresse de l’enveloppe)

[/quote]

Pour la catégorie tor-relays, j’ai réglé l’« Adresse e-mail entrante personnalisée » sur tor-relays@lists.torproject.org, ce qui, je crois, correspond à l’en-tête To: des mails envoyés par Mailman.

1 « J'aime »