Como enviar fax con Asterisk

Imagen de RazaMetaL

Ya antes había explicado [url=http://www.ecualug.org/?q=2007/02/27/comos/como_recibir_fax_en_asterisk]como RECIBIR faxes con hylafax y asterisk[/url], ahora es tiempo de dedicarnos al envio de faxes.

Existen diversas maneras para el envio de fax, la que voy a plantear en este pequeño manual permitirá usar nuestro cliente de correo electrócnico para enviar faxes como si de emails se tratese.

Lo que vamos a necesitar:

1.- Postfix;
2.- Script email2fax que se puede descargar desde este [url=http://www.julianmenendez.es/wp-content/uploads/2007/07/email2fax-0-93.txt]link[/url]
3.- Un dominio, fax.midominio.com seria lo ideal.
4.- Necesitamos la utilidad RipMIME que podemos descargar desde este [url=http://www.pldaniels.com/ripmime/downloads.php]link[/url].

Instalamos ripmime:


cd /usr/src
wget http://www.pldaniels.com/ripmime/ripmime-1.4.0.7.tar.gz
tar zvxf ripmime-1.4.0.7.tar.gz
cd ripmime-1.4.0.7
make
make install

Instalamos el script email2fax o pueden copiar el siguiente código en el archivo /usr/bin/email2fax :


#!/usr/bin/php
<?
# EMAIL2FAX SCRIPT v0.93
#
# Author: Julian J. Menendez
# http://www.julianmenendez.es
#
# Initially a PHPrewrite of:
# http://wpkg.org/email2fax/index.php/Main_Page
#
# Feel free to use it, but give credit if you do ;)
#
# You will need
# * Working Hylafax installation
# * RipMIME: http://www.pldaniels.com/ripmime/
# * MTA configured to call this script
#
# Testing
# cat mailmessage | email2fax
# Example:
# cat mailmessage | email2fax julianjm@gmail.com 003492800000@fax.yourdomain
#
# 2007-01-12: * Eliminada la funcion file_get_contents, por ser solo para PHP5
# * Eliminado parametro -S de sendfax (no disponible en todas las
# distribuciones
# * Anyadida mas depuracion, controlada mediante define DEBUG
# 2007-07-30: * Aditional debug, in $tmpdir/results

define("RIPMIME","/usr/local/bin/ripmime");
define("SENDFAX","/usr/bin/sendfax");

define("DEBUG",false); //Poner a true para mensajes de depuracion

$warningmsg="";
$errormsg="";

$argv=$_SERVER['argv'];
$argc=$_SERVER['argc'];

if ($argc<2)
die("{$argv[0]} \n");
$sender=$argv[1];
$dest=$argv[2];

$tmp=split("@",$dest);
$destfax=$tmp[0];

///////////// COMPROBAR destfax
if (!is_numeric($destfax))
die("Destino no numerico...");

$prefix=date("YmdHis");
$tmpdir=tempdir("/tmp","faxjob_${prefix}_");

debug("Creando directorio temporal: $tmpdir\n\n");
$filesdir=$tmpdir."/files";
$messagefile=$tmpdir."/msg";
$headersfile=$tmpdir."/headers";

//Volcamos el mensaje original a un archivo temporal
$msg=dumpstdin($messagefile);

//Creamos el directorio donde almacenar los adjuntos
mkdir($filesdir);
exec(RIPMIME." -i $messagefile -d $filesdir --no-nameless --recursion-max 2 --no-tnef --no-ole --no-mht -v --verbose-contenttype");

$files=get_file_list($filesdir);

debug("Ficheros Adjuntos:\n");

$filelist="";
foreach ($files as $file=>$type) {
debug("\t$file ($type)\n");
switch ($type) {
case "application/pdf":
$filelist.=" ". escapeshellarg("$filesdir/$file");
break;
// EJEMPLO DE SOPORTE DE NUEVOS TIPOS DE FICHERO
// case "application/ms-word":
// // Convertimos $file a $file.doc
// conversor_word_a_pdf("$filesdir/$file","$filesdir/$file.doc");
// $filelist.=" ". escapeshellarg("$filesdir/$file.doc");
// break;
default:
//No hacemos nada, ignorando el archivo
$warningmsg.="\nIgnorando archivo $file. Tipo $type no soportado.";
}
}
debug("\n");

preg_match('/Subject:(.+)/',$msg,$matches);
$subject=trim($matches[1]);

preg_match('/From:(.+)/',$msg,$matches);
$from=trim($matches[1]);
debug("Remitente: $from\n\n");

debug("Destino: $destfax\n\n");

$faxcmd=sprintf(SENDFAX." -n -l -D -f %s -r %s $filelist -F %s -d %s",
escapeshellarg($from),
escapeshellarg($subject),
escapeshellarg("De %%s|%c|Pagina %%P de %%T"),
escapeshellarg($destfax));

debug("Ejecutando: $faxcmd\n\n");

exec ("echo \"$faxcmd\" > $tmpdir/cmd");
exec($faxcmd ."> $tmpdir/result");

debug("\n");

exit(0);

//////////////////////////
//////////////////////////

function debug($str) {
if (defined("DEBUG") && DEBUG==true)
echo $str;
}

function get_file_list($dir) {
$res=array();
if (is_dir($dir)) {
if ($dh=opendir($dir)) {
while(($file=readdir($dh)) !== false) {
if (filetype($dir."/".$file)=='dir') continue;
$type=mime_content_type($dir."/".$file);
$res[$file]=$type;
}
closedir($dh);
}
}
return $res;
}

function dumpstdin($filename) {
$handle = fopen("php://stdin", "rb");
$cnt = '';
while (!feof($handle)) {
$cnt .= fread($handle, 8192);
}
fclose($handle);

$handle = fopen($filename,"wb");
fwrite($handle,$cnt);
fclose($handle);

return $cnt;
}

function tempdir($dir, $prefix='', $mode=0700)
{
if (substr($dir, -1) != '/') $dir .= '/';
do {
$path = $dir.$prefix.mt_rand(0, 9999999);
} while (!mkdir($path, $mode));

return $path;
}
?>

Finalmente, configuramos postfix, en el archivo /etc/postfix/master.cf definimos un nuevo transporte al final del archivo:


fax unix - n n - 1 pipe
flags= user=asterisk argv=/usr/bin/email2fax ${sender} ${recipient}

Asociamos el subdominio con el transporte que antes hemos creado en /etc/postfix/transport :

fax.midominio.com fax:localhost

Generamos transport.db :

postmap /etc/postfix/transport

Agregamos las siguientes líneas a /etc/postfix/main.cf :

transport_maps = hash:/etc/postfix/transport
local_recipient_maps=

Reinciamos postfix:

/etc/init.d/postfix restart

Ahora, desde un cliente de correo creamos un nuevo mensaje y el destinatario deberá ser el número de téfefono al que vamos a enviar el fax seguido de @fax.midominio.com, debemos adjuntar el documento a enviar en formato pdf.

Comentarios

En Ubuntu 7.04 hay que

Imagen de RazaMetaL

En Ubuntu 7.04 hay que modificar /etc/hylafax/setup.cache para que FaxDispatch funcione, ademas se debe instalar el paquete metamail.


vi /etc/hylafax/setup.cache

Reemplazamos todas las palabras uuencode por mimencode.

------------

Antes de preguntar visita el [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:

 

[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]

-----

Visita este [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:

[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]

(adsbygoogle = window.adsbygoogle || []).push({});

Súper vacán Raza, ahora

Imagen de lenchanteur

Súper vacán Raza, ahora sólo unas preguntas, es posible hacer esto con sendmail?. Me imagino que no habrá ningún problema si se realiza esta instalación sobre un asterisk embebido en trixbox.

Muchos Saludos

José Antonio L'enchanteur

José Antonio L'enchanteur

Pues no lo he podido hacer

Imagen de RazaMetaL

Pues no lo he podido hacer con sendmail, no sé como configurarlo para que todo lo que llegue a un dominio lo envíe al script email2fax. Si logras averiguarlo no olvides en avisarnos.

Por otra parte creo que si en tu trixbox remueves sendmail e instalas postfix no sería mayor problema. Ambos MTAs constan en los repositorios de CentOS.

------------

Antes de preguntar visita el [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:

 

[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]

-----

Visita este [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:

[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]

(adsbygoogle = window.adsbygoogle || []).push({});

Super completo Raza muchas

Imagen de isacnet

Super completo Raza muchas gracias

_______________________________________
Trend Micro el mejor antivirus del mundo 40% del mercado mundial de gateway
240 millones de usuarios no pueden equivocarse
http://www.trendmicro.com.ec
Mercadeo@trendmicro.com.ec

_______________________________________
ISACNET S.A.
Ecuador: +593-2-3238590
Perú: +51-1-4223796

HP y Trend Micro, lo mejor de 2 mundos en un solo Socio de Negocios
http://www.isacnet.com.pe

Hola AAhh, he hecho lo que

Hola

AAhh, he hecho lo que dice tu manual, pero no me salio :( plop, jeje, no se ... pero yo creo que mi primer problema es postfix, no envia ni recibe ningún correo. el log dice:

Apr 28 11:13:59 asterisk postfix/postdrop[13877]: warning: unable to look up public/pickup: No such file or directory

Apr 28 11:39:51 asterisk postfix/master[13998]: fatal: bind 0.0.0.0 port 25: Address already in use

Apr 28 14:24:49 asterisk postfix/postqueue[14913]: warning: Mail system is down -- accessing queue directly

Apr 28 14:58:24 asterisk postfix/postqueue[15013]: fatal: Cannot flush mail queue - mail system is down

Y bueno, no sé si es que es de ayuda, pero según "netstat -a" el puerto 25 esta escuchando, devuelve :

tcp 0 0 localhost:smtp *:* LISTEN

Estoy usando Debian Etch.

Una ayudadita please !

Problemas al probar

Hola, excelente artículo, muy claro.

Tengo un problema al tratar de implementarlo en mi sistema CentOS + asterisk 1.6 + hylafax +IAXMódem

La recepción de fax funciona perfectamente, pero al intentar hacer prueba para envío recivo lo siguiente:

En el maillog:

Nov 25 14:04:25 ska6 postfix/smtp[23904]: 6B30933990: to=<2262080@pasadena.ikatta.com>, relay=127.0.0.1[127.0.0.1]:10024, delay=7.2, delays=3.1/0.01/0/4.2, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=18979-08, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 98271339E6)
Nov 25 14:04:25 ska6 postfix/qmgr[18694]: 6B30933990: removed
Nov 25 14:04:25 ska6 postfix/smtpd[23908]: disconnect from localhost[127.0.0.1]
Nov 25 14:04:25 ska6 postfix/pipe[23909]: 98271339E6: to=<2262080@pasadena.ikatta.com>, relay=fax, delay=0.1, delays=0.02/0.01/0/0.07, dsn=2.0.0, status=sent (delivered via fax service)

Como se puede ver, el correo es encolado satisfactoriamente al servicio de fax. Ahora, por lo que sé, el correo nunca termina siendo enviado por sendfax. Lo otro interesante, es que si voy a la carpeta /tmp/faxjob_XXXXXXXXXX, aparece la estructura de directorios.

En el script email2fax, active el debug al valor true, pero no sé donde está llegando la salida de el.

¿Alguna idea de cómo puedo hacerle más seguimiento a mi problema?

Muchas gracias,

Diego Madiedo

Problemas con email2fax

Saludos, Raza. Gracias por tus indicaciones, son las mejores que he encontrado (y llevo buscando mucho tiempo...). Por el momento, solamente tengo un problema, el sistema me tira el siguiente log en maillog:

Oct 5 10:07:54 localhost pipe[2511]: fatal: pipe_command: execvp /usr/bin/email2fax: No such file or directory

Estoy usando un Elastix, no sé si esto será el problema. Elastix 3.0.2. Ya tengo configurado todo, solamente ese error me está deteniendo la instalación. Agradezco cualquier indicación.

Andrés.

Seguro que seguistes todo el

Imagen de RazaMetaL

Seguro que seguistes todo el proceso al pié de la letra?

Asegúrate de haber realizado esto:

Instalamos el script email2fax o pueden copiar el siguiente código en el archivo /usr/bin/email2fax :

-----

Visita este [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:

[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]

(adsbygoogle = window.adsbygoogle || []).push({});

Problemas con email2fax

El código está copiado y le di permisos de ejecución por si ese era el problema (chmod a+x email2fax), pero no entiendo por qué no lo ve, o de que forma lo ve, porque no lo ejecuta.

Traté de ejecutarlo con el ejemplo que viene dentro del script y me da el siguiente mensaje:

-bash: /usr/bin/email2fax: /usr/bin/php^M: bad interpreter: No such file or directory

¿Alguna idea? Gracias.

Páginas