Hylafax + IAXmodem en VIVAit Call
Sumario
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
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):
- 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.
Crear las prerutas:
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 el comando “./configure”. A todas las preguntas responder con la respuesta por defecto (basta con pulsar intro) excepto a las siguientes:
- 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=unknown → AÑ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-Empresa → Esta 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:
- Crear tantas extensiones (paso 1.3 de la instalación) como módems se vayan a añadir.
- 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.
- 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.
- 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”.
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:
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”.
Accedemos a la página que nos proporciona la versión actual:
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.
Cuando disponemos del fichero de instalación podemos ejecutarlo.
Durante la instalación del programa tenemos que seleccionar el idioma para la instalación:
Es muy importante seleccionar el componente REDMON durante la instalación.
Para que la aplicación permita trabajar con distintos tipos de ficheros es importante seleccinar la instalación de GhostScript.
Por último pincheremos en el botón instalar.
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.
La siguiente imagen muestra un ejemplo de configuración de estos tres campos:
Una vez terminada la instalación del cliente podemos ver que se ha instalado una nueva impresora:
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:
Se produce cuando el usuario no tiene permisos de acceso en el servidor para leer el fax recibido.