L'adresse email de la catégorie nécessite-t-elle reply_by_email_enabled ?

Situation

  • reply_by_email_enabled désactivé, nous ne voulons pas que les utilisateurs répondent par e-mail
  • une catégorie réservée aux administrateurs pour les notifications provenant d’un système externe
  • la catégorie dispose d’une adresse e-mail configurée
  • email_in est activé
  • les e-mails sont envoyés à l’adresse e-mail de la catégorie
  • les e-mails rebondissent avec l’erreur BadDestinationAddress

La cause

Après une heure de débogage, je suis tombé sur le commit suivant FIX: Disallow replies to categories when reply by email disabled (#33… · discourse/discourse@e05ef50 · GitHub

CORRECTION : Interdire les réponses aux catégories lorsque la réponse par e-mail est désactivée (#33641)

Lorsque le paramètre reply_by_email_enabled est défini sur false, nous n’incluons plus de lien de réponse dans les notifications par e-mail. Cependant, nous n’empêchons pas les e-mails réels d’être envoyés à une adresse email_in configurée associée à une catégorie. Ce changement prend en compte le paramètre dans Email::Receiver#check_address.

et le code concerné ne retournera plus une catégorie si reply_by_email_enabled n’est pas activé.

    def self.check_address(address, include_verp = false)
      # vérifier uniquement un groupe/catégorie lorsque 'email_in' est activé
      if SiteSetting.email_in
        group = Group.find_by_email(address)
        return group if group

        category = Category.find_by_email(address)
        return category if category && SiteSetting.reply_by_email_enabled? <-- ajouté
      end

Pourquoi ? :scream:

J’ai tellement de questions :

  1. pourquoi ce changement ? Pourquoi le faire ? Cela rend le système moins flexible. Si je ne veux pas que les gens envoient des e-mails à une catégorie, je supprimerais simplement l’adresse e-mail de la catégorie ?
  2. pourquoi est-ce implémenté de cette façon ?
  • apparemment, l’envoi d’e-mails à des groupes n’est pas un problème ?
  • si reply_by_email_enabled est faux, il n’est même pas nécessaire de rechercher la catégorie ?
  • en ne retournant pas la catégorie, l’erreur devient BadDestinationAddress, ce qui est TRÈS incorrect et VRAIMENT difficile à déboguer
  1. le paramètre sur lequel cela dépend soudainement s’appelle réponse par e-mail. Ce n’est pas ce que je fais.
  2. la même confusion est visible dans le titre de la PR, intitulé “interdire les réponses aux catégories”, ce qui n’est pas ce dont il s’agit (dans Discourse, une “réponse à une catégorie” n’est même pas possible).

Outre la manière dont cela a été implémenté, je ne vois honnêtement pas l’intérêt.

Je ne peux imaginer AUCUNE situation où la simple suppression de l’adresse e-mail de la catégorie ne suffirait pas si l’on souhaite empêcher les gens d’envoyer des e-mails à une catégorie. Et l’implication est qu’il est désormais impossible d’avoir une catégorie recevant des e-mails sans activer la réponse par e-mail à l’échelle du site.

S’il y a une bonne raison que je manque, n’hésitez pas à recatégoriser cela comme Contribute > Feature

5 « J'aime »

J’ai en fait découvert cela moi-même et je suis déjà en train de l’examiner.

Je suis d’accord que la correction effectuée dans FIX: Disallow replies to categories when reply by email disabled (#33… · discourse/discourse@e05ef50 · GitHub était mauvaise car elle reposait sur et introduisait un effet secondaire, mais nous ne l’avons pas remarqué car les tests sont agencés de telle sorte que les conditions pour le déclencher n’étaient pas présentes. Je travaille actuellement à corriger cela.

3 « J'aime »

Ma correction proposée :

https://github.com/discourse/discourse/pull/37227

3 « J'aime »

Ceci a été fusionné @RGJ - pouvez-vous vérifier après la mise à jour que votre configuration fonctionne comme prévu ?

2 « J'aime »

Oui, ça marche à merveille maintenant ! Merci :slight_smile:

2 « J'aime »