Errno :: ECONNREFUSED: Conexión rechazada – connect (2) for action mailer

Llevo mucho tiempo trabajando con Rails. Ahora estoy enfrentando un pequeño problema en el ActionMailer. Quiero enviar un correo electrónico cuando el usuario se registra para confirmar su registro. Puedo enviar correos electrónicos en el modo de desarrollo pero donde no estoy en el modo de producción.
la excepción Errno :: ECONNREFUSED: Conexión rechazada: connect (2) se produce cada vez que se llama al método de entrega .
He escrito el siguiente código.
Mi configuración SMTP se ve:
config.action_mailer.default_url_options = {: host => “localhost: 3000”}

config.action_mailer.delivery_method = :smtp config.action_mailer.perform_deliveries = true config.action_mailer.raise_delivery_errors = true config.action_mailer.smtp_settings = { :openssl_verify_mode => OpenSSL::SSL::VERIFY_NONE, :ssl => true, :enable_starttls_auto => true, #this is the important stuff! :address => 'smtp.xxxx.xxx', :port => xxx, :domain => 'xxxxxx', :authentication => :plain, :user_name => 'xxxxxxx@xxx.xxx', :password => 'xxxxxxxxx' } 

En el controlador, he escrito lo siguiente:

 def confirm_registration_in_c @user = User.find_by_email(asdf123@gmail.com) if @user UserMailer.confirm_registration(@user).deliver end end 

En mi user_mailer.rb:

 class UserMailer  email, :subject => "Reset your password") end end 

Puedo enviar un correo electrónico en el modo de desarrollo en mi host local, pero no puedo enviar el correo electrónico en el servidor dedicado.
puede alguien ayudarme por favor?

En mi situación, encontré problemas similares cuando intentaba realizar un tutorial de la aplicación Rails de envío por correo electrónico, los registros de Heroku me decían que

......

Errno::ECONNREFUSED (Connection refused - connect(2) for "localhost" port 25):

......

Después de comparar mi código con el código del autor, tuve que descubrir que no había configurado mis configuraciones de ActionMailer en el archivo config / environment / production.rb .

Luego me di cuenta de que acababa de configurar mi configuración / environment / development.rb para enviar correos electrónicos, pero no lo había hecho para mi configuración / environment / production.rb .

Por lo tanto, puede verificarlo cuando el comportamiento de su aplicación difiera entre desarrollo y producción.

Asegúrese de haber configurado su puerto correctamente. Cambié de gmail en desarrollo (puerto 587) al envío desde mi servidor local en producción y recibí este error hasta que corregí el puerto al que usa mi servidor (puerto 25).

para producción no puedes escribir

 config.action_mailer.default_url_options = { :host => "localhost:3000" } 

añadir url de producción para el host, como,

 config.action_mailer.default_url_options = { :host => "http://www.yourdomain.com" } 

Mi problema no es idéntico a esta pregunta, pero creo que muchos encontrarían este hilo a través de google.

Si usa un servicio SMTP externo como sendgrid y ha configurado ActionMailer de manera acorde, aún así sigue dando este error:

Errno :: ECONNREFUSED: Conexión rechazada – conecte (2) para el puerto 25 “localhost”

Puede pasar un hash de configuración con la clave de cadena, que se ignoran. ¡Las llaves deben ser símbolos !

Esto puede suceder si no está serializado, lo que hice fue asegurar que las claves son símbolos:

 config.action_mailer.smtp_settings = get_smtp_setting.symbolize_keys 

Acabo de localizar un problema similar al intentar implementar WordPress con Capistrano.

cap aborted! Errno::ECONNREFUSED: Connection refused - connect(2) for "{my-ip-address}" port {my-ssh-port}

También obtendría este error similar:

Tasks: TOP => git:create_release (See full trace by running task with --trace) The deploy has failed with an error: #

Resulta que fue un problema con sesiones SSH simultáneas, ya que mi servidor ejecuta Fail2Ban. Para resolver eso simplemente hice lo siguiente:

  1. Edita la cárcel que contiene configuraciones SSH

    $ sudo nano /etc/fail2ban/jail.local

  2. buscar [SSH] y establecer habilitado = falso

  3. luego encuentra [ssh-ddos] y establece enabled = false

  4. Recuerda reiniciar Fail2Ban después de tus cambios y abrir ssh (si eso es lo que estás usando)

$ sudo service fail2ban reload

$ sudo /etc/init.d/ssh reload

Vale la pena señalar que la conexión se rechazará en diferentes pasos (tareas) en la implementación. Por ejemplo, después de un reinicio y un bundle exec cap production deploy:check rápido de la bundle exec cap production deploy:check un bundle exec cap production deploy:check todo parece estar bien. Luego intenté desplegar y recibí el mismo error, pero durante la ejecución de una tarea diferente. También uso UFW que deshabilité y volví a habilitar sin problemas. UFW no fue la causa del problema anterior.

Tuve un problema similar después de que resolví esto. Fue un problema con los permisos de directorio current . Eso está por aquí.

Hay otra razón para este error:

 Errno::ECONNREFUSED: Connection refused - connect(2) for "localhost" port 25 

Debe consultarse el servicio SENDMAIL en su servidor:

  • ¿SENDMAIL está instalado?
  • ¿Se está ejecutando SENDMAIL?

Tuve este error debido a la detención de SENDMAIL.

¡Buena suerte!