Une passerelle SMS sert à envoyer les mails qu’elle reçoit par SMS. Pour cela elle doit pouvoir recevoir des mails, les convertir en un format texte ultra simplifié et envoyer ce texte par SMS.
De plus en plus d’opérateurs de téléphonie mobile proposent des forfaits SMS illimités. On peut donc se créer une passerelle SMS à moindre coût. Personnellement c’est la solution que j’ai choisi pour faire une station de surveillance basée sur Cacti et Nagios. Un bon système monitoring doit utiliser un réseau indépendant pour remonter les alertes (GSM dans notre cas). Si la connexion internet est hors service et que les alertes sont envoyés par mail, impossible d’être informé, logique…
Tous les outils libres existent pour créer une telle plateforme SMS, il suffit des les imbriquer les uns aux autres.

  • Pré-requis
  1. Un téléphone Nokia
  2. Un cable USB ou série pour le connecter
  3. Connaissances de base en administration Linux
  4. Un serveur Postfix bien configuré (qui peut recevoir les mails des utilisateurs locaux)
  • Gnokii

  Gnokii est l’outil indispensable pour piloter les téléphones Nokia sous Linux. Il supporte les modèles les plus anciens aux plus récents, qu’ils soient connectés par port infra-rouge, cable série, cable USB ou bluetooth. Il permet d’utiliser de nombreuses fonctions du téléphone directement depuis l’ordinateur qui le pilote : carnet d’adresses, todo, état du réseau, numéroter un appel, etc… Et bien sûr d’envoyer des SMS (et d’en recevoir).

Récupérer le dernier package pour votre architecture : gnokii (DAG wieers)

# installation du logiciel Gnokii
rpm -Uvh gnokii-0.6.19-1.el5.rf.x86_64.rpm

Configurer le fichier /etc/gnokiirc pour que votre puisse fonctionner. Si la commande "gnokii –identify" répond alors vous avez réussi. A titre d’exemple, mon fichier de configuration pour un Nokia N70 connecté par cable USB : gnokiirc

# detection du telephone
gnokii --identify
# envoi d'un SMS
gnokii --sendsms votre_numero_de_tel
# tapper le message
# ctrl+d
  • Postfix

Nous voulons recevoir des mails à destination de sms+num_de_tel@votre_nom_de_machine. Par exemple pour sms+0612345678@localhost Postfix va identifier l’utilisateur local "sms" et l’extension "0612345678".

# modifier/ajouter les clefs/valeurs suivantes
# dans votre fichier <em>main.cf</em>
recipient_delimiter = +
local_destination_concurrency_limit = 1
  • Parseur de mails
# ajout de l'utilisateur 'sms'
adduser -m -g gnokii sms

Fichier /home/sms/.forward : forward
Fichier /home/sms/.procmailrc : procmailrc

J’utilise l’excellent outils mail2sms pour analyser les mails et en ressortir un texte réduit au minimum. Installation classique à partir des sources :

wget http://daniel.haxx.se/projects/mail2sms/mail2sms-1.3.5.tar.gz
tar xzvf mail2sms-1.3.5.tar.gz
cd mail2sms-1.3.5
./configure
make
cp mail2sms /usr/local/bin/mail2sms

Au besoin le binaire i386 : mail2sms (à placer dans /usr/local/bin)

Fichier /home/sms/mail2sms.conf : mail2sms.conf

  • Sudo : accès à gnokii par l’utilisateur sms

Pour éviter tout problème d’accès au périphérique, nous donner les droits root à l’utilisateur sms quand il utilise la commande gnokii.

visudo
# ajouter la ligne suivante, sauver et quitter
%gnokii        ALL=(ALL)       NOPASSWD: /usr/bin/gnokii
  • Tests

Et voilà ! Cela devrait fonctionner. Vous pouvez envoyer un mail à sms+votre_tel@serveur et vous devriez le recevoir par SMS d’ici peu.

En cas de problèmes un "tail -f /var/log/maillog" devrait vous éclairer. Procmail a aussi la possiblité de logger, pour cela décommenter le paramètre LOGFILE du fichier .procmailrc.