Introducción
Hace algún tiempo que estoy mirando de substituir el PDC (primary
domain controller) bajo NT Server de la red de donde trabajo por un
servidor en Linux. Por ello busqué los servicios que se ofrecen actualmente
bajo NT para sustituirlos por sus correspondientes en Linux y como
resultado he instalado:
- Controlador Primario del “Dominio” (netbios): Samba 2.2.7a.
- Servidor de correo Externo/Interno: Qmail 1.03 + patch Qmailqueue.
- Antivirus para el correo: F-Prot, sophos, karpersky utilizados vía
Qmail-Scanner. - Servidor de Fax: Hylafax.
- Servidor FTP: Proftpd 1.2.7.
- DHCP.
Aunque en este documento me centraré más en el tema del como hacer
que los usuarios de la red (windows) puedan enviar faxes fácilmente
a través del servidor Hylafax.
Antes de nada, en el howto de la página web de hylafax ya se comentan varias posibilidades de como hacer que clientes bajo windows/*nix/mac/etc puedan utilizar el servidor para enviar faxes. La mayoría consisten en programas que se conectan al servidor y realizan las tareas de enviado. Para windows encontré uno muy pero que muy bonito llamado Cypheus.
Cypheus te da una interfície gráfica con los faxes enviados, recibidos, te crea una impresora virtual en windows que te pasa tu documento a una imagen .tiff, y ésta es la que el programa utiliza para enviar el fax.
Cypheus no le gustó a los usuarios de mi red puesto que para enviar
un fax tenían que realizar 3 tareas:
Por este motivo seguí buscando hasta que encontré Sambafax. La idea es muy sencilla:
- Mediante Samba se crea un recurso compartido, en mi caso le llamo
faxlp (de fax-l-printer xD). - A este recurso se le dice que es una impresora, de manera que recibirá el documento a enviar por fax cuando se le diga de imprimir con faxlp.
- Una vez tenemos el documento en el servidor lo único que hay que hacer es pasarlo por un script (en bash por ejemplo) que lo trate (para sacar el numero de fax) y enviarlo por fax con el binario que proporciona hylafax, sendfax.
Esta solución me gustó porque es tremendamente versátil, pues en un script puedes hacer casi cualquier cosa que se te ocurra. En mi caso lo que hago es enviar el fax, imprimir una copia por una impresora y enviar un mail al usuario que generó el fax para confirmarle la correcta recepción del fax. Como? seguid leyendo…
Al lío… toca leer, instalar i probar :).
Primero de todo necesitamos montar una red heterogénea. En mí caso aproveche para pasar el PDC bajo NT a un linuxín cosa que con samba no es tarea muy complicada:
[global]
;Añadir la maquina del usuario para crear una cuenta
;en el PDC (Machine trust Account)
add user script=/usr/bin/adduser -g maquinas -c “una maquina” -d /dev/null -s /bin/false
;Información netbios
netbios name=Ofimatica
workgroup=HCG
wins support=yes
os level=64
; PDC
preferred master=yes
local master=yes
domain master=yes
security=user
encrypt passwords=yes
; Usuarios
domain logons=yes
logon script=%U.bat
guest ok=no
logon path=\\Ofimatica\profile\%U
; Impresoras
load printers=yes
; Especificación de donde se encuentran los perfiles
; de usuario. Así no importa desde que maquina se
; loguee un usuario pues encontrará siempre su
; escritorio
[profile]
path=/home/profiles
create mode=0600
directory mode=0700
writable=yes
browsable=no
; Recurso donde se guardan los scripts de inicio de
; sesion
[netlogon]
path=/home/netlogon
read only=yes
browseable=no
; Conjunto de recursos compartidos los que se quieran
; En mi caso son los directorios Home de cada usuario
; y directorios compartidos por grupos de usuarios
; (departamentos)
[…]
; Impresoras
[printers]
path=/tmp
printable=yes
print command=/usr/bin/lpr -P %p -r %s
; El Fax
[faxlp]
printable=yes
printer=faxlp
print command=cat %s | /var/spool/hylafax/bin/sambafax -n %U; rm %s
; en esta última linea es cuando se le dice al samba que debe pasarle el documento
; impreso al script que se encarga de tratarlo i enviarlo por fax.
Con esta configuración estoy pidiendo al Samba que haga lo siguiente:
- Gestionar de manera centralizada las contraseñas de los usuarios
- Guardar perfiles de los usuarios (fondos escritorio, iconos, etc)
para que no importe desde que ordenador inicia la sesión el usuario
(en teoría, la práctica falta comprobarla). - Definir que recursos compartidos hay i quien puede usarlos.
- Definir las impresoras que aparecen en /etc/printcap como impresoras
compartidas. Entre ellas habrá una “impresora virtual” que será
el fax.
Las peculiaridades que me he encontrado según la versión de windows
que se loguea en el servidor de samba son:
Win95/98:
Lo del PDC les viene grande, aunque para mí estos clientes
son los mas fáciles de usar pues no requieren una Machine Trust Account
(en los windows posteriores las máquinas se “añaden al dominio”
por lo que se les crea una cuenta para la máquina, de ahí la linea
add user script). Por mi experiencia simplemente comprueban
que la contraseña introducida es válida con la contraseña que guarda
el servidor. También dudo que guarden perfiles en el servidor, aunque
no lo puedo asegurar pues ahora que pienso… no me he fijado ;P.
Me gustaron porque son simples y no me dieron ningún problema. Si
introduces la contraseña correcta, te logueas y se ejecuta tu script
de inicio y puedes acceder a tus recursos compartidos, justo lo que
se quiere.
WindowsNT/2000:
Funcionan mediante cuentas de usuarios y sus respectivas
cuentas de máquinas. Guardan su perfil y no tuve muchos problemas
con ellos
WindowsXP:
Este funciona bien si y solo si se varía el valor /HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet
/Services/Netlogon/ Parameters/”RequireSignorSeal” a 0. Entonces
se puede logear contra el servidor samba. Si se desea que se vuelva
a loguear contra el servidor NT se tiene que volver a canviar este
valor a 1.
Como servidor de Faxes escogí Hylafax puesto que fue el primero que
encontré y me funcionó bien :). Además en su página web dispone de
un howto suficientemente cortito para tener el servidor funcionando
en poco rato y también enseña varias posibilidades de como hacer que
un windows envié faxes a través de él.
me empezó a dar errores de versión del gcc y cosas así. Como soy muy
perro me bajé el .rpm y listos.
las preguntas que te hace y ya funciona el servidor.
De esta manera se puede seleccionar los usuarios que dejamos acceder
al fax o que dispongan de un password diferente. Aunque para el método
que yo os explico no hace falta, pues se ataca al servidor Hylafax
mediante Samba. Si se desease que solo ciertos usuarios del sistema
puedan acceder al fax se podría hacer simplemente un grupo llamado
“fax”. Incluir los usuarios que puedan usar el fax en este grupo
y añadir la linea valid users=@fax en el fichero smb.conf en
la sección [faxlp].
faxes hasta que ejecute faxmodem ttyS0 (com1). Es como si se
olvidará de que módem utilizar para enviar faxes. También soy un chapuzas
y no me he parado a configurarlo bien puesto que no es un mal difícil
de solucionar.
Bueno, ahora tenemos por una parte usuarios logueados en el sistema
mediante samba y un espléndido servidor de Hylafax. Si nos fijamos
en el fichero SMB.CONF decimos que cuando se imprime por
faxlp lo que se hace es enviar este documento a un script llamado
sambafax. Simplemente se necesita hacer lo siguiente
/etc/printcap (o /etc/printcap.local)
Incluir las siguientes líneas para crear la impresora “virtual”
del fax. Necesario puesto que la sección [printers] de samba coge
las impresoras de este fichero:
faxlp:\
:lp=/dev/null:\
:sd=/usr/spool/lpd/fax:\
:if=/var/spool/hylafax/bin/sambafax:\
:sh:sf:mx#0:
Por supuesto hay que crear el directorio /usr/spool/lpd/fax con permisos 700 y hacerlo del usuario lp (en caso de redhat 8.0).
/var/spool/hylafax/bin/sambafax
Este es el script sobre el que se apoya esta especie de artículo.
Es el que se encarga de recibir el documento a enviar en PostScript
y enviarlo.
#!/bin/bash
SENDMAIL=”/usr/sbin/sendmail”
PS2ASCII=”/usr/bin/ps2ascii”
AWK=”/bin/awk”
SENDFAX=”usr/bin/sendfax”
FAXFILE=/tmp/sambafax.$$
while :
do
case “$1” in
-n) Username=”$2”
shift;shift
;;
-h) Hostname=”$2”
shift;shift
;;
-*) shift
;;
*) break
esac
done
# a Quien le enviamos el mail de confirmación de fax
if [ “$Username” = “nobody” ]
then
Mailto=”postmaster”
else
Mailto=${Username}
fi
# pasar el documento a un fichero
cat >${FAXFILE}
# Pillar el numero de fax a donde enviar
FAXNUM=`${PS2ASCII} ${FAXFILE} | ${AWK} ‘{ IGNORECASE=1 } /FAX-Nr ?: ?[0-9]*/ \
{ $0=$0 “xxx”; \
gsub(/-/,””); \
angfang=match($0,/ ?: ?/); \
angfang=angfang+match(substr($0,angfang),/[0-9]/)-1; \
ende=match(substr($0,anffang),/[^0-9]/)-1; \
printf(“%s”,substr($0,angfang,ende))\
}’ `
# Si no hi ha FAXNUM pos no podem enviar el fax
if [ -z ${FAXNUM} ] ; then
{ echo “To: ${Mailto}”
echo “From: Hylafax”
echo “Subject: Falta Numero Fax”
echo “”
echo “Pon el numero fax asin :”
echo “ Fax-Nr : xxxxxxx”
echo “”
echo “Ale reintenta”
} | 2>&1 ${SENDMAIL} -ffax -oi ${Mailto}
else
/usr/bin/sendfax -n -D -f ${Mailto} -d ${FAXNUM} $FAXFILE
fi
# Borrar el temporal
rm -f ${FAXFILE}
#Fin
Adicionalmente es necesario que el documento este en PostScript. Esto
se puede hacer (de manera rudimentaria ) cuando añades la impresora
en el windows le especificas un driver postscript, como por ejemplo
la Apple Laserwriter. Una manera mas bonita de hacerlo es que los
clientes automáticamente se descarguen los drivers del servidor samba.
Como aún no lo he hecho no os puedo decir como, pero esta lleno de
howtos que lo explican paso por paso.
Quiero enviar un fax, que hago?
Fax-Nr : 931623400
blablabla
Este esquema tiene un par de problemas:
un poquito pues tienes que modificar 40 veces el numero i imprimir.
Claro, se podría buscar una manera de poner los 40 números en el documento,
el script que los detecte y un bucle de ir enviando… pero claro,
entonces también nos interesaría que los receptores no vean los 40
números (problema 1), puesto que el receptor (y emisor) no quiere
enviar 10 hojas por fax solo con números de teléfono…
Este problemilla se puede solventar gracias a las herramientas Ofimáticas
(OpenOffice para citar una) donde puedes crear plantillas de documentos
y insertar campos (numero teléfono). Dichos campos se “llenan”
accediendo a una Base de Datos u otro origen de datos. De esta manera
la misma herramienta ofimática te genera los 40 documentos con los
40 números distintos.
Hoy lo he probado y ha funcionado bien. Lo que? Pues esto de enviar
40 faxes a destinatarios distintos. Ha sido tarea fácil:
- Primero he creado una mini base de datos con 1 tabla: Persona(Nombre,
fax) y he rellenado la tablita. - Después he creado un documento de “Word” (para entenderse) con
las opciones de combinar campos estableciendo el origen de datos la
mini-base de datos que he creado anteriormente. És decir, simplemente
he “combinado” la base de datos con el documento. Dicho documento
contiene la parrafada a enviar pero con un par de “campos”:Fax-Nr : <<fax>>
A la atención de <<Nombre>>
blablabla
- Al combinar el mismo editor del documento genera 40 versiones del
fax cambiando los valores del n^o de fax y el nombre del destinatario
automáticamente. - Solo falta imprimirlo por la impresora “virtual” del servidor
samba.
- www.samba.org
- www.hylafax.org (otras soluciones: http://www.hylafax.org/howto/faxing.html#ss5.2)
- Proyecto Lucas: Usando-Samba.pdf
Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=1662 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.