Rails не отправляет электронные письма на AWS

Я пытаюсь отправить электронные письма с подтверждением из моего приложения Rails. В моей среде разработки он отлично работает (в Ubuntu). Однако, когда я пытаюсь отправить электронные письма в своем экземпляре Amazon AWS EC2, это не работает. Я получаю следующий журнал ошибок:

BookingRequestEvent.execute
{ 38227580 rufus-scheduler intercepted an error:
  38227580   job:
  38227580     Rufus::Scheduler::EveryJob "60s" {}
  38227580   error:
  38227580     38227580
  38227580     Errno::ECONNREFUSED
  38227580     Connection refused - connect(2)
  38227580       /home/ubuntu/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/smtp.rb:541:in `initialize'
  38227580       /home/ubuntu/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/smtp.rb:541:in `open'
  38227580       /home/ubuntu/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/smtp.rb:541:in `tcp_socket'
  38227580       /home/ubuntu/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/smtp.rb:551:in `block in do_start'
  38227580       /home/ubuntu/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/timeout.rb:66:in `timeout'
  38227580       /home/ubuntu/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/smtp.rb:550:in `do_start'
  38227580       /home/ubuntu/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/smtp.rb:520:in `start'
  38227580       /home/ubuntu/.rvm/gems/ruby-2.0.0-p451/gems/mail-2.5.4/lib/mail/network/delivery_methods/smtp.rb:112:in `deliver!'
  38227580       /home/ubuntu/.rvm/gems/ruby-2.0.0-p451/gems/mail-2.5.4/lib/mail/message.rb:2129:in `do_delivery'
  38227580       /home/ubuntu/.rvm/gems/ruby-2.0.0-p451/gems/mail-2.5.4/lib/mail/message.rb:232:in `block in deliver'
  38227580       /home/ubuntu/.rvm/gems/ruby-2.0.0-p451/gems/actionmailer-4.0.0/lib/action_mailer/base.rb:456:in `block in deliver_mail'
  38227580       /home/ubuntu/.rvm/gems/ruby-2.0.0-p451/gems/activesupport-4.0.0/lib/active_support/notifications.rb:159:in `block in instrument'
  38227580       /home/ubuntu/.rvm/gems/ruby-2.0.0-p451/gems/activesupport-4.0.0/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  38227580       /home/ubuntu/.rvm/gems/ruby-2.0.0-p451/gems/activesupport-4.0.0/lib/active_support/notifications.rb:159:in `instrument'
  38227580       /home/ubuntu/.rvm/gems/ruby-2.0.0-p451/gems/actionmailer-4.0.0/lib/action_mailer/base.rb:454:in `deliver_mail'
  38227580       /home/ubuntu/.rvm/gems/ruby-2.0.0-p451/gems/mail-2.5.4/lib/mail/message.rb:232:in `deliver'
  38227580       /home/ubuntu/apps/yanpyapi/app/models/notification_manager.rb:6:in `notify'
  38227580       /home/ubuntu/apps/yanpyapi/app/models/events/booking_request_event.rb:22:in `execute'
  38227580       /home/ubuntu/apps/yanpyapi/app/models/secretary.rb:85:in `block in executeEvents'
  38227580       /home/ubuntu/apps/yanpyapi/app/models/secretary.rb:20:in `each'
  38227580       /home/ubuntu/apps/yanpyapi/app/models/secretary.rb:20:in `executeEvents'
  38227580       /home/ubuntu/apps/yanpyapi/config/initializers/task_scheduler.rb:8:in `block in <top (required)>'
  38227580       /home/ubuntu/.rvm/gems/ruby-2.0.0-p451/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:224:in `call'
  38227580       /home/ubuntu/.rvm/gems/ruby-2.0.0-p451/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:224:in `do_trigger'
  38227580       /home/ubuntu/.rvm/gems/ruby-2.0.0-p451/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:269:in `block (3 levels) in start_work_thread'
  38227580       /home/ubuntu/.rvm/gems/ruby-2.0.0-p451/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:272:in `call'
  38227580       /home/ubuntu/.rvm/gems/ruby-2.0.0-p451/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:272:in `block (2 levels) in start_work_thread'
  38227580       /home/ubuntu/.rvm/gems/ruby-2.0.0-p451/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:258:in `loop'
  38227580       /home/ubuntu/.rvm/gems/ruby-2.0.0-p451/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:258:in `block in start_work_thread'
} 38227580 .

Я вижу сообщение об отказе в подключении, думаю, мне следует настроить некоторые учетные данные безопасности или открыть какой-то порт... но я понятия не имею.

ОБНОВЛЕНИЕ

Чтобы предоставить более подробную информацию. Моя служба электронной почты предоставляется Zoho, я настроил несколько учетных записей. Я настроил два набора записей MX в AWS с Route 53. Почта работает, я имею в виду, что я могу отправлять и получать электронную почту из других учетных записей, таких как gmail или hotmail, на мои учетные записи zoho. И, как я уже сказал, служба электронной почты работает с этими учетными записями в разработке (это еще одна убунту).


person Rober    schedule 22.05.2014    source источник
comment
Как вы пытаетесь отправлять электронные письма?   -  person datasage    schedule 22.05.2014
comment
Я не знаю точно, что вы имеете в виду, я использую класс EmailService, который расширяет ActionMailer в Rails. Я не знаю, как это работает за кулисами. Я только знаю, что он отлично работает в моей среде разработки. Я могу опубликовать некоторый код, но я думаю, что это не связано с кодом.   -  person Rober    schedule 22.05.2014
comment
Я предполагаю, что вы не в своей промежуточной среде на ec2? Настроили ли вы параметры почты для не промежуточных сред?   -  person Freddy Wetson    schedule 23.05.2014
comment
Хотя мы на тестировании, это будет производственная среда. Я не настроил ничего, связанного с электронной почтой. Что я должен настроить? Хорошо, я думаю, мне нужно прочитать о SES, верно?   -  person Rober    schedule 23.05.2014
comment
Нет, оба поста @UriAgassi мои, но они дополняют друг друга. Это для ошибок в технических деталях. Второй для понятий.   -  person Rober    schedule 26.05.2014


Ответы (1)


Вы запускаете это приложение из VPC? Если это так, убедитесь, что группа безопасности вашего экземпляра NAT разрешает входящий/исходящий трафик SMTP. Если это классический инстанс EC2, сделайте то же самое в SG вашего инстанса.

person ma.tome    schedule 22.05.2014