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: , , , , , ,

martes, junio 02, 2009

Problema al instalar VMWare server en Linux

No se vosotros pero yo me he encontrado con un problema bastante molesto y que me costó un par de horas solventar. Este surge cuando instalo VMWare server en una distribución Linux (uso Fedora 6 normalmente, aunque con Ubuntu también me ha pasado) y reinicio la máquina. Al volver a iniciar sesión el servicio vmware me da problemas al arrancar y hay que volver a ejecutar el script .pl para que vuelva a funcionar todo correctamente, lo cual es un autentico coñazo.

La forma de resolverlo la he sacado del blog de Ben Kevan, donde explica en dos pasos como evitar este molesto problema. Se justifica en algún que otro punto diciendo que no es la mejor manera de hacerlo pero bueno, funciona.

Los pasos son los siguientes:


  1. Instalar VMWare server.

  2. Seguir los pasos que Ben describe en su blog, que vienen a ser:


    1. Cambiar:

      check_configured() {
      if [ -e "$vmware_etc_dir"/not_configured ]; then
      echo “`vmware_product_name`”‘ is installed, but it has not been correctly configured’
      echo ‘for the running kernel. To (re-)configure it, invoke the’
      echo ‘following command: ‘”$vmdb_answer_BINDIR”‘/vmware-config.pl.’
      echo
      exit 1
      fi
      }

      a

      check_configured() {
      if [ -e "$vmware_etc_dir"/not_configured ]; then
      rm -f “$vmware_etc_dir”/not_configured
      fi
      if [ -e "$vmware_etc_dir"/not_configured ]; then
      echo “`vmware_product_name`”‘ is installed, but it has not been correctly configured’
      echo ‘for the running kernel. To (re-)configure it, invoke the’
      echo ‘following command: ‘”$vmdb_answer_BINDIR”‘/vmware-config.pl.’
      echo
      exit 1
      fi
      }


    2. Cambiar:

      if [ "$exitcode" -gt 0 -a `vmware_product` != "ws" ]; then
      # Set the ‘not configured’ flag
      touch “$vmware_etc_dir”‘/not_configured’
      chmod 644 “$vmware_etc_dir”‘/not_configured’
      db_add_file “$vmware_db” “$vmware_etc_dir”‘/not_configured’ \
      $vmware_etc_dir”‘/not_configured’
      exit 1
      fi

      a

      if [ "$exitcode" -gt 0 -a `vmware_product` != "ws" ]; then
      # Set the ‘not configured’ flag
      # START EDIT
      # touch “$vmware_etc_dir”‘/not_configured’
      # chmod 644 “$vmware_etc_dir”‘/not_configured’
      # db_add_file “$vmware_db” “$vmware_etc_dir”‘/not_configured’ \
      # “$vmware_etc_dir”‘/not_configured’
      # END EDIT
      exit 1
      fi



  3. Al reiniciar la máquina ejecutar /etc/init.d/vmware restart (¡ojo! con start solo no me ha funcionado)

Etiquetas: , , , , , , ,