Envoyer un mail en bash (et telnet)

Portrait de trax

Il y a bien sur la commande mail (du package mailx)

Mais peut mieux faire :D
À partir de maintenant ça pourrait presque se retrouver dans la rubrique lokis (s/lokis/useless/)

Utilisation de telnet et des fifos. Oui il y a plus simple mais ça permet de comprendre comment fonctionne tout ça

Création des fichiers de pile

  1. $ mkfifo in
  2. $ mkfifo out

Premier script bash

  1. (while [ true ]
  2. do
  3. cat in
  4. done)|telnet mail.esiee.fr 25 > out

Oula mais qu'est-ce que ça fait tout ça ?
while [true] <= boucle infinie
cat in <= lit tout ce qu'il y a dans in pour le transmette dans le tube | telnet mail.esiee 25
telnet mail.esiee 25 >out ouvre une connexion sur mail.esiee.fr sur port 25 (smtp) et redirige la sortie dans le tube de sortie.

Jusque là rien de bien méchant.

Il ne reste plus qu'à envoyer ce qu'il faut dans le fichier "in".

  1. HELO MAN
  2. MAIL FROM:<trax@esiee.fr>
  3. RCPT TO:<givernao@esiee.fr>
  4. DATA
  5. le contenu du mail
  6. .
  7.  
  8. QUIT
  • Oui il n'y a qu'un seul et unique "L" à hello.
  • l'adresse de l'expéditeur, qui en l’occurrence n'existe pas mais ça ne dérange pas le serveur mail
  • l'adresse du destinataire, là c'est plus embêtant si elle n'existe pas
  • Balise annonçant le corps du mail
  • Corps du message, pour ajouter un sujet, modifier l'adresse de réponse, changer la date du mail... Voir entête MIME
  • Un point "." entre deux retours à la ligne signifie la fin du mail
  • Ne pas oublier de dire au revoir au serveur ;)