News - Informatique

Envoyer un mail en ligne de commande sous Linux (via Free)

Il y a des fois où sous Linux on s'arracherait les cheveux. C'est pour cela d'ailleurs que je n'en ai plus ! Prenons le cas où ou avez un serveur chez vous qui fait de la supervision via des scripts bash (ou sondes nagios), par exemple pour vérifier que votre site n'est pas tombé ou défacé. Vous aimeriez qu'il vous envoie un mail avec la boite aux lettres électronique de votre FAI, en cas de soucis, du genre celle-là : toto@free.fr. Histoire d'avoir une notification sur votre smartphone.

Du coup il faut paramétrer le client mail en ligne de commande Linux (par exemple mutt) pour converser avec le serveur SMTP de Free pour envoyer le mail, comme si vous configureriez Outlook ou Thunderbird. Vous pensez que c'est simple ? Détrompez-vous !

Vous avez trois options :



Sur les forums on déniche difficilement ce qui peut nous aider. Finalement j'ai pu trouver la réponse ici, dans la doc officielle : https://wiki.archlinux.org/index.php/Mutt#SMTP

Ce n'est pas "smtp_pass" qu'il faut utiliser mais les variables "my_user" et "my_pass" pour que l'authentification SASL fonctionne. Entre le temps passé à trouver le bon port, le bon login, la bonne syntaxe et les bonnes variables d’environnement à utiliser, voila j'ai perdu 1 heure. Mais je sais comment envoyer des mails avec mutt pour l'inclure dans mes scripts bash.

Bref, je vous donne la solution toute bête sans se casser les *********. Le mieux étant de se créer un .muttrc dans la HOME de l'utilisateur afin que le logiciel y pioche ses infos (comme .bashrc, .vimrc, etc...) de manière automatique à chaque fois que vous voulez envoyer un mail dans vos scripts et de bien le remplir surtout :

Code BASH :
 
# Chez free :
set smtp_url = "smtps://smtp.free.fr:465/"
set my_user = "LOGIN"
set my_pass = "MOT_DE_PASSE"
set from = "ADRESSE_MAIL@free.fr"
set realname = "Serveur de la maison"
set ssl_starttls = no
#Chez yahoo :
set smtp_url = "smtps://LOGIN@yahoo.fr@smtp.mail.yahoo.fr:465/"
set smtp_pass = "MOT_DE_PASSE"
set from = "LOGIN@yahoo.fr"
set realname = "Serveur de la maison"
set ssl_starttls = yes
 


On fait un petit chmod 600 pour que le mot de passe en clair ne soit pas lisible par les autres :

Code BASH :
 
chmod 600 .muttrc
 


Et roule ma poule :

Code BASH :
 
mutt -s "Supervision - Alerte site web" destinataire@fai.tld < fichier.txt