Utiliser ssmtp comme remplacement de sendmail
Comment un démon, par exemple CRON, exécuté sur une machine qui n'a pas de MTA (Mail Transfert Agent) peut-il envoyer alors ses mails de notification ? la réponse souvent évoquée dans les forums est... en installant Postfix ou Sendmail... Pas lourd du tout comme idée Heureusement il existe en réalité une alternative un peu moins gourmande nommé ssmtp.
L'héritage UNIX veut que lorsqu'un outil a besoin d'envoyer un courriel, il passe par l'invocation de la commande /usr/sbin/sendmail. Historiquement cette commande était fournie par l'outil sendmail, mais l'est aussi par exemple par postfix.
ssmtp lui aussi va fournir au système une commande sendmail mais en ne faisant que rediriger les courriers vers un serveur SMTP externe. Cet outil est donc très léger et rapide, et ne demande que très peu de paramétrage. Grâce à lui, il nous est maintenant possible, sans installer d'usine à gaz, de permettre à CRON, ou encore à la commande at, de publier leurs résultats.
Encore une fois ssmtp ne fait que fournir une implémentation sendmail de type "client SMTP", il n'y a aucun démon lancé. Il suffit donc juste de l'installer :
# est-ce que l'on a déjà une implémentation de sendmail ?root#whereis sendmailsendmail:# à l'évidence non, installation de ssmtproot#urpmi ssmtpftp://ftp.proxad.net/pub/Distributions_Linux/MandrivaLinux/official/2009.0/x86_64/media/contrib/release/ssmtp-2.62-2mdv2009.0.x86_64.rpminstallation de ssmtp-2.62-2mdv2009.0.x86_64.rpm depuis /var/cache/urpmi/rpmsPréparation ... ##########################################################################################1/1: ssmtp ########################################################################################### Et cette fois ?root#whereis sendmailsendmail: /usr/sbin/sendmail# Et qui est derrière ce "sendmail" ?root#ls -la /usr/sbin/sendmaillrwxrwxrwx 1 root root 34 2009-01-27 21:22 /usr/sbin/sendmail -> /etc/alternatives/sendmail-command*root#ls -la /etc/alternatives/sendmail-commandlrwxrwxrwx 1 root root 15 2009-01-27 21:22 /etc/alternatives/sendmail-command -> /usr/sbin/ssmtp*root#installation de ssmtp
Ici la commande /usr/sbin/sendmail est donc un lien symbolique vers le client SMTP. Côté paramétrage, il nous faut maintenant modifier le fichier /etc/ssmtp/ssmtp.conf pour désigner le serveur SMTP à contacter :
# Touts les uid < 1000 utiliserons cette address pour leur From
# ainsi un démon d'uid 75 qui cherche à envoyer un mail sera connu
# par cette adresse
root=root@mon-domaine.net
# L'adresse ou le nom de votre vrai serveur SMTP
mailhub=mon_serveur_smtp_reel
# Le domaine que ssmtp utilisera pour se présenter
rewriteDomain=monDomaine.net
# Le nom de machine que ssmtp utilisera pour se présenter
hostname=barbouze
Pour tester, nous allons maintenant utiliser l'ancestrale commande mail :
gaston$mail -s "Très important"Le café est en train de caraméliser !!<CTRL-D>EOTgaston$gaston$test de l'envoi de courriel
Si tout s'est bien passé le courriel va partir être transmis à ssmtp via la commande sendmail. Et ssmtp var contacter le serveur SMTP décrit par mailhub pour lui fournir notre message. Simple et efficace.