Enviar y reicibir FAX con GNU/Linux, Asterisk, Iaxmodem y hylafax
By: Date: octubre 14, 2009 Categories: Consultoria y Manuales,Redes y Telecoms

Requerimiento para convertir tu computadora en un servidor de FAX o
darle la capacidad a tu asterisk de manipular FAX

Se requiere:

Hylafax, puede ser descargado para RedHat o Centos Aqui:

ftp://ftp.hylafax.org/binary/linux/redhat/RPMS/i386/

IaxModem

http://iaxmodem.sourceforge.net/

Ademas de:

ghostscript y sharutils

En algunas instalaciones esta incluido, en otras las tendran que
incluir. si se tratara de CentOS, con yum install ghostscript sharutils
se puede descargar de internet e instalarlo en el servidor de FAX.

GNU/Linux siempre ha tenido la capacidad de enviar y recibir FAX, antes
del Boom el Vozip y de Asterisk, esto para GNU/Linux es cosa simple y
tenemos 2 opciones para realizarlo.

Conseguir un FAX/MODEM antiguo, algunos ni los han de conocer, son esas
cajas viejas con luces que hacían ruidos en la linea telefónica, algunos
nos conectamos con eso a Internet a una súper velocidad de 14,400 kbps,
hasta un celular sin 3G en puro EDGE es 10 veces mas rápido que eso, en
fin.

Como sera difícil conseguir un FAX/Modem de hardware, usaremos el
IAXMODEM, que es básicamente un programa que se comportara como módem y
usara el protocolo IAX para conectarse al asterisk todo en software

El Iaxmodem.tar.gz debe descomprimirse y compilarse, ya que viene en
código fuente, finalmente hay que copiar el programa de iaxmodem de
forma manual a la carpeta /usr/bin, cp iaxmodem /usr/bin

Se una vez con el ejecutable de iaxmodem, habra que configurarlo para
que sepa a que servidor IAX se conectara, en este caso nuestro asterisk.

Se crea el directorio /etc/iaxmodem y luego se crea el archivo
/etc/iaxmodem/ttyIAX donde se pondran las configuraciones

device /dev/ttyIAX

port 45699
refresh 300
server localhost
peername xxx
secret yyy
cidname Fax
cidnumber xxx
codec alaw

El asterisk se prepara para recibir la conexión de un nuevo dispositivo
IAX, que en este caso sera el software que la hara de MODEM

[xxx]
username=xxx
type=friend
secret=yyy
qualify=yes
notransfer=yes
host=dynamic
context=Tu-contexto
callerid=”Virtual Fax” <xxx>
allow=all

Donde xxx es el usuario y extensión, donde yyy es la clave para esa
extensión.

Se puede automatizar el recibir FAX, pero esto es opcional, por ejemplo
cuando una maquina FAX llamada a nuestro Asterisk, ASterisk detectara
que es un FAX y lo reenviara inmediatamente a la extension de FAX sin
que la recepcionista tenga que mover un dedo

Dependiendo si usas Dahdi o Zapata, sabrás en que archivo debes colocar
esta linea

faxdetect=incoming

En tu extension.conf debes agregar la siguiente

exten => fax,1,Dial(IAX2/xxx)

Como explico, esto es opcional, si no lo agregas, simplemente la
recepcionista tendrá que transferir manualmente al a extensión de FAX
que de hecho es la forma común en prácticamente el 99% de las empresas.

Con esto Asterisk sabe que tiene un nuevo telefono IAX conectado.

Con lo anterior terminamos con Asterisk y su manejo de un FaxModem en
Software.

Lo siguiente, los que alguna vez ya enviaron y recibieron FAX lo deben
saber, por que esto ya no es nuevo.

Preparar Linux para manejar FAX y decirle cual es su FAX modem, solo que
en lugar de usar el FAX hardware físico, usara el IAXMODEM

Configurando el Hylafax

faxsetup

La mayoria de las preguntas que este programa hara se dejan en su
contenido default, salvo se quiera modificar alguna cosa.

Afinando la configuración en el archivo
/var/spool/hylafax/etc/FaxDispatch se le dice a HylaFAX a que correo
electrónico debe enviar los faxes recibidos

SENDTO=FaxMaster;

FILETYPE=pdf;

case “$DEVICE” in

ttyIAX) SENDTO=david@lastdragon.net;; # all faxes received on ttyS1

esac

Se puede afinar mas, pero con el FAxMaster y un solo correo electrónico
debería ser suficiente para la mayoria.

Finalmente hay que ligar la parte del sistema operativo que “piensa” que
tiene un FAX/MODEM de verdad con el Fax Virtual IAXMODEM.

Agregamos las siguientes 2 lineas en /etc/inittab

iax:2345:respawn:/usr/bin/iaxmodem ttyIAX &>
/var/log/asterisk/iaxmodem-ttyIAX
fax:2345:respawn:/usr/sbin/faxgetty ttyIAX

Reiniciamos todos los programas HylaFax, recargamos asterisk y el init.

telinit q

service hylafax restart

asterisk -rx reload

O tal vez simplemente sea mas cómodo un simple shutdown -r now y esperar
a que se reinicie todo el equipo.

Si todo salio como se espera, al marcar la extensión asignada al
iaxmodem, este debe dar todo de FAX y si recibe un FAX, lo codificara a
PDF y adjuntara al correo proveeido /var/spool/hylafax/etc/FaxDispatch

Enviar FAX

Enviar FAX es de hecho ya un proceso muy simple a partir de este punto.

El hecho lo anterior, ya también se esta en posibilidad de enviar faxes,
con el programa sendfax

por ejemplo:

sendfax -n -d 5511236741 miarchivo.pdf

Ese comando va a mandar el contenido del archivo “miarchivo.pdf” al
numero 5511236741.

El comando resuelve de hecho el problema, pero no se le puede pedir a un
usuario común que entre a una sesión de shell a un entorno tipo Unix a
enviar un FAX, por lo que hay que hacer un frontend

Hay varios metodos.

Crear un buzón de correo electrónico donde el numero telefónico sea el
correo por ejemplo 5511236741@miservidordefax.com
y que el pdf adjunto sea lo que
hay que enviar. El programa de esa forma construiría el comando sendfax
y lo enviaría.

Se lee fácil, todos sabemos enviar un correo electrónico y adjuntarle
archivos.

Otro método que es el que preferí, para mi gusto mas fácil de programar
ya que lo hice en exactamente 2:30 segundos.

Escribir una pagina WEB con 2 campos, un campo para el numero a marcar y
el otro para subir el archivo PDF, al darle submit o enviar, un script
en php se encargaría de construir y ejecutar el sendfax

Yo lo resolví con este segundo método y dejare el código de no mas de 10
lineas que resolvió el asunto de enviar un FAX. Esto sigue siendo fácil
para el usuario, una pagina WEB llenar campos y listo se envía el fax

Codigo para el Front End WEB

Archivo Enviar.html

Enviar FAX

<p>

<form enctype=”multipart/form-data” action=”enviar.php”
method=”post”>

<input type=”hidden” name=”MAX_FILE_SIZE” value=”1900000″>
Numero telefonico <input type=”text” name=”nfax”>
Enviar Archivo PDF:  <input name=”archivo” type=”file”>

<input type=”submit” value=”Enviar FAX”>

</form>

<p>Nota: Tu archivo no debe pasar de 2MB
<p>David Rivero: david@lastdragon.net

</p>

Archivo enviar.php

<?php

// $cmd = “sendfax ân âd “.$nfax.” “.$pdff;

$fdestino = $_FILES[‘archivo’][‘name’];
$forigen = $_FILES[‘archivo’][‘tmp_name’];
$nfax = $_POST[‘nfax’];

$copiar = “cp “.$forigen.” “.$fdestino;

$enviarfax = “sendfax -n -d “.$nfax.” “.$fdestino;

system ($copiar);
system ($enviarfax);

echo “<br />Enviando….”;

?>

Un vídeo demostrativo:

15 thoughts on “Enviar y reicibir FAX con GNU/Linux, Asterisk, Iaxmodem y hylafax

  1. Mozilla Firefox 3.0.13 Ubuntu Linux

    Muy interesante

    haber si algun dia de estos posteas un ejemplo de un server proxy para filtrar paquetes en una red, autentificar usuarios, etc..

    saludos!

  2. Mozilla Firefox 3.0.14 Windows Vista

    XD “Cada bloguer tiene los visitantes que se merece”… jajajaja

    “# Blizard-X Dice:
    Lastdragon me quito el sombrero si estoy en frente de un hacker como tu

    Jajajaja.. Pero ya enserio, es más sencillo ir a Office depot, pagar $2000, regresar, abrirlo, y conectarloa la luz. O usar como dice Mbyte windows =)

  3. Mozilla Firefox 3.0.14 Ubuntu Linux

    Brooks

    El problema que trata de resolver esto es otro, las empresas de primer mundo, no usan maquinas de FAX, ya están integradas en sus sistemas telefónicos y deben cumplir con normas de evitar la impresión innecesaria y cosas ecologicas y asi… de eso se trata

    Claro que puedes ir a compra una maquina de fax o una multi, pero…un corporativo de primer mundo debería ya tener los faxes a otro nivel

    Tan solo el desperdicio de papel

    1 imprimes tu documento para faxearlo
    2 ese documento una vez faxeado es papel de basura
    3 se recibe el fax y se imprime en otro papel… mas basura

    la solución ideal es el correo electrónico pero el spam lo ha desvirtuado, por lo que el fax sigue siendo el método SERIO de hacer contacto entre empresas y al menos seguirá siendo en las próximas décadas

  4. Mozilla Firefox 3.5.3 Windows XP

    buen post , como lo comenta el admin del site , es un buen metodo para ahorrar papel , optimizar recursos y ayudar a la ecologia , pero si concuerdo con mrs brooks que un multi-funcional ( el cual sirve de scanner , impresora , fax , copiadora por 1500 pesos ) es la solucion mas “adecuada” y tradicional la cual cualquier usuario puede usar y sin intervencion de un ordenador

  5. Internet Explorer 7.0 Windows Vista

    Juan las empresas de primer mundo y las de cualquier mundo usan Windows como estacion de trabajo y usan la version profesional, equivalente a NT WorkStation, pero…. en sus sites ni de broma usan Windows, excepto para el Active directory y cosas sin importancia consideradas juguetes, cuando mucha responsabilidad a una maquina Windows Server solo se le confia de Servidor de Archivos y de alguna aplicacion rara que el programador no haya sabido programar en algo mas serio.

    De lo contrario Internet mismo seria dominado por Windows, todas las empresas serias de Internet, las que saben en que sistema confiar, no usan Windows ni Internet information server, la respuesta de que usan, seguro ya la sabes

    Ademas el uso de Windows casi califica de Pyme e inexperta a cualquier compañia, cualquier CEO tendria verguenza de mostrar su site en ese estado o preferiria ni siquiera tenerlo y pagarle hosting a sites profesionales que NO usaran Windows

  6. Internet Explorer 7.0 Windows Vista

    Ergoz

    Por supuesto, no se puede esperar que una pyme cuente con un sistema de faxes a ese nivel, usaran una multifuncinal, eso es por que una pyme no puede pagarle a un experto que haga su infraestructura de primer mundo.

    Tambien hay que recordar que una Pyme no tiene que cumplir con el ISO 9000 y sabra el cielo que otra certificacion para ser definida como empresa limpia y ecologica.

  7. Mozilla Firefox 3.6.13 Ubuntu Linux

    Buen día,

    En la empresa actualmente tienen una línea de teléfono análoga que conectada a una fax, lo cual la usan solo para enviar, ya que la recepción de fax se hace de otra forma.
    Tenemos una red de 10 computadores y tendría a disposición un PC con Pentium IV con 2 GB de RAM, para configurar el envío de FAX y me gustaría saber sí con este equipo y las configuraciones que expones podría usar la línea análoga y PC para el envío de FAX?
    y lo otro es que tendría que crear un portal donde las 10 personas pudiesen acceder y poder enviar fax, es decir tendría que configurarlo de tal forma que fuese visible administrable desde la web.

    Muchas gracias por la atención y colaboración.

    PD: Aclaro que soy nuevo en este campo, Son Ing. Forestal.

  8. Google Chrome 14.0.835.202 Ubuntu Linux

    Hola groso, buenisimo tu post,
    seria mucho pedir que expliques como usar el script envia.php para que envie el fax enivando un mail …

    tipo 1231321 fax domino com

    yo uso postfix

    Gracias

  9. Google Chrome 41.0.2272.89 Windows 7

    ola tiene passo a passo como fazer a instalacion do iaxmodem + hylafax + asterisk 11 on centos 6.5 64 bits ?

    Gracias

Responder a Sergio Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *