Ruby on Rails + Sendmail: configuración

Este tip lo comparto después de tirarme unas horas quebrándome la cabeza.

En primer lugar, os pongo en situación. Necesitaba enviar mails con mi dominio @midominio.com desde un server en Francia(OVH). En mi proyecto local para pruebas utilizaba una cuenta de Gmail para enviar los mails. Pero en un servidor real y posteriormente para producción éste método no me servía. Así que había que configurar el proyecto para que enviarla con Sendmail los mails y no con Gmail.

Lo primero es comprobar si tenemos Sendmail en nuestra máquina, ya sea local o un servidor real.

En consola con

>dpkg –list

os deben aparecer los paquetes instalados sino con Synaptics también los podéis encontrar.

vista de paquetes de Sendmail en consola

Vista de paquetes de Sendmail en consola

Mirando con mucho detenimiento la documentación de Rails en la primera línea del apartado de Action Mailer Configuration encontramos los ficheros del proyecto rails que debemos tocar. Estos son: environment.rb, production.rb, development.rb, test.rb.

Así que si vamos a nuestro árbol de fichero del proyecto a /config/ encontraremos el fichero environment.rb y en /config/environment/, development.rb, production.rb y test.rb.

config.action_mailer.delivery_method = :sendmail
# Defaults to:
# config.action_mailer.sendmail_settings = {
#   location: '/usr/sbin/sendmail',
#   arguments: '-i -t'
# }
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default_options = {from: 'ruby_on_rails_info@protoinformatico.com'}

Sin necesidad de más y si vuestros mailers están adecuadamente implementados, vuestra aplicación debe poder enviar correos electrónicos.

Dicho está demás que ActionMailer no funcionaría sin esto. No importa la gema(por ejemplo, Devise) que haya por encima que siempre usará ActionMailer y éste necesita de esta configuración para funcionar.

Gracias y que tengáis un buen día!