【问题标题】:Why is Action Mailer redirecting outgoing mail to 'mydomain'?为什么 Action Mailer 将外发邮件重定向到 \'mydomain\'?
【发布时间】:2022-08-07 12:44:48
【问题描述】:

我的 Rails 应用程序位于 VPS 上,并通过外部 SMTP 服务器mail.mydomain 发送外发邮件。这已经工作了好几年,但最近我重建了服务器以更新其基础设施,其中包括将 VPS 移动到新的 IP 地址。我更新了mydomain 的地址记录以指向新的 IP。 MX 记录指向我的 ISP 提供的mail.mydomain。此外,我更新到 Rails 7.0.3 并安装了新的 \'Let\'s Encrypt\' SSL 证书。

从那时起,每当我尝试从 Rails 应用程序发送邮件时,日志都会显示消息“重定向到 https://mydomain”,并且没有发送任何内容。我已经验证我可以使用sendmailmailx 直接发送未经身份验证的邮件,并且我可以通过msmtpmail.mydomain 发送经过身份验证的邮件。

问题一定出在我的应用程序设置上。目前production.rb 有以下邮件设置。

  # config.action_mailer.raise_delivery_errors = false
  # specify what domain to use for mailer URLs
  config.action_mailer.delivery_method = :sendmail
  config.action_mailer.default_url_options = { host: \'mydomain\', protocol: \'https\' }
  config.action_mailer.smtp_settings = {
    address: \'mail.mydomain\',
    port: 465,
    domain: \'mydomain\',
    user_name: <user>,
    password: <password>,
    authentication: \'plain\',
    ssl: true,
    tls: true,
    open_timeout: 5,
    read_timeout: 5
  }

外发邮件通过使用good_job 作为后台处理器的活动作业进行排队,但在good_job 执行#deliver_now 之后发生Redirected to https://mydomain

我不明白为什么它是重定向,或者接下来要尝试什么。

    标签: ruby-on-rails email


    【解决方案1】:

    我最终能够解决这个问题,并认为我会发布它以供参考。首先,msmtp 是一个很好的邮件测试程序,但我忽略了它安装了自己的 MTA 并改变了sendmail 的运行方式,因为它需要一个配置脚本位于有效用户的主目录中(默认情况下为 ~/.msmtprc )。这意味着它没有使用我在production.rb 中的配置。所以我通过卸载msmtp 并重新安装postfix 恢复了默认行为。道德:阅读手册!

    现在ActionMailer 再次读取我的凭据,我注意到通过#deliver_now 发送的邮件已发送,但通过#deliver_later 排队等待后台发送的邮件没有发送。原来good_job的升级导致它默认为:external的执行模式。在这种模式下,它等待外部触发,例如cron 工作,触发处理——不是我需要的。将执行模式重置为:async 就可以了。道德:如上。

    现在我排队的邮件也到达了。

    【讨论】:

      猜你喜欢
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 2014-09-05
      • 2013-05-21
      • 1970-01-01
      • 2015-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多