Dépôt : Plugin Discourse Priority Action Mailer
À quoi sert ce plugin ?
Ce plugin ajoute deux nouveaux « canaux » SMTP en plus du canal SMTP par défaut standard de Discourse. L’un est destiné aux e-mails « haute priorité », c’est-à-dire (subjectivement) les e-mails de notification lorsqu’un utilisateur demande une connexion par e-mail, s’inscrit ou demande une réinitialisation de mot de passe. L’autre canal est réservé aux e-mails de résumés (digests). Si l’un de ces nouveaux canaux SMTP n’est pas configuré (plus de détails plus tard), ils utiliseront par défaut le canal SMTP standard de Discourse.
Pourquoi s’en soucier ou installer ce plugin ?
Avoir un seul canal SMTP où les e-mails « haute priorité » destinés aux utilisateurs, tels que les demandes de connexion par e-mail, sont dans le même canal que les résumés (par exemple) crée un problème potentiel de « disponibilité »Note de bas de page 1, surtout si le canal SMTP par défaut a des limites définies.
Nous avons rencontré ce problème directement lors de notre première migration vers Discourse depuis notre ancien forum, en utilisant un compte Google Workspace (anciennement G Suite). En raison des limites imposées par Google à ce compte, cet e-mail spécifique a été « bloqué » pendant quelques jours. Ce n’était pas vraiment un problème grave car nous avons simplement créé un autre compte et désactivé les résumés ; mais pendant un court moment, les membres ne pouvaient ni se connecter par e-mail ni s’inscrire.
Mon expérience en cybersécurité et en ingénierie des systèmes en général m’a permis de noter ce canal e-mail unique comme un « point de défaillance unique », et j’ai donc pris note de le corriger ; ce plugin le fait en déplaçant tous les e-mails de résumés vers un canal SMTP différent.
En fait, c’est assez simple à faire, comme vous pouvez le voir grâce à la simplicité du code de ce plugin.
Comment installer ce plugin ?
L’installation de ce plugin est simple.
- Installez le plugin comme vous le feriez pour n’importe quel plugin Discourse.
- Définissez vos identifiants SMTP supplémentaires dans vos fichiers de construction du conteneur (vos fichier(s)
.yml).
Les variables d’environnement supplémentaires suivantes du conteneur Discourse sont utilisées, sauf si vous souhaitez les valeurs par défaut. Ces variables d’environnement SMTP sont essentiellement les mêmes que les variables d’environnement SMTP par défaut de Discourse, avec _PRIORITY et _DIGEST ajoutés à chacune :
VARIABLES D’ENVIRONNEMENT DU CANAL PRIORITÉ
env:
DISCOURSE_SMTP_ADDRESS_PRIORITY:
DISCOURSE_SMTP_PORT_PRIORITY:
DISCOURSE_SMTP_USER_NAME_PRIORITY:
DISCOURSE_SMTP_PASSWORD_PRIORITY:
DISCOURSE_SMTP_AUTHENTICATION_PRIORITY: # normalement défini à plain
DISCOURSE_SMTP_ENABLE_START_TLS_PRIORITY: # normalement défini à true
VARIABLES D’ENVIRONNEMENT DU CANAL RÉSUMÉ (DIGEST)
env:
DISCOURSE_SMTP_ADDRESS_DIGEST:
DISCOURSE_SMTP_PORT_DIGEST:
DISCOURSE_SMTP_USER_NAME_DIGEST:
DISCOURSE_SMTP_PASSWORD_DIGEST:
DISCOURSE_SMTP_AUTHENTICATION_DIGEST: # normalement défini à plain
DISCOURSE_SMTP_ENABLE_START_TLS_DIGEST: # normalement défini à true
Si vous ne spécifiez pas de canal, le plugin utilisera par défaut le canal standard de Discourse pour chacun des canaux ci-dessus.
Notes pour les développeurs
Ce plugin Discourse crée un nouveau canal SMTP « haute priorité » pour les messages SMTP « plus prioritaires » et un nouveau canal « résumé » uniquement pour les résumés envoyés aux utilisateurs, y compris AdminConfirmationMailer et les méthodes suivantes dans le mailer UserNotifications :
ACTIONS DU CANAL PRIORITÉ
- :email_login,
- :signup,
- :forgot_password,
- :admin_login
ACTION DU CANAL RÉSUMÉ
- :digest
Ce nouveau canal SMTP « haute priorité » devrait être différent de votre canal standard où Discourse envoie des résumés, etc.
Le choix ci-dessus pour les « haute priorité » était complètement subjectif (de ma part) et peut être facilement modifié en ajustant le plugin.
Vous pouvez facilement vérifier votre configuration dans le conteneur en utilisant la console Rails. Par exemple, pour afficher vos paramètres SMTP pour votre « canal de priorité », vous pouvez exécuter :
rails c
Rails.application.config.priority_smtp_settings
Idem pour les canaux « résumés » :
rails c
Rails.application.config.digest_smtp_settings
Idem pour les paramètres SMTP « par défaut » OOTB :
rails c
Rails.application.config.action_mailer.smtp_settings
Si vous installez le plugin sans définir les variables d’environnement dans le fichier de construction du conteneur, vous pouvez facilement vérifier qu’elles sont toutes définies par défaut sur Rails.application.config.action_mailer.smtp_settings.
De plus, vous pouvez facilement vérifier les panneaux d’administration de Discourse :
- /admin/email/sent
- /sidekiq
et confirmer que tout fonctionne correctement.
TESTS
Cette version (v0.1) a été testée en direct pendant plusieurs jours et fonctionne parfaitement jusqu’à présent.
POUR LES ADMINISTRATEURS SYSTÈME : NOTRE CONFIGURATION
Dans notre configuration, nous sommes actuellement configurés comme suit :
- CANAL RÉSUMÉ : sendgrid, “api: blah_blah_blah_11111_blah_bla”
- CANAL PAR DÉFAUT : sendgrid, “api: blah_blah_blah_2222_blah_blah”
- CANAL PRIORITÉ : Compte Google Workspace
La raison en est que nous obtenons beaucoup de statistiques importantes avec SendGrid et que nous sommes sur le plan de base (non gratuit) à environ 15 USD par mois, ce qui nous permet d’envoyer jusqu’à 40 000 messages par mois. Nous gérons cela en activant et désactivant les résumés pour rester en dessous de la limite de 40 000.
Nous utilisons deux API SendGrid différentes à des fins de suivi. J’avais prévu de définir le « CANAL PAR DÉFAUT » sur un autre fournisseur comme « MailGun », juste pour le plaisir, mais je ne l’ai pas encore fait.
Nous utilisons notre compte Google Workspace car notre forum Discourse ne reçoit pas beaucoup d’utilisateurs se connectant par e-mail et le volume d’inscriptions est suffisamment faible pour que Google ne se plaigne pas ; nous pouvons ainsi facilement voir ce qui se passe pour les notifications e-mail « haute priorité » :
Je recommande aux sites avec beaucoup d’inscriptions, de demandes de connexion par e-mail et d’autres « trafic de notifications e-mail prioritaires » de NE PAS utiliser Google Workspace (ou tout compte Google) et d’utiliser d’autres fournisseurs d’e-mails en masse comme SendGrid, MailGun, etc. Comme mentionné, nous sommes sur le plan de base (non gratuit) de SendGrid.
Cela dit, votre configuration SMTP vous « appartient » et non « à moi »
donc configurez-la comme vous le jugez « le mieux pour vous ».
AMÉLIORATIONS FUTURES
Il y a aussi des choses amusantes que nous pouvons faire, comme ajouter un « round robin » utilisant un générateur de nombres aléatoires pour équilibrer la charge des e-mails de résumés (par exemple) sur plusieurs fournisseurs. En modifiant facilement ce plugin, nous pouvons avoir 3, voire 30 canaux e-mail, et ainsi être très créatifs !
De plus, nous pourrions examiner les exceptions de Jobs pour nos mailers et, en cas de problème, signaler ce mailer (canal) et arrêter l’envoi d’e-mails à tout canal « signalé », etc.
Le ciel est la limite vraiment ; mais pour l’instant, je n’ai pas de plans immédiats pour ajouter des fonctionnalités de « round robin » ou de « désactivation des canaux défectueux » à ce plugin, car je suis occupé par d’autres tâches.
Franchement (ma faute), je ne suis pas très à l’aise avec la programmation EmberJS (en 2020, je ne suis pas sûr pour 2021, mais j’en doute… ), donc je n’ai ajouté aucune nouvelle fonctionnalité d’interface utilisateur dans cette version, désolé pour cela. Je suis plus orienté vers la programmation côté serveur, l’administration système et les fonctionnalités liées à la cybersécurité (côté serveur), en règle générale ; mais cela ne concerne que moi. N’hésitez pas à proposer du code Ember UI ou à faire un fork et à modifier ! Si je décide d’ajouter une nouvelle route pour afficher ces nouveaux canaux SMTP, je le ferai probablement en utilisant Bootstrap et jQuery, puisque (comme mentionné), je ne suis pas actuellement enthousiaste à l’idée de programmer en EmberJS.
CHANGER OU AJOUTER DES MÉTHODES SUPPLÉMENTAIRES
La configuration actuelle du plugin pour les « canaux de priorité » est complètement subjective, et je suis ouvert à les modifier en ajoutant d’autres méthodes de classe de mailer aux « canaux de priorité ». Je suis facile à trouver sur Internet ![]()
VOIR AUSSI
NOTES DE BAS DE PAGE
-
Les trois domaines fondamentaux de la cybersécurité sont les suivants :
- Disponibilité
- Confidentialité
- Intégrité
Ce plugin est conçu pour améliorer le domaine de la « disponibilité » de la cybersécurité de Discourse en déplaçant le trafic SMTP de faible priorité des résumés hors du canal SMTP par défaut ; et en déplaçant le trafic SMTP « plus prioritaire » vers un canal SMTP à faible trafic (pas de résumés, pas de notifications d’utilisateurs occasionnels).
SUPPORT DU PLUGIN
Le meilleur moyen de me contacter pour le support ou les demandes de fonctionnalités est de publier dans ce sujet complémentaire :

