miércoles, 11 de abril de 2012

Kannel sms gateway











INSTRUCTIVO DE INSTALACIÓN DE KANNEL

 


INTRODUCCIÓN


En este documento se tratará la instalación del SMS Gateway Kannel, en el documento se podrán encontrar tanto los requisitos como los pasos para la instalación del mismo.



Tabla de Contenido




Instructivo de Instalación de Kannel

1.1          Se requieren 2 servidores (aunque se puede solo en uno), la instalación se realizó sobre 2 servidores con Sistema operativo Linux CENTOS 6.2. x86_64
1.2           En uno de los servidores se debe instalar MySQL en su versión 5.1.61 y para la correcta instalación se deben instalar los siguientes como usuario root paquetes (se puede encontrar una guía detallada en: http://www.alcancelibre.org/staticpages/index.php/como-mysql-quickstart): mysql y mysql-server
1.2.1      El Comando de instalación es: yum -y install mysql mysql-server  libssl-dev openssl
(las ultimas 2 librerias es por si se desea agregar soporte para ssl)
1.3          Para que SELinux permita el inicio del servicio se usa:
setsebool -P mysqld_disable_trans 1

1.4          Para poder iniciar el cliente se usa:
setsebool -P allow_user_mysql_connect 1

1.5          Se debe comprobar el manejo del servicio con:
/sbin/service mysqld start
/sbin/service mysqld restart
         /sbin/service mysqld stop
 
1.6          Para agregar el inicio de MySQL al arranque del sistema se usa:
/sbin/chkconfig mysqld on

1.7           Ahora para configurar la clave de usuario root (se debe tener el iniciado el servidor de MySQL “paso 1.5 de esta guia”) se usa:
mysqladmin -u root password nueva-clave-de-acceso

1.8.1      Posterior a la asignación  de clave se debe comprobar el ingreso del usuario root con el comando:
mysql –u root –p
(clave)
Aparecerá el promt de mysql y para efectos de pruebas se usará:
show tables;
1.8.2      Se debe crear la base de datos (kannel) junto con la tabla necesaria (dlr) y sus campos, las sentencias SQL serán incluidas a continuación:
CREATE DATABASE kannel;
  USE kannel;
    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)
     );
1.8.3           Se debe crear un usuario y otorgar resposabilidades sobre la tabla (dlr) para eso se usa:
Aclaraciones: El campo (xxx.xxx.xxx.xxx) es la ip del servidor donde quedarán los scripts de kannel (el servidor que se configurará en el siguiente paso de la guía).
CREATE USER 'usuario_kannel'@'xxx.xxx.xxx.xxx' IDENTIFIED BY 'Clave';
GRANT ALL PRIVILEGES ON kannel.dlr TO 'usuario_kannel'@'xx.xx.xx.xx'     WITH GRANT OPTION;
exit;
1.8.4           Ahora se debe abrir el puerto en el firewall editando el archivo (iptables) con el siguiente comando:
vi /etc/sysconfig/iptables

1.8.4.1                Se debe agregar la siguiente línea(preferiblemente después de la regla de apertura del puerto de 22 “ssh”):
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

“Se presiona la tecla (Esc) y se escribe (wq) sin los () o sea wq que quiere decir escribir y salir. Cabe aclarar que todos los pasos anteriores se deben realizar o desarrollar como usuario root.”
1.8.5      Se debe reiniciar el firewall (como usuario root) con el objetivo de poner en funcionamiento la regla anteriormente creada en el archivo (iptables), para eso se usa:
/sbin/service iptables restart
Con lo anterior se da por terminada la parte de instalación y configuración de MySQL. Creo que aun se preguntarán para que se está haciendo esto, bueno pues en la base de datos anterior es donde se realiza el registro de las “delivery” entregas de los mensajes.


1.10        Se debe ingresar al otro servidor (o sea donde no esté instalado mysql, se debe ingresar como root) y se deben instalar los paquetes necesarios para poder proceder a instalar kannel, para eso se usa:
yum install libxml2 libxml2-devel make posix bison zlib zlib-devel wget gcc mysql-devel
1.11        Para mayor orden se debe crear un usuario (kannel), se le debe asignar una clave y se debe ingresar a su directorio, para eso se usa:
useradd kannel123
passwd kannel123
cd /home/kannel

1.12        Se debe crear la estructura de directorios para poder almacenar el spool y los logs, para eso se usa:
mkdir logs
mkdir spool
cd spool
mkdir destino

1.13        Se debe descargar la version de kannel, para eso se usa:
wget http://www.kannel.org/download/kannel-snapshot.tar.gz

1.13.1   Se debe descomprimir el archive descargado y se debe ingresar a la nueva carpeta, para eso se usa:
tar xzf kannel-snapshot.tar.gz
cd kannel-snapshot
1.14        En este momento se comienza la configuración e instalación de kannel, para eso se usa:
./configure --disable-wap --prefix=/home/kannel --with-suffix="-test" --with-mysql

make

chmod 0755 gw-config


make install

1.15        Se debe ingresar al directorio donde están los ejecutables de kannel (bearerbox, smsbox) para eso se usa:
cd ..
cd sbin
1.16.1   Para crear smpp.conn se usa: si se desa agregar el soporte para ssl, se deben agregar las siguientes lineas (
group = core
... 
ssl-server-cert-file = "path/filename"
ssl-server-key-file = "path/filename"

group = smsbox
...
sendsms-port-ssl = true
)
vi smpp.conn

Pegar el siguiente contenido:
group = core
admin-port = 42424
smsbox-port = 42425
admin-password = xyxyxyx
status-password = algo
#admin-deny-ip = ""
#admin-allow-ip = ""
log-level = 0
box-deny-ip = "*.*.*.*"
box-allow-ip = "127.0.0.1"
access-log = "/home/kannel/logs/access-destino.log"
store-type = "spool"
store-location = "/home/kannel/spool/destino"
dlr-storage = mysql

include = "/home/kannel/sbin/mysql-dlr.conf"

group = smsc
smsc = smpp
smsc-id = CARLOSCAV
host = 109.239.230.44
receive-port = 12586
port = 12586
smsc-username = usuarioxxx
smsc-password = XXXXXXXX (Solicitar la clave de conexion)
#smsc-username = "usuario"
#smsc-password = "yyyyyyy"
system-type = "premium"
enquire-link-interval = 120
throughput = 80
msg-id-type = 1
log-file = "/home/kannel/logs/smpp-destino.log"
log-level = 0


# MO routing towards smppbox
#group = smsbox-route
#smsbox-id = "CELUSMSC"
#shortcode = "4242"

# SMSBOX SETUP
group = smsbox
#smsbox-id = "UDO_HTTP"
bearerbox-host = localhost
sendsms-port = 14243
immediate-sendsms-reply = true
sendsms-chars = "0123456789 +-"
log-file = "/home/kannel/logs/smsbox-destino.log"
log-level = 0
http-request-retry = 10
http-queue-delay = 60


# SEND-SMS USERS
group = sendsms-user
username = usuario_lejos
password = password_lejos
user-deny-ip = "*"
user-allow-ip = "127.0.0.1;190.71.190.100;190.71.190.50;100.230.230.40"
max-messages = 5
concatenation = true


# SERVICES
# there should be default always

group = sms-service
keyword = nop
text = "You asked nothing and I did it!"

#group = sms-service
#keyword = default
#post-url="http://ustele.semefue.com/la/ruta.php?sms=%a&mobilnummer=%p&konto=%P&operator=500-molestar&land=500"
#max-messages = 5
#concatenation = true
#accept-x-kannel-headers = true
#omit-empty = true


“Se presiona la tecla (Esc) y se escribe (wq) sin los () o sea wq que quiere decir escribir y salir. Cabe aclarar que todos los pasos anteriores se deben realizar o desarrollar como usuario root.”


1.16.2   Ahora se debe crear el archivo mysql-dlr.conf (recuerde que los archivos deben estar ubicados en el direcorio /home/kannel/sbin ) para eso se usa:
vi mysql-dlr.conf

1.16.2.1      Se debe incluir el contenido, (se debe tener especial cuidado en el cambio de la ip del servidor a donde se va a conectar) el que es el siguiente:
group = mysql-connection
id = mydlr
host = 102.138.0.25
port=3306
username = usuario_kannel
password = usuario_kannel
database = kannel
max-connections = 1

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

  cualquier duda adicional, ir a:

http://www.kannel.org/download/kannel-userguide-snapshot/userguide.html#SSL-ENABLING

“Se presiona la tecla (Esc) y se escribe (wq) sin los () o sea wq que quiere decir escribir y salir. Cabe aclarar que todos los pasos anteriores se deben realizar o desarrollar como usuario root.”

1.17             Ahora se debe abrir el puerto en el firewall editando el archivo (iptables) con el siguiente comando:
vi /etc/sysconfig/iptables

1.17.1        Se debe agregar la siguiente línea(preferiblemente después de la regla de apertura del puerto de 22 “ssh”):
-A INPUT -m state --state NEW -m tcp -p tcp --dport 14243 -j ACCEPT


“Se presiona la tecla (Esc) y se escribe (wq) sin los () o sea wq que quiere decir escribir y salir. Cabe aclarar que todos los pasos anteriores se deben realizar o desarrollar como usuario root.”

1.17.2   Se debe reiniciar el firewall (como usuario root) con el objetivo de poner en funcionamiento la regla anteriormente creada en el archivo (iptables), para eso se usa:
/sbin/service iptables restart


1.18.1   Ahora se pone correr el bearerbox, para eso se usa:
/home/kannel/sbin/bearerbox-test -P /home/kannel/sbin/smpp.conn &

1.18.2   Ahora se pone correr el smsbox, para eso se usa:
/home/kannel/sbin/smsbox-test -P /home/kannel/sbin/smpp.conn &






19 comentarios:

  1. excelente tutoria!.. podrias explicar tambien como hacer para guardar en mysql los sms recibidos y como lo hago en ubuntu server todo esto?..Gracias!

    ResponderEliminar
    Respuestas
    1. hola Anonimo, te puedes remitir al item 1.16 Creación de archivos de configuración (smpp.conn, mysql-dlr.conf) y exactamente al 1.16.2 de este tutorial. Bueno, aunque sse pueden ver los DLR (deliveries) en la base de datos que hemos creado en MySQL, por otro lado se puede verificar el trafico en el fichero de logs en /home/kannel/logs/access-...log, espero haya sido de ayuda.

      Eliminar
  2. Hola!. Bacano el tutorial. Lo monté en debian, y falta una cosa, saber si funciona. En uno de los pasos dice que necesito una clave de conexión, ¿dónde la consigo? Agradecería mucho su respuesta. Mi correo es: thaednevol AT gmail DOT com

    ResponderEliminar
    Respuestas
    1. bueno, se puede probar con la siguiente URL:
      wget http://localhost:14245/cgi-bin/sendsms?username=eurobate&password=carrot&mclass=1&from=3007194031&to=3162267180&text=Prueba&priority=1

      en donde localhost es la ip de tu servidor, y el puerto es el configurado en tu servidor para escuchar las peticiones.
      con un tail -f puedes verificar el archivo en logs
      en /home/kannel/logs/access-...log, espero haya sido de ayuda.

      Eliminar
  3. Hola excelente tutorial!..seria posible que hicieras uno con la configuracion de kannel+smpp+bearebox+smsbox+sqlbox, para enviar y recibir sms por mysql. Gracias!.

    ResponderEliminar
    Respuestas
    1. hola, este tutorial es lo que me solictas exactamente, cualquier cosa primero intenta instalarlo con las instrucciones que se tienen en este tutorial solo debes "copiar y pegar" ejecutar cada uno de los comandos y al final si revisas te daras cuenta que eso es lo que me solicitas, esto al final monta: kannel+smpp+bearebox+smsbox+sqlbox
      kannel
      smpp-box
      bearer-box
      y por ultimo mysql (sqlbox) para los DLR

      despues de arrancar el kannel das un "ps aux | grep smpp" y verás que tienes todo lo que me solicitas.

      Eliminar
  4. Hola, excelente tutorial, se puede hacer la instalación en un mismo servidor, ya que me fije que tienes dos servidores uno con el mysql y el otro donde tienes el kannel, o habrá algún inconveniente si se instalan los dos programas en un mismo servidor?? gracias de antemano por tu ayuda

    ResponderEliminar
    Respuestas
    1. Lo único que se puede hacer es a la ruta que se redirecciona el mensaje se realiza el registro en la base de datos de tu preferencia.

      Eliminar
  5. tenes algun tutorial como correr kannel el windows lo corro un pedazo y se tranca gracias

    ResponderEliminar
    Respuestas
    1. hola mi estimado, lastimosamente no tengo esa información, debo disculparme por revisar los comentarios hasta mas de un año después, lo siento.

      Eliminar
  6. Esta muy bueno, pero tengo una duda, con respecto a la url #post-url="http://ustele.semefue.com/la/ruta.php?sms=%a&mobilnummer=%p&konto=%P&operator=500-

    en general tengo que crear algo, o como se define esa ruta?

    ResponderEliminar
    Respuestas
    1. solo es usar la ip local o la ip del servidor o el nombre del serivor donde has instalado el kannel "reemplazar ustele.seefue.com con 127.0.0.1 o la ip del servidor o nombre". me disculpo por responder casi un año despues.

      Eliminar
  7. Muy buen tutorial, ya tengo lo tengo instalado :) tendras algun ejemplo de como hacer para enviar un sms de prueba?

    ResponderEliminar
    Respuestas
    1. en el tutorial se encuentra, pero te adjunto la linea así:
      http://localhost:14245/cgi-bin/sendsms?username=eurobate&password=carrot&mclass=1&from=3007194031&to=3162267180&text=Prueba&priority=1

      pido disculpas por la tardanza.

      Eliminar
  8. Que tal, he estado revisando tu tutorial, muy completo por cierto. En tu experiencia puedo conectar Kannel a un carrier para servicios de sms de dos vias y sms push?

    ResponderEliminar
    Respuestas
    1. en respuesta tardia a tu pregunta, te comento que en mi experiencia no lo he realizado, pero si tengo claro que se puede, quien me enseño esto sé que lo hizo, pero lastimosamente no tengo idea de como, le preguntaré y ampliaré la respuesta.

      Eliminar
  9. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  10. Despues de casi 4 años este tutorial sigue ayudandonos a muchos, se te agradece el tiempo que diste para realizarlo, el empeño que pusiste en crear estas configuraciones, y por compartir el conocimiento que lograste obtener... no se te puede pedir mas mi estimado.... MUCHAS GRACIAS Y FELIZ AÑO NUEVO...

    ResponderEliminar
  11. Saludos, una consulta se puede en vez de usar mysql, usar sqlite??

    ResponderEliminar

Agradezco el interes en el tema, estaré atento para poder leer su comentario.