メール送信が機能しない

DigitalOcean の Discourse ドロップレットからメールを送信できません。表示されるエラーは以下の通りです。

Delivered mail d8f9bf03-a3ce-4b42-8226-fc4f40a9c724@foo.barbar.com (5099.4ms)

Job exception: 504 5.7.4 Unrecognized authentication type [BL0PR0102CA0036.prod.exchangelabs.com]

私の設定は以下の通りです。

  DISCOURSE_SMTP_ADDRESS: smtp.office365.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: foo@bar.com
  DISCOURSE_SMTP_PASSWORD: "mypassword"
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (オプション、デフォルトは true)

ドロップレットから telnet を試しましたが、エラーは発生しませんでした。
telnet smtp.office365.com 587

問題の原因は何でしょうか?ローカル環境で Python を使用して同様の SMTP 設定の組み合わせを試したところ正常に動作したため、設定自体に問題はないと考えています。

こんにちは、
以下を追加してみてください:

  DISCOURSE_SMTP_AUTHENTICATION: login

app.yml の末尾に:

 - exec: rails r "SiteSetting.notification_email='foo@bar.com'"
「いいね!」 1

こんにちは、mik
exec ステートメントが失敗しました:

FAILED

--------------------

Pups::ExecError: rails r "SiteSetting.notification_email='foo@bar.com'"` が失敗し、戻り値は #<Process::Status: pid 2229 exit 2> です

失敗の場所: /pups/lib/pups/exec_command.rb:112:in `spawn'

以下のパラメータで exec が失敗しました: "rails r \"SiteSetting.notification_email='foo@bar.com'\"`"

9628e31c775b74ad0f3a555b6af27701aa40b1f8b86419fa44a7c389cc5e34ae

** ブートストラップに失敗しました ** 上記にスクロールして、以前のエラーメッセージを確認してください。複数のエラーが存在する可能性があります。

./discourse-doctor を実行すると、問題の診断に役立つ場合があります。

exec コマンドを除外し、以下を追加してもエラーは発生しません。エラーではなく、以下のみが表示されます:

  DISCOURSE_SMTP_AUTHENTICATION: login

しかし、受信トレイにはメールが届きません(スパムフォルダも確認しました)。

良い設定を見つけるために、またエラーメッセージを取得するために、以下を試してみてください。

docker exec -t -i id_of_your_container /bin/bash

次に、コンテナ内で以下を実行します。

apt install s-nail
echo "This is the message body and contains the message" | s-nail -r "foo@bar.com" -s mysubject -S "smtp=smtp.office365.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="foo@bar.com" -S smtp-auth-password="xxxxxxxx" -S ssl-verify=ignore youremail@example.com

smtp-auth=login のような値を変更して、適切な設定を探してみてください。そうすれば、より具体的なエラーメッセージが表示されるかもしれません。

「いいね!」 2
echo "これはメッセージ本文で、メッセージを含んでいます" | s-nail -r "foo@bar.com" -s mysubject -S "smtp=smtp.office365.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="foo@bar.com" -S smtp-auth-password="xxxxxxxx" -S ssl-verify=ignore youremail@example.com

これで動作し、メールを受信できました!ただし、パスワードが「!」で始まるため、smtp-auth-password="xxxxxxxx"をシングルクォートに変更する必要がありました。

私の設定と異なる点として見えるのは、このフラグだけです:
-S ssl-verify=ignore

これを追加する必要がありますか?
ご協力ありがとうございます!

以下の設定を追加してみてください:

DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

これは config において ssl-verify=ignore と同じです。

エラーはありませんが、受信トレイにメールが届きません :frowning: まとめると、現在の設定は以下の通りです:

  DISCOURSE_SMTP_ADDRESS: smtp.office365.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: info@foo.com
  DISCOURSE_SMTP_PASSWORD: 'xxx'
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (オプション、デフォルトは true)
  DISCOURSE_SMTP_AUTHENTICATION: login
  DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

もう一度お試しください(これは s-nail コマンドラインテストの「-r」オプションと同じです:

  - exec: rails r "SiteSetting.notification_email='foo@bar.com'"

メールアドレスはアカウントのものと同じである必要があります。

また、app.yml ファイル内のインデントを確認し、先頭に「-」を付けるのを忘れないでください。2 個のスペース、次に「-」、次にスペース、そして「exec…」という形式です :)」

私も同じ問題に直面しています。Digital Ocean で Discourse を搭載したドロプレットを起動しました。これらの提案をすべて試し、毎回(sudo ./launcher rebuild app)再構築した後、“sudo ./discourse-doctor” コマンドを実行しました。

504 5.7.4 Unrecognized authentication type [BL0PR01CA0015.prod.exchangelabs.com]

コンテナ内からの s-nail は私の場合も問題なく動作しました。“-S ssl-verify=ignore” クラウスなしで試しても正常に動作しました。Digital Ocean のドロプレットにインストールされたものが正しくメールを送信していることを確認できる方はいますか?

メール管理者に smtp_authentication の有効な値を確認し、動作する値に DISCOURSE_SMTP_AUTHENTICATION を設定してください。

「いいね!」 1

ご支援いただきありがとうございました。諦めて、別のフォーラムソリューションに切り替えました。

「いいね!」 1

これは Microsoft です。彼らの指示は以下の通りで、smtp_authentication は指定されていません。

  • SMTP サーバー名:smtp.office365.com
  • SMTP ポート:587
  • SMTP 暗号化方式:STARTTLS

このようなサーバーはサポートしていないのでしょうか?アカウントを作成して接続し、必要な設定を教えてください。

DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

これで私の問題が解決しました!ありがとうございます!

「いいね!」 1