Configurar SMTP em contêiner Docker

Quando implanto o Discourse via gráficos Helm

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

as coisas funcionam como pretendido, mas não consigo modificar a configuração de e-mail SMTP no contêiner Docker.

Quando tento replicar isto, entro no contêiner e executo

cd /opt/bitnami/discourse/config

neste diretório encontro o arquivo discourse.conf, mas não consigo modificá-lo, pois diz, por exemplo, que vi não está disponível.

Você tem alguma sugestão do que eu poderia fazer?

Você pode perguntar no fórum deles. Exceto que eles o fecharam.

Ou você pode fazer uma instalação padrão e obter ajuda aqui.

Você pode ser capaz de definir variáveis de ambiente. Você pode olhar os exemplos.

Olá @pfaffman , muito obrigado pela sua contribuição.

Agora sei como trazer variáveis de ambiente para o chart helm da Bitnami.

Dadas as credenciais SMTP do meu provedor para e-mails transacionais Sendinblue

você sabe como são as variáveis de ambiente que preciso passar para o contêiner Dsicourse?

Se você estiver tentando usar uma conta regular do Gmail para enviar e-mails, isso é uma violação dos Termos de Serviço e não funcionará (por vários outros motivos).

Há um exemplo de variáveis de ambiente SMTP em

1 curtida

Olá @pfaffman @Falco

Muito obrigado pela sua contribuição.

É assim que minhas variáveis de ambiente se parecem

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 depois disso o container subiu. Tentei enviar um e-mail de teste para minha conta do gmail pelo painel de administração. Foi isso que recebi:

Então, não está funcionando no momento.

Estes são os logs do 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 200 OK in 80ms (Views: 0.8ms | ActiveRecord: 0.0ms | Allocations: 4260)

Você sabe o que eu poderia fazer de diferente?

Você pode entrar no contêiner em execução e executar

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

e inspecionar a exceção que será lançada para obter pistas.

1 curtida

Esta é a primeira linha que recebo

bash: syntax error near unexpected token `('

Ah, você precisa entrar primeiro no console do Rails. Vá para o diretório do Discourse e digite rails c.

1 curtida

É isso que eu recebo então

root@discourse-69c7f5475c-h9qf5:/opt/bitnami/discourse# rails c
bash: rails: comando não encontrado
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, eu estava executando agora

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)

Também, isto aqui não 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 `('

Estou fazendo algo errado aqui?

Estranho, isso funciona perfeitamente na minha instalação:

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

Como você está usando uma unsupported-install empacotada pela Bitnami, é esperado que ela esteja quebrada de maneiras sutis. Não damos suporte a tais instalações aqui, então você precisará entrar em contato com o canal de suporte deles em GitHub · Where software is built.

1 curtida

Olá @Falco, muito obrigado por me responder.

O que você quer dizer com instalações não suportadas? Ficarei feliz em usar instalações mais suportadas. :slight_smile:

Ainda consigo fazer tudo com um gráfico Helm então?

Você não consegue. Apenas a instalação oficial é suportada. Veja O Discourse pode enviar imagens Docker frequentes que não precisam ser inicializadas?.

Ajudei alguém com uma instalação K8s na semana passada. Levou a mim e a alguns engenheiros talentosos mais de 6 horas (mas podem ter sido 10, sem contar o tempo que eles passaram sem mim) para fazer funcionar usando as ferramentas deles.

Considerei criar imagens que deveriam ser lançadas a partir de um helm chart, mas ainda não o fiz. Se você tiver um orçamento, entre em contato comigo por mensagem privada ou e-mail e talvez eu possa ajudar.

2 curtidas