Envoyer un mail en ligne de commande
Sous linux il est possible d’envoyer un mail en ligne de commande avec msmtp
.
Installation et configuration de msmtp
Installation
apt install msmtp
Configuration
La configuration se situe dans le fichier /etc/msmtprc
S’il n’existe pas, creez le
Voici un exemple de configuration gérérique
# Valeurs par défaut pour tous les comptes.
defaults
auth on
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile /var/log/msmtp.log
# Exemple pour un compte Gmail
account gmail
auth plain
host smtp.gmail.com
port 587
from username@gmail.com
user username
password XXXXXXXXXX
# Exemple pour un compte GMX
account gmx
host mail.gmx.com
port 587
from username@gmx.com
user username@gmx.com
password XXXXXXXXXX
tls_nocertcheck
# Exemple pour un compte OVH
account ovh
host XXXXXX.ovh.net
port 465
from username@example.com
user username@example.com
password XXXXXXXXXX
# Exemple pour un compte Infomaniak
account infomaniak
host mail.infomaniak.com
port 587
from username@example.com
user username@example.com
password XXXXXXXXXX
# Exemple pour un serveur de test MailHog
account mailhog
auth off
tls off
tls_starttls off
host localhost
port 1024
from username@example.com
# Définir le compte par défaut
account default : ovh
Vous mettez toutes les configurations de vos emails. Le compte à utiliser par defaut sera spécifié avec le mot clef account default
.
Utilisation
L’utilisation est simple
echo "My message" | msmtp monemail@mail.fr
Il est possible de override les paramètres ecrit dans le fichier de conf. COmme par exemple le bypass du certificat.
echo "My message" | msmtp monemail@mail.fr --tls-certcheck=off
Ensuite pour Ajouter le sujet du mail c’est un mail classique
echo "Subject: Mon sujet de mail" | msmtp monemail@mail.fr --tls-certcheck=off
Exemple
Voici un script qui permet d’alerter par mail d’un nouveau serveur kimsufi
#!/usr/bin/env bash
dispo=$(curl -s "https://www.ovh.com/engine/api/dedicated/server/availabilities?country=fr" | jq '.[] | select(.hardware=="1801sk12" and .datacenters[].availability!="unavailable")')
if [ ! -z "$dispo" ] ;then
echo "Subject: Serveur KS1 disponible" | msmtp mon@mail.fr --tls-certcheck=off
# log
echo "[$(date '+%Y-%m-%d %H:%M')] Check S1 : Disponible" >> /var/ovh/ksalert.log
exit 1
else
echo "Serveur Indispo"
#log
echo "[$(date '+%Y-%m-%d %H:%M')] Check S1 : Indisponible" >> /var/ovh/ksalert.log
exit 0
fi
Qu’on lance à intervale régulier (ici toutes les heures) :
0 * * * * bash /root/ovh_ks2