SMTP 密码不再有效

嘿!

很遗憾,我不得不重新配置我的 SMTP 密码——我已经在 app.yml 中更新了它。

/logs 显示作业异常:535 拒绝。认证失败。已达到速率限制或 SMTP 已禁用。

我刚才试图找回旧的 app.yml,但我意识到从 Web 前端进行的备份仅收集所有图片和 dump.sql?嗯……有点令人失望,但我想这就是现状。

不管怎样……密码已用引号括起来,且是正确的。域名和用户也都正确。有人能指点我如何摆脱这个让我折腾了数小时的配置死循环吗?我可以尝试/检查/做些什么?

祝好

以下是 Ruby 错误日志:

/usr/local/lib/ruby/2.7.0/net/smtp.rb:975:in `check_auth_response'
/usr/local/lib/ruby/2.7.0/net/smtp.rb:736:in `auth_plain'
/usr/local/lib/ruby/2.7.0/net/smtp.rb:728:in `authenticate'
/usr/local/lib/ruby/2.7.0/net/smtp.rb:565:in `do_start'
/usr/local/lib/ruby/2.7.0/net/smtp.rb:518:in `start'
/var/www/discourse/vendor/bundle/ruby/2.7.0/bundler/gems/mail-5b700fc95ee6/lib/mail/network/delivery_methods/smtp.rb:109:in `start_smtp_session'
/var/www/discourse/vendor/bundle/ruby/2.7.0/bundler/gems/mail-5b700fc95ee6/lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'
/var/www/discourse/vendor/bundle/ruby/2.7.0/bundler/gems/mail-5b700fc95ee6/lib/mail/message.rb:2141:in `do_delivery'
/var/www/discourse/vendor/bundle/ruby/2.7.0/bundler/gems/mail-5b700fc95ee6/lib/mail/message.rb:253:in `block in deliver'
actionmailer-6.1.3.1/lib/action_mailer/base.rb:559:in `block in deliver_mail'
activesupport-6.1.3.1/lib/active_support/notifications.rb:203:in `block in instrument'
activesupport-6.1.3.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport-6.1.3.1/lib/active_support/notifications.rb:203:in `instrument'
actionmailer-6.1.3.1/lib/action_mailer/base.rb:557:in `deliver_mail'
/var/www/discourse/vendor/bundle/ruby/2.7.0/bundler/gems/mail-5b700fc95ee6/lib/mail/message.rb:253:in `deliver'
actionmailer-6.1.3.1/lib/action_mailer/message_delivery.rb:119:in `block in deliver_now'
actionmailer-6.1.3.1/lib/action_mailer/rescuable.rb:17:in `handle_exceptions'
actionmailer-6.1.3.1/lib/action_mailer/message_delivery.rb:118:in `deliver_now'
/var/www/discourse/lib/email/sender.rb:234:in `send'
/var/www/discourse/app/jobs/regular/user_email.rb:70:in `send_user_email'
/var/www/discourse/app/jobs/regular/user_email.rb:25:in `execute'
/var/www/discourse/app/jobs/base.rb:232:in `block (2 levels) in perform'
rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:80:in `with_connection'
/var/www/discourse/app/jobs/base.rb:221:in `block in perform'
/var/www/discourse/app/jobs/base.rb:217:in `each'
/var/www/discourse/app/jobs/base.rb:217:in `perform'
sidekiq-6.2.1/lib/sidekiq/processor.rb:196:in `execute_job'
sidekiq-6.2.1/lib/sidekiq/processor.rb:164:in `block (2 levels) in process'
sidekiq-6.2.1/lib/sidekiq/middleware/chain.rb:138:in `block in invoke'
/var/www/discourse/lib/sidekiq/pausable.rb:138:in `call'
sidekiq-6.2.1/lib/sidekiq/middleware/chain.rb:140:in `block in invoke'
sidekiq-6.2.1/lib/sidekiq/middleware/chain.rb:143:in `invoke'
sidekiq-6.2.1/lib/sidekiq/processor.rb:163:in `block in process'
sidekiq-6.2.1/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'
sidekiq-6.2.1/lib/sidekiq/job_retry.rb:112:in `local'
sidekiq-6.2.1/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'
sidekiq-6.2.1/lib/sidekiq.rb:38:in `block in <module:Sidekiq>'
sidekiq-6.2.1/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'
sidekiq-6.2.1/lib/sidekiq/processor.rb:257:in `stats'
sidekiq-6.2.1/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'
sidekiq-6.2.1/lib/sidekiq/job_logger.rb:13:in `call'
sidekiq-6.2.1/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'
sidekiq-6.2.1/lib/sidekiq/job_retry.rb:79:in `global'
sidekiq-6.2.1/lib/sidekiq/processor.rb:124:in `block in dispatch'
sidekiq-6.2.1/lib/sidekiq/logger.rb:11:in `with'
sidekiq-6.2.1/lib/sidekiq/job_logger.rb:33:in `prepare'
sidekiq-6.2.1/lib/sidekiq/processor.rb:123:in `dispatch'
sidekiq-6.2.1/lib/sidekiq/processor.rb:162:in `process'
sidekiq-6.2.1/lib/sidekiq/processor.rb:78:in `process_one'
sidekiq-6.2.1/lib/sidekiq/processor.rb:68:in `run'
sidekiq-6.2.1/lib/sidekiq/util.rb:43:in `watchdog'
sidekiq-6.2.1/lib/sidekiq/util.rb:52:in `block in safe_thread'

你在做出该更改后执行了重新构建吗?

对 app.yml 进行的任何更改都需要重新构建才能生效。

是的……我总是这样……修复这个 bug 太耗时了。

这听起来像是您的密码错误,或者您的邮件提供商拒绝了服务。

您可以通过执行以下命令来节省一些时间以更改 SMTP 密码:

./launcher destroy app; ./launcher start app

我认为这适用于更改 SMTP 设置,但不适用于所有设置。

是的,我也这么认为……但我已经尝试了所有方法……问题仍未解决。

这是我当前 app.yml 中的 ENV 部分:

env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## 支持多少个并发 Web 请求?取决于内存和 CPU 核心数。
  ## 将由 bootstrap 根据检测到的 CPU 自动设置,或者你可以覆盖该设置
  UNICORN_WORKERS: 2

  ## TODO: 此 Discourse 实例将响应的域名
  ## 必填项。Discourse 无法仅通过 IP 地址运行。
  DISCOURSE_HOSTNAME: forum.bgh-hamburg.de

  ## 如果希望容器使用与上述指定的相同主机名(-h 选项)启动,请取消注释
  ## (默认为 "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: 初始注册时将被设为管理员和开发人员的电子邮件列表,以逗号分隔,例如 'user1@example.com,user2@example.com'
  #DISCOURSE_DEVELOPER_EMAILS: 'bgh@forum.bgh-hamburg.de'

  ## TODO: 用于验证新账户和发送通知的 SMTP 邮件服务器
  # SMTP 地址、用户名和密码为必填项
  # 警告:SMTP 密码中的字符 '#' 可能导致问题!

  #DISCOURSE_SMTP_AUTHENTICATION: login
  DISCOURSE_SMTP_ADDRESS: forum.bgh-hamburg.de
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: bgh@forum.bgh-hamburg.de
  DISCOURSE_SMTP_PASSWORD: sdfoksdfpokasdpkopasdkfdfj
  #DISCOURSE_SMTP_DOMAIN: desde.uberspace.de
  #DISCOURSE_SMTP_ENABLE_START_TLS: true
  #DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

以 # 开头的行是我已经尝试过的内容……但问题依旧无法解决。使用这些凭据,我可以通过 Mail.app 正常登录、接收和发送邮件(我稍微修改了这些凭据,所以如果你尝试使用它们将无法成功)。我也尝试过从主机通过 telnet 连接 587 端口——一切正常……但我的 app.yml 中仍然有某个地方出了问题……我实在找不出问题所在……

顺便一提……我的 /logs 中的错误信息已变更为:

Job exception: -ERR [AUTH] Authentication failed.

我可能说错了,但看起来这样设置更合理:

SMTP 地址:desde.uberspace.de
SMTP 域名:您的论坛域名

我假设 uberspace 是邮件服务商,通常我们在第一个设置中使用邮件服务商的 SMTP 域名。

太感谢了!问题解决了!