Discourse-Doctor からの SMTP 認証エラー、新規インストールにて

Discourse を Digital Ocean Droplet にクリーンインストールしたのですが、管理者アカウントを登録しようとした際に通知メールが届きませんでした。

Troubleshooting のメールを読みましたが、解決策が見つかりませんでした。あるコメントに次のように書かれていました。

ダブルクォーテーションは機能します。パスワードに特定の文字(バックスラッシュなど?)が含まれている場合は、nanoのようなエディタでファイルを編集する必要があります。

これと、/containers/app.yml の「#」が問題を引き起こすという注意書きから、パスワードについて疑問に思いました。パスワードにはアンダースコアとチルダの両方が含まれていました。

パスワードに英数字のみを含む新しいメールアカウントを作成したところ、問題が解決しました。これで ./discourse-doctor でメールが機能するようになり、通知メールを再送信して受信できるようになりました。

理由もなく SMTPAuthenticationError で苦労している人がいるかもしれないので、この情報を共有するのは良いアイデアだと思いました。パスワードに特殊文字が含まれていないアカウントを試してみてください。:grinning:

「いいね!」 3

私はパスワードに-を含んでいますが、あなたのような問題は一度もありませんでした。

#は、YAMLファイル内のコードをコメント解除するため、行のどこからでも有効です。コメントは番号記号(#)で始まり、行のどこからでも開始でき、行の終わりまで続きます(https://en.wikipedia.org/wiki/YAML)。

「いいね!」 1

@MarcP:

興味深いですね。もし推測を求められたら、app.yml ファイルの SMTP パスワードが二重引用符で囲まれているので、二重引用符以外のどの文字でも大丈夫だろうと推測したでしょう。何か別のことをしたのではないかと疑問に思っています。

もう少しテストして、結果を投稿します。

「いいね!」 1

急いでいた結果がこれです。

DISCOURSE_SMTP_USER_NAMEDISCOURSE_SMTP_PASSWORD を、SMTP 認証エラーが発生した元の В аккаунте にリセットし、アプリを削除した後、./launcher start app を実行したところ、以下のエラーが発生しました。

found unknown escape character while parsing a quoted scalar at line 67 column 28 -e LANG=en_US.UTF-8
YAML syntax error. Please check your containers/*.yml config files.

案の定、昨日気づかなかったパスワード内の \ が原因でした。

確認のため、新しい В аккаунте のメールアドレスを使用し、В аккаунте のパスワードを \ なしにした В аккаунте のパスワードに変更し、app.yml に保存してアプリを再起動したところ、エラーメッセージは再発しませんでした。discourse-doctor でのメールテストも成功しました。その後、#\ 以外の多数の特殊文字を含む新しいパスワードを作成し、テストを繰り返しました。これも成功しました。

要約すると、app.yml の DISCOURSE_SMTP_PASSWORD フィールドでは、番号記号 #、バックスラッシュ \、そしておそらく二重引用符 \" を除いて、特殊文字は問題ないようです。

「いいね!」 2

:+1: 気に入りました、素晴らしいです :sunglasses: