SMTP 503 5.5.1 エラー: 認証が無効になっています

ローカルの Postfix SMTP を使用しており、以下のエラーが発生しています:

503 5.5.1 エラー:認証が有効になっていません

DISCOURSE_SMTP_ADDRESS: mail.xxx.net
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: resources@xxx.net
DISCOURSE_SMTP_PASSWORD: password123?
DISCOURSE_SMTP_ENABLE_START_TLS: true # (オプション、デフォルトは true)
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
DISCOURSE_SMTP_AUTHENTICATION: “plain”

最後の 2 つのオプションは最終手段として追加しましたが、効果はありませんでした。

SMTP サーバーは、Docker コンテナ内から使用した openssl や swaks などのすべてのテストツールで正常に動作しています。

root@resources-app:/# swaks --to resources@xxx.net --server mail.xxx.net:587 -tls
=== mail.xxx.net:587 に接続中...
=== mail.xxx.net に接続しました。
<-  220 mail.xxx.net ESMTP Postfix (Ubuntu)
 -> EHLO resources-app
<-  250-mail.xxx.net
<-  250-PIPELINING
<-  250-SIZE 10240000
<-  250-VRFY
<-  250-ETRN
<-  250-STARTTLS
<-  250-ENHANCEDSTATUSCODES
<-  250-8BITMIME
<-  250-DSN
<-  250-SMTPUTF8
<-  250 CHUNKING
 -> STARTTLS
<-  220 2.0.0 TLS 開始の準備完了
=== TLS が TLSv1.3:TLS_AES_256_GCM_SHA384:256 で開始されました
=== ローカル証明書は設定されていません
=== TLS ピア DN="/CN=*.xxx.net"
 ~> EHLO resources-app
<~  250-mail.xxx.net
<~  250-PIPELINING
<~  250-SIZE 10240000
<~  250-VRFY
<~  250-ETRN
<~  250-ENHANCEDSTATUSCODES
<~  250-8BITMIME
<~  250-DSN
<~  250-SMTPUTF8
<~  250 CHUNKING
 ~> MAIL FROM:<root@resources-app>
<~  250 2.1.0 Ok
 ~> RCPT TO:<resources@xxx.net>
<~  250 2.1.5 Ok
 ~> DATA
<~  354 データは <CR><LF>.<CR><LF> で終了してください
 ~> Date: Tue, 03 Aug 2021 11:04:12 +0000
 ~> To: resources@xxx.net
 ~> From: root@resources-app
 ~> Subject: test Tue, 03 Aug 2021 11:04:12 +0000
 ~> Message-Id: <20210803110412.593268@resources-app>
 ~> X-Mailer: swaks v20181104.0 jetmore.org/john/code/swaks/
 ~>
 ~> これはテストメールです
 ~>
 ~>
 ~> .
<~  250 2.0.0 Ok: 1C4ED8AA としてキューイングされました
 ~> QUIT
<~  221 2.0.0 バイ
=== リモートホストとの接続が閉じられました。

このエラーは、Postfixの設定に smtp_sasl_auth_enable = yes が含まれていないことを示している可能性があります。postconf -n の出力を確認し、上記の文字列が含まれているか確認してください。含まれていない場合は、/etc/postfix/main.cf を編集してコメントアウトを解除するか、修正した上で結果を報告してください。

smtp_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous noplaintext
smtpd_tls_security_level = encrypt
smtpd_use_tls = yes
の設定はあります。

上記の 2 つの設定は矛盾していると思います。これを機能させるには、Discourse 側で正しい認証方法を設定する必要があります。

なるほど、SASL は使用していないので、セキュリティを高めるためにそれらのオプションを設定しました。
利用可能な認証方式は何ですか?
また、なぜ SASL が必須なのでしょうか?以前は無効にしていましたが、Nextcloud や Thunderbird などの他のアプリケーションでは SMTP が正常に動作していました。

SASL はリモートサーバーへメールを送信する場合にのみ必要ですが、このサーバーはローカルでのみ動作します。

ありがとうございます。

私の理解が間違っているかもしれませんが、Docker コンテナはホストと論理的に分離されており、ホストでは Postfix が実行されているため、SASL が必要だと考えています。

Postfix のハードニングを少し緩めて、何が最も適しているか試してみるのはどうでしょうか?

このファイルには、それらの設定に関する参考情報が記載されています。

discourse/config/discourse_defaults.conf at main · discourse/discourse · GitHub

そのデフォルトファイルには考えられるすべての値が含まれていないようですが、より安全なオプションがあるか気になっていました。後でコードやライブラリを確認します。

セキュリティオプションを削除しても問題は解決しません。
discourse-doctor を再度実行する前に、launcher アプリの再ビルドを実行する必要がありますか?

ありがとう

d に注目してください。

Discourse が必要とするパラメータは smtp で始まるものだけで、smtpd で始まるものではありません。

smtp_sasl_auth_enable = yes
のみで、他の制限はありません。