提问人:TimP 提问时间:7/10/2022 更新时间:8/7/2022 访问量:35
为什么 Action Mailer 将传出邮件重定向到“mydomain”?
Why is Action Mailer redirecting outgoing mail to 'mydomain'?
问:
我的 Rails 应用程序位于 VPS 上,并通过外部 SMTP 服务器发送传出邮件。这已经工作了好几年,但最近我重建了服务器以更新其基础设施,这涉及将 VPS 移动到新的 IP 地址。我更新了指向新 IP 的地址记录。MX 记录点由我的 ISP 提供。此外,我更新到了 Rails 7.0.3 并安装了新的“Let's Encrypt”SSL 证书。mail.mydomain
mydomain
mail.mydomain
从那以后,每当我尝试从 Rails 应用程序发送邮件时,日志都会显示消息“重定向到 https://mydomain”,并且没有发送任何内容。我已经验证我可以直接使用发送未经身份验证的邮件,并且我可以通过 发送经过身份验证的邮件。sendmail
mailx
msmtp
mail.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
我不明白为什么它是重定向,或者下一步该尝试什么。
答:
我最终能够解决这个问题,并认为我会发布它,仅供参考。首先,是一个用于测试邮件的好程序,但我忽略了它安装自己的 MTA 并改变操作方式,因为它需要有效用户主目录中的配置脚本(默认情况下)。这意味着它没有使用我的配置。所以我通过卸载并重新安装恢复了默认行为。寓意:阅读手册!msmtp
sendmail
~/.msmtprc
production.rb
msmtp
postfix
现在再次读取我的凭据,我注意到发送的邮件已发送,但排队等待后台传递的邮件未发送。事实证明,升级导致它默认为执行模式。在这种模式下,它会等待外部触发器(例如作业)来触发处理 - 而不是我需要的。重置执行模式以解决问题。道德:同上。ActionMailer
#deliver_now
#deliver_later
good_job
:external
cron
:async
现在,我排队的邮件也到达了。
评论