さて、約6時間試行錯誤したところで、ついに少しお手伝いを頼もうと思いました。
サーバーにDiscourseをセットアップし、コンテナを起動して最初の管理者アカウントの登録を試みました。
問題:登録メールが届きません。
私が行ったこと:
DISCOURSE_SMTP_ADDRESS: MY_SMTP_HOST
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: MY_SMTP_USERNAME
DISCOURSE_SMTP_PASSWORD: MY_SMTP_PASSWORD
DISCOURSE_SMTP_ENABLE_START_TLS: true # (オプション、デフォルトは true)
-
初期の管理者アカウント設定用に、メールアドレスが1つだけ設定されていることを確認しました。
-
SSLが実際に機能していることを確認しました(問題ありません)。
-
Ubuntuを2回新規インストールし、オンラインで公開されているセットアップガイドに従って再試行しました。
-
出入りする通信をブロックするネットワークファイアウォールがないことを確認しました。
-
Discourseをホストしているサーバーから、SMTPサーバーへtelnet接続に成功しました。
-
app.ymlの末尾に以下の追加設定が正しく行われていることを確認しました。
- exec: rails r "SiteSetting.notification_email='noreply@MY_WEB_SITE'"
他に何ができるか分かりません。よろしくお願いいたします。
discourse-doctor を実行すると、明らかなエラーが表示されますか?
cd /var/discourse
./discourse-doctor
ああ、そうそう、そのこと言い忘れましたね。ちょっと待ってください、再度実行して私が気づいた出力を取得します。
==================== MAIL TEST ====================
堅牢なテストのためには、http://www.mail-tester.com/ からアドレスを取得してください
または、単に自分自身にテストメッセージを送信してください。
メールテストのメールアドレスは?(スキップするには 'n')[MY_EMAIL]:
MY_EMAIL へメールを送信中 . . .
smtp.MY_SMTP:587 を使用して MY_EMAIL への送信をテスト中。
SMTP サーバー接続成功。
MY_EMAIL へ送信中 . . .
メール送信に失敗しました。
置換中: SMTP_PASSWORD
置換中: LETSENCRYPT_ACCOUNT_EMAIL
置換中: DEVELOPER_EMAILS
置換中: DISCOURSE_DB_PASSWORD
置換中: Sending mail to
==================== DONE! ====================
このファイルの公開バージョンを提供しますか?(Y/n)
何らかの理由で、SMTP サーバー接続成功 だったにもかかわらず メール送信に失敗しました となっているのが気になります
パスワードに特殊文字が含まれている場合は、パスワードを引用符で囲んでみてください。
以前は引用符で囲まれていましたが、オンラインのガイドには引用符が含まれていなかったため、それに従いました。今度は二重引用符 " で試してみます。
今すぐ再構築中です。
はい、復旧しました。少々お待ちください。
同じエラーが発生しました:
==================== MAIL TEST ====================
本格的なテストを行うには、http://www.mail-tester.com/ からメールアドレスを取得してください。
または、自分自身にテストメッセージを送信してください。
メールテスト用のメールアドレスは?(スキップするには 'n')[MY_EMAIL]: MY_EMAIL
MY_EMAIL へメールを送信中... . .
MY_SMTP_SERVER:587 を使用して MY_EMAIL への送信をテスト中。
SMTP サーバー接続成功。
MY_EMAIL へ送信中... . .
メール送信に失敗しました。
置き換え中: SMTP_PASSWORD
置き換え中: LETSENCRYPT_ACCOUNT_EMAIL
置き換え中: DEVELOPER_EMAILS
置き換え中: DISCOURSE_DB_PASSWORD
置き換え中: Sending mail to
==================== DONE! ====================
このファイルの公開版を提供しますか?(Y/n)n
公開可能なログは生成されませんでした。
このスクリプトの出力は以下で確認できます:
LESS=-Ri less /tmp/discourse-debug.txt
ただしその前に、以下の最初の 3 つのコマンドを必ず理解してください!!!
上記のコマンド('less' と呼ばれる)でファイルを表示する際に使用するコマンド:
q -- 終了
/error<ENTER> -- 'error' という単語を検索
n -- 次の出現箇所を検索
g -- ファイルの先頭へ移動
f -- 1 ページ進んで移動
b -- 1 ページ戻って移動
G -- ファイルの末尾へ移動
標準のパスワード(文字なし)で試しましたが、引用符の有無を試しても結果に変化はありませんでした。
メールの送信に失敗しました。
今すぐ試してみます。ありがとうございます。
それを試す前に、パスワードを二重引用符で囲んで Discourse app.yml doesn't like email password contain "#" - #15 by elijah の方法で試してから、最後に特殊文字を含まないパスワードを設定します。
それでもうまくいかない場合は、Mailgun を設定します(現在のメールサーバーに多くのメールがあるため、最終手段として)。
進捗あり!パスワードをこのように二重引用符で囲んだ後 "'mypass'" 新しいエラーメッセージが表示されました
==================== メールテスト ====================
堅牢なテストを行うには、http://www.mail-tester.com/ からアドレスを取得してください
または、自分自身にテストメッセージを送信するだけです。
メールテストのメールアドレスは?(スキップするには 'n')[sender_email]: my_email
my_email にメールを送信中...
my_smtp:587 を使用して my_email への送信をテスト中。
======================================== エラー ========================================
予期しないエラー
SMTP-AUTH が要求されましたが、シークレットフレーズがありません
====================================== 解決策 =======================================
これは一般的なエラーではありません。推奨される解決策は存在しません!
上記の正確なエラーメッセージを https://meta.discourse.org/ に報告してください
(もし解決策が見つかった場合は、それも合わせて報告してください!)
=======================================================================================
置き換え中: SMTP_PASSWORD
置き換え中: LETSENCRYPT_ACCOUNT_EMAIL
置き換え中: DEVELOPER_EMAILS
置き換え中: DISCOURSE_DB_PASSWORD
置き換え中: Sending mail to
==================== 完了! ====================
このファイルの公開可能なバージョンを提供しますか? (Y/n)
手動で telnet を使用してメールを送信する場合は動作しているようですが、Discourse のメールを使用する場合は動作しないため、何らかの問題があるようです。
production.log に以下が見つかりました。これが原因でしょうか?
Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL) subscribe failed, reconnecting in 1 second. Call stack ["/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:362$
Job exception: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)
Job exception: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)
Job exception: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)
Job exception: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)
Job exception: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)
Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL) subscribe failed, reconnecting in 1 second. Call stack ["/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:362$
Job exception: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)
Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL) subscribe failed, reconnecting in 1 second. Call stack ["/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:362$
Job exception: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)
さらに調査したところ、Job exception: SSL_connect returned=1 errno=0 state=error: dh key too small というエラーが見つかりました。メールサーバーの SSL に問題があるようです。Mailgun の問題ですね。