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*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" administrateurs@monDomaine.netLe café est en train de caraméliser !!<CTRL-D>EOTgaston$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.
Vos remarques et commentaires...
sendmail, si ma mémoire est bonne, est tout à fait capable d'envoyer du mail sans être résident.
La partie résidente n'est utile que pour recevoir du mail.
Evidément, il faut quand même avoir une configuration valide pour envoyer avec sendmail sans être résident, ce qui n'est pas aussi simple que ssmtp.
Ah mais je ne dis pas que sendmail est résident, je dis que pour relayer vers un serveur smtp les mails locaux, il faudrait que sendmail soit configuré pour faire se relai (je ne sais pas si c'est faisable).
En général ce qui est préconisé est d'installer postfix dans ce but qui va surcharger la commande sendmail et faire ce relai.
ssmtp est juste une version méga light de tout cela.
Pour juste faire du relai vers un autre server, c'est le paramêtre SmartRelay (ou DS) dans le fichier de conf, aprés ça, sendmail envoie tout ce qui n'est pas local à ce serveur.
Donc c'est faisable :) Ok c'est noté. Etant directement passé à postfix je n'ai jamais mis les pieds chez M. Sendmail.
Ceci dit, pour juste faire ce petit relai de mails d'alerte:
- sendmail (rpm) 1mo (doc non comprise)
- ssmtp (rpm) 22ko
La doc de sendmail nous dit: "On dit souvent que celui qui n'a jamais édité un fichier standard sendmail.cf n'est pas un véritable administrateur UNIX. La légende dit aussi qu'il ne faut pas le faire deux fois, sous peine de devenir fou"
Et c'est vrai :) ... A une époque j'avais testé les virtual domaines sous sendmail ... conclusion 3 semaines d'arrêt :)
Pour le relay il faut :
- Modifier le DS ( ex:DSmonserveur.mondomaine.fr <- relayage des mails vers monserveur.mondomaine.fr )
- Modifier le Dj si le nom de domaine du serveur sendmail n'est pas le nom de domaine connu sur internet (ex: Dj$w.toto.fr pour la reecriture du nom de domaine des mails )
ssmtp avec mutt, c'est d'la balle. :)
On peut faire le pendant côté réception des messages.
Pour récupérer du courrier via POP3 ou IMAP, si on utilise un MTA, on lui adjoindra fetchmail qui va récupérer des courriers sur des comptes externes et les injecte via SMTP dans le MTA (postfix, exim, sendmail...). Si on souhaite se passer de MTA, le pendant de fetchmail s'appelle getmail (http://pyropus.ca/software/getmail). Il récupère du courrier et va le stocker dans un dossier de messagerie au format maildir ou mboxrd. Ensuite, une ligne dans le cron du genre (pour 2 comptes de messagerie externes) :
Le fichier getmailrc ressemble à ceci (qui envoie ici les courriers à Procmail au lieu de les déposer directement) :
PS: Geshi met le bazar dans les blocs "code". Du coup les retour à la ligne ne sont pas bien pris en compte et les couleurs sont bizarres.
Pour ma part,j'utilise Mutt + Fetchmail + msmtp + procmail. Le tout en pop3... Par sécurité, j'ai ajouté une petite recette (entre autres) pour garder une copie de tous les mails entrants dans mon .procmailrc :
Et pour tous les mails sortants, c'est Mutt qui se charge de conserver une petite copie :
c'est aussi de la balle !
Publier un nouveau commentaire