Pourquoi tu as besoin de cela#
Quand tu lances un serveur à la maison, tu dois savoir si quelque chose d’étrange se produit. Un script qui t’envoie un email quand il détecte une tentative d’accès échouée, un certificat sur le point d’expirer ou un disque presque plein est inestimable. Le problème est que ton FAI bloque le port 25, donc tu ne peux pas utiliser sendmail directement. C’est là que msmtp intervient.
msmtp est un client SMTP minimaliste. Ce n’est pas un serveur de courrier complet, il envoie juste des emails via des serveurs externes comme Gmail. Parfait pour des cas comme le nôtre.
Installation#
Sur Debian/Ubuntu :
sudo apt-get update
sudo apt-get install msmtp msmtp-mtaL’option msmtp-mta est importante car elle crée un lien symbolique qui fait croire aux autres programmes que tu utilises sendmail traditionnel.
Configuration basique avec Gmail#
Gmail a deux options : mot de passe d’application ou utiliser le protocole SMTP direct. Je vais utiliser un mot de passe d’application parce que c’est plus sûr et ça fonctionne sans activer « applications moins sécurisées ».
D’abord, crée un mot de passe d’application sur ton compte Google :
- Va sur myaccount.google.com
- Sécurité → Mots de passe d’application (tu dois avoir l’authentification à 2 facteurs activée)
- Sélectionne « Courrier » et « Autre (personnalisé) »
- Gmail génère un mot de passe de 16 caractères
Maintenant crée ou édite ~/.msmtprc :
nano ~/.msmtprcAjoute ceci :
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log
account gmail
host smtp.gmail.com
port 587
from tu-email@gmail.com
user tu-email@gmail.com
password tu-contraseña-de-aplicacion
account default : gmailPermissions critiques :
chmod 600 ~/.msmtprcC’est important. Si d’autres utilisateurs peuvent lire le fichier, ils verront ton mot de passe.
Test initial#
Teste que ça fonctionne :
echo "Cuerpo del email" | msmtp tu-email@gmail.com -S from=tu-email@gmail.comVérifie ta boîte de réception. Si tu reçois l’email, c’est fonctionnel.
Utiliser msmtp depuis les scripts de sécurité#
Maintenant intègre cela dans tes alertes. Voici un exemple simple qui surveille les tentatives SSH échouées :
#!/bin/bash
FAILED_ATTEMPTS=$(grep "Failed password" /var/log/auth.log | wc -l)
THRESHOLD=10
if [ $FAILED_ATTEMPTS -gt $THRESHOLD ]; then
{
echo "Asunto: ALERTA - Múltiples intentos de acceso SSH fallidos"
echo ""
echo "Se detectaron $FAILED_ATTEMPTS intentos fallidos en las últimas 24 horas"
echo ""
echo "Últimos intentos:"
grep "Failed password" /var/log/auth.log | tail -5
} | msmtp tu-email@gmail.com
fiEnregistre-le dans /usr/local/bin/check-ssh-alerts.sh et rends-le exécutable :
sudo chmod +x /usr/local/bin/check-ssh-alerts.shAutomatiser avec cron#
Ajoute à crontab pour qu’il s’exécute chaque heure :
sudo crontab -e0 * * * * /usr/local/bin/check-ssh-alerts.shProblèmes courants#
« SMTP Error: 535 » → Mot de passe incorrect. Vérifie que tu as utilisé le mot de passe d’application, pas ton mot de passe Google normal.
« TLS connection refused » → Vérifie que le certificat est dans le bon chemin. Utilise ls /etc/ssl/certs/ca-certificates.crt.
Les emails n’arrivent pas → Vérifie le journal : cat ~/.msmtp.log. Gmail refuse parfois si il détecte une activité suspecte.
Sécurité supplémentaire#
Si le serveur s’exécute avec un utilisateur ordinaire mais que les scripts doivent s’exécuter en tant que root, considère :
sudo visudoEt ajoute :
nobody ALL=(ALL) NOPASSWD: /usr/local/bin/check-ssh-alerts.shAinsi tu exécutes le script sans demander de mot de passe dans cron.
Conclusion#
Avec msmtp tu as des alertes de sécurité automatiques en minutes, sans les complications de monter un serveur SMTP complet. Je l’utilise sur mon serveur domestique pour surveiller les modifications dans iptables, les certificats expirés et les pics de charge. Dormant tranquille en sachant que quelque chose m’avertira s’il y a un problème.
Équipement recommandé#
- Raspberry Pi 3 B+ — Serveur léger à faible consommation pour commencer ton homelab
- Mini PC Intel N100 — Mini PC silencieux et efficace pour serveur domestique 24/7
Liens d’affiliation. Aucun coût supplémentaire pour toi.