Sms-gateway
Man kann sich mit einem GSM-Modem oder einem Mobiltelefon und einem Linux-Server ein SMS-Gateway erstellen.
Das kann dann z.B. per Postfix Mails mit bestimmter Empfängeradresse annehmen und diese dann zu einer Tel-Nummer ver GSM-Modem als SMS senden.
Hier wird nur eine mögliche Konfiguration beschrieben, es gibt noch einige andere im WWW.
Voraussetzungen
Folgende Software muss vorhanden und eingerichtet werden:
- Postfix
- smstools ( z.B. wie hier eingerichtet
Einrichten
Nun verlinkt man sich das Script „email2sms“
ln -s /usr/share/doc/smstools/examples/scripts/email2sms /usr/local/bin/
Der Postfix schreibt im Mail-Header die „To:“ Adresse wie folgt: <EMPFÄNGER>@DOMAIN.TLD>
Das verstehen die SMSTools nicht, daher muss das erste Zeichen „<“ und alle Zeichen einschließlich dem „@“ entfernt werden.
Man kann das in dem email2sms
Script lösen in dem man folgende Zeile ändert:
destinations=`formail -zx "To:" < $tmp`
ändern in
destinations=`formail -zx "To:" < $tmp | grep -Eo "[0-9]{3,}"`
Damit nun der Postfix auch eine Mail, mit dem Empfängerformat LÄNDERCODE_TELEFONNUMMER@DOMAIN.TLD
(z.B. 49123456789@test.de), an das email2sms
Programm sendet, erstellt man sich eine virtuelle Aliases Datei mit Regexp-Patterns und der Anweisung die Mail an den virtuellen Benutzer „sms“ zu senden. Dieser Benutzer wird in der aliases
Datei angegeben und angewiesen die Mail an das Programm email2sms
zu übergeben. Da die aliases
Datei nicht mit Regexp-Patterns umgehen kann muss hier die Umleitung über die virtuelle Aliases-Datei erfolgen. Weiterhin ist es wichtig den Befehl in der aliases
Datei mit sudo
aufzurufen, da sonst Postfix ein chown
auf die SMS-Datei unter /var/spool/sms/outgoing
machen kann. Auch hierfür passt man die sudoers
Datei und die Berechtigungen auf das Verzeichnis /var/spool/sms/outgoing
an.
Jetzt aber genug geredet; hier die Befehle:
- virtuelle
aliases
mit Regexp-Patterns
vi /etc/postfix/sms_aliases
Inhalt:
#/^491*/ sms@<DOMAIN>.<TLD>
Nun die Datei dem Postfix bekannt geben.
vi /etc/postfix/main.cf
Hier die Zeile mitalias_maps
wie folgt anpassen:
alias_maps = hash:/etc/aliases, regexp:/etc/postfix/sms_aliases
Zuletzt noch diesen Befehl ausführen:
postmap /etc/postfix/sms_aliases
aliases
Datei anpassen
vi /etc/aliases
Inhalt unten einfügen:
sms: "|sudo /usr/local/bin/email2sms"
Nun noch die neuen Aliase bekanntmachen:
newaliases
sudoers
Datei anpassen
visudo
Inhalt unten einfügen:
# Fuer Postfix zum senden von SMS nobody ALL=(ALL) NOPASSWD: /usr/local/bin/email2sms
Nun kann man einfach eine Mail an den Server senden und ein wenig später kommt diese per SMS an.
Aber Vorsicht nicht zu viele Zeichen versenden
Mail abschneiden
Nach 160 Zeichen ist bei einer SMS erstmal Schluss. Will man mehr versenden, wird automatisch eine neue SMS versendet.
Das hier angepasste email2sms
Script, schneidet die Mail nach 160 Zeichen ab und versendet nur diese ersten 160 Zeichen.
tmp=$(mktemp /tmp/smsgw.XXXXXX) cat >$tmp BODY="formail -I "" < $tmp" destinations=`formail -zx "To:" < $tmp | grep -Eo "[0-9]{3,}"` IFS=, for destination in $destinations; do destination=${destination## } OUTFILE=$(mktemp /var/spool/sms/outgoing/smsgw.out.XXXXXX) echo ${BODY:1:160} > $tmp formail -f -I "To: $destination" < $tmp > $OUTFILE chmod 666 $OUTFILE echo "SMS queued to $OUTFILE" done rm $tmp