皆さん、こんにちは!
CentOSサーバーにDiscourseのセルフホストインスタンスを立ち上げようと試行錯誤しています。ホスト名などもすべて設定し、Dockerコンテナも起動して、ローカルネットワーク内の http://discourse.foo.co でDiscourseインスタンスにアクセスできるようになったので、ほとんどうまくいっているようです。
しかし、ここで少し行き詰まっています。SMTP設定が機能していないようで、何を試しても常に Net::SMTPSyntaxError が発生するため、最初のユーザーを作成できません。
app.yml のSMTP設定は以下のとおりです。
## TODO: 初回サインアップ時に管理者および開発者となるメールアドレスのカンマ区切りリスト。例: 'user1@example.com,user2@example.com'
## DISCOURSE_DEVELOPER_EMAILS: 'brian@foo.co'
## TODO: 新規アカウントの検証および通知の送信に使用されるSMTPメールサーバー
# SMTPアドレス、ユーザー名、パスワードが必要です
# 注意: SMTPパスワードの '#' 文字は問題を引き起こす可能性があります!
DISCOURSE_SMTP_ADDRESS: foo.mail.protection.outlook.com
DISCOURSE_SMTP_PORT: 25
DISCOURSE_SMTP_USER_NAME: user@foo.co
DISCOURSE_SMTP_PASSWORD: '@'と'/'を含む特殊文字を含むパスワード。パスワードには'#'特殊文字は含まれていません。
DISCOURSE_SMTP_AUTHENTICATION: login
DISCOURSE_SMTP_ENABLE_START_TLS: true # (オプション、デフォルトはtrue)
#DISCOURSE_SMTP_DOMAIN: discourse.example.com # (一部のプロバイダーで必要)
DISCOURSE_NOTIFICATION_EMAIL: 'community@foo.co' # (通知を送信するアドレス)
Discourseフォーラムで探しましたが、「SMTPSyntaxError」を検索しても結果が得られませんでした。Googleでも役立つ解決策を見つけることができませんでした。
同じSMTP設定をBambooおよびJiraサーバーに入力すると、問題なく機能し、メールを正常に送信できます。
また、https://dnschecker.org/smtp-test-tool.php のようなオンラインテストツールも使用しましたが、テストメールは正常に送信できます。たとえば、上記と同じ詳細を入力すると、以下の内容のテストメールが正常に受信トレイに送信されます。
SMTPホスト: foo.mail.protection.outlook.com.
ポート: 25
明示的なTLS暗号化を使用: いいえ
暗黙的なTLS/SSL暗号化を使用:
認証を使用: いいえ
送信元メール: test@foo.co
宛先メール: brian@foo.co
何かお手伝いいただければ幸いです。
ブライアン
コンテナからSMTPサーバーへのトラフィックをダンプして、ワイヤー上で何が起こっているかを正確に確認することをお勧めします。
コンテナ内で実行することで、メールをトリガーできます。
rake 'emails:test[your.email.address@your.domain]'
そして、次のようなものが見えるはずです。
root@michael-discourse-docker-app:/var/www/discourse# rake 'emails:test[michael@contoso.com]'
mail.contoso.net:587、ユーザー名:michael、プレーン認証を使用して michael@contoso.com に送信をテストしています。
SMTPサーバー接続に成功しました。
michael@contoso.com に送信中。 . .
SMTPサーバーによってメールが受け入れられました。
Message-ID: e7adb5c4-f404-4800-b070-631b06ff5335@mx1.contoso.com
これも手がかりになるかもしれません。
「いいね!」 3
Michael様
ご提案ありがとうございます。しかし、./discourse-doctor を使用したときと同じエラーが発生するようです。
root@discourse-app:/var/www/discourse# rake 'emails:test[brian.lui@foo.co]'
Testing sending to brian.lui@foo.co using foo.mail.protection.outlook.com:25, username:user@foo.co with login auth.
======================================== ERROR ========================================
UNEXPECTED ERROR
Net::SMTPSyntaxError
====================================== SOLUTION =======================================
これは一般的なエラーではありません。推奨される解決策はありません!
上記の正確なエラーメッセージを https://meta.discourse.org/ に報告してください。
(解決策を見つけたら、それも!)
=======================================================================================
Brian
コンテナ内でコマンドを実行すると(Discourse SMTP トラブルシューティングガイドで見たように):
openssl s_client -connect foo.mail.protection.outlook.com:25 -starttls smtp
すべて正常に見えますが、250 DSN の代わりに 250 SMTPUTF8 が表示されます。次に EHLO "i am here" コマンドを入力しようとすると、何も起こらず、最終的にタイムアウトします。
451 4.7.0 Timeout waiting for client input [YT1PEPF00001E8C.CANPRD01.PROD.OUTLOOK.COM 2024-02-23T17:51:16.770Z 08DC342D15BDD245]\nread:errno=0
同じ結果になります。
これ以外に提案はありません。これは Discourse ではなく、メールサーバー自体の問題のようです。
このサーバーがメール送信に使用されることは期待していません。これが正しいことを確認していますか?
他の人が別の送信サーバーを使用して、それが機能したことを確認しました。
「いいね!」 2