Requisitos
Contraseña de aplicación de tu cuenta de Gmail
Referencia: https://support.google.com/accounts/answer/185833?hl=es-419
Para conseguir tu contraseña de aplicación debes realizar el siguiente paso a paso,
- Ve a tu Cuenta de Google.
- En el panel de navegación izquierdo, haz clic en Seguridad.
- En el panel Acceso a Google, haz clic en Contraseñas de la aplicación.
Nota: Si no puedes acceder a la página, la verificación en dos pasos:
No está configurada en tu cuenta
Está configurada para usarla solo con llaves de seguridad - En la parte inferior, haz clic en la opción para seleccionar una app y, luego, selecciona la app que estás utilizando.
- Haz clic en Seleccionar dispositivo y elige el dispositivo que usas.
- Haz clic en Generar.
- Sigue las instrucciones para ingresar la Contraseña de la aplicación (el código de 16 caracteres en la barra amarilla) en el dispositivo.
- Haz clic en Listo.
Una vez que hayas terminado, no volverás a ver el código de la Contraseña de la aplicación. No obstante, verás una lista de las apps y los dispositivos para los que generaste las Contraseñas de la aplicación.
Nota: Es posible que no puedas crear una Contraseña de la aplicación para apps menos seguras. Obtén más información sobre cómo permitir el acceso a apps menos seguras.
Dependencias del sistema
CentOS 7
Paquetes
postfix
cyrus-sasl-plain
mailx
Archivos de configuración
configura_correo.sh
Contiene un script para automatizar el proceso de instalación de paquetes y configuración del servicio
Para finalizar la personalización de este script, debes abrirlo en un editor de texto y reemplazar la información indicada entre paréntesis.
*Importante: Este script aún no ha sido probado.
postfix_access.txt
Contiene las credenciales de acceso para la cuenta de Gmail que se encargará de enviar los correos.
Para que el script funcione debes de haber personalizado este archivo con las credenciales que quieres utilizar,
postfix_conf.txt
Contiene los parámetros necesarios que necesita Postfix para operar con Gmail.
Nota:
No olvidar que para que las tareas cron de por sí NO envíen un correo. Se debe agregar al final de la instrucción >/dev/null 2>&1
Ej.
*/5 8-17 * * 1-5 /home/usuario/script.sh >/dev/null 2>&1
*Todos estos archivos están provistos aquí,
https://www.juane.cl/wp-content/uploads/2019/02/conf.zip
Paso a paso
Este paso a paso es una traducción del instructivo encontrado acá,
https://devops.profitbricks.com/tutorials/configure-a-postfix-relay-through-gmail-on-centos-7/
Instalar paquetes
Asegúrate que Postfix, el framework de autenticación SASL y mailx esté instalados.
yum -y install postfix cyrus-sasl-plain mailx
Será necesario reiniciar el servicio de Postfix para que SASL sea detectado.
systemctl restart postfix
Postfix también debe activarse el servicio en el inicio.
systemctl enable postfix
Configurar Postfix
Abre /etc/postfix/main.cf, en tu editor de texto de preferencia, y añade las siguientes lineas al final del archivo.
myhostname = www.dominio.com
myorigin = dominio.com
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
Guarda los cambios y cierra del editor.
Configura las credenciales SASL para Postfix
Las credenciales de autenticación deben ser ingresadas ahora. Crea el archivo /etc/postfix/sasl_passwd y agrega la siguiente línea:
[smtp.gmail.com]:587 correo:contraseña
El correo y contraseña deben ser reemplazados con las credenciales de Gmail. Luego guarda los cambios y cierra el editor.
Se debe generar la tabla de revisión de Postfix a partir del archivo sasl_passwd recién guardado ejecutando el siguiente comando:
postmap /etc/postfix/sasl_passwd
Como medida de seguridad el archivo sasl_passwd debe estar restringido, para ello se debe ejecutar el siguiente par de comandos,
chown root:postfix /etc/postfix/sasl_passwd*
chmod 640 /etc/postfix/sasl_passwd*
Finalmente hay que recargar el servicio de Postfix
systemctl reload postfix
Probar el Relay
Usa el comando mail para probar el envío de correos.
echo “Escribe un mensaje” | mail -s “Escribe un asunto” [email protected]
Revisar si el destinatario recibió el mensaje. De no haberlo hecho, revisa las instrucciones de troubleshooting.
Comprobar errores de envío
El historial de envíos puede ser consultado y puede ser de gran utilidad para determinar la razón en el caso que un correo no haya sido enviado. Abre en una ventana nueva de consola y ejecuta el siguiente comando,
tail -f /var/log/maillog
En esa ventana verás en tiempo real el resultado de tus pruebas en la medida que las vaya ejecutando.
En caso de querer controlar la cantidad de líneas que este log muestra puedes añadir -n seguido de un número de líneas.
Ej.
tail -f -n100 /var/log/maillog
Asimismo, si además quieres que el proceso se ejecute en segundo plano puedes agregar un & al final del comando.
Ej.
tail -f -n100 /var/log/maillog&
Para cerrarlo deberás trazar el pid (ps -fea | grep tail) del proceso para luego aplicar un kill (pid)
Si los detalles entregados por el log, no son suficientes, puedes agregar las siguientes líneas a /etc/postfix/main.cf
debug_peer_list=smtp.gmail.com
debug_peer_level=3
Para que estos cambios realizados sobre el archivo main.cf surtan efecto, el servicio de Postfix debe ser recargado con el siguiente comando,
systemctl reload postfix
Recuerda eliminar la configuración de depuración cuando hayas resuelto el problema. Ampliar el detalle del log, puede tener un impacto negativo en la performance del servidor, sobre todo en ambiente de producción.