gichamba
(Ben Gichamba)
2024 年 1 月 4 日午後 2:16
1
皆さん、こんにちは。
Discourse の SMTP 設定に苦労しており、かなりの難題となっています。多くの投稿を調べましたが(例えばこちら )、うまくいきませんでした。
状況は以下の通りです。問題は、使用を求められているユーザー名とパスワードの形式と長さに起因しているのではないかと疑っています。SMTP サーバーとして Azure Communication Service を利用しており、Azure Entra アプリ(旧 Azure Active Directory)を必要とする特定の構成が必要です。
端的に言うと、ユーザー名の形式は次のようになります(実際の認証情報ではなく、例です)。
<Azure Communication Services リソース名>.<Entra アプリケーション ID>.<Entra アプリケーション テナント ID>
例:my-communication-service.7d8233e0-c230-4468-a2de-1d03aa64bb71.49ba4f9c-3b18-43df-b5fd-5e203ba6e031
詳細については、こちら をご覧ください。
一方、パスワードは Azure が生成したシークレット形式に準拠する必要があります。例:
b_C8Q~WjHH~MtFQptMj8wR1KroOZYigGy3A3Zc5M
さて、同様の認証情報を使用して C# でこの設定をスムーズに動作させています。
private static void SendMail()
{
string smtpAuthUsername = "my-communication-service.7d8233e0-c230-4468-a2de-1d03aa64bb71.49ba4f9c-3b18-43df-b5fd-5e203ba6e031";
string smtpAuthPassword = "a~C8Q~WjHH~MtFQptMj8wR1KroOZYigGy3A3Zc5M";
string sender = "DoNotReply@my-domain.com";
string recipient = "admin@my-domain";
string subject = "You a chosen";
string body = "One gorgeous body";
string smtpHostUrl = "smtp.azurecomm.net";
using (var client = new SmtpClient(smtpHostUrl))
{
client.Port = 587;
client.Credentials = new NetworkCredential(smtpAuthUsername, smtpAuthPassword);
client.EnableSsl = false;
var message = new MailMessage(sender, recipient, subject, body);
try
{
client.Send(message);
Console.WriteLine("The email was successfully sent using Smtp.");
}
catch (Exception ex)
{
Console.WriteLine($"Smtp failed with the exception: {ex.Message}.");
}
}
}
しかし、これらの設定を Discourse に実装しようとすると、問題が発生します。設定は次のとおりです。
DISCOURSE_SMTP_ADDRESS: smtp.azurecomm.net
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: "my-communication-service.7d8233e0-c230-4468-a2de-1d03aa64bb71.49ba4f9c-3b18-43df-b5fd-5e203ba6e031"
DISCOURSE_SMTP_PASSWORD: "b_C8Q~WjHH~MtFQptMj8wR1KroOZYigGy3A3Zc5M"
DISCOURSE_SMTP_ENABLE_START_TLS: true
DISCOURSE_SMTP_DOMAIN: my-domain.com
DISCOURSE_NOTIFICATION_EMAIL: DoNotReply@my-domain.com
しかし、この設定にもかかわらず、ログスニペットにあるように認証エラーが繰り返し発生します。
Job exception: Net::SMTPAuthenticationError
ユーザー名とパスワードを単一引用符、二重引用符、または省略するなど、さまざまな方法で囲んで試しましたが、結果は同じでした。
他に試せることについてのポインタや提案があれば、大いに感謝します。
「いいね!」 1
ecomter
(ecomter)
2024 年 3 月 3 日午前 7:06
2
Azure Communication Serviceで同様の問題が発生しました。
Microsoft Docsによると、アプリケーションでMicrosoft Entraがサポートされている必要があるようですが、Discourseは残念ながらそれをサポートしていません。
それまでの間、他に利用可能な方法があれば教えていただけると幸いです。
私も同じ問題に遭遇し、ウェブ検索でこのトピックを見つけました。Microsoft 365 のメールサーバーがパスワードベースの認証を廃止する前と同様に、AUTH LOGIN のみがサポートされており、AUTH PLAIN はサポートされていないようです。AUTH PLAIN は、この記事の執筆時点では Discourse のデフォルトとなっています(デフォルトはこちら )。
コンテナ構成で DISCOURSE_SMTP_AUTHENTICATION: login を設定すると、メールが機能するようになります。また、デフォルトでは 、「from」メールとして許可されるのは DoNotReply@domain.example のみであることにも注意してください。これを設定しないと、「550 5.3.5 Email sender’s username is invalid」というエラーでメールが拒否されます。
「いいね!」 4
kyfrankie
(Kyfrankie)
2026 年 1 月 9 日午後 2:42
5
私もこちらの提案に従って設定を試みましたが、動作させることができませんでした。しかし、SMTPに関するログが見つかりません。どのログファイルを確認すべきかご存知ですか?ありがとうございます。
/logs URLを確認する必要があります。
デバッグを行っている場合は、rake 'emails:test[your_email]' タスクを試す方が早いかもしれません。
コンテナを再構築することなくさまざまなことを試すために環境変数を設定することもできます。例:
$ DISCOURSE_SMTP_PORT=587 DISCOURSE_SMTP_USER_NAME=bilbo DISCOURSE_SMTP_PASSWORD=ring rake emails:test'[frodo@shire.net]'
kyfrankie
(Kyfrankie)
2026 年 1 月 9 日午後 5:00
7
discourse/discourse 2025.12.0 イメージを使用しています。興味深いことに、DISCOURSE_SMTP_PASSWORD を設定しなくても、管理者のユーザー登録タスクが呼び出されていないかのように、production.log にエラーが表示されません。利用可能なログは次のとおりです。
Started POST “/finish-installation/register” for xxx at 2026-01-09 16:48:11 +0000
Processing by FinishInstallationController#register as HTML
Parameters: {“authenticity_token”=>“xxx”, “email”=>“xxx”, “username”=>“xxx”, “password”=>“[FILTERED]”, “commit”=>“Register”}
Redirected to xxx
Completed 302 Found in 489ms (ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 131.6ms)
お探しのものは https://whateveryoursiteis.com/logs です
kyfrankie
(Kyfrankie)
2026 年 1 月 9 日午後 5:45
10
編集、問題解決しました。問題は、ユーザー名の環境変数が DISCOURSE_SMTP_USERNAME ではなく DISCOURSE_SMTP_USER_NAME であるべきだったことです。
以下の設定で動作しました。
DISCOURSE_SMTP_USER_NAME: <Azure communication service の SMTP ユーザー名 (Azure Communication Services リソース名>.<Entra アプリケーション ID>.<Entra テナント ID> である必要はありません>
DISCOURSE_SMTP_PASSWORD: xxx
DISCOURSE_SMTP_DOMAIN: yourdomain
DISCOURSE_NOTIFICATION_EMAIL: DoNotReply@yourdomain
DISCOURSE_SMTP_AUTHENTICATION: login
DISCOURSE_SMTP_ENABLE_START_TLS: true
コンテナから rake admin:create を実行して、アカウントを直接作成できます。
また、環境変数の処理方法が変更され、コンテナ起動時以外は参照されなくなったことを知りました。
別の値をテストしたい場合は、/var/www/discourse/config/discourse.conf を編集する必要があります。
system
(system)
クローズされました:
2026 年 2 月 8 日午後 5:49
12
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.