Configura SMTP nel container Docker

Quando distribuisco Discourse tramite grafici Helm

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-release bitnami/discourse

le cose funzionano come previsto, ma non riesco a modificare la configurazione delle e-mail SMTP nel container Docker.

Quando provo a replicare questo, entro nel container ed eseguo

cd /opt/bitnami/discourse/config

in questa directory trovo il file discourse.conf, ma non posso modificarlo poiché dice, ad esempio, che vi non è disponibile.

Hai qualche suggerimento su cosa potrei fare?

Puoi chiedere sul loro forum. Tranne che l’hanno chiuso.

Oppure puoi fare un’installazione standard e ottenere aiuto qui.

Potresti essere in grado di impostare variabili d’ambiente. Puoi guardare gli esempi.

Ciao @pfaffman , grazie mille per il tuo contributo.

Ora so come inserire le variabili d’ambiente nel chart Helm di Bitnami.

Date le credenziali SMTP del mio provider per le e-mail transazionali Sendinblue

sai come dovrebbero essere le variabili d’ambiente che devo passare al container Dsicourse?

Se stai cercando di usare un normale account Gmail per inviare posta, è una violazione dei TOS e non funzionerà (per diverse altre ragioni).

C’è un esempio di variabili d’ambiente SMTP in

1 Mi Piace

Ciao @pfaffman @Falco

grazie mille per il tuo contributo.

Ecco come appaiono le mie variabili d’ambiente

discourse:
  extraEnvVars:
    - name: DISCOURSE_SMTP_ADDRESS
      value: "smtp-relay.sendinblue.com"
    - name: DISCOURSE_SMTP_PORT
      value: "587"
    - name: DISCOURSE_NOTIFICATION_EMAIL
      value: "no-reply@my-domain.com"
    - name: DISCOURSE_SMTP_USER_NAME
      value: "my-email@googlemail.com"
    - name: DISCOURSE_SMTP_PASSWORD
      value: "my-pw"
    - name: DISCOURSE_SMTP_DOMAIN
      value: "my-domain.com"

e dopo di ciò il container è stato avviato. Ho provato a inviare un’e-mail di prova al mio account Gmail dal pannello di amministrazione. Questo è quello che ho ottenuto:

Quindi, al momento non funziona.

Questi sono i log del container Discourse:

Processing by Admin::UsersController#show as JSON
  Parameters: {"id"=>"1"}
Completed 200 OK in 1978ms (Views: 0.6ms | ActiveRecord: 0.0ms | Allocations: 195416)
Started GET "/groups/search.json" for 10.0.0.50 at 2022-08-10 11:55:05 +0000
Processing by GroupsController#search as JSON
Completed 200 OK in 1189ms (Views: 0.5ms | ActiveRecord: 0.0ms | Allocations: 133325)
Started GET "/admin/email.json" for 10.0.0.50 at 2022-08-10 11:55:17 +0000
Processing by Admin::EmailController#index as JSON
Completed 200 OK in 23ms (Views: 1.2ms | ActiveRecord: 0.0ms | Allocations: 864)
Started POST "/admin/email/test" for 10.0.0.50 at 2022-08-10 11:55:20 +0000
Processing by Admin::EmailController#test as */*
  Parameters: {"email_address"=>"test@gmail.com"}
Completed 422 Unprocessable Entity in 20ms (Views: 1.1ms | ActiveRecord: 0.0ms | Allocations: 2037)
Started GET "/about.json" for 10.0.0.47 at 2022-08-10 11:55:46 +0000
Processing by AboutController#index as JSON
Completed 200 OK in 67ms (Views: 0.3ms | ActiveRecord: 0.0ms | Allocations: 9503)
Started GET "/site/basic-info.json" for 10.0.0.47 at 2022-08-10 11:55:46 +0000
Processing by SiteController#basic_info as JSON
Completed 200 OK in 254ms (Views: 0.5ms | ActiveRecord: 0.0ms | Allocations: 33103)
Started GET "/site/basic-info.json" for 10.0.0.47 at 2022-08-10 11:55:47 +0000
Processing by SiteController#basic_info as JSON
Completed 80ms (Views: 0.8ms | ActiveRecord: 0.0ms | Allocations: 4260)

Sai cosa potrei fare diversamente?

Puoi entrare nel container in esecuzione ed eseguire

message = TestMailer.send_test("test@gmail.com")
Email::Sender.new(message, :test_message).send

e ispezionare l’eccezione che verrà generata per indizi.

1 Mi Piace

Questa è la prima riga ottenuta

bash: syntax error near unexpected token `('

Oh, devi prima accedere alla console di Rails. Vai nella directory di Discourse e inserisci rails c.

1 Mi Piace

Questo è quello che ottengo allora

root@discourse-69c7f5475c-h9qf5:/opt/bitnami/discourse# rails c
bash: rails: command not found
root@discourse-69c7f5475c-h9qf5:/opt/bitnami/discourse# ls
Brewfile         Gemfile.lock  adminjs  config.ru                  docs                 lefthook.yml  package.json             plugins  test            yarn.lock
CONTRIBUTING.md  LICENSE.txt   app      d                          images               lib           passenger.3000.pid.lock  public   tmp
COPYRIGHT.md     README.md     bin      db                         install-imagemagick  licenses      passenger.8080.pid       script   translator.yml
Gemfile          Rakefile      config   discourse.sublime-project  jsapp                log           passenger.8080.pid.lock  spec     vendor

Ok, stavo eseguendo ora

RAILS_ENV=production bundle exec rails c

irb(main):002:0> message = TestMailer.send_test("test@gmail.com")
Traceback (most recent call last):
        2: from app/mailers/test_mailer.rb:7:in `send_test'
        1: from lib/email/build_email_helper.rb:8:in `build_email'
ArgumentError (:arguments expected to be an Array of individual string args)

Anche questo qui non funziona:

root@discourse-69c7f5475c-h9qf5:/opt/bitnami/discourse# RAILS_ENV=production bundle exec rails c message = TestMailer.send_test("test@gmail.com")
bash: syntax error near unexpected token `('

Sto facendo qualcosa di sbagliato qui?

Strano, questo funziona perfettamente sulla mia installazione:

[5] pry(main)> message = TestMailer.send_test("test@gmail.com")
  TranslationOverride Exists? (0.8ms)  SELECT 1 AS one FROM "translation_overrides" WHERE "translation_overrides"."locale" = 'en' AND "translation_overrides"."translation_key" = 'test_mailer.subject_template' LIMIT 1
  (0.2ms)  SELECT "translation_overrides"."translation_key", "translation_overrides"."value" FROM "translation_overrides" WHERE "translation_overrides"."locale" = 'en'
TestMailer#send_test: processed outbound mail in 259.9ms
=> #<Mail::Message:212740, Multipart: false, Headers: <From: "Discourse" <noreply@unconfigured.discourse.org>>, <Reply-To: "Discourse" <noreply@unconfigured.discourse.org>>, <To: test@gmail.com>, <Subject: [Discourse] Email Deliverability Test>, <Mime-Version: 1.0>, <Content-Type: text/plain>, <X-Auto-Response-Suppress: All>, <Auto-Submitted: auto-generated>>

Dato che stai usando un’installazione unsupported-install impacchettata da Bitnami, è prevedibile che sia rotta in modi sottili. Non supportiamo tali installazioni qui, quindi dovrai rivolgerti al loro canale di supporto su GitHub · Where software is built.

1 Mi Piace

Ciao @Falco, grazie mille per la tua risposta.

Cosa intendi per installazioni non supportate? Sono felice di procedere con installazioni più supportate. :slight_smile:

Posso comunque fare tutto con un helm chart?

Non puoi. È supportata solo l’installazione ufficiale. Vedi Can Discourse ship frequent Docker images that do not need to be bootstrapped?.

Ho aiutato qualcuno con un’installazione K8s la settimana scorsa. Ci sono volute più di 6 ore a me e a un paio di ingegneri di talento (ma potrebbero essere state 10, senza contare il tempo che hanno passato senza di me) per farla funzionare usando i loro strumenti.

Ho considerato la creazione di immagini che dovrebbero essere lanciate da un helm chart, ma non l’ho ancora fatto. Se hai un budget, contattami via PM o email e potrei essere in grado di aiutarti.

2 Mi Piace