martes, junio 16, 2009

Solucionando problemas de envío de correo en Hylafax

Corre por internet una aplicación muy potente para recibir y enviar fax llamada Hylafax. Como en su web hay literatura abundante (creo que esto lo digo en el 50% de posts que hago) no me extenderé sobre la instalación, configuración, etc. Aquí tan solo posteo los cambios que hay que hacer en caso de que os encontréis con el problema de que al enviar un e-mail con un fax recibido veáis que el fichero adjunto está mal formado.



Los faxes, tal y como van llegando, se van guardando en formato tiff en la carpeta recvq. Tras recibir un fax, Hylafax lanza un proceso que adjunta este fichero recibido en un mail y lo envía a una dirección que hemos indicado en los ficheros de configuración. El problema sucede porque en el script que Hylafax usa para formar el mail utiliza awk para adjuntar el fax recibido. En mi caso awk solo mostraba 4 bytes de todo el fichero, de manera que lo que se adjuntaba no era ni por asomo el fax recibido. Para solucionar esto seguid estos pasos:



Ir a /var/spool/hylafax/bin
Editar el fichero common-functions
Ir a la función mimeEncode
Dentro de esa función hay un case según la codificación del binario adjunto. Vamos a base 64 que es el que usa el envío de fax por correo.

El fragmento de código "erroneo" (en mi caso, claro) es el siguiente:

base64)
if [ -n "$BASE64ENCODE" ]; then

# $BASE64ENCODE may contain parameters
cmd=`programOfCommand $BASE64ENCODE`
if [ -x "$cmd" ]; then
(eval $BASE64ENCODE) < $1 2>$ERRORSTO
else
$AWK -f bin/b64-encode.awk < $1 2>$ERRORSTO
fi
else
$AWK -f bin/b64-encode.awk < $1 2>$ERRORSTO
fi;;


Cambiadlo por:


base64)
if [ -n "$BASE64ENCODE" ]; then

# $BASE64ENCODE may contain parameters
cmd=`programOfCommand $BASE64ENCODE`
if [ -x "$cmd" ]; then
#(eval $BASE64ENCODE) < $1 2>$ERRORSTO
uuencode -m $1 $1 | grep -v "begin" 2>$ERRORSTO
else
#$AWK -f bin/b64-encode.awk < $1 2>$ERRORSTO
uuencode -m $1 $1 | grep -v "begin" 2>$ERRORSTO
fi
else
#$AWK -f bin/b64-encode.awk < $1 2>$ERRORSTO
uuencode -m $1 $1 | grep -v "begin" 2>$ERRORSTO
fi;;


De esta manera hacemos que la codificación e inclusión en el correo no la realice awk sino la herramienta uuencode que debemos tener previamente instalada en el sistema.

Etiquetas: , , , , , ,