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