Ssmtp
De Wiki de la communauté Mandriva.
Sommaire |
Utilité
Il arrive d'avoir à administrer une machine à distance, ou parfois plusieurs machines. Ainsi, on souhaite recevoir automatiquement dans sa boite email certaines informations. On pourrait déployer une solution Mail Postfix mais elle est sans doute bien trop lourde pour ce que nous demandons ici. L'idée est donc d'utiliser Ssmtp qui ne fait que forwarder le message vers un smtp
, celui de votre FAI par exemple.
Installation
| Pour installer ssmtp, lancez Sélectionnez-le et cliquez sur Appliquer. Aide Vous pouvez également installer en utilisant la console en tant qu'administrateur : urpmi ssmtp |
De même, il est nécessaire de procéder à l'installation de sendmail
Configuration
Je n'ai réussi à configurer ssmtp que pour le smtp
de mon FAI : neuf. Je n'ai pas (encore) réussi avec gmail.
Il est nécessaire que sendmail utilise ssmtp. On modifie le lien symbolique existant :
ls -la /usr/sbin/sendmail lrwxrwxrwx 1 root root 34 2009-04-04 21:41 /usr/sbin/sendmail -> /etc/alternatives/sendmail-command
On supprime l'ancien lien qui existait.
Et on mets en place un nouveau :
Type FAI : neuf
Les fichiers de configuration se trouvent dans /etc/ssmtp/.
Le fichier ssmtp.conf donne un exemple et des commentaires. J'ai pour habitude d'en faire une copie :
Au final, je réduis mon fichier ssmtp.conf à ceci :
# # /etc/ssmtp.conf -- a config file for sSMTP sendmail. # mailhub=smtp.neuf.fr rewriteDomain=neuf.fr FromLineOverride=YES
Utilisation
Pour envoyer un e-mail, rien de plus simple.
-s permet de préciser le sujet du courriel.
Puis vous tapez le message. La fin (envoie) est donné lorsque l'on tape sur une nouvelle ligne un point . puis que l'on presse la touche <entrer> . Il s'affiche alors :
EOT
pour End Of Transmission (fin de transmission)
Cas pratique : envoyer l'IP d'une machine
Je vais illustrer l'utilité de ssmtp par cette application qui je pense est utile ou du moins pédagogique même si cela dépasse un peu du cadre de l'article.
Problématique
On souhaite obtenir l'IP d'une machine distante pour pouvoir se connecter en Ssh. Bien souvent, on ne dispose pas d'une IP fixe, ce qui pose problème. On peut alors avoir recours à des services comme dyndns, mais cela n'est pas la seule solution.
Solution proposée
Une solution que l'on peut mettre en place est la suivante :
- Récupération de l'IP de la machine via un site comme [1]
- Chiffrement du message avec Gpg
- Envoie du message chiffré via ssmtp
- Automatisation de la tâche à chaque démarrage et périodiquement avec cron
Le script
#! /bin/sh
#script : send_ip.sh
#variables d'environnement
HOME=/home/spip
MAILTO=toto@machin.truc
message_clair=`/bin/mktemp /tmp/mail.XXXXXXXXX` || exit 1
#adresse ip.
wget -q www.monip.org -O - | iconv -f iso8859-1 -t utf8 | sed -nre 's/^.* (([0-9]{1,3}\.){3}[0-9]{1,3}).*$/\1/p' > $message_clair
#production d'un message chiffré avec l'extension .asc
#123456AZE : ID de la clef publique de toto@machin.truc
gpg --recipient 123456AZE --armor --encrypt $message_clair
#envoie de l'email chiffré à toto@machin.truc
cat "$message_clair.asc" | mail -s "ip `date +%F_%kh%M`" $MAILTO
Je dépose ce script dans /opt/script/
Un mot sur GPG
Il est nécessaire que la clef soit de confiance et soit disponible pour l'utilisateur (donc dans /home/spip/.gnugpg/). Pour confirmer :
puis entrez trust et suivez les instructions.
Automatisation
Je crée ensuite des liens symboliques dans :
- /etc/cron.hourly pour l'automatisation heuristique. On peut le faire moi fréquemment, un toutes les 3 heures par ex...
- /etc/rc5.d pour le démarrage : runlevel5, S99 : start et le plus tard possible.
Plus d'informations sur :
Surveiller ses logs
Comme nous l'avons en introduction, il est intéressant de recevoir aussi des logs du système. On peut pour cela utiliser Logcheck.

