@kvsfさんのエラーはすでに修正されたか、設定の根本的な部分が変更されたと信じていますが、同じ問題領域で、私の設定、今後のアプローチ、そして助けを求めるためにこのスレッドを続けたいと思います。
基本設定
- Google Workspace Business Starter
- Gmailルーティングの設定 > SMTPリレー(i)ドメイン内の登録済みユーザーのみ、(ii)フォーラムホスティングサーバーIPによるIPホワイトリスト登録とSMTP認証の強制、(iii)TLSの強制
- discourseドキュメントに従ったDiscourse Dockerインストール
app.yml設定(以下に準拠)
expose:
- "80:80" # http
- "443:443" # https
env:
DISCOURSE_HOSTNAME: "forum.mydomain.com"
DISCOURSE_DEVELOPER_EMAILS: 'dev@mydomain.com'
DISCOURSE_SMTP_ADDRESS: "smtp-relay.gmail.com"
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: "user@mydomain.com"
DISCOURSE_SMTP_PASSWORD: "mypass"
DISCOURSE_SMTP_ENABLE_START_TLS: true
DISCOURSE_SMTP_AUTHENTICATION: login
DISCOURSE_SMTP_OPEN_TIMEOUT: 25
DISCOURSE_SMTP_READ_TIMEOUT: 25
DISCOURSE_SMTP_DOMAIN: "mydomain.com"
DISCOURSE_NOTIFICATION_EMAIL: "noreply@mydomain.com"
LETSENCRYPT_ACCOUNT_EMAIL: dev@mydomain.com
私のテスト
./discourse-doctorを実行すると、この設定は次のエラーを引き起こします。
Testing sending to ...
SMTP server connection successful.
Sending to artificial.testadress@gmail.com. . .
Sending mail failed.
end of file reached
その後、Discourseとメールのログを確認しました。
Docker内から docker exec -it <CONTAINER_ID> bash で接続し、
openssl s_client -starttls smtp -crlf -connect smtp.gmail.com:587
で同じプロセスを手動でテストすると、問題なく動作します。したがって、app.yml のパラメータ設定がおかしいか、Discourse内部でスクリプトの誤通信が発生しているか、または…多くの可能性があります。^^
app.yml を変更してテストするたびに ./launcher rebuild app を実行するのを避けるために、/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb を直接編集し、既存のコードを次のように変更しました。
class SMTP
attr_accessor :settings
DEFAULTS = {
:address => 'smtp-relay.gmail.com',
:port => 587,
:domain => 'mydomain.com',
:user_name => 'user@mydomain.com',
:password => 'mypass',
:authentication => 'login',
:enable_starttls => nil,
:enable_starttls_auto => true,
:openssl_verify_mode => 'peer',
:ssl => nil,
:tls => nil,
:open_timeout => 25,
:read_timeout => 25
}
def initialize(values)
self.settings = DEFAULTS #.merge(values)
end
これは、カスタマイズされた app.yml 設定と同様の動作になります。
ヘルプの検索
そして今、私は行き詰まっています。もちろん、残りの設定でさらに試すことができます(SSLのみの使用に戻すこともできますが、これはDiscourseによって非推奨になっています)。しかし、私は次のことをしたいです。
- この問題をより深く分析する方法を学ぶ
- それによって、何が実際に起こっていて、何が問題なのかを理解する
- 修正して、すべてをスムーズに使用できるようにする(そして、フォーラムを正常に動作させる)
ご協力ありがとうございます。