Ssmtp

De Wiki de la communauté Mandriva.


Ssmtp permet d'envoyer des emails depuis votre machine vers l'extérieur via un smtp extérieur.

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 smtpImage:Wikipedia-icon.png, celui de votre FAI par exemple.

Installation

Pour installer ssmtp, lancez Image:drakrpm-icon.png Installer et désinstaller des logiciels et recherchez le paquet ssmtp .

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 smtpImage:Wikipedia-icon.png 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.

Image:Konsole.png
[root@ordi ~]# rm /etc/alternatives/sendmail-command

Et on mets en place un nouveau :

Image:Konsole.png
[root@ordi ~]# ln -s /usr/sbin/ssmtp /etc/alternatives/sendmail-command

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 :

Image:Konsole.png
[root@ordi ~]# mv /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf.original

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.

Image:Konsole.png
[root@ordi ~]# mail -s 'test' destinataire@domaine.fr

-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 :

Image:Konsole.png
[utilisateur@ordi ~]$ gpg --edit-key 123456AZE

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.
Image:Konsole.png
[root@ordi ~]# ln -s /opt/script/send_ip.sh /etc/cron.hourly/send_ip.sh
Image:Konsole.png
[root@ordi ~]# ln -s /opt/script/send_ip.sh /etc/rc5.d/S99send_ip


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.

Récupérée de « http://wiki.mandriva.com/fr/Ssmtp »
en recherche d’emploi ?