Configurar envío de emails con PHP, GMail y msmtp en Ubuntu

Msmtp es un agente de transferencia de correo electrónico que corre sobre el shell, se encuentra disponible en los repositorios de debian/ubuntu, para instalarlo usamos el famoso

apt-get install msmtp

Una vez instalado tenemos que configurarlo, hay dos formas de hacerlo una es encriptando la contraseña de la cuenta de gmail y otra es usandola en texto plano en el archivo de configuración

nano ~/.msmtprc #crea el archivo de configuración

Configuración encriptando la contraseña de la cuenta y usando una pashprhase:

# Provider configuration
defaults
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log

# Account configuration
account default
host smtp.gmail.com
port 587
auth on
from tucorreo@gmail.com
user tucorreo@gmail.com
passwordeval gpg -d ~/.msmtp.password.gpg

Se especifica que la contraseña esta guardada en otro archivo (msmtp.password.gpg), para crear ese archivo usamos:

nano ~/.msmtp.password #guardamos la contraseña aquí en texto plano
gpg -c ~/.msmtp.password #y después la encriptamos, este comando nos pedira una clave que usaremos posteriormente para enviar los emails
rm ~/.msmtp.password #al final, borramos el archivo con la clave en texto plano

Ahora, para enviar el correo escribimos en la consola:

msmtp paraalguien@eldominio.com #esto inicia el msmtp y tendremos que introducir la clave que definimos anteriormente
#posteriormente escribimos los atributos del correo y para enviarlo usamos un EOF con dos CTR+D seguidos
To: paraalguien@eldominio.com
Subject: El título del correo.

Cuerpo, blah blah.
EOF

Con esto, ya se tendria que haber enviado el correo.

Configuración con contraseña en texto plano

Esta configuración es más sencilla y requiere menos pasos, una vez creado el archivo .msmtprc escribimos en el lo siguiente:

# Provider configuration
defaults
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log

# Account configuration
account default
host smtp.gmail.com
port 587
auth on
from tucorreo@gmail.com
user tucorreo@gmail.com
password contraseñaentextoplano

Ahora, tenemos que informarle a PHP que use el programa msmtp para enviar los correos cuando se use el comando mail(), es importante que le demos permisos de lectura a www-data que es quien enviará los correos desde php, de lo contrario no se podrán enviar los correos electrónicos

chown www-data .msmtprc #hacemos que el propietario del archivo sea www-data
chmod 600 .msmtprc #y le damos permisos de solo lectura

Lo siguiente es configurar el php.ini

vim /etc/php5/apache2/php.ini

y cambiamos la configuración de sendmail_path dentro de php.ini:

sendmail_path = "/usr/bin/msmtp -C /path/to/.msmtprc -t"

Despues de reiniciar apache ya tendremos funcionando el comando mail(); en php, para probarlo:

<?
mail("your@email.com", "Test email from PHP", "If you can read this...");
?>

Via:

http://cjenkins.wordpress.com/2012/07/10/configurar-msmtp-para-enviar-correos-desde-la-terminal/
http://weaselburrow.blogspot.mx/2009/02/sending-mail-with-php-using-msmtp.html
https://wiki.archlinux.org/index.php/Msmtp
http://msmtp.sourceforge.net/doc/msmtp.html#Configuration-files

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s