AWS上的Rails应用程序Elasticbeanstalk邮件发送失败,ESMTP没有允许来自IP的中继访问

时间:2014-10-24 18:09:24

标签: ruby-on-rails-3 amazon-web-services actionmailer elastic-beanstalk

我有一个已部署到AWS Elastic Beanstalk的rails应用程序。该应用程序使用设计来处理用户身份验证,其设置为能够邀请用户。 我的问题是,当我尝试邀请用户时,我收到以下错误:

Net::SMTPFatalError (554 secureserver.net ESMTP No Relay Access Allowed From <my_eb_assigned_ip>

(我在GoDaddy上托管域名。)

在开发中,邮件程序功能正常;我的smtp设置设置为(所有环境都通用):

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
    :address => "smtpout.secureserver.net",
    :port => 80,
    :domain => "www.my_domain.com",
    :authentication => :plain,
    :user_name => "do-not-reply@my_domain.com",
    :password => my_pass,
}

在我的production.rb配置文件中:

config.action_mailer.default_url_options = { :host => 'aws_sb.elasticbeanstalk.com' }

我是否需要在Elasticbeanstalk中启用另一个允许中继访问的设置?或者我错过了我的rails配置中的生产特定设置?

1 个答案:

答案 0 :(得分:0)

我发现这是我设置的端口值....当我将端口切换到25时,它在生产中工作。但是,为了开发,25号港口没有工作;当端口为80时,它只能在dev中工作。

所以我最终将整个smtp邮件程序设置移动到特定于环境的设置(来自config / environment.rb文件),并将生产端口设置为25,将开发端口设置为80,这似乎使两者都成为环境工作。

编辑:经过另一次推送,我看到了同样的问题,我尝试过的端口都没有解决问题。所以我最终将所有邮件功能都转换为通过Amazon SES发送,到目前为止看起来效果很好。