# DockerコンテナでSMTPを設定する

**URL:** https://meta.discourse.org/t/configure-smtp-in-docker-container/235373
**Category:** Self-hosting
**Tags:** unsupported-install
**Created:** [2022 年 8 月 7 日午後 3:11 UTC](https://meta.discourse.org/t/configure-smtp-in-docker-container/235373 "2022-08-07T15:11:41Z")
**Posts on this page:** 14
**Page:** 1

<div class="post-metadata">

### Author: ![tobi1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tobi1/32/211022_2.png) [@tobi1](https://meta.discourse.org/u/tobi1)
#### Post date: [2022 年 8 月 7 日午後 3:11 UTC](https://meta.discourse.org/t/configure-smtp-in-docker-container/235373/1 "2022-08-07T15:11:41Z")

</div>

Helmチャート経由でDiscourseをデプロイすると、

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

```

意図したとおりに動作しますが、Dockerコンテナ内のSMTPメール設定を変更できません。

[こちら](https://docs.bitnami.com/installer/apps/discourse/configuration/configure-smtp/)を再現しようとすると、コンテナに移動して

```plaintext
cd /opt/bitnami/discourse/config

```

を実行します。このディレクトリで `discourse.conf` ファイルを見つけますが、例えば `vi` が利用できないと表示されるため、変更できません。

何か提案はありますか？

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2022 年 8 月 7 日午後 9:42 UTC](https://meta.discourse.org/t/configure-smtp-in-docker-container/235373/2 "2022-08-07T21:42:59Z")

</div>

> [@tobi1](#):
>
> 何か提案はありますか？

フォーラムで尋ねることもできますが、閉鎖されています。

または、標準インストールをして、ここでヘルプを得ることもできます。

環境変数を設定できるかもしれません。例を参照してください。

---

<div class="post-metadata">

### Author: ![tobi1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tobi1/32/211022_2.png) [@tobi1](https://meta.discourse.org/u/tobi1)
#### Post date: [2022 年 8 月 9 日午後 9:06 UTC](https://meta.discourse.org/t/configure-smtp-in-docker-container/235373/3 "2022-08-09T21:06:58Z")

</div>

@pfaffman さん、ご入力ありがとうございます。

Bitnamiの[Helmチャート](https://artifacthub.io/packages/helm/bitnami/discourse)に環境変数を渡す方法がわかりました。

トランザクションメールのプロバイダーであるSendinblueのSMTP認証情報がありますが、

 ![smtp](https://global.discourse-cdn.com/meta/original/4X/8/a/c/8ac050539a334ba06f7fa594b3530924af422e28.png)

Dsicourseコンテナに渡す必要がある環境変数がどのようなものかご存知ですか？

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2022 年 8 月 9 日午後 9:33 UTC](https://meta.discourse.org/t/configure-smtp-in-docker-container/235373/4 "2022-08-09T21:33:36Z")

</div>

通常のGmailアカウントを使用してメールを送信しようとすると、利用規約違反となり、(その他の多くの理由により)機能しません。

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2022 年 8 月 10 日午前 1:40 UTC](https://meta.discourse.org/t/configure-smtp-in-docker-container/235373/5 "2022-08-10T01:40:56Z")

</div>

> [@tobi1](#):
>
> Discourseコンテナに渡す必要がある環境変数はどのようなものかご存知ですか？

SMTP環境変数の例は、以下にあります。

> <https://github.com/discourse/discourse_docker/blob/main/samples/standalone.yml#L64-L70>

---

<div class="post-metadata">

### Author: ![tobi1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tobi1/32/211022_2.png) [@tobi1](https://meta.discourse.org/u/tobi1)
#### Post date: [2022 年 8 月 10 日午後 12:03 UTC](https://meta.discourse.org/t/configure-smtp-in-docker-container/235373/6 "2022-08-10T12:03:22Z")

</div>

Hi @pfaffman @Falco  
ありがとうございます。

環境変数は以下のようになっています。

```plaintext
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"

```

その後、コンテナが起動しました。管理パネルからGmailアカウントにテストメールを送信しようとしました。結果は以下の通りです。

 ![smtp_2](https://global.discourse-cdn.com/meta/original/4X/4/6/8/4680e60726f44ab3c4cad58e9f895e0a1e6d1335.png)

現時点では機能していません。

Discourseコンテナのログは以下の通りです。

```plaintext
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)

```

他に何かできることはありますか？

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2022 年 8 月 10 日午後 2:14 UTC](https://meta.discourse.org/t/configure-smtp-in-docker-container/235373/7 "2022-08-10T14:14:04Z")

</div>

実行中のコンテナに入り、以下を実行して、発生する例外を調べて、手がかりを得ることができます。

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

```

---

<div class="post-metadata">

### Author: ![tobi1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tobi1/32/211022_2.png) [@tobi1](https://meta.discourse.org/u/tobi1)
#### Post date: [2022 年 8 月 10 日午後 2:54 UTC](https://meta.discourse.org/t/configure-smtp-in-docker-container/235373/8 "2022-08-10T14:54:38Z")

</div>

これは最初の行から取得したものです

```plaintext
bash: syntax error near unexpected token `('

```

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2022 年 8 月 10 日午後 2:55 UTC](https://meta.discourse.org/t/configure-smtp-in-docker-container/235373/9 "2022-08-10T14:55:37Z")

</div>

まず、レールコンソールにドロップする必要があります。Discourse ディレクトリに移動し、「rails c」と入力してください。

---

<div class="post-metadata">

### Author: ![tobi1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tobi1/32/211022_2.png) [@tobi1](https://meta.discourse.org/u/tobi1)
#### Post date: [2022 年 8 月 10 日午後 2:57 UTC](https://meta.discourse.org/t/configure-smtp-in-docker-container/235373/10 "2022-08-10T14:57:19Z")

</div>

これが出力されます

```plaintext
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

```

---

<div class="post-metadata">

### Author: ![tobi1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tobi1/32/211022_2.png) [@tobi1](https://meta.discourse.org/u/tobi1)
#### Post date: [2022 年 8 月 10 日午後 3:06 UTC](https://meta.discourse.org/t/configure-smtp-in-docker-container/235373/11 "2022-08-10T15:06:15Z")

</div>

実行中です

```plaintext
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)

```

また、これも機能しません。

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

```

何か間違っていますか？

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2022 年 8 月 10 日午後 3:50 UTC](https://meta.discourse.org/t/configure-smtp-in-docker-container/235373/12 "2022-08-10T15:50:34Z")

</div>

> [@tobi1](#):
>
> OK、今実行していました
> 
> ```plaintext
> 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)
> 
> ```

私の環境では問題なく動作します：

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

```

Bitnamiによってパッケージ化された#unsupported-installを使用しているため、微妙な点で破損していることが予想されます。ここではそのようなインストールはサポートしていないため、[GitHub · Where software is built](https://github.com/bitnami/charts/issues) で独自のサポートチャネルに問い合わせる必要があります。

---

<div class="post-metadata">

### Author: ![tobi1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tobi1/32/211022_2.png) [@tobi1](https://meta.discourse.org/u/tobi1)
#### Post date: [2022 年 8 月 12 日午後 5:48 UTC](https://meta.discourse.org/t/configure-smtp-in-docker-container/235373/13 "2022-08-12T17:48:09Z")

</div>

Falcoさん、ご返信ありがとうございます。

サポートされていないインストールとはどういう意味ですか？サポートされているインストールなら喜んで行います。🙂

Helmチャートで全て完了できますか？

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2022 年 8 月 14 日午前 10:40 UTC](https://meta.discourse.org/t/configure-smtp-in-docker-container/235373/14 "2022-08-14T10:40:41Z")

</div>

> [@tobi1](#):
>
> それでも、helm chart で全てを完了できますか？

できません。公式のインストールのみサポートされています。[Can Discourse ship frequent Docker images that do not need to be bootstrapped?](https://meta.discourse.org/t/can-discourse-ship-frequent-docker-images-that-do-not-need-to-be-bootstrapped/33205) を参照してください。

先週、誰かの K8s インストールを手伝いましたが、彼らのツールを使用してセットアップするのに、私と数名の優秀なエンジニアで 6 時間以上かかりました（私なしの時間を含めると 10 時間だったかもしれませんが）。

helm chart から起動するイメージの作成を検討しましたが、まだ行っていません。予算がある場合は、プライベートメッセージまたはメールでご連絡いただければ、お手伝いできるかもしれません。
