Récemment, j'ai eu besoin d'envoyer un courriel automatiquement car à une heure à laquelle je dormais (oui, ça m'arrive parfois :) ). J'ai alors cherché à envoyer un message automatiquement.

Je me suis donc tourné vers les outils disponibles sur la distribution de mon serveur. Et j'y ai trouvé l'utilitaire mail qui répond exactement au besoin que j'avais. On peut utiliser ce logiciel en mode interactif en l'appelant simplement depuis la console ou en mode autonome. C'est cette deuxième méthode qui nous intéresse.

Pour commencer, il est nécessaire de créer un fichier contenant le message à envoyer, appelons ce fichier message.A.Envoyer. Ensuite il faut envoyer le contenu du message à mail pour qu'il l'envoie à l'adresse sélectionnée :

  1. cat message.A.Envoyer | mail -s "Sujet du message" address@to.com

Voila, c'est aussi simple que ça.

Si on regarde de plus près le message reçu, on s'aperçoit que dans l'entête l'origine est le courriel de notre serveur. Si c'est le courriel que l'on utilise, il n'y a pas de problèmes, sinon on risque de ne jamais recevoir de réponse. Toutefois, avec mail, il n'y a pas vraiment de problèmes car on peut modifier les valeurs de l'entête :

  1. cat message.A.Envoyer | mail -s "Sujet du message" -a 'From: "Mon nom" <address@from.com>' address@to.com

Toutes les autres valeurs de l'entête sont modifiables de la même manière.

On peut également envoyer le message en copie et en copie cachée :

  1. cat message.A.Envoyer | mail -s "Sujet du message" -a 'From: "Mon nom" <address@from.com>' -b address.blind.carbon.copy@to.com -c address.carbon.copy@to.com address@to.com

Avec ces quelques options, on couvre déjà beaucoup de besoins. Il ne reste plus qu'à appeler notre script depuis cron pour envoyer le message aux dates et heures désirées.