Plugin Azioni Prioritarie Mailer Discourse

Repo: Plugin Discourse Priority Action Mailer

Cosa fa questo plugin?

Questo plugin aggiunge due nuovi “canali” SMTP oltre al canale SMTP predefinito standard di Discourse. Un canale è destinato alle email “ad alta priorità”, ovvero (in modo soggettivo) le email di notifica quando un utente richiede l’accesso tramite email, si registra o richiede il ripristino della password. L’altro canale è per le email di riepilogo (digest). Se nessuno di questi nuovi canali SMTP viene configurato (ne parleremo più avanti), i nuovi canali utilizzeranno il canale SMTP standard di Discourse.

Perché qualcuno dovrebbe preoccuparsi o installare questo plugin?

Avere un unico canale SMTP in cui le email “ad alta priorità” per gli utenti, come le richieste di accesso tramite email, si trovano nello stesso canale SMTP dei riepiloghi (ad esempio), crea un potenziale problema di “disponibilità”Nota 1, specialmente se il canale SMTP predefinito ha dei limiti imposti.

Abbiamo sperimentato direttamente questo problema quando abbiamo migrato per la prima volta su Discourse dal nostro forum legacy e abbiamo utilizzato un account Google Workspace (precedentemente noto come G Suite). Poiché Google limita questo account, quell’account email specifico è stato “bloccato” per alcuni giorni. Non è stato un problema davvero grave perché abbiamo semplicemente creato un altro account e disattivato i riepiloghi; ma per un breve periodo, i membri non sono stati in grado di accedere tramite email o registrarsi.

La mia esperienza nella cybersecurity e nell’ingegneria dei sistemi in generale ha evidenziato questo singolo canale email come un “punto singolo di guasto” e quindi ho preso nota di risolverlo; e questo plugin risolve il problema spostando tutte le email di riepilogo su un canale SMTP diverso.

In realtà, è abbastanza facile farlo, come puoi vedere da quanto è semplice il codice di questo plugin.

Come si installa questo plugin?

L’installazione di questo plugin è semplice.

  • Installa il plugin esattamente come faresti con qualsiasi altro plugin di Discourse.
  • Definisci le tue credenziali SMTP aggiuntive nei file di costruzione del contenitore (i tuoi file .yml)

Le seguenti variabili di ambiente del contenitore Discourse aggiuntive vengono utilizzate, a meno che non si desiderino i valori predefiniti. Queste variabili di ambiente SMTP sono sostanzialmente le stesse delle variabili di ambiente SMTP predefinite di Discourse, con l’aggiunta di _PRIORITY e _DIGEST a ciascuna:

VARIABILI DI AMBIENTE CANALE PRIORITÀ

env:
  DISCOURSE_SMTP_ADDRESS_PRIORITY:                     
  DISCOURSE_SMTP_PORT_PRIORITY: 
  DISCOURSE_SMTP_USER_NAME_PRIORITY: 
  DISCOURSE_SMTP_PASSWORD_PRIORITY: 
  DISCOURSE_SMTP_AUTHENTICATION_PRIORITY:               # normalmente impostato su plain
  DISCOURSE_SMTP_ENABLE_START_TLS_PRIORITY:             # normalmente impostato su true

VARIABILI DI AMBIENTE CANALE RIEPILOGO

env:
  DISCOURSE_SMTP_ADDRESS_DIGEST:                     
  DISCOURSE_SMTP_PORT_DIGEST: 
  DISCOURSE_SMTP_USER_NAME_DIGEST: 
  DISCOURSE_SMTP_PASSWORD_DIGEST: 
  DISCOURSE_SMTP_AUTHENTICATION_DIGEST:               # normalmente impostato su plain
  DISCOURSE_SMTP_ENABLE_START_TLS_DIGEST:             # normalmente impostato su true

Il plugin imposterà ogni canale sopra al canale standard di Discourse se non ne specifichi uno.

Note per gli Sviluppatori

Questo plugin Discourse crea un nuovo canale SMTP “ad alta priorità” per i messaggi SMTP “a priorità più elevata” e un nuovo canale “digest” solo per i riepiloghi inviati agli utenti, inclusi AdminConfirmationMailer e i seguenti metodi nel mailer UserNotifications:

AZIONI CANALE PRIORITÀ

  • :email_login,
  • :signup,
  • :forgot_password,
  • :admin_login

AZIONE CANALE RIEPILOGO

  • :digest

Questo nuovo canale SMTP “ad alta priorità” dovrebbe essere diverso dal tuo canale standard dove Discourse invia i riepiloghi, ecc.

Le scelte sopra per “alta priorità” erano completamente soggettive (da parte mia) e possono essere facilmente modificate cambiando il plugin.

Puoi facilmente verificare la tua configurazione nel contenitore utilizzando la console rails; ad esempio, per mostrare le impostazioni SMTP per il tuo “canale priorità” puoi:

rails c
Rails.application.config.priority_smtp_settings

Lo stesso vale per i canali “digest”:

rails c
Rails.application.config.digest_smtp_settings

Lo stesso vale per le impostazioni SMTP predefinite “OOTB”:

rails c
Rails.application.config.action_mailer.smtp_settings

Se installi il plugin e non imposti le variabili ENV nel file di costruzione del contenitore, puoi facilmente verificare che siano tutte impostate di default su Rails.application.config.action_mailer.smtp_settings

Inoltre, puoi facilmente verificare i pannelli di amministrazione di Discourse:

  • /admin/email/sent
  • /sidekiq

e confermare che tutto funzioni correttamente.

TEST

Questa versione (v0.1) è stata testata in diretta per molti giorni e finora funziona perfettamente.

PER GLI AMMINISTRATORI DI SISTEMA: LA NOSTRA CONFIGURAZIONE

Nel nostro setup, siamo attualmente configurati come segue:

  • CANALE RIEPILOGO: sendgrid, “api: blah_blah_blah_11111_blah_bla”
  • CANALE PREDEFINITO: sendgrid, “api: blah_blah_blah_2222_blah_blah”
  • CANALE PRIORITÀ: Account Google Workspace

Il motivo è che otteniamo molte statistiche importanti con SendGrid e siamo sul piano base (non gratuito) per circa 15 USD al mese, quindi possiamo inviare fino a 40.000 messaggi al mese, cosa che gestiamo attivando e disattivando i riepiloghi per assicurarci di rimanere sotto il limite di 40K.

Utilizziamo due diverse API SendGrid per scopi di tracciamento. Stavo pensando di impostare il “CANALE PREDEFINITO” su un altro provider come “MailGun”, solo per divertimento, ma non l’ho ancora fatto.

Utilizziamo il nostro account Google Workspace perché il nostro forum Discourse non riceve molti accessi tramite email e il volume delle registrazioni è abbastanza basso da non far lamentare Google; quindi possiamo vedere facilmente cosa succede per le notifiche email “ad alta priorità”:

Consiglio ai siti con molte registrazioni, richieste di accesso tramite email e altro “traffico di notifiche email prioritarie” di NON utilizzare Google Workspace (o qualsiasi account Google) e di utilizzare altri provider di email bulk come SendGrid, MailGun, ecc. Come accennato, siamo sul piano SendGrid base (non gratuito).

Detto questo, la tua configurazione SMTP è “a tua discrezione” e non “a mia discrezione” :slight_smile: quindi configurala come ritieni “meglio per te”.

MIGLIORAMENTI FUTURI

Ci sono anche cose divertenti che possiamo fare, come aggiungere un “round robin” utilizzando un generatore di numeri casuali per bilanciare il carico delle email di riepilogo (ad esempio) su più provider. Modificando facilmente questo plugin possiamo avere 3 o anche 30 canali email e così possiamo essere molto creativi!

Inoltre, potremmo esaminare le eccezioni dei Jobs per i nostri mailer e se c’è un problema potremmo segnalare quel mailer (canale) e smettere di inviare email a qualsiasi canale “segnalato”, ecc.

Il cielo è il limite, davvero; ma per ora, non ho piani immediati per aggiungere funzionalità “round robin” o “disabilitazione canali difettosi” a questo plugin, poiché sono impegnato in altre attività.

Francamente (colpa mia), non mi occupo di programmazione EmberJS (nel 2020, non sono sicuro per il 2021, ma ne dubito…), quindi non ho aggiunto nuove funzionalità UI in questa versione, mi dispiace. Sono più orientato alla programmazione lato server, all’amministrazione di sistema e alle funzionalità relative alla cybersecurity (lato server), in linea di massima; ma questo sono io. Sentitevi liberi di inviare PR con nuovo codice UI Ember o di fare fork e modificare! Se decido di aggiungere una nuova rotta per visualizzare questi nuovi canali SMTP, molto probabilmente lo farò utilizzando Bootstrap e jQuery, dato che (come accennato) al momento non sono entusiasta della programmazione EmberJS.

CAMBIARE O AGGIUNGERE METODI AGGIUNTIVI

La configurazione attuale del plugin per i “canali prioritari” è completamente soggettiva, e sono aperto a modificarle aggiungendo altri metodi di classe mailer ai “canali prioritari”. Sono facile da trovare online :slight_smile:

VEDI ANCHE

NOTE

  1. I tre domini fondamentali della cybersecurity sono i seguenti:

    1. Disponibilità
    2. Riservatezza
    3. Integrità

Questo plugin è progettato per migliorare il dominio della “disponibilità” della cybersecurity di Discourse spostando il traffico SMTP dei riepiloghi a bassa priorità fuori dal canale SMTP predefinito; e per spostare il traffico SMTP “ad alta priorità” su un canale SMTP con poco traffico (nessun riepilogo, nessuna notifica utente casuale).

SUPPORTO DEL PLUGIN

Il modo migliore per contattarmi per supporto o richieste di funzionalità è pubblicare in questo argomento complementare:

6 Mi Piace

Grazie per il plugin. Sarà particolarmente utile per i forum con un gran numero di membri.

1 Mi Piace

Grazie @ozkn

È stato un piacere ricambiare, anche in piccola parte, a una così grande comunità di utenti Discourse.

1 Mi Piace