Hylafax + IAXmodem en VIVAit Call

De VIVAitwiki
Ir a la navegaciónIr a la búsqueda

1 INTRODUCCIÓN

Mdtel instala con su producto VIVAit Call una solución de fax sencilla basada en dos elementos, un servidor Hylafax, y un cliente YajHFC en cada ordenador de usuario.

El presente documento está referido a la versión del cliente YajHFC para equipos con sistema operativo Windows 32+64 bits, y muestra como Instalar y configurar Hylafax + IAXmodem en VIVAit Call.

2 DISEÑO DE LA SOLUCIÓN

2.1 Esquema de la Solución

Arquitectura.jpg

Para que el sistema funcione con VIVAit Call necesitamos que los PC’s de usuario tengan instalado el cliente YajHFC. A efectos prácticos existe una nueva impresora que envía el fax al exterior. El servidor Hylafax envía el fax a través de sus extensiones IAX modem, dadas de alta en el sistema VIVAit Call utilizan la plantilla para IAX fax

El sistema VIVAit Call constituye la conexión entre el servidor Hylafax y el exterior

3 CONFIGURACIÓN DE VIVAit Call.

Para que IAXmodem funcione es necesario crear tantas extensiones IAX como módem se vayan a usar. Por defecto el sistema lleva configurado un módem (ttyIAX00).


Para crear las extensiones:

  • En el portal en VIVAit Call / Dispositivos / Clases de dispositivos crear una clase como la siguiente (si en el momento de crearla existe la subclase IAX, elegirla, si no elegir cualquiera que no sea SIP, por ejemplo, H323):


2.jpg


  • En el portal en VIVAit Call / Dispositivos / Extensiones crear las extensiones IAX. El nodo deberá ser aquel donde esté instalado Hylafax e IAXmodem. Como dispositivo seleccionar la clase creada en el paso anterior.


2Bis.jpg


3.jpg


Crear las prerutas:


4.jpg


Lo redirigiremos a un VDN corporativo para poder así realizar varios dialies a las extensiones IAX. Si solo tenemos una extensión IAX pues la pre-ruta seria con destino extensión y el número de extensión IAX. Mientras no exista un fichero iax_WEB.conf, que se genere desde el portal, las extensiones creadas se deberán crear manualmente en el archivo iax_Estatico.conf → Ver apartado de personalización

4 INSTALACIÓN DEL SERVIDOR HYLAFAX

Situarse en el directorio /usr/src

  • Es necesario instalar los siguientes paquetes. Además, se requiere tener instalado y configurado exim4:
 apt-get install iaxmodem libtiff-tools ghostscript jbigkit-bin hylafax-client
  • Copiar el fichero hylafax-5.5.8.tar.gz a /usr/src
  • Descomprimir: tar -xvzf hylafax-5.5.8.tar.gz
  • Entrar al directorio hylafax-5.5.8
    • Ejecutar el comando “./configure”. A todas las preguntas responder con la respuesta por defecto (basta con pulsar intro) excepto a las siguientes:
      • Are these ok [yes]? no
      • PostScript imager program [/usr/local/bin/gs]? /usr/bin/gs
      • Default page size [North American Letter]? A4
  • Ejecutar los comandos make y make install
  • Si todo ha ido bien (no hay ningún error en pantalla), ejecutar el comando faxsetup. Este comando configurará los aspectos generales de Hylafax. A todas las preguntas responder con la respuesta por defecto. Menos cuando pregunta si queremos que funcione como modem.
You do not appear to have any modems configured for use.  Modems are configured for use with HylaFAX with the faxaddmodem(8C) command. Do you want to run faxaddmodem to configure a modem [yes]? > no
  • Subir a /home/sat la carpeta config y el script que nos aporta desarrollo.
  • Dar permisos de ejecución.
  • Modificar archivos en carpeta config para personalizar instalación (duplicar archivos para más de un modem)
 #!/bin/bash
 echo "Copiando archivos de configuración a sus ubicaciones."
 echo "Copiando archivos de iaxmodem a /etc/iaxmodem."
 cp config/iaxmodem/ttyIAX* /etc/iaxmodem/
 echo "......................................"
 echo "Copiando script de inicio de hylafax"
 chmod 755 /etc/init.d/hylafax
 echo "......................................"
 echo "Copiando configuración de HylaFAX a /var/spool/hylafax/etc"
 cp config/hylafax/etc/* /var/spool/hylafax/etc/
 chmod 755 /var/spool/hylafax/etc/FaxAccounting
 chmod 755 /var/spool/hylafax/etc/FaxDispatch
 echo "......................................"
 echo "Parando HylaFAX"
 /etc/init.d/hylafax stop
 echo "Parando IAXmodem”
 /etc/init.d/iaxmodem stop
 echo "Iniciando IAXmodem"
 /etc/init.d/iaxmodem start
 echo "Iniciando HylaFAX"
 /etc/init.d/hylafax start


Es necesario modificar los siguientes archivos (se pueden modificar después por si nos equivocamos poder empezar de nuevo):

 /home/sat/config/hylafax/etc/config.ttyIAXnn → estos son exactamente iguales, define parámetros modem
 /home/sat/config//iaxmodem/ttyIAXnn
 /home/sat/config/hylafax/etc/FaxDispatch
 /home/sat/config/hylafax/etc/hosts.hfaxd
  • Ejecutar el script Instalar.sh. Este script copiará los archivos de configuración personalizados a sus ubicaciones definitivas y reiniciará IAXmodem e Hylafax.


4.1 Añadir usuario

4.1.1 Crear un usuario para que se conecte el cliente Hylafax

Añadimos un usuario para usarlo posteriormente en la configuración del "cliente":

Comando faxadduser -p clave usuario

faxadduser -p usuario1 usuario1
faxadduser -p usuario2 usuario2

Para comprobar que los usuarios se han creado correctamente deberían aparecer en el fichero /var/spool/hylafax/etc/hosts.hfaxd

^usuario2@::$1$J9..z2ie$0NJwrUV8yLZeZ/0dufYCf/
^usuario1@::$1$J9..pfIH$PyiLtme649QbcNdVSsKkf.

4.1.2 Dahdi

En /etc/asterisk/chan_dahdi.conf:

ERROR: [Feb 9 12:29:46] WARNING[22718][C-0000015c]: sig_pri.c:8291 sig_pri_call: Unrecognized prilocaldialplan NPI modifier: a

Oh, right, priLOCALdialplan. What's in CALLERID(num) ? Legitimate characters for the PSTN are numbers (and ABCD) only, so other characters are invalid, making them candidates for usage in modifying prilocaldialplan.

Para que no ocurra: Añadir en el /etc/asterisk/chan_dahdi.conf cuando configuremos DAHDI:

faxdetect=both  ← No añadir en instalaciones de Vodafone porque los faxes ni entran ni salen.
pridialplan=unknown
priLOCALdialplan=unknownAÑADIR ESTA LÍNEA
Core stop now, /etc/init.d/dahdi stop / start, , /etc/init.d/asterisk start


4.2 Personalización

Los archivos contienen una configuración básica. Para personalizarlos conforme a las características del cliente será necesario cambiar los siguientes ficheros (algunos o todos):

/var/spool/hylafax/etc/FaxDispatch

Este archivo es el encargado de distribuir los faxes recibidos siguiendo unas reglas. Los parámetros configurables son:

  • SENDTO: El primer sendto indica la dirección de correo electrónico por defecto (si no se cumple ninguna regla) a la que enviar los faxes.
  • case “$DNIS” …: Este apartado tiene dos partes, el número marcado y la dirección de correo electrónico.
    • Número marcado: Es el número indicado delante del paréntesis. Si el cliente dispone de varios faxes, se puede discriminar dependiendo del número de fax entrante. DDI reservado para el fax
    • SENDTO: Dirección de correo electrónico a la que se enviará el fax en el caso de que haya entrado por el número indicado en el campo Número marcado.
SENDTO=ivan.matarrubias@mdtel.es
FROMADDR=centralitafax@mdtel.es
FILETYPE=pdf
LANG=es_ES

CAMPOS=$CALLID4
POSSEPA=$(expr index "$CAMPOS" -)

if [ $POSSEPA -gt 0 ]; then
       DNIS=${CAMPOS:0:$POSSEPA-1}
fi

case "${DNIS}" in
9001)
       SENDTO=viva.postventa@mdtel.es;
       ;;

9002)
       SENDTO=viva.preventa@mdtel.es;
       ;;
esac


El DNIS puede ser un DDI o un VDN.

De esta forma no se bloquean tanto los modem y pueden entrar varios. Ya hay que analizar que es necesita cada empresa. Si van a correos distintos, etc.


;-----------------------------------------------------------------------------------------------------------------
;-----------------------------------------------------------------------------------------------------------------
[Cen_VDN_9001]
;-----------------------------------------------------------------------------------------------------------------
;-----------------------------------------------------------------------------------------------------------------

;----------------------------------------------------------------------------------------------------------------
;----------------------- VDN 9001 ----------------------------------
;----------------------------------------------------------------------------------------------------------------
exten => _X.,1,NoOp(MDVDN_9001*****EXTEN=${EXTEN}**CID=${CALLERID(NUM)}**UCID=${UCID}*)

 same =>     n,Dial(IAX2/2002/${EXTEN}-${UCID},10,eort)
 same =>     n,Dial(IAX2/2003/${EXTEN}-${UCID},10,eort)

 same =>     n,Hangup(17)
include => Cen_finLlamada

;-----------------------------------------------------------------------------------------------------------------
;-----------------------------------------------------------------------------------------------------------------
[Cen_VDN_9002]
;-----------------------------------------------------------------------------------------------------------------
;-----------------------------------------------------------------------------------------------------------------

;----------------------------------------------------------------------------------------------------------------
;----------------------- VDN 9002 ----------------------------------
;----------------------------------------------------------------------------------------------------------------
exten => _X.,1,NoOp(MDVDN_9002*****EXTEN=${EXTEN}**CID=${CALLERID(NUM)}**UCID=${UCID}*)

same =>     n,Dial(IAX2/2003/${EXTEN}-${UCID},10,eort)

same =>     n,Hangup(17)

include => Cen_finLlamada


/etc/init/iaxmodem.conf -> Crearlo

Encargado de arrancar los iaxmodem en el inicio, donde nn es cada iaxmodem creado

start on startup
respawn
exec /usr/bin/iaxmodem ttyIAXnn


/etc/init/ttyIAXnn.conf

Encargado de asociar los iaxmodem al fax en el inicio, donde nn es cada ttyIAX creado

start on startup
respawn
exec /usr/local/sbin/faxgetty ttyIAXnn


/var/spool/hylafax/etc/config.ttyIAX00


Contiene la configuración del módem para Hylafax. Los parámetros que se cambiarán más habitualmente son:

  • CountryCode: Contiene el código telefónico del país. Habitualmente será el 34
  • AreaCode: Es el antiguo prefijo provincial
  • FAXNumber: Número identificativo del fax ante otros faxes
  • LocalIdentifier: Cadena que se usará para conformar el campo TSI. Suele contener el nombre de la empresa o departamento.


Para que los cambios sean efectivos es necesario reiniciar Hylafax ( “/etc/init.d/hylafax stop” y “/etc/init.d/hylafax start”)

Modificaremos solo una parte del fichero:

AreaCode: 93

FAXNumber: 93xxxxxxx

LocalIdentifier: Nombre-EmpresaEsta información aparece en la cabecera del fax (a la izquierda).


/var/spool/hylafax/etc/hosts.hfaxd

Este fichero indica los puestos desde los que está permitido enviar faxes. Para personalizarlo basta con cambiar la última entrada para adecuarlo a la red de datos (donde están los PC's) del cliente. Por ejemplo: 172.25.[128-129].[0-9]+ Permitiría a las redes 172.25.128.0 y 172.25.129.0. localhost 127.0.0.1 172.25.[128-129].[0-9]+


/etc/iaxmodem/ttyIAXnn

Los iaxmodem no son más que softphones que se registran contra Asterisk. Los parámetros configurables son los siguientes:

  • device: Nombre del dispositivo físico (/dev/ttyIAX00, /dev/ttyIAX01, /dev/ttyIAX02, etc.). Sólo se cambiará en el caso de que se esté añadiendo un nuevo módem.
  • server: Dirección IP del servidor Asterisk
  • peername: Nombre de la extensión a la que se conectará. Tiene que coincidir con el campo username de la extensión definida en iax.conf
  • secret: Clave de la extensión. Tiene que coincidir con el campo secret de la extensión definida en iax.conf.

Ejemplo

device /dev/ttyIAXnn
owner asterisk:asterisk
mode 660
port 45690   Puertos diferentes del 4569 de IAX
refresh 7200   Ojo si dejas 60, cada 60s se registra de nuevo…
server 172.25.11.222
peername 7630
secret igual clave secret extensión fichero iax.conf
cidname Cliente Fax
cidnumber 7630  Extensión
codec slinear

root@hylafax:/etc/asterisk# cat /etc/iaxmodem/ttyIAX00
device /dev/ttyIAX00
owner asterisk:asterisk
mode 660
port 45690
refresh 7200
server 172.25.129.107
peername 2002
secret 1111
cidname IAX Modem 0
cidnumber 2002
codec slinear

root@hylafax:/etc/asterisk# cat /etc/iaxmodem/ttyIAX01
device /dev/ttyIAX01
owner asterisk:asterisk
mode 660
port 45691
refresh 7200
server 172.25.129.107
peername 2003
secret 1111
cidname IAX Modem 0
cidnumber 2003
codec slinear


Si va a existir tarificador TARGET-WEB es VITAL: En callerid=2003 (Solo nº extensión) en el archivo iax_Estatico.conf y en /etc/iaxmodem/ttyIAX00 cidnumber 2003


/etc/asterisk/iax.conf

Contiene las extensiones dadas de alta en la instalación en el paso 1.3. Al final del fichero se encuentra la extensión de ejemplo. Los parámetros a cambiar son:

[general]
bindport=4569
bindaddr=172.25.129.107
minregexpire = 7200    Valores superiores a 60s, no para de des/registrarse.
maxregexpire = 7200   Valores superiores a 60s, no para de des/registrarse.
calltokenoptional = 0.0.0.0/0.0.0.0 Valores correctos de cada empresa
permit=0.0.0.0/0.0.0.0  Valores correctos de cada empresa
 

[2002]
username=2002
type=friend
secret=1111
qualify=no
transfer=no
host=dynamic
maxregexpire=3600
minregexpire=3600
context=Cen_Inicio_FAX
callerid=2002
allow=all
requirecalltoken=no
setvar=ID_DISPOSITIVO=8
directmedia=no

[2003]
username=2003
type=friend
secret=1111
qualify=no
transfer=no
host=dynamic
maxregexpire=3600
minregexpire=3600
context=Cen_Inicio_FAX
callerid=2003
allow=all
requirecalltoken=no
setvar=ID_DISPOSITIVO=9
directmedia=no

Para actualizar los cambios es necesario ejecutar: asterisk -rx “iax2 reload”

Revisar que iax.conf tenga el include: #include "ext_InicioLlamada_ExtIAX.conf"

*requirecalltoken=no → Rebaja la seguridad de IAX para la extensión si no lo ponemos no funciona IAXmodem.


4.2.1 Añadir más módems

El sistema viene preparado con un sólo módem. Para añadir más necesitamos:

  1. Crear tantas extensiones (paso 1.3 de la instalación) como módems se vayan a añadir.
  2. Editar el fichero /etc/asterisk/iax.conf añadiendo las nuevas extensiones. Bastará con copiar la existente y cambiar los parámetros de extensión ([XXXX]), username, secret y setvar.
  3. Crear tantos ficheros /etc/iaxmodem/ttyIAXnn como módems se vayan a añadir, copiando el fichero existente, siendo nn un número correlativo (00, 01, 02, etc.). En estos ficheros se deberán cambiar los parámetros indicados en el apartado dedicado a este fichero.
  4. Crear tantos ficheros /var/spool/hylafax/etc/config.ttyIAXnn como módems se vayan a añadir, copiando el fichero existente, siendo nn un número correlativo (00, 01, 02, etc.). Normalmente los ficheros son iguales en contenido, cambiando sólo el nombre.


 ***************************************************************************

Para que los cambios sean efectivos es necesario ejecutar los siguientes comandos:

  • asterisk -rx “iax2 reload”
  • /etc/init.d/hylafax stop
  • /etc/init.d/iaxmodem stop
  • /etc/init.d/iaxmodem start
  • /etc/init.d/hylafax start

5 Logs

Los encontaremos en:

 /var/spool/hylafax/log → podemos ver los logs de los faxes, importante para ver fallos.

 /var/spool/hylafax/recvq → vemos los faxes recibidos y en sendq los enviados.

 /var/spool/hylafax/etc/xferfaxlog → Log general


5.1 Cuando todo está bien y sigue fallando

Primero buscamos procesos zombies y los matamos:

 ps aux | grep ttyIA  kill -9 nºproceso


Iniciamos de nuevo hylafax e iaxmodem:

 /etc/init.d/hylafax stop  /etc/init.d/iaxmodem stop  /etc/init.d/iaxmodem start  /etc/init.d/hylafax start


Comando faxstat: Deben estar en Running and idle.

Si reiniciamos y no funciona → es posible que existena procesos dormidos que bloquean los modem.

Buscamos estos procesos y los matamos. Volvemos a iniciar hylafax e iaxmodem.

En el siguiente ejemplo vemos como todos los modem se ponen en “Running and idle”.

5Bis.jpg


6 Como configurar grupos de usuarios

Hemos visto una instalación con un servidor de fax y en los usuarios el cliente Yajh; los usuarios estaban acostumbrados a poder descargarse los faxes no a buscarlos en el correo. Al usar ese mismo cliente apuntando a nuestro servidor de fax sucedía que ven todos los faxes, no solo los destinados a cada departamento y por otro lado no podían descargarlos como solían hacer.

Básicamente el tema consiste en crear un grupo nuevo para cada usuario de fax y cada vez que llega un fax asignar ese grupo al tif generado y cambiar el permiso para que sea accesible por el grupo:

Por ejemplo, para el usuario faxuser1048:

Creamos los grupos de los usuarios (addgroup faxuser1048)

Ponemos el gid creado (v.g. 1001) en el segundo campo del fichero de hosts.hfaxd ^faxuser1048@:1001:$1$J9....Ub$EA6grphIBebCng8BD0KVv0

Modificamos la entrada correspondiente en FaxDispatch

SENDTO=ivan.matarrubias@mdtel.es
FROMADDR=centralitafax@mdtel.es
FILETYPE=pdf
LANG=es_ES
CAMPOS=$CALLID4
POSSEPA=$(expr index "$CAMPOS" -)

if [ $POSSEPA -gt 0 ]; then
        DNIS=${CAMPOS:0:$POSSEPA-1}
fi

case "${DNIS}" in
9001)
        SENDTO=viva.postventa@mdtel.es;
        sudo /bin/chgrp 1001 $FILE
        chmod g+rw $FILE
        ;;

9002)
        SENDTO=viva.postventa@mdtel.es;
        sudo /bin/chgrp 1000 $FILE
        chmod g+rw $FILE
        ;;
esac


Esto implica también la siguiente linea en /etc/sudoers (visudo):

uucp ALL=(root) NOPASSWD: /bin/chgrp


Tras probar, en un fax recibido no se ha aplicado el cambio de grupo. Documentación: (http://www.hylafax.org/index.php?title=Handbook:Advanced_Server_Configuration:Job_Protection&oldid=3297#HylaFAX_permission_model) → Hace falta poner esta línea en visudo

Defaults:uucp !requiretty

De esta forma cada usuario sólo ve los faxes del grupo asignado y además se los puede descargar.

Ya se pueden descargar los faxes recibidos y sólo los destinados al usuario concreto.

Pero todavía se siguen viendo el listado de todos los faxes. Falta poner estos dos parámetros:


Versión 6.0.5 ó superior:

PublicJobQ:  false
PublicRecvQ:  false

Versión 5.5.8:

JobProtection: 0640
RecvqProtection: 0440

En el fichero hfaxd.conf (está en /usr/local/lib/fax/hfaxd.conf)

Más información en:

http://www.hylafax.org/index.php?title=Handbook:Advanced_Server_Configuration:Job_Protection&oldid=3297


6Bis.jpg

7 Cliente Fax VIVAit Call YajHFC.

7.1 Instalación del cliente YajHFC en los PC's de los usuarios

Una vez instalado el servidor Hylafax será necesario instalar el cliente en cada pc de usuario.

Para ello buscamos en Google “yajhfc”.


Busqueda en la web.jpg


Accedemos a la página que nos proporciona la versión actual:


Buscar Ultima version.jpg


En esta página seleccionamos la versión que nos interesa en función del sistema operativo que tiene instalado el pc de usuario, en nuestro caso Windows 10.


Version para Windows.jpg


Cuando disponemos del fichero de instalación podemos ejecutarlo.

Durante la instalación del programa tenemos que seleccionar el idioma para la instalación:


Seleccionar idioma instalacion.jpg


Es muy importante seleccionar el componente REDMON durante la instalación.


Seleccionar Redmon MUY IMPORTANTE.jpg


Para que la aplicación permita trabajar con distintos tipos de ficheros es importante seleccinar la instalación de GhostScript.


GHOSTSCRIPT para convertir MUY IMPORTANTE.jpg


Por último pincheremos en el botón instalar.


Ultima ventana de la instalación.jpg


La primera vez que se abre la aplicación hay que configurar, en el menú extras/opciones/servidores/predeterminado, tres campos:

Nombre del equipo: nombre o dirección IP del equipo en que se ha instalado el servidor Hylafax.

Nombre del usuario: nombre del usuario dado de alta en el servidor Hylafax.

Contraseña: Contraseña del usuario configurado en el servidor Hylafax.


Configuracion.jpg


La siguiente imagen muestra un ejemplo de configuración de estos tres campos:


Ejemplo.jpg


Una vez terminada la instalación del cliente podemos ver que se ha instalado una nueva impresora:


Impresora.jpg


Esta impresora nos permite enviar por fax un documento desde una aplicación de usuario (por ejemplo, el paquete Office) desde la que podemos imprimir y seleccionar dicha impresora.


7.2 Ejemplos de mensajes de error.

Entre los posibles mensajes de error se encuentra el siguiente:


Error de permisos de lectura en la entrada de un fax.jpg


Se produce cuando el usuario no tiene permisos de acceso en el servidor para leer el fax recibido.