メールが動作しません; Net::SMTPAuthenticationError

DiscourseサーバーをDigitalOceanでホストし、ドメインはPorkBun、メーラーはMailGunを使用しています。

MailGunアカウントは有効化されており、ドメイン(discourse.mydomain.com)はmg.mydomain.comでの使用のために検証済みです。すべてのDNS TXTレコードは設定済みです。

ここに記載されているすべてのトラブルシューティング手順を何度も試しました。Troubleshoot email on a new Discourse install

ホストでtelnetを入力し、手動でメールを送信しても問題ありません(https://serverfault.com/questions/49935/easiest-way-to-send-a-test-email-from-a-server-to-test-settings)。

app.ymlの内容は以下の通りです。

  DISCOURSE_DEVELOPER_EMAILS: 'myemail@gmail.com'
  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: mail
  DISCOURSE_SMTP_PASSWORD: "12345678901234567890"
  DISCOURSE_SMTP_DOMAIN: mg.mydomain.com
  DISCOURSE_NOTIFICATION_EMAIL: admin@mg.mydomain.com

discourse-doctorを実行しようとしたり、./launcher enter appを実行してからrake 'emails:test[mail@mg.mydomain.com]'を実行すると、以下のエラーが発生します。

======================================== ERROR ========================================
                                    UNEXPECTED ERROR

Net::SMTPAuthenticationError

====================================== SOLUTION =======================================
This is not a common error. No recommended solution exists!

Please report the exact error message above to https://meta.discourse.org/
(And a solution, if you find one!)
=======================================================================================

手動でメールを送信する際には問題がないため、Discourse側に問題があるようです。Googleやフォーラムで何時間も検索しましたが、まだ解決策は見つかっていません。何かアイデアはありますか?

ユーザー名またはパスワードに問題があります。パスワードにアスタリスクやシングルクォートなどのエスケープが必要な文字が含まれている可能性があります(そのため、その文字を含まないようにパスワードを変更するのが最も簡単です)。

新しいDiscourseのインストールでメールをトラブルシューティングするを参照してください。

「いいね!」 2

パスワードにはこれらの文字が一切含まれていません。実際、これはMailGunの自動生成されたパスワードで、文字、数字、およびいくつかの「-」文字しか含まれていません。かなり長いです。

それが私の最善の推測でした。新しいパスワードを生成したり、もう一度コピー&ペーストしたりすることをお勧めします。Discourseのバグである可能性は極めて低いです。

「いいね!」 1

DISCOURSE_SMTP_USER_NAME が間違っていると思います。mail では Mailgun で認証するには不十分でしょう。おそらく mail@mg.mydomain.com であるべきです。

DISCOURSE_SMTP_DOMAIN をユーザーのドメインだと思っているのではないでしょうか?そうではありません。EHLO ドメインです。設定する必要はほとんどないはずです。

「いいね!」 1

私も今気づきました。telnet でテストしたときは、ユーザー名として「mail@mg.mydomain.com」を使用したところうまくいったので、DISCOURSE_SMTP_USER_NAME としてそれを使ってもう一度試してみます。

DISCOURSE_SMTP_DOMAIN はユーザーのドメインだと考えているのではないでしょうか?そうではありません。EHLO ドメインです。設定する必要はないでしょう。

これが何を意味するのかよくわかりません。

MailGun では mg.mydomain.com を使用し、Discourse では discourse.mydomain.com を使用していました。現在、mydomain.com の DNS レコードは設定しておらず、Discourse のサブドメインと MailGun の DNS の TXT レコードのみ設定しています。

DISCOURSE_SMTP_DOMAIN の行を削除してください。ほとんどの場合、必要ありません。

これは、HELO/EHLO ドメインとして SMTP 交渉中に使用されます。

「いいね!」 1

ああ、そうだ。telnetでテストしたとき、実際に以下のすべてのアドレスからメールを送信できました。

  • mail@discourse.mydomain.com
  • mail@mydomain.com
  • mail@mg.mydomain.com

実際に使用すべきなのはどれか分かりません。関係ありますか?

それは、あなたのセットアップと、メールフローをどのようにしたいかによって異なります。

「いいね!」 1

動作するようになりました。ご協力いただいた皆様、ありがとうございました :slight_smile:

解決策は、

  DISCOURSE_SMTP_USER_NAME: mail

の代わりに

  DISCOURSE_SMTP_USER_NAME: mail@mg.mydomain.com

を使用することでした。

「いいね!」 2

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.