Lorsque l’on programme des taches d’administation (via CRON par exemple), il peut être intéressant de recevoir un mail récapitulant le résultat du Job.
Pour pouvoir envoyer un mail, il faut un MTA.
Les MTA les plus connus et utilisés sous Linux sont PostFix, Exim et Sendmail, mais ces derniers sont très largement surdimensionnés par rapport à notre besoin qui est simplement de pouvoir envoyer un mail en utilisant le serveur SMTP de notre FAI par exemple ou celui de GMail.
Après quelques recherches, un peu de temps passé à me casser les dents sur Postfix et Exim4, j’ai choisi SSMTP (Simple SMTP)
Installation
SSMTP est présent dans les dépôts, l’installation se fait donc par un simple :
sudo aptitude install ssmtp mailx
On installe aussi mailx, un package qui installe les utilitaires mail et mailx, permttant d’envoyer un mail en ligne de commande a des fins de tests.
Configuration
La configuration est comme le nom de ce programme l’indique « Simple ».
Il n’y a pas 50 fichiers de configuration contenant moult paramètres.
/etc/ssmtp/ssmtp.conf
root=mon_login@domaine mailhub=serveur_SMTP:port UseSTARTTLS=YES ou NO UseTLS=YES ou NO AuthUser=mon_login AuthPass=mon_mot_de_passe hostname=sweetBox FromLineOverride=YES rewriteDomain=domaine
On peut différencier 2 groupes de paramètres :
Paramètres de connexion :
Ces paramètres sont spécifiques au serveur SMTP utilisé, il conviendra donc de les adapter en fonction de ce dernier.
- mailhub : adresse du serveur SMTP à utiliser
- UseSTARTTLS et UseTLS : méthode d’authentification à utiliser par le serveur SMTP à adapter en fonction du serveur SMTP utilisé
- AuthUser et AuthPass : login, mot de passe de votre compte mail sur le SMTP utilisé
Autres paramètres :
Ces paramètres sont utilisé de la même façon quelque soit le serveur SMTP utilisé.
- root : indique l’adresse mail vers laquelle les messages envoyé à root (et plus généralement les utilisateur ayant un UID < 1000) sont redirigés
- FromLineOverride : valeur possible YES / NO, indique si on autorise la redéfinition de l’expéditeur (from)
- rewriteDomain : permet de redéfinir le domaine de l’utilisateur envoyant le mail
- hostname : permet de redéfinir le nom de la machine en cours, doit correpondre à un domaine valide (toto est invalide, toto.fr est valide)
Remarque : toto.fr est rééllement valide, il s’agit de magasin de vente de tissus.
Quelques précisions concernant les paramètres FromLineOverride, rewriteDomain et hostname :
Lorsque l’on envoi un email on doit envoyer un nom et une adresse d’expéditeur, un expediteur est décrit avec le format suivant :
nom_affiché <adresse_de_réponse>
- nom_affiché : nom affiché dans votre client mail
- adresse_de_réponse : adresse mail utilisé pour la réponse lorsque l’on fait « Répondre… » dans votre client mail
sSMTP essai de déduire cet expéditeur en fonction de différent paramètres dans l’ordre de préférence :
- From défini dans le header avec l’option -a de la commande mail (possible que si FromLineOverride=YES)
- Utilisateur_connecté <adresse défini dans revaliases>
- Utilisateur_connecté <utilisateur_connecté@rewriteDomain>
- Utilisateur_connecté <utilisateur_connecté@hostname>
On entend par Utilisateur_connecté l’utilisateur qui lance la commande mail.
/etc/ssmtp/revaliases
Ce fichier permet de mapper le nom des utilisateurs locaux avec une adresse mail et un serveur SMTP .
utilisateur_linux:adresse_de_reponse:serveur_smtp_utilise
- adresse_de_reponse : adresse utilisée comme adresse de réponse lorsque utilisateur_linux est l’expéditeur d’un mail
- serveur_smtp_utilise : serveur SMTP utilisé pour cet utilisateur, prend le pas sur mailhub défini dans ssmtp.conf. Ce serveur SMTP doit être ne raccord avec les paramètres UseSTARTTLS, UseTLS, AuthUser et AuthPass définis dans ssmtp.conf
Test
Un fois paramétré ces 2 fichiers vous pourrer tester votre configuration avec :
date | mail -s Test adresse_mail
cf. http://voidandany.free.fr/index.php/envoyer-un-mail-en-ligne-de-commande
Conclusion
sSMTP est léger (< 100Ko), non résident en mémoire (il n’ya pas de démons comme les MTA plus complets), simple à paramétrer (bientôt ici même les configuration pour les serveur SMTP de Gmail, Yahoo et Free)
Par contre il n’est plus maintenu et il ne gère pas de file d’attente (si un mail echou il ne sera pas ré-émis)
Sources
Articles sur sSMTP
http://www.davidgrant.ca/ssmtp_vs_postfix_no_contest
http://tombuntu.com/index.php/2008/10/21/sending-email-from-your-system-with-ssmtp/
http://artisan.karma-lab.net/node/1171
Article sur NullMailer un autre MTA léger (à tester)
http://pro.anapivirtua.com/index.php/2008/08/08/nullmailer-ou-comment-jai-evite-les-usines-a-gaz/
http://debaday.debian.net/2009/06/28/nullmailer-simple-send-only-mail-transport-agent/
Autres MTA léger (pour la gloire)
http://www.cleancode.org/projects/email/about
http://linuxmafia.com/faq/Mail/nullmailers.html
Article sur Exim (datant de la période où j’ai essayé de l’utiliser)
http://wiki.debian.org/GmailAndExim4
http://www.casafire.com/fr/content/relayer-les-e-mails-de-exim4-vers-gmail-ou-votre-isp
http://dev.petitchevalroux.net/linux/configuration-exim4-avec-gmail-linux.19.html
http://www.cooldown.com.ar/2007/09/22/howto-using-exim4-to-send-messages-through-gmail/
http://ohioloco.ubuntuforums.org/showthread.php?t=1078530
http://www.manu-j.com/blog/wordpress-exim4-ubuntu-gmail-smtp/75/
http://www.falconnet.fr/Exim-Message-is-frozen-et.html