Ruby on rails 3 Heroku正在拦截一些Gmail传入消息

Ruby on rails 3 Heroku正在拦截一些Gmail传入消息,ruby-on-rails-3,email,heroku,Ruby On Rails 3,Email,Heroku,我在Heroku上提供我的Rails 3应用程序,通过Google提供我的邮件,通过Enom提供域名。这是给www.challenge.com的 这在95%的情况下有效,但是,偶尔,当有人试图回复我发送给他们的电子邮件时,会出现以下错误消息,因为我的电子邮件,josh@challengage.com,不知怎的被替换为josh@herokuapp.challengage.com当他们收到它的时候。我认为这与邮件传递子系统有关,但我不确定。这似乎只有在给大学专业人士发电子邮件时才会发生 错误消息:

我在Heroku上提供我的Rails 3应用程序,通过Google提供我的邮件,通过Enom提供域名。这是给www.challenge.com的

这在95%的情况下有效,但是,偶尔,当有人试图回复我发送给他们的电子邮件时,会出现以下错误消息,因为我的电子邮件,josh@challengage.com,不知怎的被替换为josh@herokuapp.challengage.com当他们收到它的时候。我认为这与邮件传递子系统有关,但我不确定。这似乎只有在给大学专业人士发电子邮件时才会发生

错误消息:

    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.
有什么想法吗


谢谢大家。

这几乎可以肯定,因为您的电子邮件记录使用的是CNAME

虽然大多数电子邮件服务器在发送邮件时会反映原始域,但其他服务器会将其替换为位于CNAME末尾的域

这意味着不发送到
someone@challengage.com
他们发送到
someone@challengage.herokuapp.com

邮件服务器看到要发送到
someone@challengage.herokuapp.com
并决定它不处理challenge.herokuapp.com,因此从它的角度来看,该消息被拒绝

我们曾经在CloudMailin客户中看到过这一问题,并开始建议他们在涉及电子邮件的情况下不要使用CNAMES,只需直接将MX记录添加到Apex域即可


但对于Heroku来说,这会带来一个问题,因为您没有一个IP可以用来访问他们的服务器。我们最终使用Route 53托管我们的域,然后添加一个SSL端点(以获取负载平衡器的详细信息),然后将该负载平衡器添加到Route 53的Alias命令中,以便它总是自动给出正确的结果。或者,您可以在apex域上设置某种基于静态IP的系统进行重定向。

这几乎可以肯定,因为您的电子邮件记录使用的是CNAME

虽然大多数电子邮件服务器在发送邮件时会反映原始域,但其他服务器会将其替换为位于CNAME末尾的域

这意味着不发送到
someone@challengage.com
他们发送到
someone@challengage.herokuapp.com

邮件服务器看到要发送到
someone@challengage.herokuapp.com
并决定它不处理challenge.herokuapp.com,因此从它的角度来看,该消息被拒绝

我们曾经在CloudMailin客户中看到过这一问题,并开始建议他们在涉及电子邮件的情况下不要使用CNAMES,只需直接将MX记录添加到Apex域即可

但对于Heroku来说,这会带来一个问题,因为您没有一个IP可以用来访问他们的服务器。我们最终使用Route 53托管我们的域,然后添加一个SSL端点(以获取负载平衡器的详细信息),然后将该负载平衡器添加到Route 53的Alias命令中,以便它总是自动给出正确的结果。或者,您可以在apex域上设置某种基于静态IP的系统来重定向