Artisan Numérique

/système/courrier/smtp/ 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 ?
rootwhereis sendmail
sendmail:

à l'évidence non, installation de ssmtp
rooturpmi ssmtp
ftp://ftp.proxad.net/pub/Distributions_Linux/MandrivaLinux/official/2009.0/x86_64/media/contrib/release/ssmtp-2.62-2mdv2009.0.x86_64.rpm
installation de ssmtp-2.62-2mdv2009.0.x86_64.rpm depuis /var/cache/urpmi/rpms
Préparation ...                  ## #########################################################################################
1/1: ssmtp                 ## #########################################################################################

Et cette fois ?
rootwhereis sendmail
sendmail: /usr/sbin/sendmail

Et qui est derrière ce "sendmail" ?
rootls -la /usr/sbin/sendmail
lrwxrwxrwx 1 root root 34 2009-01-27 21:22 /usr/sbin/sendmail -> /etc/alternatives/sendmail-command*
rootls -la /etc/alternatives/sendmail-command
lrwxrwxrwx 1 root root 15 2009-01-27 21:22 /etc/alternatives/sendmail-command -> /usr/sbin/ssmtp*
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 :

gastonmail -s "Très important" administrateurs@monDomaine.net
Le café est en train de caraméliser !!
<CTRL-D>
EOT
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.