Envoyer des courriels via mail/mailx

On commence par mettre à jour son système:

yum -y update

Si Mailx n’est pas présent, on l’installe:

yum install -y mailx

Maintenant, il ne nous reste plus qu’a renseigner l’adresse d’un serveur SMTP.

Pour le mettre en place, il faut modifier le fichier de configuration de mailx, /etc/mail.rc :

vi /etc/mail.rc

Et vous y mettez à la fin les champs ci-dessous en les adaptant a votre configuration:

# On renseigne ici l'adresse du serveur smtp
set smtp=smtp://smtp.exemple.com:543
# On renseigne ici l'adresse qui apparaitra en expediteur
set from="root <@Serveur>"
# Pour activer une authentification par login/passwd , sinon il n'y en pas, commentez!!
set smtp-auth=login
#A mettre si le serveur smtp demande une authentification
set smtp-auth-user=login@courriel.fr
# A mettre si le serveur smtp demande une authentification
set smtp-auth-password=mot_de_passe

Pour un usage plus personnel, on peut aussi le configurer avec un compte gmail, cette fois dans son ~/mailrc:

vi ~/mailrc

set smtp-use-starttls
set ssl-verify=ignore
set smtp-auth=login
set smtp=smtp://smtp.gmail.com:587
set from="compte@gmail.com (Starmate)"
set smtp-auth-user=compte@gmail.com
set smtp-auth-password=s0qsdm3p@zzW32-èh_25azg'(4540rD

Et voila, c’est tout. le système peut maintenant envoyer des courriels.

Voici les principales options de Mail/Mailx et quelques exemples:

  • -a Pour envoyer une pièce jointe
  • -c Pour mettre un destinataire en copie (adresse1,adresse2,etc..).
  • -q Charge le contenu d’un fichier comme faire le corps du courriel
  • -r Pour définir l’adresse de l’expéditeur.
  • -s Sujet du message

Envoi d’un message simple:

echo "Contenu de mon courriel" | mail -s "Sujet de mon courriel" adresse@courriel.fr

Et on valide avec la combinaison de touches CTRL+d.

Envoyer un message avec une pièce jointe et deux adresses en copie:

echo "Contenu de mon courriel" | mail -s "Sujet de mon courriel" -a /chemin/du/image.jpg -c adresse@copie1.fr,adresse@copie2.fr adresse@destinataire.fr

Et on valide avec CTRL+d.

Mettre le contenu d’un fichier pour corps du courriel:

echo | mail -s "Sujet de mon courriel" -r adresse@expediteur.fr -q /chemin/du/fichier.txt adresse@destinataire.fr

Et on valide avec CTRL+d.

Exemple d’utilisation dans un script qui va envoyer un courriel si le seuil d’espace occupé sur un répertoire, ici 80% :

#!/bin/bash
#Maximum d'espace disque utilisé, en %
LIMITE='80'
#Repertoire à surveiller
REP='/var'
#Adresse qui recevra les courriels
DESTINATAIRE='destinataire@courriel.fr'
#Sujet du message
SUJET="Espace utilise sur le repertoire $REP"
#Les courriels sont envoyés avec Mailx
MAILX='mailx'
#Vérifie si la commande existe
which $MAILX > /dev/null 2>&1
#On regarde le statuts de sortie de la commande precedente, si il est différent de 0, Mailx n'est pas installé.
if ! [ $? -eq 0 ]
then
#Demande l'installation de Mailx
echo "Merci d'installer $MAILX"
#Sortie du script
exit 1
fi
#On se deplace dans le repertoire pour connaitre sa taille
cd $REP
#Affiche le pourcentage d'espace utilisé
ETAT=`df . | awk '{print $5}' | sed -ne 2p | cut -d"%" -f1`
#Si l'espace utilisé est supérieur à la limite
if [ $ETAT -gt $LIMITE ]
then
#Envoi d'un courriel d'alerte
du -sh ${REP} | $MAILX -s "$SUJET" "$DESTINATAIRE"
fi

Derniers Articles