リバースプロキシでのディスコースのメール問題

  DISCOURSE_SMTP_ADDRESS: mail.mysecrect.tld
  DISCOURSE_SMTP_PORT: 465
  DISCOURSE_SMTP_USER_NAME: minegenix@mysecret.tld
  DISCOURSE_SMTP_PASSWORD: <secret>

のよう myapp.yml でメールを設定しました。

ログでも以下が見つかりました。

fail
Delivered mail 3ff63fed-4142-4042-ab33-29493b32b3a6@beta2.mysecret.tld (30001.9ms)
Job exception: execution expired

DISCOURSE_SMTP_ENABLE_START_TLS: false をアプリに追加する必要があるかもしれません。

承知しました。ちなみに、私はMailcowを使用しています!

サーバーは discourse beta2.mysecret.tld - mysecret.tld ではありませんか?

これらのオプションを試してください。

DISCOURSE_SMTP_ADDRESS: 172.17.0.1 # 内部IPを使用 - mail-server ドメインが正しく解決されない可能性がある
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: "YOUR-SMTP-USER-NAME"
DISCOURSE_SMTP_PASSWORD: "YOUR-SMTP-PASSWORD"
#DISCOURSE_SMTP_ENABLE_START_TLS: true           # (オプション、デフォルトはtrue)
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
DISCOURSE_SMTP_DOMAIN: mysecret.tld

mysecret.tld は、フォーラムのアドレスを公開したくないため、私の実際のドメインを隠すためのプレースホルダーです :slight_smile:

送信者メールアドレスが「…\@**beta2.**mysecret.tld」のようになっているのに、mailcowのアカウントが「…\@mysecret.tld」用である、ということでしょうか?

いいえ、私は… @ mysecret.tld からメールを送信しています。サイトは beta2.mysecret.tld で実行されています。

@Sprisa 投稿した設定を追加して、再構築してください。

それが役に立つかどうか確認してください。

@rrit あなたは話の本質を見逃しています :man_facepalming:

「いいね!」 1

はい、現在それを行っています。

「いいね!」 1

再構築のたびにブートストラップが必要ですか?

設定を追加しましたが、改善しませんでした。

SMTPサーバーへの初回接続時の問題のデバッグ方法

1. コンテナに入る:

./launcher enter app

2. getent hosts を使用して、SMTPサーバー名のDNS解決を確認する:

(コンテナ内には dignslookupping などはインストールされていません。)

getent hosts your.smtp.server

成功時の結果:

# IPv4
123.123.123.123 your.smtp.server

# IPv6
2001:db8:0:0:0:ff00:42:8329 your.smtp.server

3. openssl を使用して、SMTPサーバーへの接続を試みる:

(コンテナ内には telnetnc などはインストールされていません。)

接続に成功するまで、いくつかの異なる設定を試してください。

openssl s_client -connect your.smtp.server:465
openssl s_client -connect your.smtp.server:587 -starttls smtp

# IPv4
openssl s_client -connect 172.17.0.123:465
openssl s_client -connect 172.17.0.123:587 -starttls smtp

# IPv6
openssl s_client -6 -connect "[2001:db8:0:0:0:ff00:42:8329]:465"
openssl s_client -6 -connect "[2001:db8:0:0:0:ff00:42:8329]:587" -starttls smtp

参照: SMTP接続の確認方法 – > ステップ3: Opensslを使用したTLS経由のSMTP接続の確認

4. 見つかった動作する接続設定をDiscourseで使用する。

:rocket:

ボーナス: Dockerコンテナ内からDiscourseのIPを表示する

(コンテナ内には ifconfigip などはインストールされていません。)

hostname -I

結果例:

172.17.0.2

opensslで接続できません。また、getentからは以下しか取得できません。

2606:4700:3032::ac43:d2f1 mail.secret.tdl
2606:4700:3033::6815:4db8 mail.secret.tld

(secret.tldは実際のドメインに置き換えています)

当てずっぽうですが:これはパブリックIPですか?お使いのMailcowは、このパブリックIPでSMTP接続をリッスンするように設定されていますか、それとも内部ネットワークのみですか?

Discourseコンテナ内では、以下のコマンドでコンテナのIPを取得できます:

hostname -I

お使いのMailcowも同じ内部(Docker)ネットワーク上にありますか?

172.17.0.2 は hostname -I から取得したものです

Mailcowコンテナに入り、hostname -Iも取得できますか?MailcowとDiscourseは、同じホスト上の別々のDockerコンテナですか?

mailcowコンテナに入るにはどうすればよいですか?ランチャースクリプトがありません。

mailcowについても分かりません。mailcowコミュニティに問い合わせるのが良いかもしれません: https://community.mailcow.email/

メールシステムには何を使用すればよいですか、またはUbuntuにセットアップしてフォーラムのメールサービスとして機能するソフトウェアは何ですか?