Si bien es posible enviar correos desde una consola, el verdadero potencial está en permitir que OpenWRT envíe correos desde un script cuando tenga lugar un determinado evento (final de una copia, poco espacio en disco, ...)
Visión global del proceso:
- Generamos un mensaje en el router (desde consola o desde script).
- El mensaje es procesado por un cliente de correo llamado sendmail (que tenemos que instalar en el router) y que se encarga de enviarlo al un servidor de correos externo (por ejemplo, a gmail). Es necesario tener una cuenta en el servidor (por ejemplo, USUARIO@gmail.com).
- Finalmente, el servidor (smtp.gmail.com) manda el mensaje al destinatario (por ejemplo, DESTINATARIO@CORREO.COM).
Ahora vamos a la parte práctica:
1. Instalación de sendmail. En la consola de OpenWRT teclear
opkg update
opkg install msmtp
2. Editar el fichero /etc/msmtprc y dejarlo con el siguiente contenido (sustituir USUARIO y CONTRASEÑA por unos válidos)
account default
host smtp.gmail.com
port 587
auth on
user USUARIO@gmail.com
password CONTRASEÑA
auto_from off
from USUARIO@gmail.com
tls on
tls_starttls on
tls_certcheck off
logfile
syslog LOG_MAIL
3. Ya podemos enviar mensajes desde el router, bien usando la consola, bien usando un script. En los ejemplos de abajo, el mensaje es emitido por USUARIO@gmail.com para DESTINATARIO@CORREO.COM.
a) envío desde consola
echo -e "Subject: Correo de prueba\r\n\r\nEsto es un email de prueba" | sendmail DESTINATARIO@CORREO.COM
b) envío desde script
Crear un fichero con el siguiente contenido (las únicas líneas imprescindibles son la primera y las cuatro últimas. Las demás son comentarios y se pueden borrar):
#!/bin/sh
# 23/11/2013 by raphik
# Este script envía mensajes de correo electrónico utilizando el comando sendmail
# El comando sendmail se instala al instalar el paquete msmtp
# El correo se envía desde una cuenta definida en el fichero de configuración /etc/msmtprc
#
# INSTRUCCIONES:
# - nombrar a este fichero como correo.sh
# - copiar este fichero en la carpeta /root del router
# - convertirlo en ejecutable mediante el comando chmod +x /root/correo.sh
# - ejecutar el script desde una consola /root/./correo.sh
#
# Para personalizar el script cambiar los valores de las variables ASUNTO, TEXTO y PARA
#
ASUNTO="Correo de prueba"
TEXTO="Este correo ha sido enviado por un script desde mi router OpenWRT"
PARA="DESTINATARIO@CORREO.COM"
echo -e "Subject: $ASUNTO\r\n\r\n$TEXTO" | sendmail $PARA
4. Si no funciona, comprobar que la cuenta de gmail tiene el reenvío IMAP habilitado:
- Iniciar sesión en gmail
- Clic en la ruedecita dentada de arriba a la derecha
- Clic en "Reenvío y correo POP/IMAP"
- En la sección "Acceso IMAP", seleccionar "Habilitar IMAP"
- Pulsar el botón "Guardar cambios".
Y eso NO es todo. También es posible el envío de ficheros adjuntos.
5. Instalar mutt
opkg update
opkg install mutt
Enviar correo con el comando mutt
echo "¡Contiene fichero adjunto!" | mutt -a "/ruta/al/fichero.adjunto" -s "Correo de prueba" -- DESTINATARIO@CORREO.COM
Para su correcta configuración, leer más abajo la aportación de peperfus.
NOTA: Mutt no está disponible para la CC 15.05. No obsante, los paquetes de la BB 14.07 continúan funcionando en la CC 15.05. (@peperfus: Gracias por probar que funciona y reportarlo.)
opkg update
opkg install http://downloads.openwrt.org/barrier_breaker/14.07/brcm63xx/generic/packages/oldpackages/mutt_1.5.21-1_brcm63xx.ipk
Esto sería, por ejemplo, para un HG553. Para otros routers habría que descargar el paquete que le corresponda.