0

所以我被要求帮助维护一个使用 Ruby on Rails 的网站。现在,我只想说我已经编写 Ruby 有一段时间了,但我还是 Rails 的新手。引起我注意的第一个问题是激活电子邮件需要大约六个小时才能到达。如果由于错误而没有发送电子邮件但发送正确,只是速度很慢,那将是一回事。此外,正在运行的服务器也是它自己的 SMTP。在调用 setup_email 方法之前,我检查了电子邮件的格式,一切看起来都很好。我什至深入研究了 ActionMailer 库并阅读了那里的文件,并没有看到任何异常。那么最有可能导致电子邮件需要六个小时才能送达的原因是什么?

编辑:我尝试了 Roadmaster 的想法,发现确实有些奇怪。虽然正常的电子邮件发送似乎有日志中记录的正常延迟(例如“延迟=0.99,延迟=0.08/0.01/0.19/0.7”),但我注意到多次电子邮件尝试向 blah@blah.com 发送电子邮件. 由于找不到这样的主机,所有这些都会有所不同。但是与它们相关的延迟要大得多(例如“延迟=239853,延迟=239818/0.02/35/0”)。现在这听起来更像是某个地方的 Rails 代码问题,而不是 sendmail 配置问题,但我刚刚开始维护这个站点。从哪里开始寻找可能的地方?

4

1 回答 1

1

您可以访问服务器的邮件日志吗?如果它是 Unix 服务器,它们可能在 /var/log 中。您可能会发现正在发生的事情的线索。这是我要做的:

  1. 找到 SMTP 服务器日志(sendmail、exim、postfix 等)。
  2. 使用 tail -f whatever.log 来关注日志。让它在终端中运行。
  3. 进入您的应用程序并执行触发发送激活电子邮件所需的任何步骤。
  4. 检查您正在查看日志的窗口,看看会发生什么。

ActionMailer本身不应该引入那么大的延迟(虽然它在传递邮件时不是速度恶魔,但它仍然应该在 1-2 秒内处理所有事情),所以它可能是你堆栈的其他部分,甚至是收件人端的问题/过滤器/灰名单。

于 2010-03-26T23:39:49.650 回答