sms-gateway
How to build a SMS-Gateway
Um die arlamierungspfade bei Monitoringprojekten sicherzustellen, könne wir uns nicht auf die alleinige Zustellung von Mails verlassen, sondern benötigen vielmehr einen sicheren Arlamierungspfad. Was könnte sich besser anbeiten als der eigene SMS-Gateway.
Was wir dazu benötigen ist denkbar preiswert.
Get it @ ModMyPi | |
RaspberryPI 3 Kit | ![]() |
SIM800 Breakoutboard | ![]() |
SIM800 Case | ![]() |
Als Betriebssystem kommt Rasperian ohne “Schnickschnack” zu Einsatz. Das KnowHow zum Aufspielen des Images setze ich hier vorraus.
Erste Schritte:
/boot/config.txt
################################### ## ENABLE UART [ MSH ] ################################### enable_uart=1 dtoverlay=pi3-miniuart-bt
Automatches Aktivieren des SIM800 BreakoutBoards
/etc/rc.local
################################### ## POWERON GSM MODULE [ MSH ] ################################### echo 17 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio17/direction echo 1 > /sys/class/gpio/gpio17/value
Erstellen eines Scripts zur Erzeugung von Directories in der Ramdisk. Dies benötigen wir für eine lange Lebenserwartung der SD-Card. Es soll so wenig als möglich auf die Disk geschrieben werden. Zuvor sollte ein User names playsms mit dem Homedir /home/mail/playsms angelegt werden und sich in der Gruppe mail befinden. Diesen benötigen wir später für das Webinterface. Auch hier setze ich die Fähigkeit des anlgens von Usern voraus.
/etc/init.d/create_logdirs.sh
#! /bin/bash ### BEGIN INIT INFO # Provides: create-logdirs # Required-Start: $remote_fs # Required-Stop: $remote_fs # Should-Start: $local_fs # Should-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: create-logdirs - Persistent key-value db # Description: create-logdirs - Persistent key-value db ### END INIT INFO PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin set -e USERNAME="playsms" DIRS=' /var/log/kannel /var/log/apache2 /var/log/mysql /var/run/kannel /var/spool/postfix /var/spool/playsms/maildir/cur /var/spool/kannel/store /var/www/playsms' case "$1" in start) for DIR in ${DIRS} do mkdir -p ${DIR} chmod 777 ${DIR} done ## CREATE MAILDIR WITHIN RAMDISK rsync -av /home/mail/mail_template/.maildir /home/mail/${USERNAME} chown playsms:mail /home/mail/${USERNAME} -R chmod 755 /home/mail/${USERNAME} -R ;; stop) true ;; esac exit 0
Nun das Script im System registrieren
udapte-rc.d -f create-logdirs defaults 99
Mountpoints für Ramdisk anpassen/anlegen
/etc/fstab
proc /proc proc defaults 0 0 /dev/mmcblk0p1 /boot vfat defaults 0 2 /dev/mmcblk0p2 / ext4 defaults,noatime,nodiratime,commit=60 0 1 ## MSH log /var/log tmpfs nodev,nosuid,size=20% 0 0 lock /var/lock tmpfs nodev,nosuid,size=1% 0 0 spool /var/spool tmpfs nodev,nosuid,size=1% 0 0 playsms /home/mail/playsms/ tmpfs nodev,nosuid,size=5% 0 0 ibdata /var/lib/mysql/ibdata tmpfs nodev,nosuid,size=8% 0 0
Serielle Console freigeben:
/boot/cmdline.txt
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
/etc/modules-load.d/modules.conf
# /etc/modules: kernel modules to load at boot time. # # This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. ## GSM-BOARD [ MSH ] i2c-bcm2708 i2c-dev
Pakete installieren:
apt install kannel apt install kannel-sqlbox apt install libxml2 apt install postfix courier-authdaemon courier-authlib courier-authlib-userdb courier-base courier-imap apache2 apache2-utils libapache2-mod-php5 apt install apache2 libapache2-mod-php5 mysql-server php5 php5-cli php5-mysql php5-mcrypt php5-gd php5-imap php5-curl
Download playsms from https://playsms.org/download/ to /usr/src
Follow Installation Instructions on https://github.com/antonraharja/playSMS/blob/master/INSTALL.md
Install Playsms
cd /usr/src/ wget https://sourceforge.net/projects/playsms/files/latest/download?source=files mv download\?source\=files playsms.tar.gz tar xvfz playsms.tar.gz install.conf.dist install.conf mkdir -p /var/www/playsms vi install.conf ./install-playsms.sh cp /usr/src/playsms-apache/* /etc/apache2/sites-available/ a2ensite playsms apache2ctl configtest apachectl gracefull playsmsd restart playsmsd check
Configuration IMAPD
/etc/courier/imapd
... ## MAILDIRPATH - directory name of the maildir directory. ## e.g /home/mail/playsms/.maildir MAILDIRPATH=.maildir
.maildir erzeugen ( Siehe postfix )
mkdir -p /home/mail/usename/.maildir/{cur,new,tmp}
Kannel configurieren:
/etc/kannel/kannel.conf
################################################ ## CORE ################################################ group = core admin-port = 13003 smsbox-port = 13004 admin-password = ADMIN_PASSWORD status-password = ADMIN_PASSWORD admin-deny-ip = "*.*.*.*" admin-allow-ip = "127.0.0.1" dlr-storage = mysql log-file = "/var/log/kannel/kannel.log" log-level = 4 ################################################ ## Modem Group ################################################ group = modems id = SIM800 name = "SIM800" detect-string = "SIM800" detect-string2 = "R13.08" init-string = "AT+CNMI=1,2,0,0,0" enable-hwhs = "AT+IFC=1,1" keepalive-cmd = "AT+CBC;+CSQ" #reset-string = "ATZ" speed = 115200 need-sleep = true keepalive-cmd = "AT+CBC;+CSQ" #enable-mms = true message-storage="SM" ################################################ ## SMSC CONNECTIONS ################################################ group = smsc smsc = at smsc-id = SIM800 modemtype = auto device=/dev/ttyAMA0 my-number = 0049 1234567890 sms-center= 0049 98765 #connect-allow-ip = 127.0.0.1 log-file = "/var/log/kannel/sim800.log" log-level = 4 ################################################ ## SMSBOX SETUP ################################################ group = smsbox bearerbox-host = 127.0.0.1 sendsms-port = 13013 global-sender = 13013 #sendsms-chars = "0123456789 +-" log-file = "/var/log/kannel/smsbox.log" log-level = 4 ################################################ ## SEND-SMS USERS ################################################ # # These users are used when Kannel smsbox sendsms interface is used to # send PUSH sms messages, i.e. calling URL like # http://kannel.machine:13013/cgi-bin/sendsms?username=tester&password=foobar… group = sendsms-user username = playsms password = PLAYSMS_PASSWORD max-messages=3 #user-deny-ip = "" #user-allow-ip = "" ################################################ ## SERVICES ################################################ # There should be always a ‘default’ service. This service is used when no # other ‘sms-service’ is applied. group = sms-service keyword = default accept-x-kannel-headers = true catch-all = yes max-messages=0 get-url = "http://127.0.0.1/index.php?app=call&cat=gateway&plugin=kannel&access=geturl&t=%t&q=%q&a=%a&Q=%Q&smsc=%i" ################################################ ## MYSQL CONNECT ################################################ # # DLR with MySQL support configuration # # Example defining a MySQL database connection resource and # the required table and field values. # group = mysql-connection id = mydlr host = localhost username = dlruser password = dlrpass database = dlr # max count of connections that will be opened for dbpool # default is 1 max-connections = 1 # # Create the required table for the DLR support in the database # with something similar like this: # # CREATE TABLE dlr ( # smsc varchar(40), # ts varchar(40), # destination varchar(40), # source varchar(40), # service varchar(40), # url varchar(255), # mask int(10), # status int(10), # boxc varchar(40) # ) # group = dlr-db id = mydlr table = dlr field-smsc = smsc field-timestamp = ts field-destination = destination field-source = source field-service = service field-url = url field-mask = mask field-status = status field-boxc-id = boxc ################################################ ## SMPP SETUP ################################################ ## NOT USED HERE
Diese beiden Nummern entsprechend der Simkarte anpassen
my-number = 0049 1234567890 sms-center= 0049 98765
https://www.mobilcom-debitel.de/service/handynutzung/nachrichtenversand/sms/
MySQL Datenbank Schema für die DLRs ( delivery Reports ) erzeugen und Userrechte für dlruser,dlrpass auf dieses Schema vergeben.
CREATE TABLE dlr ( smsc varchar(40), ts varchar(40), destination varchar(40), source varchar(40), service varchar(40), url varchar(255), mask int(10), status int(10), boxc varchar(40) ); GRANT ALL PRIVILEGES ON dlr.* to 'dlruser'@'127.0.0.1' IDENTIFIED BY 'dlrpass' WITH GRANT OPTION;
Versenden von sms via http
SMS_SERVER="http://sms-gw:13013" SMS_SERVER_USR="playsms" SMS_SERVER_PWD="PLAYSMS_PASSWORD" TARGET_TEL="0049......" ${SMS_SERVER}/cgi-bin/sendsms?username=${SMS_SERVER_USR}&password=${SMS_SERVER_PWD}&to=${TARGET_TEL}&text=${MESSAGE}"
Versenden von sms via smtp
FROM | |
TO | playsms |
SUBJECT | playsms PALYSMS_PASSWORD Meinen Text hier forlaufend schreiben |
BODY | +$mobile ( Tel: |
Weiterführende Links:
http://www.developershome.com/sms/operatingMode.asp