{"id":396,"date":"2009-10-14T03:06:42","date_gmt":"2009-10-14T09:06:42","guid":{"rendered":"http:\/\/www.lastdragon.net\/?p=396"},"modified":"2015-03-22T13:01:25","modified_gmt":"2015-03-22T19:01:25","slug":"enviar-y-reicibir-fax-con-gnulinux-asterisk-iaxmodem-y-hylafax","status":"publish","type":"post","link":"https:\/\/www.lastdragon.net\/?p=396","title":{"rendered":"Enviar y reicibir FAX con GNU\/Linux, Asterisk, Iaxmodem y hylafax"},"content":{"rendered":"<p>Requerimiento para convertir tu computadora en un servidor de FAX o<br \/>\ndarle la capacidad a tu asterisk de manipular FAX<\/p>\n<p>Se requiere:<\/p>\n<p>Hylafax, puede ser descargado para RedHat o Centos Aqui:<\/p>\n<p>ftp:\/\/ftp.hylafax.org\/binary\/linux\/redhat\/RPMS\/i386\/<\/p>\n<p>IaxModem<\/p>\n<p>http:\/\/iaxmodem.sourceforge.net\/<\/p>\n<p>Ademas de:<\/p>\n<p>ghostscript y sharutils<\/p>\n<p>En algunas instalaciones esta incluido, en otras las tendran que<br \/>\nincluir. si se tratara de CentOS, con yum install ghostscript sharutils<br \/>\nse puede descargar de internet e instalarlo en el servidor de FAX.<\/p>\n<p>GNU\/Linux siempre ha tenido la capacidad de enviar y recibir FAX, antes<br \/>\ndel Boom el Vozip y de Asterisk, esto para GNU\/Linux es cosa simple y<br \/>\ntenemos 2 opciones para realizarlo.<\/p>\n<p>Conseguir un FAX\/MODEM antiguo, algunos ni los han de conocer, son esas<br \/>\ncajas viejas con luces que hac\u00edan ruidos en la linea telef\u00f3nica, algunos<br \/>\nnos conectamos con eso a Internet a una s\u00faper velocidad de 14,400 kbps,<br \/>\nhasta un celular sin 3G en puro EDGE es 10 veces mas r\u00e1pido que eso, en<br \/>\nfin.<\/p>\n<p>Como sera dif\u00edcil conseguir un FAX\/Modem de hardware, usaremos el<br \/>\nIAXMODEM, que es b\u00e1sicamente un programa que se comportara como m\u00f3dem y<br \/>\nusara el protocolo IAX para conectarse al asterisk todo en software<\/p>\n<p>El Iaxmodem.tar.gz debe descomprimirse y compilarse, ya que viene en<br \/>\nc\u00f3digo fuente, finalmente hay que copiar el programa de iaxmodem de<br \/>\nforma manual a la carpeta \/usr\/bin, cp iaxmodem \/usr\/bin<\/p>\n<p>Se una vez con el ejecutable de iaxmodem, habra que configurarlo para<br \/>\nque sepa a que servidor IAX se conectara, en este caso nuestro asterisk.<\/p>\n<p>Se crea el directorio \/etc\/iaxmodem y luego se crea el archivo<br \/>\n\/etc\/iaxmodem\/ttyIAX donde se pondran las configuraciones<\/p>\n<p>device \/dev\/ttyIAX<\/p>\n<p>port 45699<br \/>\nrefresh 300<br \/>\nserver localhost<br \/>\npeername xxx<br \/>\nsecret yyy<br \/>\ncidname Fax<br \/>\ncidnumber xxx<br \/>\ncodec alaw<\/p>\n<p>El asterisk se prepara para recibir la conexi\u00f3n de un nuevo dispositivo<br \/>\nIAX, que en este caso sera el software que la hara de MODEM<\/p>\n<p>[xxx]<br \/>\nusername=xxx<br \/>\ntype=friend<br \/>\nsecret=yyy<br \/>\nqualify=yes<br \/>\nnotransfer=yes<br \/>\nhost=dynamic<br \/>\ncontext=Tu-contexto<br \/>\ncallerid=&#8221;Virtual Fax&#8221; &lt;xxx&gt;<br \/>\nallow=all<\/p>\n<p>Donde xxx es el usuario y extensi\u00f3n, donde yyy es la clave para esa<br \/>\nextensi\u00f3n.<\/p>\n<p>Se puede automatizar el recibir FAX, pero esto es opcional, por ejemplo<br \/>\ncuando una maquina FAX llamada a nuestro Asterisk, ASterisk detectara<br \/>\nque es un FAX y lo reenviara inmediatamente a la extension de FAX sin<br \/>\nque la recepcionista tenga que mover un dedo<\/p>\n<p>Dependiendo si usas Dahdi o Zapata, sabr\u00e1s en que archivo debes colocar<br \/>\nesta linea<\/p>\n<p>faxdetect=incoming<\/p>\n<p>En tu extension.conf debes agregar la siguiente<\/p>\n<p>exten => fax,1,Dial(IAX2\/xxx)<\/p>\n<p>Como explico, esto es opcional, si no lo agregas, simplemente la<br \/>\nrecepcionista tendr\u00e1 que transferir manualmente al a extensi\u00f3n de FAX<br \/>\nque de hecho es la forma com\u00fan en pr\u00e1cticamente el 99% de las empresas.<\/p>\n<p>Con esto Asterisk sabe que tiene un nuevo telefono IAX conectado.<\/p>\n<p>Con lo anterior terminamos con Asterisk y su manejo de un FaxModem en<br \/>\nSoftware.<\/p>\n<p>Lo siguiente, los que alguna vez ya enviaron y recibieron FAX lo deben<br \/>\nsaber, por que esto ya no es nuevo.<\/p>\n<p>Preparar Linux para manejar FAX y decirle cual es su FAX modem, solo que<br \/>\nen lugar de usar el FAX hardware f\u00edsico, usara el IAXMODEM<\/p>\n<p>Configurando el Hylafax<\/p>\n<p>faxsetup<\/p>\n<p>La mayoria de las preguntas que este programa hara se dejan en su<br \/>\ncontenido default, salvo se quiera modificar alguna cosa.<\/p>\n<p>Afinando la configuraci\u00f3n en el archivo<br \/>\n\/var\/spool\/hylafax\/etc\/FaxDispatch se le dice a HylaFAX a que correo<br \/>\nelectr\u00f3nico debe enviar los faxes recibidos<\/p>\n<p>SENDTO=FaxMaster;<\/p>\n<p>FILETYPE=pdf;<\/p>\n<p>case &#8220;$DEVICE&#8221; in<\/p>\n<p>ttyIAX) SENDTO=david@lastdragon.net;; # all faxes received on ttyS1<\/p>\n<p>esac<\/p>\n<p>Se puede afinar mas, pero con el FAxMaster y un solo correo electr\u00f3nico<br \/>\ndeber\u00eda ser suficiente para la mayoria.<\/p>\n<p>Finalmente hay que ligar la parte del sistema operativo que &#8220;piensa&#8221; que<br \/>\ntiene un FAX\/MODEM de verdad con el Fax Virtual IAXMODEM.<\/p>\n<p>Agregamos las siguientes 2 lineas en \/etc\/inittab<\/p>\n<p>iax:2345:respawn:\/usr\/bin\/iaxmodem ttyIAX &amp;&gt;<br \/>\n\/var\/log\/asterisk\/iaxmodem-ttyIAX<br \/>\nfax:2345:respawn:\/usr\/sbin\/faxgetty ttyIAX<\/p>\n<p>Reiniciamos todos los programas HylaFax, recargamos asterisk y el init.<\/p>\n<p>telinit q<\/p>\n<p>service hylafax restart<\/p>\n<p>asterisk -rx reload<\/p>\n<p>O tal vez simplemente sea mas c\u00f3modo un simple shutdown -r now y esperar<br \/>\na que se reinicie todo el equipo.<\/p>\n<p>Si todo salio como se espera, al marcar la extensi\u00f3n asignada al<br \/>\niaxmodem, este debe dar todo de FAX y si recibe un FAX, lo codificara a<br \/>\nPDF y adjuntara al correo proveeido \/var\/spool\/hylafax\/etc\/FaxDispatch<\/p>\n<p>Enviar FAX<\/p>\n<p>Enviar FAX es de hecho ya un proceso muy simple a partir de este punto.<\/p>\n<p>El hecho lo anterior, ya tambi\u00e9n se esta en posibilidad de enviar faxes,<br \/>\ncon el programa sendfax<\/p>\n<p>por ejemplo:<\/p>\n<p>sendfax -n -d 5511236741 miarchivo.pdf<\/p>\n<p>Ese comando va a mandar el contenido del archivo \u201cmiarchivo.pdf\u201d al<br \/>\nnumero 5511236741.<\/p>\n<p>El comando resuelve de hecho el problema, pero no se le puede pedir a un<br \/>\nusuario com\u00fan que entre a una sesi\u00f3n de shell a un entorno tipo Unix a<br \/>\nenviar un FAX, por lo que hay que hacer un frontend<\/p>\n<p>Hay varios metodos.<\/p>\n<p>Crear un buz\u00f3n de correo electr\u00f3nico donde el numero telef\u00f3nico sea el<br \/>\ncorreo por ejemplo 5511236741@miservidordefax.com<br \/>\n<mailto :5511236741@miservidordefax.com> y que el pdf adjunto sea lo que<br \/>\nhay que enviar. El programa de esa forma construir\u00eda el comando sendfax<br \/>\ny lo enviar\u00eda.<\/p>\n<p>Se lee f\u00e1cil, todos sabemos enviar un correo electr\u00f3nico y adjuntarle<br \/>\narchivos.<\/p>\n<p>Otro m\u00e9todo que es el que prefer\u00ed, para mi gusto mas f\u00e1cil de programar<br \/>\nya que lo hice en exactamente 2:30 segundos.<\/p>\n<p>Escribir una pagina WEB con 2 campos, un campo para el numero a marcar y<br \/>\nel otro para subir el archivo PDF, al darle submit o enviar, un script<br \/>\nen php se encargar\u00eda de construir y ejecutar el sendfax<\/p>\n<p>Yo lo resolv\u00ed con este segundo m\u00e9todo y dejare el c\u00f3digo de no mas de 10<br \/>\nlineas que resolvi\u00f3 el asunto de enviar un FAX. Esto sigue siendo f\u00e1cil<br \/>\npara el usuario, una pagina WEB llenar campos y listo se env\u00eda el fax<\/p>\n<p>Codigo para el Front End WEB<\/p>\n<p>Archivo Enviar.html<\/p>\n<p>Enviar FAX<\/p>\n<p>\n&lt;p&gt;<\/p>\n<p>&lt;form enctype=&#8221;multipart\/form-data&#8221; action=&#8221;enviar.php&#8221;<br \/>\nmethod=&#8221;post&#8221;&gt;<\/p>\n<p>&lt;input type=&#8221;hidden&#8221; name=&#8221;MAX_FILE_SIZE&#8221; value=&#8221;1900000&#8243;&gt;<br \/>\nNumero telefonico &lt;input type=&#8221;text&#8221; name=&#8221;nfax&#8221;&gt;<br \/>\nEnviar Archivo PDF:&nbsp; &lt;input name=&#8221;archivo&#8221; type=&#8221;file&#8221;&gt;<\/p>\n<p>&lt;input type=&#8221;submit&#8221; value=&#8221;Enviar FAX&#8221;&gt;<\/p>\n<p>&lt;\/form&gt;<\/p>\n<p>&lt;p&gt;Nota: Tu archivo no debe pasar de 2MB<br \/>\n&lt;p&gt;David Rivero: david@lastdragon.net<\/p>\n<p>\n&lt;\/p&gt;<\/p>\n<p>Archivo enviar.php<\/p>\n<p>&lt;?php<\/p>\n<p>\/\/ $cmd = &#8220;sendfax &acirc;n &acirc;d &#8220;.$nfax.&#8221; &#8220;.$pdff;<\/p>\n<p>$fdestino = $_FILES[&#8216;archivo&#8217;][&#8216;name&#8217;];<br \/>\n$forigen = $_FILES[&#8216;archivo&#8217;][&#8216;tmp_name&#8217;];<br \/>\n$nfax = $_POST[&#8216;nfax&#8217;];<\/p>\n<p>$copiar = &#8220;cp &#8220;.$forigen.&#8221; &#8220;.$fdestino;<\/p>\n<p>$enviarfax = &#8220;sendfax -n -d &#8220;.$nfax.&#8221; &#8220;.$fdestino;<\/p>\n<p>system ($copiar);<br \/>\nsystem ($enviarfax);<\/p>\n<p>\necho &#8220;&lt;br \/&gt;Enviando&#8230;.&#8221;;<\/p>\n<p>?&gt;<\/p>\n<p>Un v\u00eddeo demostrativo:<\/p>\n<p><iframe loading=\"lazy\" width=\"420\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/bMfWTZvfTuM\" frameborder=\"0\" allowfullscreen><\/iframe><\/mailto><\/p>\n","protected":false},"excerpt":{"rendered":"<p>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,&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,14],"tags":[],"class_list":["post-396","post","type-post","status-publish","format-standard","hentry","category-consultoria-y-manuales","category-redes-y-telecoms"],"_links":{"self":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/396","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=396"}],"version-history":[{"count":2,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/396\/revisions"}],"predecessor-version":[{"id":1273,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/396\/revisions\/1273"}],"wp:attachment":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=396"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=396"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=396"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}