Configurar SMTP en contenedor Docker

Cuando implemento Discourse a través de los gráficos de Helm

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

las cosas funcionan como se esperaba, pero no puedo modificar la configuración de correo electrónico SMTP en el contenedor de Docker.

Cuando intento replicar esto, entro en el contenedor y ejecuto

cd /opt/bitnami/discourse/config

en este directorio encuentro el archivo discourse.conf, pero no puedo modificarlo ya que dice, por ejemplo, que vi no está disponible.

¿Tienes alguna sugerencia sobre qué podría hacer?

Puedes preguntar en su foro. Excepto que lo cerraron.

O puedes hacer una instalación estándar y obtener ayuda aquí.

Es posible que puedas configurar variables de entorno. Puedes mirar los ejemplos.

Hola @pfaffman , muchas gracias por tu aporte.

Ahora sé cómo introducir variables de entorno en el chart de Helm de Bitnami.

Dados los credenciales SMTP de mi proveedor para correos electrónicos transaccionales Sendinblue

¿sabes cómo se ven las variables de entorno que tengo que pasar al contenedor de Discourse?

Si intentas usar una cuenta de Gmail normal para enviar correos, es una violación de los Términos de Servicio y no funcionará (por varias otras razones).

Hay un ejemplo de variables de entorno SMTP en

1 me gusta

Hola @pfaffman @Falco

Muchas gracias por sus aportaciones.

Así se ven mis variables de entorno:

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"

y después de eso, el contenedor se inició. Intenté enviar un correo electrónico de prueba a mi cuenta de Gmail desde el panel de administración. Esto es lo que obtuve:

Así que, por ahora, no funciona.

Estos son los registros del contenedor de 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 200 OK in 80ms (Views: 0.8ms | ActiveRecord: 0.0ms | Allocations: 4260)

¿Sabes qué podría hacer de manera diferente?

Puedes entrar en el contenedor en ejecución y ejecutar

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

e inspeccionar la excepción que se lanzará para obtener pistas.

1 me gusta

Esta es la primera línea que obtuve

bash: syntax error near unexpected token `('

Primero, debes ingresar a la consola de Rails. Ve al directorio de Discourse e ingresa rails c.

1 me gusta

Esto es lo que obtengo entonces

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

De acuerdo, estaba ejecutando ahora

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)

También, esto aquí no funciona:

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 `('

¿Estoy haciendo algo mal aquí?

Weird, this works just fine on my install:

[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>>

Since you are using an unsupported-install packaged by Bitnami, it’s expected for it to be broken on subtle ways. We do not support such installs here, so you will want to reach out to their own support channel at GitHub · Where software is built.

1 me gusta

Hola @Falco, muchas gracias por tu respuesta.

¿A qué te refieres con instalaciones no compatibles? Estoy contento de optar por instalaciones más compatibles. :slight_smile:

¿Aún puedo hacer todo con un gráfico de Helm?

No puedes. Solo se admite la instalación oficial. Consulte ¿Puede Discourse enviar imágenes Docker frecuentes que no necesiten ser iniciadas?.

Ayudé a alguien con una instalación de K8s la semana pasada. Me llevó a mí y a un par de ingenieros talentosos más de 6 horas (pero podrían haber sido 10, sin contar el tiempo que pasaron sin mí) ponerla en marcha utilizando sus herramientas.

He considerado crear imágenes que deberían lanzarse desde un gráfico de timón, pero aún no lo he hecho. Si tiene presupuesto, contácteme por mensaje privado o correo electrónico y es posible que pueda ayudar.

2 Me gusta