Rails Mailer “Net::OpenTimeout: l'exécution est expiré Exception sur le serveur de production seulement

Je suis en Ruby en utilisant l'IRM 2.0.0 et les Rails 3.2.12 sur une Ubuntu 12.04 TLS VPS et de tenter de régler les notifications d'emails dans mon application. Ça marchait très bien il y a quelques jours, mais pas plus. Mon hébergeur est OVH.

Mes paramètres SMTP:

config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true

ActionMailer::Base.smtp_settings = {
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :user_name            => '[email protected]',
  :password             => 'secret',
  :authentication       => 'plain',
  :enable_starttls_auto => true
}

À l'aide de RAILS_ENV=production rails console:

class MyMailer < ActionMailer::Base
  def test_email
    sender     = "[email protected]"
    receiver   = "[email protected]"
    mail from: sender, to: receiver, subject: "Hello!", body: "World!!"
  end
end
 => nil

MyMailer.test_email.deliver

La sortie:

Net::OpenTimeout: execution expired
from ~/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/smtp.rb:540:in `initialize'
from ~/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/smtp.rb:540:in `open'
from ~/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/smtp.rb:540:in `tcp_socket'
from ~/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/smtp.rb:550:in `block in do_start'
from ~/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/smtp.rb:549:in `do_start'
from ~/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/smtp.rb:519:in `start'
from ~/.rvm/gems/ruby-2.0.0-p0@mygemset/gems/mail-2.4.4/lib/mail/network/delivery_methods/smtp.rb:144:in `deliver!'
from ~/.rvm/gems/ruby-2.0.0-p0@mygemset/gems/mail-2.4.4/lib/mail/message.rb:2034:in `do_delivery'
from ~/.rvm/gems/ruby-2.0.0-p0@mygemset/gems/mail-2.4.4/lib/mail/message.rb:229:in `block in deliver'
from ~/.rvm/gems/ruby-2.0.0-p0@mygemset/gems/actionmailer-3.2.12/lib/action_mailer/base.rb:415:in `block in deliver_mail'
from ~/.rvm/gems/ruby-2.0.0-p0@mygemset/gems/activesupport-3.2.12/lib/active_support/notifications.rb:123:in `block in instrument'
from ~/.rvm/gems/ruby-2.0.0-p0@mygemset/gems/activesupport-3.2.12/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
from ~/.rvm/gems/ruby-2.0.0-p0@mygemset/gems/activesupport-3.2.12/lib/active_support/notifications.rb:123:in `instrument'
from ~/.rvm/gems/ruby-2.0.0-p0@mygemset/gems/actionmailer-3.2.12/lib/action_mailer/base.rb:413:in `deliver_mail'
from ~/.rvm/gems/ruby-2.0.0-p0@mygemset/gems/mail-2.4.4/lib/mail/message.rb:229:in `deliver'
from (irb):28
from ~/.rvm/gems/ruby-2.0.0-p0@mygemset/gems/railties-3.2.12/lib/rails/commands/console.rb:47:in `start'
from ~/.rvm/gems/ruby-2.0.0-p0@mygemset/gems/railties-3.2.12/lib/rails/commands/console.rb:8:in `start'
from ~/.rvm/gems/ruby-2.0.0-p0@mygemset/gems/railties-3.2.12/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'2.0.0p0 :029 >

J'ai essayé le suivant:

  • La exception_notification gem a été ajouté à l'installation il y a quelques jours. J'ai essayé de commenter sa ligne dans Gemfile ainsi que sa configuration correspondante, et d'exécuter bundle install. Après le redémarrage du serveur, le problème est toujours présent, même si je l'ai supprimer et recréer l'sertie.
  • Le tester sur une machine virtuelle (exactement la même configuration que le VPS, y compris des règles iptables): œuvres
  • Désactiver des règles iptables: ne fonctionne pas
  • Se connecter manuellement à Gmail à partir de la VPS utilisant openssl: œuvres (ce n'est donc pas un problème de firewall - voir ici: La connexion à smtp.gmail.com via la ligne de commande);
  • Activer IMAP dans Gmail les options de compte (s'il a été désactivé): ne fonctionne pas
  • Utiliser un autre compte Gmail: ne fonctionne pas
  • Remplacer Ruby 2.0.0 par Ruby 1.9.3
  • De mise à niveau pour les Rails 3.2.13

Quelqu'un d'avoir la moindre idée de comment résoudre ce problème?

Merci!

  • Voici une autre manifestation: exécution expiré /ree-187/lib/ruby/1.8/timeout.rb:64:dans open' .../vendor/plugins/action_mailer_optional_tls/lib/smtp_tls.rb:40:in do_tls_start' /.../vendor/plugins/action_mailer_optional_tls/lib/smtp_tls.rb:40:dans "le do_tls_start'...
InformationsquelleAutor mavenastic | 2013-04-16