我在Heroku上提供我的Rails 3应用程序,通过Google提供我的邮件,通过Enom提供域名。这是www.challengage.com
这种情况有95%的时间可以使用,但偶尔会有人试图回复我发送的电子邮件,但由于我的电子邮件josh@challengage.com以某种方式被替换,因此失败并显示以下错误消息他们收到了josh@herokuapp.challengage.com。我认为这与Mail Delivery Subsystems有关,但我不确定。它也似乎只是在给大学专业人士发送电子邮件时发生。
错误讯息:
From: Mail Delivery Subsystem [mailto:MAILER-DAEMON@smtp2.syr.edu]
Sent: Monday, July 15, 2013 2:08 PM
To: David DiMaggio
Subject: Undeliverable: FW: Challengage - Work Team Simulation product for interviewing evaluations
Delivery has failed to these recipients or groups:
paul@challengage.herokuapp.com
The server has tried to deliver this message, without success, and has stopped trying. Please try sending this message again. If the problem continues, contact your helpdesk.
The following organization rejected your message: challengage.herokuapp.com.
有什么想法吗?
谢谢大家。
答案 0 :(得分:1)
这几乎可以肯定是因为您在电子邮件记录中使用了CNAME。
虽然大多数电子邮件服务器在发送邮件时都会反映原始域名,但其他人会将其替换为CNAME末尾的域名。
这意味着他们不是发送到someone@challengage.com
,而是发送给someone@challengage.herokuapp.com
。
邮件服务器看到要发送给someone@challengage.herokuapp.com
的请求,并确定它不会照看challengage.herokuapp.com
,因此从它的角度来看,邮件被拒绝。
我们过去常常看到CloudMailin客户遇到此问题,并开始建议他们不要使用涉及电子邮件的CNAMES,只需使用直接添加MX记录到Apex域。
使用Heroku会产生问题,因为您没有可用于访问其服务器的单个IP。我们最终使用Route 53来托管我们的域,然后添加SSL端点(以获取负载平衡器详细信息),然后将该负载均衡器添加到Route 53的Alias命令,以便它自动始终给出正确的结果。或者,您可以在apex域上设置某种基于静态IP的系统以重定向。