Enviar correo al acceder al servidor

Aviso al acceder al servidor

¿Cuantas veces necesitamos que nos llegue un mensaje o aviso cada vez que alguien se autentifica como un usuario en particular en un servidor Linux?

Ya sea con el usuario ‘root’, o con cualquier otro, podemos configurar el sistema para que nos envíe un correo de forma totalmente automática, de esta forma cada vez que el usuario se autentifique recibirás un correo electrónico con la alerta.

Instalar soporte para el envío de correos

El primer paso es instalar el programa ‘msmtp’ que será el encargado de enviar los correos.

Para ello instalaremos los siguientes paquetes:

  • msmtp: Nos proporciona el cliente SMTP que será el encargado de enviar correos electrónicos desde la línea de comandos. Es el elemento principal que necesitamos para configurar el envío de correos.
  • msmtp-mta: Contiene utilidades adicionales relacionadas con el transporte de correo. Aunque no es estrictamente necesario, puede sernos útil para ciertas configuraciones avanzadas o para interactuar con otros componentes del sistema de correo.
  • mailutils: Nos proporciona herramientas para enviar y recibir correos electrónicos. Incluye el comando mail, que nos permite enviar correos desde la línea de comandos.
sudo apt install msmtp msmtp-mta mailutils

Configurar el envío de correos

Tenemos que crear un archivo llamado .msmtprc, el cual puede estar en dos ubicaciones diferentes según nuestras necesidades.

  1. Directorio de usuario. Si ponemos el fichero de configuración en esta ubicación solo podrá usar el servicio de correo electrónico este usuario. Este es el sistema que yo prefiero, al menos en este caso.
  2. Directorio /etc/. Al ubicar el archivo de configuración aquí, cualquier usuario del sistema podrá hacer uso de la configuración reflejada aquí.

Las opciones que podemos configurar son bastantes pero aquí voy a reflejar las mínimas necesarias para que el sistema funcione correctamente.

Para que msmtp funcione correctamente con TLS (Transport Layer Security), será necesario que el cliente confíe en los certificados del servidor de correo. Esto se suele gestionar a través de un archivo de certificados de autoridades de certificación (CA), que debe estar en: /etc/ssl/certs/ca-certificates.crt.

Este archivo contiene certificados de confianza de las CA y es utilizado para validar el certificado del servidor SMTP al establecer una conexión segura.

Por tanto, tendremos que asegurarnos que lo tenemos:

ls /etc/ssl/certs/ca-certificates.crt

Si el archivo no existe tenemos que instalar el paquete ca-certificates:

sudo apt install ca-certificates

Creamos el archivo .msmtprc:

sudo nano ~/.msmtprc

y añadimos el siguiente contenido:

defaults
auth           on
tls            on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile        ~/.msmtp.log

account default
host           smtp.tuservidor.com
port           587
from           tu@correo.com
user           tu@correo.com
password       tu-contraseña-SMTP

Recuerda que tienes que poner tu host, from, user y password de tu sistema de envíode correos.

Yo suelo usar un sistema de correos ajeno al propio servidor aunque tenga instalado el mismo dominio, para ello en mi registrador configuro las DNS en función del servicio que esté usando: ‘A’, ‘MX, ‘FTP’, etc.

Con esta configuración ya podemos probar si todo funciona correctamente con la siguiente instrucción:

echo -e "Asunto: Test\n\nEste es un correo de prueba desde la terminal." | msmtp -a default destino@dominio.com

Cada correo que se envíe creará un registro en el archivo ‘log’ declarado en el archivo de configuración:

logfile        ~/.msmtp.log

Por tanto podremos ver las últimas entradas con:

tail ~/.msmtp.log

Crear el script para enviar correos

Crearemos un archivo .sh con el siguiente contenido que se puede variar en función de la información que quieras recibir.

sudo nano enviar_mail.sh
#!/bin/bash
# -*- ENCODING: UTF-8 -*-

FECHA=$(date)
QUIEN=$(whoami)
IP=$(who | cut -d'(' -f2 | cut -d')' -f1)

# Variables de correo electrónico
EMAIL_FROM="origen@correo.com"
EMAIL_TO="destino@correo.com"
EMAIL_SUBJECT="Alerta: Acceso a Servidor"
EMAIL_BODY="Se ha accedido al servidor con el usuario $QUIEN el $FECHA desde la IP $IP"

# Función para enviar el correo electrónico usando msmtp
enviar_correo() {
    {
        echo "Subject: $EMAIL_SUBJECT"
        echo "From: Nombre <$EMAIL_FROM>"
        echo "To: $EMAIL_TO"
        echo
        echo "$EMAIL_BODY"
    } | msmtp --debug --from=$EMAIL_FROM -t $EMAIL_TO
}

enviar_correo
  • En la variable ‘FECHA‘ almacenamos el día y la hora en la que se accede al servidor.
  • En la variable ‘QUIEN‘ almacenamos el nombre del usuario autentificado.
  • En la variable ‘IP‘ almacenamos la IP desde donde se ha accedido.

Después creamos una función que será la encargada de preparar, formatear y enviar el correo electrónico.

La última línea únicamente se encarga de llamar a la función.

El siguiente paso es dar permisos de ejecución al script:

chmod +x enviar_mail.sh

Y, por último, editamos el archivo de configuración de usuario para llamar al script.

sudo nano .bashrc

Y al final del archivo añadimos:

.
.
.
/home/usuario/mail_acceso.sh > /dev/null      # Recuerda cambiar tu usuario

Para probar que todo funciona correctamente solo tienes que cerrar la sesión y volver a entrar o recargar el fichero de configuración de usuario:

source ~/.bashrc

Revisa el correo porque ya tienes uno esperándote en la bandeja de entrada.

Sobre mi

Trabajo en el desarrollo de webs profesionales desde hace más de 25 años.
También me dedico a mis proyectos personales.

Últimas notas publicadas

Categorías

Scroll al inicio