同様の問題が発生しています。昨日、新しいDiscourseインスタンスでメール送信のデバッグに約3時間費やしましたが、成功しませんでした。ポート587でSTARTTLS経由でFastmail経由でメールを送信しようとしています。同じ認証情報で他のサービスは動作しています。
これらの設定で「Must issue a STARTTLS command first」というエラー応答は得られません。
DISCOURSE_SMTP_ADDRESS: 'smtp.fastmail.com'
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: 'myuser@fastmail.fm'
DISCOURSE_SMTP_PASSWORD: 'mypass'
DISCOURSE_SMTP_ENABLE_START_TLS: true
その後、./launcher rebuild appを実行し、./discourse-doctorを実行してメールを送信すると、応答で500 5.5.1 Invalid commandというエラーが発生します。
今日、tcpdumpで通信のトレースを開始したところ、Discourseは実際にはSTARTTLSを使用していないようです。Grafanaのリカバリメールを送信したときに発生したことは次のとおりです。
< 220 smtp.fastmail.com ESMTP ready
> EHLO 9b5ba1569f77
< 250-smtp.fastmail.com
< 250-PIPELINING
< 250-SIZE 71000000
< 250-ENHANCEDSTATUSCODES
< 250-8BITMIME
< 250 STARTTLS
> STARTTLS
< ...[encrypted]
しかし、Discourseでは次のようになります。
< 220 smtp.fastmail.com ESMTP ready
> EHLO localhost
< 250-smtp.fastmail.com
< 250-PIPELINING
< 250-SIZE 71000000
< 250-ENHANCEDSTATUSCODES
< 250-8BITMIME
< 250 STARTTLS
> AUTH PLAIN [redacted]
< 500 5.5.1 Invalid command
したがって、Discourseは設定でSTARTTLSが有効になっているにもかかわらず、認証情報を平文でインターネットに送信しているようです。これはバグでしょうか?
また、./discourse-doctorを実行すると、「YML SETTINGS」のサマリーの上部に次の項目が表示されることにも気づきました。
==================== YML SETTINGS ====================
DISCOURSE_HOSTNAME=forum.[redacted]
SMTP_ADDRESS=smtp.fastmail.com
DEVELOPER_EMAILS=sysadmin@[redacted]
SMTP_PASSWORD=[redacted]
SMTP_PORT=587
SMTP_USER_NAME=[redacted]@fastmail.fm
LETSENCRYPT_ACCOUNT_EMAIL=
しかし、app.ymlで設定されているにもかかわらず、DISCOURSE_SMTP_ENABLE_START_TLSへの言及はありません。この問題が関連しているかどうかは不明です。