Я только что выполнил чистую установку Discourse на Droplet в Digital Ocean, и всё прошло довольно гладко, но я не получил уведомительное письмо при попытке регистрации учётной записи администратора.
Я прошёл по руководству по устранению неполадок, связанному с почтой, и не смог найти решение, пока не дошёл до одного из комментариев, где говорилось:
Двойные кавычки работают. Если в вашем пароле есть определённые символы (например, обратный слэш?), вам нужно отредактировать файл с помощью редактора, например nano.
Это, а также примечание в /containers/app.yml о том, что символ «#» может вызывать проблемы, заставило меня задуматься о моём пароле. В нём были как знак подчёркивания, так и тильда.
Я создал новую учётную запись электронной почты с паролем, содержащим только алфавитно-цифровые символы, и это решило проблему. Теперь почта работает в ./discourse-doctor, и я смог повторно отправить и получить уведомительное письмо.
Кажется, стоит поделиться этим опытом на случай, если кто-то ещё столкнётся с SMTPAuthenticationError без видимой причины. Попробуйте создать учётную запись без специальных символов в пароле.
У меня пароль содержит -, и я никогда не сталкивался с проблемами, которые возникли у вас.
# имеет смысл, так как в файлах YAML он отменяет комментарий в коде с любой позиции строки: комментарии начинаются с символа решётки (#), могут начинаться в любом месте строки и продолжаются до конца строки (YAML - Wikipedia).
Интересно. Если бы меня попросили предположить, то, поскольку пароль SMTP в файле app.yml заключен в двойные кавычки, я бы предположил, что подойдет любой символ, кроме двойной кавычки. Вы заставили меня задуматься, не связано ли это с чем-то другим, что я сделал.
Я проведу дополнительные тесты и вернусь с результатами.
Я сбросил DISCOURSE_SMPC_USER_NAME и DISCOURSE_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. Пожалуйста, проверьте файлы конфигурации в containers/*.yml.
Действительно, в пароле, который я не заметил вчера, присутствовал символ \.
Для подтверждения я использовал адрес электронной почты новой учётной записи, изменил пароль этой учётной записи на пароль проблемной учётной записи без символа \, сохранил его в app.yml и перезапустил приложение; ошибка больше не появлялась. Тест отправки почты с помощью discourse-doctor прошёл успешно. Затем я создал новый пароль с множеством специальных символов, но без # и \, и повторил тест. Он также удался.
В итоге, похоже, что в поле DISCOURSE_SMTP_PASSWORD в app.yml допустимы специальные символы, за исключением символа решётки #, обратной косой черты \ и, вероятно, двойной кавычки "?