Veremos cómo configurar Exim4 para enviar correos electrónicos del sistema con Gmail. Esto garantizará que tus correos enviados con tu CRON sean correctamente encaminados y no terminen en spam.
Instalemos Exim4
apt-get install exim4
Configuración
dpkg-reconfigure exim4-config
Elige: correo enviado por intermediario (smarthost); sin correo local
Luego responde las preguntas de la siguiente manera:
System mail name: YOUR_HOSTNAME
IP-addresses to listen on for incoming SMTP connections: 127.0.0.1 ; ::1
Other destinations for which mail is accepted: <BLANK>
Visible domain name for local users: <BLANK>
IP address or host name of the outgoing smarthost: smtp.gmail.com::587
Keep number of DNS-queries minimal (Dial-on-Demand)? No
Split configuration into small files? No
Root and postmaster mail recipient: <BLANK>
Abre y edita el archivo: /etc/exim4/exim4.conf.template
Busca:
.ifdef DCconfig_smarthost DCconfig_satellite
Y añade estas líneas justo después:
send_via_gmail:
driver = manualroute
domains = ! +local_domains
transport = gmail_smtp
route_list = * smtp.gmail.com
Elimina todos los demás bloques de intermediario (smarthost) que contengan:
domains = ! +local_domains
Coméntalos con un # al principio de la línea
Busca los autenticadores con la ocurrencia:
begin authenticators
Y añade estas líneas:
gmail_login:
driver = plaintext
public_name = LOGIN
client_send = : VOTRE_EMAIL@gmail.com : VOTRE_PASS_GMAIL
Elimina todos los demás bloques que contengan:
public_name = LOGIN
También puedes simplemente renombrarlos así:
login:
driver = plaintext
public_name = LOGIN_BACK
Esto evita tener un conflicto de nombres.
Luego busca:
transport/30_exim4-config_remote_smtp_smarthost
Y añade estas líneas:
gmail_smtp:
driver = smtp
port = 587
hosts_require_auth = $host_address
hosts_require_tls = $host_address
Cierra y guarda tu archivo de configuración: /etc/exim4/exim4.conf.template
Recargamos el archivo de configuración:
update-exim4.conf
Y reiniciamos el servicio:
/etc/init.d/exim4 restart
Podemos probar nuestro envío de correos:
echo 'Test' | mail -s 'Message test' VOTRE_EMAIL@ADDRESSE
Validar el transporte sin exponer las credenciales
Los mecanismos de autenticación de los proveedores de correo electrónico están evolucionando. Almacene los secretos fuera del repositorio, utilice una cuenta técnica con derechos mínimos y pruebe primero el envío a una dirección controlada.
- Verifique la encriptación TLS, el puerto y el método de autenticación esperados por el proveedor.
- Controle los registros de la aplicación y la cola, sin mostrar ninguna contraseña.
- Para Google, privilegie « Iniciar sesión con Google »; una contraseña de aplicación requiere la validación en dos pasos y debe poder ser revocada.
Referencia: documentación de Google sobre las contraseñas de aplicación.